# Classe abstraite permettant de développer divers effets de plantes extends Resource class_name PlantEffect const HARVEST_EFFECT_ICON = preload("res://common/icons/shovel.svg") const MATURE_EFFECT_ICON = preload("res://common/icons/chevrons-up.svg") const CYCLIC_EFFECT_ICON = preload("res://common/icons/rotate-rectangle.svg") @export var level : int func _init(_level : int = 1): level = _level func get_effect_name() -> String: printerr("Classe abstraite PlantEffect appelée") return "" func get_effect_description() -> String: printerr("Classe abstraite PlantEffect appelée") return "" func effect(plant): printerr("Classe abstraite PlantEffect appelée") static func get_framed_info_from_effects( effects : Array[PlantEffect], trigger_text = "", trigger_icon: Texture = null ) -> Array[Inspector.FramedInfo]: if len(effects) == 0 : return [] var desc = "%s %s" % [PlantEffect.get_framed_info_effect_name(effects[0]), effects[0].get_effect_description()] for i in range(1, len(effects)): if effects[i]: desc += "\n%s %s" % [PlantEffect.get_framed_info_effect_name(effects[i]), effects[i].get_effect_description()] return [Inspector.FramedInfo.new( trigger_text, desc, trigger_icon )] static func get_framed_info_effect_name(e : PlantEffect): var levels_bbcode = [ "[color=#ffffff][b]%s[/b][/color]", "[color=#FFBE0B][b]%s %d[/b][/color]", "[color=#FB5607][b]%s %d[/b][/color]", "[color=#3A86FF][b]%s %d[/b][/color]", "[color=#8338EC][b]%s %d[/b][/color]", "[color=#FF006E][b]%s %d[/b][/color]", "[rainbow][b]%s %d[/b][/rainbow]" ] if e.level == 1: return levels_bbcode[0] % e.get_effect_name() else : return levels_bbcode[min(e.level - 1, len(levels_bbcode) - 1)] % [e.get_effect_name(), e.level] static func get_framed_info_from_all_trigger_effects( mature_effects : Array[PlantEffect], harvest_effects : Array[PlantEffect], cyclic_effects : Array[PlantEffect], ) -> Array[Inspector.FramedInfo] : var framed_infos : Array[Inspector.FramedInfo] = [] framed_infos.append_array( PlantEffect.get_framed_info_from_effects( mature_effects, "On maturation", MATURE_EFFECT_ICON ) ) framed_infos.append_array( PlantEffect.get_framed_info_from_effects( harvest_effects, "When harvested", HARVEST_EFFECT_ICON ) ) framed_infos.append_array( PlantEffect.get_framed_info_from_effects( cyclic_effects, "Each days", CYCLIC_EFFECT_ICON ) ) return framed_infos