* ajout des mutations #86 * changement de l'objectif #85 * refonte de l'inspecteur #71 * changement léger de la plantation * les plantes ne donnent que des graines de leurs espèces * refonte partielle du code, refacto
89 lines
2.4 KiB
GDScript
89 lines
2.4 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")
|
|
|
|
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
|