ajout des graines procédurales et des cinamatiques

This commit is contained in:
2026-02-21 14:29:36 +01:00
parent 2e4a1bab53
commit ca0133bd71
117 changed files with 1238 additions and 590 deletions

View File

@@ -3,6 +3,8 @@ class_name GameGui
const SCORE_ICON : Texture = preload("res://common/icons/growth.svg")
var score_by_plant : Dictionary[String, int] = {}
var score_mirror :
set(v):
score_mirror = v
@@ -10,17 +12,20 @@ var score_mirror :
func _ready():
GameInfo.game_data.current_region_data.updated.connect(_on_region_updated)
GameInfo.game_data.current_region_data.plant_changing_score.connect(_on_plant_changing_score)
GameInfo.game_data.player_data.updated.connect(_on_player_updated)
GameInfo.game_data.current_region_data.pass_day_ended.connect(_on_region_pass_day_ended)
score_mirror = GameInfo.game_data.current_region_data.get_score()
charge_update(GameInfo.game_data.current_region_data)
player_update(GameInfo.game_data.player_data, false)
%EnergyInfo.reset_size()
%GiveUpButton.pressed.connect(_on_give_up_pressed)
score_mirror = GameInfo.game_data.current_region_data.get_score()
print(score_mirror)
for p : PlantData in GameInfo.game_data.current_region_data.plants:
score_by_plant[str(p.random_seed)] = p.get_score()
func _on_player_updated(player_data : PlayerData):
player_update(player_data)
@@ -32,6 +37,28 @@ func player_update(player_data : PlayerData, with_animation = true):
)
func _on_region_updated(region_data : RegionData):
await get_tree().create_timer(0.1).timeout
if score_mirror != region_data.get_score():
for p in region_data.plants:
var score = p.get_score()
if not str(p.random_seed) in score_by_plant:
score_by_plant[str(p.random_seed)] = 0
if score > score_by_plant[str(p.random_seed)]:
print("emit particles for %s" % p.plant_name)
plant_changing_score(p, score - score_by_plant[str(p.random_seed)])
elif score < score_by_plant[str(p.random_seed)]:
print("reduce score for %s" % p.plant_name)
score_mirror -= score_by_plant[str(p.random_seed)] - score
score_by_plant[str(p.random_seed)] = score
# Check for removed plants
for key in score_by_plant:
if region_data.plants.find_custom(
func (p): return str(p.random_seed) == key
) == -1:
print("remove plant")
score_mirror -= score_by_plant[key]
score_by_plant.erase(key)
charge_update(region_data)
func _on_give_up_pressed():
@@ -67,7 +94,7 @@ func score_update(with_animation = true):
else:
%ObjectiveProgressBar.set_progress(objective_progression)
func _on_plant_changing_score(plant_data: PlantData, amount : int):
func plant_changing_score(plant_data: PlantData, amount : int):
if GameInfo.game_data.current_region_data.in_passing_day_animation:
await GameInfo.game_data.current_region_data.pass_day_ended
if amount <= 0: