From f1ab7db046b10fd774a693c5a28a9df85b0f2607 Mon Sep 17 00:00:00 2001 From: Varylios Date: Wed, 27 Aug 2025 14:37:26 +0200 Subject: [PATCH] feat: ernergy bar on menu --- Globals/EventBus.gd | 6 +++++- Scripts/PlayerManager.gd | 12 ++++++------ Towers/tower.gd | 5 +++++ UI/PierreEnergyMenuProgressBar.gd | 9 +++++++++ UI/PierreEnergyMenuProgressBar.gd.uid | 1 + UI/gui.gd | 2 +- UI/gui.tscn | 21 ++++++++++++++++++--- 7 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 UI/PierreEnergyMenuProgressBar.gd create mode 100644 UI/PierreEnergyMenuProgressBar.gd.uid diff --git a/Globals/EventBus.gd b/Globals/EventBus.gd index f529a16..7370470 100644 --- a/Globals/EventBus.gd +++ b/Globals/EventBus.gd @@ -6,7 +6,7 @@ extends Node signal tower_selected(tower : PackedScene) -#Emitter : +#Emitter : #Subscriber : signal tower_builded(tower : Tower) @@ -69,3 +69,7 @@ signal open_shop() #Emitter : PlayerManager.gd #Subscriber : game_menu.gd signal close_shop() + +#Emitter : tower.gd +#Subscriber : tower button.gd +signal energy_has_changed(tower : Tower) diff --git a/Scripts/PlayerManager.gd b/Scripts/PlayerManager.gd index cd87214..7aba7b8 100644 --- a/Scripts/PlayerManager.gd +++ b/Scripts/PlayerManager.gd @@ -55,7 +55,7 @@ func _process(delta: float) -> void: if Input.is_action_just_pressed("rest"): if _state == STATE.PLACING: quit_placing() - + EventBus.close_shop.emit() if target_tower: send_to_rest() @@ -80,7 +80,7 @@ func handle_player_controls() -> void: selected_collider = collider visible = true - $"selection-a".visible = true + $"selection-a".visible = true global_position = collider.global_position global_position += Vector3(0.0,0.2,0.0) @@ -88,10 +88,10 @@ func handle_player_controls() -> void: target_tower = collider else: target_tower = null - + if _state == STATE.PLACING: tower_to_place.sprite.modulate = "ff4545c8" #If the tower can't be placed he is red - $"selection-a".visible = false + $"selection-a".visible = false if selected_collider is BuildTile: #if we are placing a tower, hide the selector model tower_to_place.sprite.modulate = "61ff45c8" #If the tower can be placed he is green @@ -114,7 +114,7 @@ func quit_placing() -> void: func build_tower() -> void: if tower_blueprint == null: return - + if !visible: return @@ -142,7 +142,7 @@ func build_tower() -> void: else : #Can build quit_placing() #Destroy the tower placeholder - + EventBus.money_spent.emit(temp_tower.price) tower_count += 1 $"../Towers".add_child(temp_tower) diff --git a/Towers/tower.gd b/Towers/tower.gd index b45bcb7..c96b08b 100644 --- a/Towers/tower.gd +++ b/Towers/tower.gd @@ -32,6 +32,7 @@ var energy : float = max_energy: is_exhausted = true else: is_exhausted = false + EventBus.energy_has_changed.emit(self) var current_targets : Array = [] var current : CharacterBody3D @@ -74,6 +75,10 @@ func apply_upgrade(upgrade : TowerUpgrade): else: printerr("Upgrade already bought") +func _init() -> void: + EventBus.energy_has_changed.emit(self) + + func _ready() -> void: EventBus.tower_upgraded.connect(_on_EventBus_tower_upgraded) energy_bar.set_up(energy, max_energy) diff --git a/UI/PierreEnergyMenuProgressBar.gd b/UI/PierreEnergyMenuProgressBar.gd new file mode 100644 index 0000000..27b013f --- /dev/null +++ b/UI/PierreEnergyMenuProgressBar.gd @@ -0,0 +1,9 @@ +extends ProgressBar + +func _init() -> void: + #font_outline_color = Color.YELLOW + EventBus.energy_has_changed.connect(changeEnergy) + +func changeEnergy(tower : Tower) -> void: + if tower is Pierre: + value = tower.energy diff --git a/UI/PierreEnergyMenuProgressBar.gd.uid b/UI/PierreEnergyMenuProgressBar.gd.uid new file mode 100644 index 0000000..88fb1ff --- /dev/null +++ b/UI/PierreEnergyMenuProgressBar.gd.uid @@ -0,0 +1 @@ +uid://igvr34eaqta diff --git a/UI/gui.gd b/UI/gui.gd index d2decc1..ac3b797 100644 --- a/UI/gui.gd +++ b/UI/gui.gd @@ -23,7 +23,7 @@ func _on_button_pierre_pressed() -> void: if tower is Pierre: can_build = false player_manager.selected_tower = tower #If can't build, tower is selected - + if can_build: #If Pierre is not builded then build it ! print("can build !") EventBus.tower_to_build.emit(load("res://Towers/pierre.tscn")) diff --git a/UI/gui.tscn b/UI/gui.tscn index f3d9bb3..f488877 100644 --- a/UI/gui.tscn +++ b/UI/gui.tscn @@ -1,10 +1,10 @@ -[gd_scene load_steps=21 format=3 uid="uid://p6a6rb7sgeqd"] +[gd_scene load_steps=23 format=3 uid="uid://p6a6rb7sgeqd"] [ext_resource type="Script" uid="uid://d2x8oy4os7ysn" path="res://UI/label_money.gd" id="1_cwd3r"] -[ext_resource type="Script" uid="uid://c350dletl5pde" path="res://UI/label_tower_in_cube.gd" id="2_6ujs1"] +[ext_resource type="Script" path="res://UI/label_tower_in_cube.gd" id="2_6ujs1"] [ext_resource type="Script" uid="uid://bhylcok1l6eke" path="res://UI/gui.gd" id="2_sac4j"] [ext_resource type="Script" uid="uid://dmcgoepvytnn" path="res://UI/cube_integrity.gd" id="2_sj6ny"] -[ext_resource type="Script" uid="uid://kngsgirej7lx" path="res://UI/label_tower_on_terrain.gd" id="3_wg577"] +[ext_resource type="Script" path="res://UI/label_tower_on_terrain.gd" id="3_wg577"] [ext_resource type="Theme" uid="uid://bbp4qcbwkeg7x" path="res://default_theme.tres" id="5_wpcnu"] [ext_resource type="Texture2D" uid="uid://csl43eb7qjhe4" path="res://Assets/Icones/dog-house.svg" id="7_fffne"] [ext_resource type="Texture2D" uid="uid://dfnf26suc8yb6" path="res://Assets/Icones/sideswipe.svg" id="8_ay13l"] @@ -13,6 +13,7 @@ [ext_resource type="Texture2D" uid="uid://b4m5ejfdrm8s0" path="res://Assets/Icones/power-button.svg" id="9_reygo"] [ext_resource type="Texture2D" uid="uid://cob1lydkirn20" path="res://Assets/Icones/raccoon-head.svg" id="10_reygo"] [ext_resource type="Texture2D" uid="uid://boxdrq4nrq7hv" path="res://Assets/Icones/flamingo.svg" id="11_76b7g"] +[ext_resource type="Script" uid="uid://igvr34eaqta" path="res://UI/PierreEnergyMenuProgressBar.gd" id="12_decjp"] [ext_resource type="Texture2D" uid="uid://m6jwakrus50v" path="res://Assets/Icones/sea-star.svg" id="12_ih1k6"] [ext_resource type="Texture2D" uid="uid://dwwgho6f8f4kj" path="res://Assets/Icones/penguin.svg" id="13_ryolu"] [ext_resource type="Texture2D" uid="uid://c4ir6y45pchpl" path="res://Assets/Icones/seahorse.svg" id="14_hndjt"] @@ -30,6 +31,9 @@ bg_color = Color(0.727498, 0.222072, 0.249347, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3lugd"] bg_color = Color(0.933333, 0.933333, 0.933333, 1) +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_decjp"] +bg_color = Color(1, 0.878431, 0, 1) + [node name="GUI" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -221,6 +225,17 @@ grow_vertical = 2 texture = ExtResource("9_decjp") expand_mode = 1 +[node name="ProgressBar" type="ProgressBar" parent="HBoxContainer/ControlPanelBase/MarginContainer/GridContainer/ButtonPierre"] +layout_mode = 0 +offset_left = 1.0 +offset_top = 71.0 +offset_right = 79.0 +offset_bottom = 78.0 +mouse_filter = 1 +theme_override_styles/fill = SubResource("StyleBoxFlat_decjp") +show_percentage = false +script = ExtResource("12_decjp") + [node name="ButtonAline" type="Button" parent="HBoxContainer/ControlPanelBase/MarginContainer/GridContainer"] custom_minimum_size = Vector2(80, 80) layout_mode = 2