extends Control class_name GameGui @export var quota_reward : QuotaReward func _ready(): GameInfo.game_data.current_planet_data.updated.connect(_on_planet_updated) GameInfo.game_data.current_planet_data.new_quota_started.connect(_on_planet_new_quota_started) GameInfo.game_data.player_data.updated.connect(_on_player_updated) GameInfo.game_data.player_data.inventory.updated.connect(_on_inventory_updated) planet_update(GameInfo.game_data.current_planet_data) player_update(GameInfo.game_data.player_data) inventory_update(GameInfo.game_data.player_data.inventory) if not GameInfo.game_data.current_planet_data.is_quota_announced: await quota_reward.reward_chosen announce_quota(GameInfo.game_data.current_planet_data) GameInfo.game_data.current_planet_data.is_quota_announced = true func _on_player_updated(player_data : PlayerData): player_update(player_data) func player_update(player_data : PlayerData): %EnergyCount.text = "%d/%d" % [player_data.energy, player_data.max_energy] %EnergyInfo.modulate = Color.WHITE if player_data.energy > 0 else Color.RED update_no_energy_left_info(player_data.energy) func _on_inventory_updated(inventory : Inventory): inventory_update(inventory) func inventory_update(inventory : Inventory): %Inventory.update(inventory) func _on_planet_updated(planet_data : PlanetData): planet_update(planet_data) func planet_update(planet_data : PlanetData): if planet_data: %DayCount.text = tr("%d_DAY_LEFT") % (planet_data.quota_days) var quota_progression_percent : float = (float(planet_data.garden_score) / float(planet_data.get_quota_score())) * 100 %QuotaProgressText.text = "%d/%d" % [planet_data.garden_score, planet_data.get_quota_score()] get_tree().create_tween().tween_property( %QuotaProgressBar, "value", quota_progression_percent, 0.5, ) func _on_player_action_tried_without_energy(): $AnimationPlayer.play("no_energy_left") func _on_pause_pressed(): Pause.pause = true func _on_player_upgraded(): $EffectAnimation.play("upgrade") func _on_planet_pass_day_started(planet): $PassDayAnimation.speed_scale = 1/(planet.PASS_DAY_ANIMATION_TIME) $PassDayAnimation.play("pass_day") await $PassDayAnimation.animation_finished $PassDayAnimation.speed_scale = 1 func update_no_energy_left_info(energy): if energy == 0 and not %NoEnergyLeft.visible: %NoEnergyLeft.visible = true $NoEnergyLeftAnimation.play("no_energy_left_appear") elif energy != 0 and %NoEnergyLeft.visible: %NoEnergyLeft.visible = false func _on_planet_new_quota_started(planet_data : PlanetData): planet_update(planet_data) await quota_reward.reward_chosen announce_quota(planet_data) planet_data.is_quota_announced = true func announce_quota(planet_data : PlanetData): %Announce.announce( tr("NEW_QUOTA"), tr("REACH_%d_GARDEN_SCORE_BEFORE_%d_DAYS") % [planet_data.get_quota_score(), planet_data.get_quota_duration()] ) func _on_planet_pass_day_ended(planet:Planet): if planet.data.quota_days == 1: %Announce.announce( tr("LAST_DAY_FOR_REACHING_QUOTA"), str(roundi(planet.data.get_quota_score() - planet.garden.get_score())) + " garden score left", Announce.RED_COLOR )