ajout des graines procédurales et des cinamatiques
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user