untap/scenes/tooltip/card_text.gd
2025-04-29 00:24:42 -04:00

42 lines
1.2 KiB
GDScript

extends RichTextLabel
var mana_symbols: Dictionary
func _set_tip_text(card_info: Dictionary, _card_image: Image) -> void:
# TODO: add more card formatting, check all of the logos, very niche icons will be affected i believe since they're
# different sizes
# shrink text if we use too much space for it, etc
text = "[b]" + card_info["name"] + "[/b]\n"
text += "[i]" + card_info["type"] + "[/i]\n"
var oracle_text = card_info["desc"]
var last_idx = 0
for symbol in mana_symbols:
last_idx = 0
while oracle_text.find(symbol, last_idx) != -1:
oracle_text = oracle_text.replace(
symbol, '[img width="16" height="16"]' + mana_symbols[symbol] + "[/img]"
)
last_idx = oracle_text.find(symbol, last_idx) + symbol.length()
text += oracle_text
func _clear_tip_text() -> void:
text = ""
func _ready() -> void:
if !FileAccess.file_exists("res://symbol_cache/symbols.json"):
push_error("Symbols haven't been cached yet!")
return
var file = FileAccess.open("res://symbol_cache/symbols.json", FileAccess.READ)
mana_symbols = JSON.parse_string(file.get_as_text())
file.close()
set_use_bbcode(true)
EventBus.connect("card_on_hover", _set_tip_text)
EventBus.connect("card_on_unhover", _clear_tip_text)