diff --git a/Globals/EnhancedResource.gd b/Globals/EnhancedResource.gd index d941332..c280f9e 100644 --- a/Globals/EnhancedResource.gd +++ b/Globals/EnhancedResource.gd @@ -1,7 +1,7 @@ extends Resource class_name EnhancedResource -func arrayValueChanged(value : Array[Variant], resourceToCreate : Callable) -> Array[Variant]: +static func arrayValueChanged(value : Array[Variant], resourceToCreate : Callable) -> Array[Variant]: if Engine.is_editor_hint(): for i in value.size(): if !value[i]: diff --git a/Globals/EventBus.gd b/Globals/EventBus.gd index 0a9185b..fa696c7 100644 --- a/Globals/EventBus.gd +++ b/Globals/EventBus.gd @@ -39,11 +39,16 @@ signal projectile_shooted(projectile: Projectile, startPosition: Vector3) ## [b]Emitter[/b] : [WorldManager][br] ## [b]Subscriber[/b] : [Game] -signal player_has_won() +signal player_has_won ## [b]Emitter[/b] : [WorldManager][br] ## [b]Subscriber[/b] : [code]null[/code] -signal waveHasChange(waveNumber : int) +signal wave_has_change(waveNumber : int) + + +## [b]Emitter[/b] : [gui.gd][br] +## [b]Subscriber[/b] : [WorldManager] +signal lauch_next_wave @warning_ignore_restore("unused_signal") diff --git a/Globals/Game.gd b/Globals/Game.gd index 7079d4d..ec76a35 100644 --- a/Globals/Game.gd +++ b/Globals/Game.gd @@ -49,7 +49,6 @@ func initTower(towerType: Tower.TYPE) -> Tower: func resetGame() -> void: - towers.values().map(queue_free) towers.clear() # DANGER Don't use [method clear] or you will clear the level datas allowedTowers = [] diff --git a/Globals/Helper.gd b/Globals/Helper.gd index 97dbecc..908fb22 100644 --- a/Globals/Helper.gd +++ b/Globals/Helper.gd @@ -16,7 +16,7 @@ enum RESOURCE_TYPE { TOWER, ENEMY, LEVEL } ## [color=crimson][b]WARNING :[/b] Work only with the [enum RESOURCE_TYPE] [param TOWER][/color] static func preloadSceneInGlobal(property: Dictionary, type: RESOURCE_TYPE) -> void: - assert(type == RESOURCE_TYPE.TOWER) + assert(type == RESOURCE_TYPE.TOWER, "[color=crimson][b]WARNING :[/b] Work only with the [enum RESOURCE_TYPE] [param TOWER][/color]") var files : Array[String] = getPackedScenesPaths(type) diff --git a/Levels/Map 1/level_1.tres b/Levels/Map 1/level_1.tres index e7c91ff..7d9bd05 100644 --- a/Levels/Map 1/level_1.tres +++ b/Levels/Map 1/level_1.tres @@ -9,7 +9,7 @@ script = ExtResource("3_ub8wd") enemy = "res://Enemies/Scenes/enemy-a.tscn" number_to_spawn = 1 lane_to_spawn = 0 -spawn_delay = 4.0 +spawn_delay = 2.0 metadata/_custom_type_script = "uid://blxx3vs2wnfet" [sub_resource type="Resource" id="Resource_e6yyc"] @@ -36,7 +36,7 @@ script = ExtResource("3_ub8wd") enemy = "res://Enemies/Scenes/enemy-a.tscn" number_to_spawn = 3 lane_to_spawn = 0 -spawn_delay = 5.0 +spawn_delay = 2.0 [sub_resource type="Resource" id="Resource_ftl6b"] script = ExtResource("3_ub8wd") @@ -52,6 +52,7 @@ troops = Array[ExtResource("3_ub8wd")]([SubResource("Resource_qfjse"), SubResour [resource] script = ExtResource("1_ftl6b") auto_start = false +auto_launch_wave = false allowedTowers = Array[int]([1, 2, 3, 4]) laneCount = 1 startingMoney = 999 diff --git a/Levels/Map 1/map_1.tscn b/Levels/Map 1/map_1.tscn index 6a440fe..9eb02c0 100644 --- a/Levels/Map 1/map_1.tscn +++ b/Levels/Map 1/map_1.tscn @@ -13,7 +13,7 @@ [sub_resource type="Curve3D" id="Curve3D_okc5w"] _data = { -"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 9.5, 0, -5.5, 0, 0, 0, 0, 0, 0, 0.5, 0, -5.5, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 9, 0, 0.5), +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 9.5, 0, -5.5, 0, 0, 0, 0, 0, 0, 0.5, 0, -5.5, 0, 0, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0, 0, 9.5, 0, 0.5), "tilts": PackedFloat32Array(0, 0, 0, 0) } point_count = 4 diff --git a/Levels/Scripts/Resource/Level.gd b/Levels/Scripts/Resource/Level.gd index 3f84012..2ccdec2 100644 --- a/Levels/Scripts/Resource/Level.gd +++ b/Levels/Scripts/Resource/Level.gd @@ -4,6 +4,7 @@ class_name Level @export var auto_start : bool = false +@export var auto_launch_wave : bool = false @export var allowedTowers : Array[Tower.TYPE] @export var laneCount : int = 1 @export var startingMoney : int = 0 diff --git a/Levels/Scripts/WorldManager.gd b/Levels/Scripts/WorldManager.gd index ec7c6f6..2a60393 100644 --- a/Levels/Scripts/WorldManager.gd +++ b/Levels/Scripts/WorldManager.gd @@ -1,23 +1,28 @@ extends Node3D class_name WorldManager + +enum STATE { INIT, IDLE, SPAWN, SPAWNING, FIGHT, WAVE_END, LEVEL_END } + + const PACK_DELAY : float = .15 + var level : Level var paths : Array[Node] - +var state : STATE = STATE.INIT var wave : int = 0 -var currentTroopIdx : int = 0 var currentTroop : Troop : - get(): - return level.waves[wave - 1].troops[currentTroopIdx] + get(): return level.waves[wave - 1].troops[currentTroopIdx] +var currentTroopIdx : int = 0 var enemiesAlive : int = 0 @onready var troopTimer : Timer = $TroopTimer func _ready() -> void: EventBus.projectile_shooted.connect(onProjectileShooted) - Game.loose.connect(queue_free) + EventBus.lauch_next_wave.connect(changeState.bind(STATE.SPAWN)) + troopTimer.timeout.connect(spawnTroop) func onProjectileShooted(projectile: Projectile, startPosition: Vector3) -> void: @@ -25,20 +30,47 @@ func onProjectileShooted(projectile: Projectile, startPosition: Vector3) -> void projectile.global_position = startPosition +func changeState(newState: STATE) -> void: + match newState: + STATE.SPAWN when [STATE.IDLE, STATE.WAVE_END].has(state): + state = newState + + func _process(_delta: float) -> void: - if wave > 0 || level && level.auto_start: - spawnManager() + if state == STATE.INIT: + return + + match state: + STATE.SPAWN: + spawnNextWave() + state = STATE.SPAWNING + STATE.SPAWNING when troopTimer.is_stopped(): + state = STATE.FIGHT + STATE.FIGHT when enemiesAlive == 0: + state = STATE.WAVE_END + STATE.WAVE_END when wave == level.waves.size(): + EventBus.player_has_won.emit() + state = STATE.LEVEL_END + STATE.WAVE_END when level.auto_launch_wave: + state = STATE.SPAWN func spawnNextWave() -> void: - if wave == level.waves.size() && currentTroopIdx == level.waves[wave - 1].troops.size(): - EventBus.player_has_won.emit() - queue_free.call_deferred() - return - currentTroopIdx = 0 wave += 1 - EventBus.waveHasChange.emit(wave) + EventBus.wave_has_change.emit(wave) + spawnNextTroop() + + +func spawnNextTroop() -> void: + # Wave spawning is finished + if currentTroopIdx == level.waves[wave - 1].troops.size(): + return + + if currentTroop.spawn_delay == 0: + spawnTroop() + else: + troopTimer.start(currentTroop.spawn_delay) func spawnTroop() -> void: @@ -49,6 +81,7 @@ func spawnTroop() -> void: totalDelay += PACK_DELAY currentTroopIdx += 1 + spawnNextTroop() func spawnEnemy(enemyScene: PackedScene, laneToSpawn: int, delay: float) -> void: @@ -76,22 +109,6 @@ func createEnemy(enemyScene: PackedScene) -> PathFollow3D : return PF3D -func spawnManager() -> void: - if not troopTimer.is_stopped(): - return - - var current_wave : Wave = level.waves[wave - 1] - if current_wave.troops.size() < currentTroopIdx + 1: - if enemiesAlive == 0: - spawnNextWave() - return - - if currentTroop.spawn_delay == 0: - spawnTroop() - else: - troopTimer.start(currentTroop.spawn_delay) - - func createTimer(delay: float) -> Timer : var timer : Timer = Timer.new() timer.wait_time = delay @@ -108,4 +125,4 @@ func addMap(mapScene : PackedScene) -> void: paths = map.paths.get_children() Game.money = level.startingMoney Game.allowedTowers = level.allowedTowers - spawnNextWave() + state = STATE.SPAWN if level.auto_start else STATE.IDLE diff --git a/Levels/world_manager.tscn b/Levels/world_manager.tscn index ac79788..abb9688 100644 --- a/Levels/world_manager.tscn +++ b/Levels/world_manager.tscn @@ -98,5 +98,3 @@ light_energy = 0.0 [node name="TroopTimer" type="Timer" parent="."] one_shot = true - -[connection signal="timeout" from="TroopTimer" to="." method="spawnTroop"] diff --git a/Towers/Scenes/aline.tscn b/Towers/Scenes/aline.tscn index a0c2633..17e5824 100644 --- a/Towers/Scenes/aline.tscn +++ b/Towers/Scenes/aline.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_gvvig"] [ext_resource type="Texture2D" uid="uid://cob1lydkirn20" path="res://Assets/Icones/raccoon-head.svg" id="3_6h033"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="3_p2nb1"] +[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/TowerUpgrade.gd" id="3_p2nb1"] [ext_resource type="Script" uid="uid://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="4_ck6a3"] [ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="5_l514g"] [ext_resource type="Texture2D" uid="uid://dqyhhvxpwtpsy" path="res://Assets/Emotes/emote_star.png" id="5_lhd8w"] diff --git a/Towers/Scenes/evan.tscn b/Towers/Scenes/evan.tscn index eb954a3..ab58780 100644 --- a/Towers/Scenes/evan.tscn +++ b/Towers/Scenes/evan.tscn @@ -3,7 +3,7 @@ [ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_yctfx"] [ext_resource type="Texture2D" uid="uid://dwwgho6f8f4kj" path="res://Assets/Icones/penguin.svg" id="2_5uh04"] [ext_resource type="Script" uid="uid://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="3_gr7yf"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_v32j5"] +[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/TowerUpgrade.gd" id="4_v32j5"] [sub_resource type="Resource" id="Resource_mf185"] script = ExtResource("3_gr7yf") diff --git a/Towers/Scenes/geraldine.tscn b/Towers/Scenes/geraldine.tscn index 7a6f5a3..04213ad 100644 --- a/Towers/Scenes/geraldine.tscn +++ b/Towers/Scenes/geraldine.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_bw8ui"] [ext_resource type="Texture2D" uid="uid://d4pdmbhhlphc" path="res://Assets/Icones/seated-mouse.svg" id="2_1pop4"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_nxn76"] +[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/TowerUpgrade.gd" id="4_nxn76"] [ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="5_kbhva"] [node name="Geraldine" instance=ExtResource("1_bw8ui")] diff --git a/Towers/Scenes/maxence.tscn b/Towers/Scenes/maxence.tscn index e05dd36..4358423 100644 --- a/Towers/Scenes/maxence.tscn +++ b/Towers/Scenes/maxence.tscn @@ -3,7 +3,7 @@ [ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_laam8"] [ext_resource type="Script" uid="uid://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="2_7fox5"] [ext_resource type="Texture2D" uid="uid://boxdrq4nrq7hv" path="res://Assets/Icones/flamingo.svg" id="2_sciv6"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_l8w4i"] +[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/TowerUpgrade.gd" id="4_l8w4i"] [sub_resource type="SphereShape3D" id="SphereShape3D_sciv6"] radius = 0.2 diff --git a/Towers/Scenes/pierre.tscn b/Towers/Scenes/pierre.tscn index 1b67c45..ee7a31a 100644 --- a/Towers/Scenes/pierre.tscn +++ b/Towers/Scenes/pierre.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=8 format=3 uid="uid://bj6srer7ghf7p"] +[gd_scene load_steps=14 format=3 uid="uid://bj6srer7ghf7p"] [ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_s6dfo"] [ext_resource type="Texture2D" uid="uid://bb4wihq1n1wm7" path="res://Assets/Icones/labrador-head.svg" id="2_lcjqw"] [ext_resource type="Script" uid="uid://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="3_5tgsk"] [ext_resource type="Texture2D" uid="uid://dqyhhvxpwtpsy" path="res://Assets/Emotes/emote_star.png" id="4_r52mr"] +[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/TowerUpgrade.gd" id="5_wvh05"] +[ext_resource type="Texture2D" uid="uid://dqvou7t7o1t5d" path="res://Assets/Icones/medal2.png" id="6_wnw3f"] [sub_resource type="Resource" id="Resource_r52mr"] script = ExtResource("3_5tgsk") @@ -18,6 +20,60 @@ metadata/_custom_type_script = "uid://ddgbr0n8kic3y" [sub_resource type="SphereShape3D" id="SphereShape3D_c55ds"] radius = 5.0 +[sub_resource type="Resource" id="Resource_yyqap"] +script = ExtResource("5_wvh05") +type = 0 +icon = ExtResource("6_wnw3f") +text = "Upgrade" +baseCost = 50 +value = 50.0 +maxLevel = -1 +upgradeDirection = 1 +upgradeScaleType = 0 +costScaleType = 0 +costModificator = 0.0 +metadata/_custom_type_script = "uid://bg0x4egeu17qb" + +[sub_resource type="Resource" id="Resource_556ww"] +script = ExtResource("5_wvh05") +type = 1 +icon = ExtResource("6_wnw3f") +text = "Upgrade" +baseCost = 50 +value = 10.0 +maxLevel = 5 +upgradeDirection = 1 +upgradeScaleType = 0 +costScaleType = 0 +costModificator = 0.0 +metadata/_custom_type_script = "uid://bg0x4egeu17qb" + +[sub_resource type="Resource" id="Resource_wvh05"] +script = ExtResource("5_wvh05") +type = 3 +icon = ExtResource("6_wnw3f") +text = "Upgrade" +baseCost = 50 +value = 1.0 +maxLevel = -1 +upgradeDirection = 1 +upgradeScaleType = 0 +costScaleType = 0 +costModificator = 0.0 + +[sub_resource type="Resource" id="Resource_wnw3f"] +script = ExtResource("5_wvh05") +type = 5 +icon = ExtResource("6_wnw3f") +text = "Upgrade" +baseCost = 2000 +value = 0.2 +maxLevel = 2 +upgradeDirection = 1 +upgradeScaleType = 0 +costScaleType = 0 +costModificator = 0.0 + [sub_resource type="ViewportTexture" id="ViewportTexture_r52mr"] viewport_path = NodePath("EnergyBar3D/SubViewport") @@ -31,6 +87,10 @@ action_cooldown = 1.0 max_energy = 50.0 energy_regen = 5.0 energy_cost = 2.0 +upgrades = Array[ExtResource("5_wvh05")]([SubResource("Resource_yyqap"), SubResource("Resource_556ww"), SubResource("Resource_wvh05"), SubResource("Resource_wnw3f")]) [node name="EnergyBar3D" parent="." index="6"] texture = SubResource("ViewportTexture_r52mr") + +[node name="EnergyBar2D" parent="EnergyBar3D/SubViewport" index="0"] +max_value = 50.0 diff --git a/Towers/Scenes/victoria.tscn b/Towers/Scenes/victoria.tscn index ab39e2f..1159f65 100644 --- a/Towers/Scenes/victoria.tscn +++ b/Towers/Scenes/victoria.tscn @@ -3,7 +3,7 @@ [ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_ki73m"] [ext_resource type="Texture2D" uid="uid://m6jwakrus50v" path="res://Assets/Icones/sea-star.svg" id="2_n34tq"] [ext_resource type="Script" uid="uid://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="3_sf52i"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_uso5g"] +[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/TowerUpgrade.gd" id="4_uso5g"] [ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="5_2rqsg"] [sub_resource type="SphereShape3D" id="SphereShape3D_rbuca"] diff --git a/Towers/Tower.gd b/Towers/Tower.gd index 8d342da..7730d37 100644 --- a/Towers/Tower.gd +++ b/Towers/Tower.gd @@ -55,7 +55,9 @@ var builded : bool = false @export_category("Upgrades") -@export var upgrades : Array[TowerUpgrade] +@export var upgrades : Array[TowerUpgrade] : + set(value): + upgrades = EnhancedResource.arrayValueChanged(value, TowerUpgrade.new) func _ready() -> void: diff --git a/Towers/TowerManager.gd b/Towers/TowerManager.gd index a28a4ce..78bae67 100644 --- a/Towers/TowerManager.gd +++ b/Towers/TowerManager.gd @@ -9,6 +9,7 @@ class_name TowerManager var usedLocations : Dictionary var selectedTile : Vector3 var selected_tower : Tower +var buildedTower : int = 0 func _ready() -> void: @@ -29,7 +30,7 @@ func _process(_delta: float) -> void: if isTileFree(collider): placeTower() - elif tower && selected_tower && selected_tower.builded: + elif tower && (not selected_tower || not selected_tower.builded): EventBus.tower_selected.emit(tower.type) if Input.is_action_just_pressed("rest"): @@ -74,6 +75,8 @@ func placeTower() -> void: if not selected_tower.builded: if not selected_tower.build(): return + buildedTower += 1 + EventBus.tower_count_changed.emit(buildedTower) remove_child(selected_tower) $"../Towers".add_child(selected_tower) @@ -96,7 +99,9 @@ func moveTower(tower: Tower, toPosition: Vector3) -> void: tower.global_position = toPosition tower.in_action() - emitTeamChanges() + var inAction : int = usedLocations.size() + EventBus.team_in_action_changed.emit(inAction) + EventBus.team_in_rest_changed.emit(buildedTower - inAction) func selectTower(towerType: Tower.TYPE): @@ -113,18 +118,3 @@ func selectTower(towerType: Tower.TYPE): else: selected_tower = Game.initTower(towerType) add_child(selected_tower) - - -func emitTeamChanges() -> void: - var team_in_rest : int = 0 - var tower_count : int = 0 - for towerType in Game.towers: - var tower : Tower = Game.towers[towerType] - if tower.builded: - tower_count += 1 - if tower.is_rest: - team_in_rest += 1 - - EventBus.team_in_action_changed.emit(usedLocations.size()) - EventBus.team_in_rest_changed.emit(team_in_rest) - EventBus.tower_count_changed.emit(tower_count) diff --git a/UI/TowerPanel.gd b/UI/TowerPanel.gd index 4d0b99c..511b0e3 100644 --- a/UI/TowerPanel.gd +++ b/UI/TowerPanel.gd @@ -14,18 +14,18 @@ func onTowerSelected(towerType : Tower.TYPE) -> void: visible = false tower = null return - return - tower = Game.getTower(towerType) + tower = Game.towers.get(towerType) %TowerIcon.texture = tower.icone %TowerName.text = tower.tower_name - %TowerDamage.text = str(tower.projectileRessource.damage) - %TowerCooldown.text = str(tower.action_cooldown) - %TowerBio.text = tower.bio + %TowerDamage.text = "Dmg : %d" % tower.projectileRessource.damage + %TowerCooldown.text = "cooldown : %.1f" % tower.action_cooldown + # TODO Check for better UI to display it + #%TowerBio.text = tower.bio onEnergyChanged(tower) visible = true func onEnergyChanged(_tower : Tower) -> void: if _tower == tower: - %TowerEnergy.text = "%d/%d" % [ str(tower.energy), str(tower.max_energy) ] + %TowerEnergy.text = "%d/%d" % [ tower.energy, tower.max_energy ] diff --git a/UI/gui.gd b/UI/gui.gd index bc795f6..9766e6c 100644 --- a/UI/gui.gd +++ b/UI/gui.gd @@ -6,20 +6,17 @@ const BUTTON_QTY = 4 const guiButton : PackedScene = preload("res://UI/gui_button.tscn") @onready var buttonContainer = %ButtonContainer -@onready var moneyLabel = %LabelMoney -@onready var towerInCubeLabel = %LabelTowerInCube -@onready var towerOnTerrainLabel = %LabelTowerOnTerrain @onready var cubeIntegrity = %CubeIntegrity func _ready() -> void: addTowerButtonNodes() - EventBus.team_in_rest_changed.connect(func(count): towerInCubeLabel.text = str(count) + " x Zzz") - EventBus.team_in_action_changed.connect(func(count): towerOnTerrainLabel.text = str(count) + " in action") + EventBus.team_in_rest_changed.connect(func(count): %LabelTowerInCube.text = "Zzz : %d" % count) + EventBus.team_in_action_changed.connect(func(count): %LabelTowerOnTerrain.text = " In action : %d" % count) Game.allowed_tower_has_change.connect(addTowerButtonNodes) Game.cube_integrity_changed.connect(func(): cubeIntegrity.value = Game.healthPercentage) - Game.money_changed.connect(func(): moneyLabel.text = str(Game.money) + " €") - cubeIntegrity.max_value = Game.max_health + Game.money_changed.connect(func(): %LabelMoney.text = "%d €" % Game.money) + %NextWaveBtn.pressed.connect(EventBus.lauch_next_wave.emit) func _on_button_cube_pressed() -> void: @@ -39,7 +36,6 @@ func addTowerButtonNodes() -> void: if node.has_meta("dynamicButton"): node.queue_free() - var additionalPlaceholder : int = 0 for towerType : int in Tower.TYPE.values() : if towerType && (Engine.is_editor_hint() || Game.allowedTowers.has(towerType)): createTowerButton(towerType) diff --git a/UI/gui.tscn b/UI/gui.tscn index 7dcfa25..82e9f23 100644 --- a/UI/gui.tscn +++ b/UI/gui.tscn @@ -8,9 +8,9 @@ [ext_resource type="Texture2D" uid="uid://dfnf26suc8yb6" path="res://Assets/Icones/sideswipe.svg" id="8_ay13l"] [ext_resource type="Texture2D" uid="uid://dootdihg7gkoj" path="res://Assets/Icones/exit-door.svg" id="8_decjp"] [ext_resource type="Script" uid="uid://s4t3oa4v87xe" path="res://UI/TowerPanel.gd" id="9_3lugd"] -[ext_resource type="Script" uid="uid://dyhtr6g7kd1g2" path="res://UI/gui_button.gd" id="9_h4fn5"] [ext_resource type="Texture2D" uid="uid://b4m5ejfdrm8s0" path="res://Assets/Icones/power-button.svg" id="9_reygo"] [ext_resource type="Texture2D" uid="uid://uptdcefxlv4c" path="res://Assets/Icones/ppdf_bio_image_placeholder_2.png" id="10_parkk"] +[ext_resource type="Script" uid="uid://bjetiiimo62du" path="res://UI/UpgradeButton.gd" id="11_parkk"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h4fn5"] bg_color = Color(0.933333, 0.933333, 0.933333, 1) @@ -104,8 +104,7 @@ size_flags_vertical = 1 tooltip_text = "Les points d'intégrités du Cube. S'ils arrivent à 0, fin de la partie." theme_override_styles/background = SubResource("StyleBoxFlat_nxmp4") theme_override_styles/fill = SubResource("StyleBoxFlat_epgl5") -max_value = 50.0 -value = 50.0 +value = 100.0 fill_mode = 3 show_percentage = false @@ -141,12 +140,12 @@ texture = ExtResource("8_decjp") layout_mode = 2 texture = ExtResource("9_reygo") -[node name="ReturnBtn" parent="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] +[node name="NextWaveBtn" parent="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer" instance=ExtResource("7_parkk")] +unique_name_in_owner = true layout_mode = 2 texture = ExtResource("8_ay13l") [node name="TowerInfoPanel" type="HBoxContainer" parent="."] -visible = false layout_mode = 1 anchors_preset = 2 anchor_top = 1.0 @@ -202,6 +201,7 @@ horizontal_alignment = 2 [node name="TowerIcon" type="TextureRect" parent="TowerInfoPanel/InfoPanel/MarginContainer/VBoxContainer/HBoxContainer"] unique_name_in_owner = true layout_mode = 2 +theme = ExtResource("5_wpcnu") texture = ExtResource("10_parkk") expand_mode = 3 @@ -225,11 +225,12 @@ horizontal_alignment = 2 [node name="TowerBio" type="Label" parent="TowerInfoPanel/InfoPanel/MarginContainer/VBoxContainer"] unique_name_in_owner = true +visible = false layout_mode = 2 +size_flags_horizontal = 0 tooltip_text = "Le nombre de héros en action sur le terrain !" mouse_filter = 1 theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1) -text = "0" horizontal_alignment = 2 [node name="UpgradeContainer" type="PanelContainer" parent="TowerInfoPanel"] @@ -253,17 +254,16 @@ columns = 4 layout_mode = 2 theme_override_font_sizes/font_size = 20 text = "Améliorer" -script = ExtResource("9_h4fn5") -metadata/_custom_type_script = "uid://dyhtr6g7kd1g2" +script = ExtResource("11_parkk") [connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/CubeBtn" to="." method="_on_button_cube_pressed"] [connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/QuitLevelBtn" to="." method="quitLevel"] [connection signal="pressed" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/QuitGameBtn" to="." method="quitGame"] [connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/TowerButton" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/TowerButton" method="buttonToggled"] -[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32868" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32868" method="buttonToggled"] -[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32869" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32869" method="buttonToggled"] -[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32870" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32870" method="buttonToggled"] -[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32871" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32871" method="buttonToggled"] -[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32872" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32872" method="buttonToggled"] -[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32873" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32873" method="buttonToggled"] -[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32874" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@32874" method="buttonToggled"] +[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71848" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71848" method="buttonToggled"] +[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71849" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71849" method="buttonToggled"] +[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71850" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71850" method="buttonToggled"] +[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71851" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71851" method="buttonToggled"] +[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71852" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71852" method="buttonToggled"] +[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71853" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71853" method="buttonToggled"] +[connection signal="toggled" from="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71854" to="HBoxContainer/ControlPanelBase/MarginContainer/ButtonContainer/@Button@71854" method="buttonToggled"] diff --git a/UI/gui_button.gd b/UI/gui_button.gd index c5a6b34..d4b7ddb 100644 --- a/UI/gui_button.gd +++ b/UI/gui_button.gd @@ -22,7 +22,7 @@ var towerType : Tower.TYPE : EventBus.tower_upgraded.connect(upgradeTower) -func upgradeTower(towerType : Tower.TYPE, upgrade : TowerUpgrade) -> void: +func upgradeTower(_towerType : Tower.TYPE, upgrade : TowerUpgrade) -> void: pass diff --git a/Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres b/Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres deleted file mode 100644 index cab45b1..0000000 --- a/Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres +++ /dev/null @@ -1,21 +0,0 @@ -[gd_resource type="Resource" script_class="TowerUpgrade" load_steps=3 format=3 uid="uid://cfyahlbi4apsj"] - -[ext_resource type="Texture2D" uid="uid://dqvou7t7o1t5d" path="res://Assets/Icones/medal2.png" id="1_b7fga"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="2_55ej0"] - -[resource] -script = ExtResource("2_55ej0") -type = 6 -max_energy_increase = 5 -action_cooldown_decrease = 0.3 -energy_regen_increase = 5 -icon = ExtResource("1_b7fga") -text = "Upgrade Cooldown" -baseCost = 50 -value = 0.3 -maxLevel = 5 -upgradeDirection = 0 -upgradeScaleType = 0 -costScaleType = 0 -modificator = 0.0 -metadata/_custom_type_script = "uid://c12qiuxn5uw2n" diff --git a/Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres b/Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres deleted file mode 100644 index 34b12f3..0000000 --- a/Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres +++ /dev/null @@ -1,20 +0,0 @@ -[gd_resource type="Resource" script_class="TowerUpgrade" load_steps=3 format=3 uid="uid://b50h2sx6xhdb2"] - -[ext_resource type="Texture2D" uid="uid://dqvou7t7o1t5d" path="res://Assets/Icones/medal2.png" id="1_gcuvb"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="2_pn0j6"] - -[resource] -script = ExtResource("2_pn0j6") -type = 1 -max_energy_increase = 5 -action_cooldown_decrease = 0.3 -energy_regen_increase = 5 -icon = ExtResource("1_gcuvb") -text = "Upgrade energy regen" -baseCost = 50 -value = 5.0 -maxLevel = -1 -upgradeDirection = 0 -upgradeScaleType = 0 -costScaleType = 0 -modificator = 0.0 diff --git a/Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres b/Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres deleted file mode 100644 index 3172bc0..0000000 --- a/Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres +++ /dev/null @@ -1,17 +0,0 @@ -[gd_resource type="Resource" script_class="TowerUpgrade" load_steps=3 format=3 uid="uid://c6844q5o2gjhd"] - -[ext_resource type="Texture2D" uid="uid://dqvou7t7o1t5d" path="res://Assets/Icones/medal2.png" id="1_7aeby"] -[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="2_7dqep"] - -[resource] -script = ExtResource("2_7dqep") -type = 0 -icon = ExtResource("1_7aeby") -text = "Upgrade" -baseCost = 50 -value = 5.0 -maxLevel = -1 -upgradeDirection = 0 -upgradeScaleType = 0 -costScaleType = 0 -costModificator = 0.0 diff --git a/Upgrades/Tower/TowerUpgrade.gd b/Upgrades/TowerUpgrade.gd similarity index 100% rename from Upgrades/Tower/TowerUpgrade.gd rename to Upgrades/TowerUpgrade.gd diff --git a/Upgrades/Tower/TowerUpgrade.gd.uid b/Upgrades/TowerUpgrade.gd.uid similarity index 100% rename from Upgrades/Tower/TowerUpgrade.gd.uid rename to Upgrades/TowerUpgrade.gd.uid diff --git a/Upgrades/Upgrade.gd b/Upgrades/Upgrade.gd index c76bdb8..5de7d17 100644 --- a/Upgrades/Upgrade.gd +++ b/Upgrades/Upgrade.gd @@ -9,7 +9,7 @@ enum UPGRADE_DIRECTION { INCREASE = 1, DECREASE = -1 } @export var icon : Texture2D = preload("res://Assets/Icones/medal2.png") @export var text : String = "Upgrade" @export var baseCost : int = 50 -@export_range(1, INF, 1, "hide_slider") var value : float +@export_range(0.001, 999, 0.001, "hide_slider") var value : float @export_range(-1, 100, 1, "hide_slider") var maxLevel : int = -1 ##[param -1] for infinite leveling @export_group("Upgrade Scaling")