seeding-planets/gui/game/scripts/game_gui.gd
Zacharie Guet ed7a8bcb6e gros dev pre proto
* Changement de l'UI, ajouts de l'inspecteur par carte et changement de police
* Ajout d'un semblant d'exploration
* Ajout de la sauvegarde des entités
* Restructuration mineure de l'arborescence
* Fix divers et réécriture des textes
2025-10-31 13:52:45 +01:00

94 lines
3.0 KiB
GDScript

extends Control
class_name GameGui
signal pause_asked
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)
if not GameInfo.game_data.current_planet_data.is_quota_announced:
announce_quota(GameInfo.game_data.current_planet_data)
GameInfo.game_data.current_planet_data.is_quota_announced = true
planet_update(GameInfo.game_data.current_planet_data)
player_update(GameInfo.game_data.player_data)
inventory_update(GameInfo.game_data.player_data.inventory)
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 = "%d days 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):
announce_quota(planet_data)
planet_update(planet_data)
planet_data.is_quota_announced = true
func announce_quota(planet_data : PlanetData):
%Announce.announce(
"New Quota",
"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(
"Last day for reaching quota",
str(roundi(planet.data.get_quota_score() - planet.garden.get_score())) + " garden score left",
Announce.RED_COLOR
)