@tool class_name AdvancedRichText extends RichTextLabel @export_multiline var advancedText:String = "": get(): return advancedText set(value): advancedText = value _parseAdvancedText() @export var translate:bool = true: set(value): translate = value _parseAdvancedText() get(): return translate func _init() -> void: self._parseAdvancedText() func _enter_tree() -> void: self._parseAdvancedText() func _parseAdvancedText() -> void: if advancedText.is_empty(): self.text = "" return var key = advancedText if self.translate: key = tr(key) self.text = processInputTags(key) func processInputTags(text:String) -> String: var regex = RegEx.new() regex.compile(r"\[input action=(.*?)\](.*?)\[/input\]") var result = text for match in regex.search_all(text): var action = match.get_string(1).to_lower() var height:int = 32 # var device = get_current_device_type() # var icon_path = get_icon_for_action(action, device) var img_tag = "[img height=%d valign=center,center]res://textures/input/%s.tres[/img]" % [ height, action ] result = result.replace(match.get_string(0), img_tag) return result