76 lines
2.0 KiB
GDScript
76 lines
2.0 KiB
GDScript
# 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")
|
|
|
|
func get_styled_effect_name():
|
|
var levels_bbcode = [
|
|
"[color=#2364AA]%s[/color]",
|
|
"[color=#25C147]%s %d[/color]",
|
|
"[color=#8B2DFF]%s %d[/color]",
|
|
"[color=#FF006E]%s %d[/color]",
|
|
"[color=#FFA617]%s %d[/color]",
|
|
"[rainbow]%s %d[/rainbow]"
|
|
]
|
|
|
|
if level == 1:
|
|
return levels_bbcode[0] % get_effect_name()
|
|
else :
|
|
return levels_bbcode[min(level - 1, len(levels_bbcode) - 1)] % [get_effect_name(), level]
|
|
|
|
static func card_effect_sections(
|
|
mature_effects : Array[PlantEffect],
|
|
harvest_effects : Array[PlantEffect],
|
|
cyclic_effects : Array[PlantEffect]
|
|
) -> Array[CardSectionInfo]:
|
|
var sections : Array[CardSectionInfo] = []
|
|
var effects_category = [
|
|
mature_effects,
|
|
harvest_effects,
|
|
cyclic_effects
|
|
]
|
|
var effects_category_labels : Array[String] = [
|
|
"On mature",
|
|
"When harvested",
|
|
"Each day when mature",
|
|
]
|
|
var effects_category_icon : Array[Texture] = [
|
|
MATURE_EFFECT_ICON,
|
|
HARVEST_EFFECT_ICON,
|
|
CYCLIC_EFFECT_ICON,
|
|
]
|
|
|
|
for i in range(len(effects_category)):
|
|
var effects = effects_category[i]
|
|
|
|
if len(effects) > 0:
|
|
var section = CardSectionInfo.new(
|
|
effects_category_labels[i]
|
|
)
|
|
section.title_icon = effects_category_icon[i]
|
|
var effects_text : Array = effects.map(
|
|
func (e : PlantEffect): return "[b]%s[/b] %s" % [e.get_styled_effect_name() , e.get_effect_description()]
|
|
)
|
|
section.text = "\n".join(effects_text)
|
|
sections.append(section)
|
|
|
|
return sections |