feat: add upgrade logic
This commit is contained in:
parent
36197bbd01
commit
6cbd7c54dd
40 changed files with 189 additions and 137 deletions
|
|
@ -14,7 +14,7 @@ signal tower_builded(tower : Tower)
|
||||||
|
|
||||||
## [b]Emitter[/b] : [UpgradeButton][br]
|
## [b]Emitter[/b] : [UpgradeButton][br]
|
||||||
## [b]Subscriber[/b] : [Tower]
|
## [b]Subscriber[/b] : [Tower]
|
||||||
signal tower_upgraded(tower_to_upgrade : String, upgrade : TowerUpgrade)
|
signal tower_upgraded(towerType : Tower.TYPE, upgrade : TowerUpgrade)
|
||||||
|
|
||||||
|
|
||||||
## [b]Emitter[/b] : [TheCube][br]
|
## [b]Emitter[/b] : [TheCube][br]
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
@tool
|
||||||
class_name Game
|
class_name Game
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -42,13 +43,13 @@ static func _static_init() -> void:
|
||||||
preloadSceneInGlobal(towers, RESOURCE_TYPE.TOWER)
|
preloadSceneInGlobal(towers, RESOURCE_TYPE.TOWER)
|
||||||
#preloadSceneInGlobal(enemies, ENEMY_DIR)
|
#preloadSceneInGlobal(enemies, ENEMY_DIR)
|
||||||
|
|
||||||
|
## [color=crimson][b]WARNING :[/b] Work only with the [enum RESOURCE_TYPE] [param TOWER][/color]
|
||||||
static func preloadSceneInGlobal(property: Dictionary, type: RESOURCE_TYPE):
|
static func preloadSceneInGlobal(property: Dictionary, type: RESOURCE_TYPE) -> void:
|
||||||
var files : Array[String] = getPackedScenesPaths(type)
|
|
||||||
|
|
||||||
if type != RESOURCE_TYPE.TOWER:
|
if type != RESOURCE_TYPE.TOWER:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
var files : Array[String] = getPackedScenesPaths(type)
|
||||||
|
|
||||||
for file in files:
|
for file in files:
|
||||||
var scene = load(file)
|
var scene = load(file)
|
||||||
if scene:
|
if scene:
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[gd_scene load_steps=9 format=3 uid="uid://bph5gpic1arod"]
|
[gd_scene load_steps=9 format=3 uid="uid://bph5gpic1arod"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://Levels/Scripts/WorldManager.gd" id="1_tk0a6"]
|
[ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://Levels/Scripts/WorldManager.gd" id="1_tk0a6"]
|
||||||
[ext_resource type="Script" uid="uid://caf3yamufmhd4" path="res://Towers/Scripts/TowerManager.gd" id="2_7pixp"]
|
[ext_resource type="Script" uid="uid://caf3yamufmhd4" path="res://Towers/TowerManager.gd" id="2_7pixp"]
|
||||||
[ext_resource type="Texture2D" uid="uid://o83munu8dibp" path="res://Assets/Icones/kenney_game_icons_vector.svg" id="3_6dp1o"]
|
[ext_resource type="Texture2D" uid="uid://o83munu8dibp" path="res://Assets/Icones/kenney_game_icons_vector.svg" id="3_6dp1o"]
|
||||||
[ext_resource type="PackedScene" uid="uid://p6a6rb7sgeqd" path="res://UI/gui.tscn" id="6_ebgat"]
|
[ext_resource type="PackedScene" uid="uid://p6a6rb7sgeqd" path="res://UI/gui.tscn" id="6_ebgat"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_lr28p"]
|
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_lr28p"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c4ir6y45pchpl" path="res://Assets/Icones/seahorse.svg" id="3_4yx0u"]
|
[ext_resource type="Texture2D" uid="uid://c4ir6y45pchpl" path="res://Assets/Icones/seahorse.svg" id="3_4yx0u"]
|
||||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Towers/Scripts/Upgrades/TowerUpgrade.gd" id="4_4yx0u"]
|
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_4yx0u"]
|
||||||
|
|
||||||
[node name="Alex" instance=ExtResource("1_lr28p")]
|
[node name="Alex" instance=ExtResource("1_lr28p")]
|
||||||
tower_name = "Alex"
|
tower_name = "Alex"
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_gvvig"]
|
[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="Texture2D" uid="uid://cob1lydkirn20" path="res://Assets/Icones/raccoon-head.svg" id="3_6h033"]
|
||||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Towers/Scripts/Upgrades/TowerUpgrade.gd" id="3_p2nb1"]
|
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="3_p2nb1"]
|
||||||
[ext_resource type="Script" uid="uid://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="4_ck6a3"]
|
[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://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"]
|
[ext_resource type="Texture2D" uid="uid://dqyhhvxpwtpsy" path="res://Assets/Emotes/emote_star.png" id="5_lhd8w"]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_yctfx"]
|
[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="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://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="3_gr7yf"]
|
||||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Towers/Scripts/Upgrades/TowerUpgrade.gd" id="4_v32j5"]
|
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_v32j5"]
|
||||||
|
|
||||||
[sub_resource type="Resource" id="Resource_mf185"]
|
[sub_resource type="Resource" id="Resource_mf185"]
|
||||||
script = ExtResource("3_gr7yf")
|
script = ExtResource("3_gr7yf")
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_bw8ui"]
|
[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="Texture2D" uid="uid://d4pdmbhhlphc" path="res://Assets/Icones/seated-mouse.svg" id="2_1pop4"]
|
||||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Towers/Scripts/Upgrades/TowerUpgrade.gd" id="4_nxn76"]
|
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_nxn76"]
|
||||||
[ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="5_kbhva"]
|
[ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="5_kbhva"]
|
||||||
|
|
||||||
[node name="Geraldine" instance=ExtResource("1_bw8ui")]
|
[node name="Geraldine" instance=ExtResource("1_bw8ui")]
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_laam8"]
|
[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="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="Texture2D" uid="uid://boxdrq4nrq7hv" path="res://Assets/Icones/flamingo.svg" id="2_sciv6"]
|
||||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Towers/Scripts/Upgrades/TowerUpgrade.gd" id="4_l8w4i"]
|
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_l8w4i"]
|
||||||
|
|
||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_sciv6"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_sciv6"]
|
||||||
radius = 0.2
|
radius = 0.2
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=7 format=3 uid="uid://bj6srer7ghf7p"]
|
[gd_scene load_steps=8 format=3 uid="uid://bj6srer7ghf7p"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_s6dfo"]
|
[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="Texture2D" uid="uid://bb4wihq1n1wm7" path="res://Assets/Icones/labrador-head.svg" id="2_lcjqw"]
|
||||||
|
|
@ -18,6 +18,9 @@ metadata/_custom_type_script = "uid://ddgbr0n8kic3y"
|
||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_c55ds"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_c55ds"]
|
||||||
radius = 5.0
|
radius = 5.0
|
||||||
|
|
||||||
|
[sub_resource type="ViewportTexture" id="ViewportTexture_r52mr"]
|
||||||
|
viewport_path = NodePath("EnergyBar3D/SubViewport")
|
||||||
|
|
||||||
[node name="Pierre" instance=ExtResource("1_s6dfo")]
|
[node name="Pierre" instance=ExtResource("1_s6dfo")]
|
||||||
tower_name = "Pierre"
|
tower_name = "Pierre"
|
||||||
tower_type = 1
|
tower_type = 1
|
||||||
|
|
@ -28,3 +31,6 @@ action_cooldown = 1.0
|
||||||
max_energy = 50.0
|
max_energy = 50.0
|
||||||
energy_regen = 5.0
|
energy_regen = 5.0
|
||||||
energy_cost = 2.0
|
energy_cost = 2.0
|
||||||
|
|
||||||
|
[node name="EnergyBar3D" parent="." index="6"]
|
||||||
|
texture = SubResource("ViewportTexture_r52mr")
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="1_ki73m"]
|
[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="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://ddgbr0n8kic3y" path="res://Towers/Projectiles/ProjectileResource.gd" id="3_sf52i"]
|
||||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Towers/Scripts/Upgrades/TowerUpgrade.gd" id="4_uso5g"]
|
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="4_uso5g"]
|
||||||
[ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="5_2rqsg"]
|
[ext_resource type="Texture2D" uid="uid://315k07rsgf6t" path="res://Assets/Characters/Female1.png" id="5_2rqsg"]
|
||||||
|
|
||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_rbuca"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_rbuca"]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
extends Upgrade
|
|
||||||
class_name TowerUpgrade
|
|
||||||
|
|
||||||
func apply_upgrade(tower : Tower):
|
|
||||||
pass
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
extends TowerUpgrade
|
|
||||||
class_name TowerUpgradeActionCooldown
|
|
||||||
|
|
||||||
@export var action_cooldown_decrease : float = 0.3
|
|
||||||
|
|
||||||
func apply_upgrade(tower : Tower):
|
|
||||||
tower.action_cooldown -= action_cooldown_decrease
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://c12qiuxn5uw2n
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
extends TowerUpgrade
|
|
||||||
class_name TowerUpgradeEnergyRegen
|
|
||||||
|
|
||||||
@export var energy_regen_increase : int = 5
|
|
||||||
|
|
||||||
func apply_upgrade(tower : Tower):
|
|
||||||
tower.energy_regen += energy_regen_increase
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://qxrhvv2ohy7n
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
extends TowerUpgrade
|
|
||||||
class_name TowerUpgradeMaxEnergy
|
|
||||||
|
|
||||||
@export var max_energy_increase : int = 5
|
|
||||||
|
|
||||||
func apply_upgrade(tower : Tower):
|
|
||||||
tower.max_energy += max_energy_increase
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
uid://ce3cjsuia24yk
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
extends Resource
|
|
||||||
class_name Upgrade
|
|
||||||
|
|
||||||
@export var icon : Texture2D = preload("res://Assets/Icones/medal2.png")
|
|
||||||
@export var text : String = "Upgrade"
|
|
||||||
|
|
||||||
var condition : Upgrade
|
|
||||||
|
|
@ -55,13 +55,13 @@ var is_rest : bool = true:
|
||||||
else:
|
else:
|
||||||
in_action()
|
in_action()
|
||||||
|
|
||||||
|
|
||||||
@export_category("Upgrades")
|
@export_category("Upgrades")
|
||||||
var tower_upgrades : Array[TowerUpgrade]
|
@export var upgrades : Array[TowerUpgrade]
|
||||||
@export var tower_shop : Array[TowerUpgrade]
|
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
EventBus.tower_upgraded.connect(_on_EventBus_tower_upgraded)
|
EventBus.tower_upgraded.connect(apply_upgrade)
|
||||||
EventBus.energy_has_changed.emit(self)
|
EventBus.energy_has_changed.emit(self)
|
||||||
# WARNING : Prevent .tscn file to be modified by the load of the scene in editor
|
# WARNING : Prevent .tscn file to be modified by the load of the scene in editor
|
||||||
if not Engine.is_editor_hint():
|
if not Engine.is_editor_hint():
|
||||||
|
|
@ -85,27 +85,13 @@ func _process(_delta: float) -> void:
|
||||||
|
|
||||||
|
|
||||||
func get_available_upgrades() -> Array[TowerUpgrade]:
|
func get_available_upgrades() -> Array[TowerUpgrade]:
|
||||||
var available_upgrades : Array[TowerUpgrade]
|
return upgrades.filter(func(u: TowerUpgrade): u.isLevelMax)
|
||||||
#Check every upgrades in shop
|
|
||||||
for shop_upgrade in tower_shop:
|
|
||||||
#If they have no conditions, they are available
|
|
||||||
if shop_upgrade.condition == null:
|
|
||||||
available_upgrades.append(shop_upgrade)
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
# If they have a condition, check for the previously bought upgrades
|
|
||||||
for owned_upgrade in tower_upgrades: #Check
|
|
||||||
if shop_upgrade.condition == owned_upgrade:
|
|
||||||
available_upgrades.append(shop_upgrade)
|
|
||||||
return available_upgrades
|
|
||||||
|
|
||||||
func apply_upgrade(upgrade : TowerUpgrade):
|
|
||||||
upgrade.apply_upgrade(self)
|
func apply_upgrade(towerType : Tower.TYPE, upgrade : TowerUpgrade):
|
||||||
if tower_shop.has(upgrade):
|
## TODO DANGER connect cube money
|
||||||
tower_shop.erase(upgrade)
|
if towerType == tower_type && upgrade.canUpgrade(100):
|
||||||
tower_upgrades.append(upgrade)
|
upgrade.upgrade(self)
|
||||||
else:
|
|
||||||
printerr("Upgrade already bought")
|
|
||||||
|
|
||||||
|
|
||||||
func shoot() -> void:
|
func shoot() -> void:
|
||||||
|
|
@ -172,8 +158,3 @@ func _on_cooldown_timeout() -> void:
|
||||||
|
|
||||||
func _on_energy_cooldown_timeout() -> void:
|
func _on_energy_cooldown_timeout() -> void:
|
||||||
resting()
|
resting()
|
||||||
|
|
||||||
|
|
||||||
func _on_EventBus_tower_upgraded(tower_to_upgrade : String, upgrade : TowerUpgrade) -> void:
|
|
||||||
if tower_to_upgrade == tower_name:
|
|
||||||
apply_upgrade(upgrade)
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
[gd_scene load_steps=12 format=3 uid="uid://trg7ag3dqr2l"]
|
[gd_scene load_steps=11 format=3 uid="uid://trg7ag3dqr2l"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://8kpvuurr5h5n" path="res://Towers/Scripts/Tower.gd" id="1_egfuc"]
|
[ext_resource type="Script" uid="uid://8kpvuurr5h5n" path="res://Towers/Tower.gd" id="1_egfuc"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bn6ikwol6x8r0" path="res://Assets/Characters/Male1.png" id="2_egfuc"]
|
[ext_resource type="Texture2D" uid="uid://bn6ikwol6x8r0" path="res://Assets/Characters/Male1.png" id="2_egfuc"]
|
||||||
[ext_resource type="Texture2D" uid="uid://uptdcefxlv4c" path="res://Assets/Icones/ppdf_bio_image_placeholder_2.png" id="2_mnaic"]
|
[ext_resource type="Texture2D" uid="uid://uptdcefxlv4c" path="res://Assets/Icones/ppdf_bio_image_placeholder_2.png" id="2_mnaic"]
|
||||||
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Towers/Scripts/Upgrades/TowerUpgrade.gd" id="3_5dr1v"]
|
[ext_resource type="Script" uid="uid://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="3_5dr1v"]
|
||||||
[ext_resource type="Resource" uid="uid://c6844q5o2gjhd" path="res://Upgrades/Tower/TowerUpgradeMaxEnergy1.tres" id="3_jv31o"]
|
[ext_resource type="Resource" uid="uid://c6844q5o2gjhd" path="res://Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres" id="3_jv31o"]
|
||||||
[ext_resource type="Resource" uid="uid://bus11qw5jg8yo" path="res://Upgrades/Tower/TowerUpgradeMaxEnergy2.tres" id="4_5dr1v"]
|
|
||||||
[ext_resource type="Script" uid="uid://blnmjxmusrsa7" path="res://UI/GameStyleBoxFlat.gd" id="8_5dr1v"]
|
[ext_resource type="Script" uid="uid://blnmjxmusrsa7" path="res://UI/GameStyleBoxFlat.gd" id="8_5dr1v"]
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_egfuc"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_egfuc"]
|
||||||
|
|
@ -32,7 +31,7 @@ collision_mask = 4
|
||||||
script = ExtResource("1_egfuc")
|
script = ExtResource("1_egfuc")
|
||||||
icone = ExtResource("2_mnaic")
|
icone = ExtResource("2_mnaic")
|
||||||
bio = "Aime se promener dans l'herbe et manger des framboises. Sa petite bouille la rend trop mignonne."
|
bio = "Aime se promener dans l'herbe et manger des framboises. Sa petite bouille la rend trop mignonne."
|
||||||
tower_shop = Array[ExtResource("3_5dr1v")]([ExtResource("3_jv31o"), ExtResource("4_5dr1v")])
|
tower_shop = Array[ExtResource("3_5dr1v")]([ExtResource("3_jv31o")])
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0)
|
||||||
|
|
|
||||||
|
|
@ -62,8 +62,6 @@ func createTowerButton(towerType : Tower.TYPE) -> void:
|
||||||
var towerBtn : GuiButton = guiButton.instantiate()
|
var towerBtn : GuiButton = guiButton.instantiate()
|
||||||
var tower : PackedScene = Game.towers.get(towerType)
|
var tower : PackedScene = Game.towers.get(towerType)
|
||||||
towerBtn.towerType = towerType
|
towerBtn.towerType = towerType
|
||||||
towerBtn.hasEnergyBar = true
|
|
||||||
towerBtn.toggle_mode = true
|
|
||||||
towerBtn.tooltip_text = str(EnhancedResource.getPackedSceneProperty(tower, "name"))
|
towerBtn.tooltip_text = str(EnhancedResource.getPackedSceneProperty(tower, "name"))
|
||||||
towerBtn.texture = EnhancedResource.getPackedSceneProperty(tower, "icone")
|
towerBtn.texture = EnhancedResource.getPackedSceneProperty(tower, "icone")
|
||||||
towerBtn.set_meta("dynamicButton", true)
|
towerBtn.set_meta("dynamicButton", true)
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,24 @@ extends Button
|
||||||
class_name GuiButton
|
class_name GuiButton
|
||||||
|
|
||||||
|
|
||||||
|
enum TYPE { BASIC, TOWER }
|
||||||
|
|
||||||
|
|
||||||
|
var type : TYPE = TYPE.BASIC
|
||||||
|
|
||||||
|
|
||||||
var towerType : Tower.TYPE :
|
var towerType : Tower.TYPE :
|
||||||
set(value):
|
set(value):
|
||||||
towerType = value
|
towerType = value
|
||||||
if towerType != Tower.TYPE.NONE:
|
if towerType != Tower.TYPE.NONE:
|
||||||
|
type = TYPE.TOWER
|
||||||
|
toggle_mode = true
|
||||||
|
$EnergyBar.visible = true
|
||||||
EventBus.energy_has_changed.connect(towerChanged)
|
EventBus.energy_has_changed.connect(towerChanged)
|
||||||
EventBus.tower_builded.connect(towerChanged)
|
EventBus.tower_builded.connect(towerChanged)
|
||||||
EventBus.tower_selected.connect(func(type): set_pressed_no_signal(type == towerType))
|
EventBus.tower_selected.connect(func(type): set_pressed_no_signal(type == towerType))
|
||||||
|
|
||||||
|
|
||||||
@export var hasEnergyBar : bool = false :
|
|
||||||
set(value):
|
|
||||||
hasEnergyBar = value
|
|
||||||
$EnergyBar.visible = hasEnergyBar
|
|
||||||
@export var texture : Texture2D :
|
@export var texture : Texture2D :
|
||||||
set(value):
|
set(value):
|
||||||
texture = value
|
texture = value
|
||||||
|
|
@ -23,7 +28,7 @@ var towerType : Tower.TYPE :
|
||||||
|
|
||||||
|
|
||||||
func buttonToggled(state : bool) -> void:
|
func buttonToggled(state : bool) -> void:
|
||||||
if towerType != Tower.TYPE.NONE:
|
if type == TYPE.TOWER:
|
||||||
EventBus.tower_selected.emit(towerType if state else Tower.TYPE.NONE)
|
EventBus.tower_selected.emit(towerType if state else Tower.TYPE.NONE)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ extends Button
|
||||||
class_name UpgradeButton
|
class_name UpgradeButton
|
||||||
|
|
||||||
@export var upgrade : Upgrade
|
@export var upgrade : Upgrade
|
||||||
@export var tower_to_upgrade : String
|
@export var towerType : Tower.TYPE
|
||||||
|
|
||||||
|
|
||||||
func _on_pressed() -> void:
|
func _on_pressed() -> void:
|
||||||
EventBus.tower_upgraded.emit(tower_to_upgrade, upgrade)
|
EventBus.tower_upgraded.emit(towerType, upgrade)
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
|
||||||
13
Upgrades/CubeUpgrade.gd
Normal file
13
Upgrades/CubeUpgrade.gd
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
extends Node
|
||||||
|
class_name CubeUpgrade
|
||||||
|
|
||||||
|
|
||||||
|
enum TYPE {
|
||||||
|
HEALTH,
|
||||||
|
HEALTH_REGEN
|
||||||
|
}
|
||||||
|
|
||||||
|
@export var type : TYPE
|
||||||
|
|
||||||
|
func upgrade() -> void:
|
||||||
|
pass
|
||||||
1
Upgrades/CubeUpgrade.gd.uid
Normal file
1
Upgrades/CubeUpgrade.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://djhstur8ci655
|
||||||
21
Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres
Normal file
21
Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
[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"
|
||||||
20
Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres
Normal file
20
Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
[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
|
||||||
17
Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres
Normal file
17
Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
[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
|
||||||
30
Upgrades/Tower/TowerUpgrade.gd
Normal file
30
Upgrades/Tower/TowerUpgrade.gd
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
extends Upgrade
|
||||||
|
class_name TowerUpgrade
|
||||||
|
|
||||||
|
|
||||||
|
enum TYPE {
|
||||||
|
MAX_ENERGY,
|
||||||
|
ENERGY_REGEN,
|
||||||
|
ENERGY_COST,
|
||||||
|
DAMAGE,
|
||||||
|
AOE_INCREASE,
|
||||||
|
COOLDOWN,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@export var type : TYPE
|
||||||
|
|
||||||
|
|
||||||
|
func upgrade(tower: Tower) -> void:
|
||||||
|
match type:
|
||||||
|
TYPE.MAX_ENERGY: upgradeTowerProperty(tower, "max_energy")
|
||||||
|
TYPE.ENERGY_REGEN: upgradeTowerProperty(tower, "energy_regen")
|
||||||
|
TYPE.ENERGY_COST: upgradeTowerProperty(tower, "energy_cost")
|
||||||
|
TYPE.DAMAGE: upgradeTowerProperty(tower.projectileRessource, "damage")
|
||||||
|
TYPE.AOE_INCREASE: upgradeTowerProperty(tower.projectileRessource.damageArea, "radius")
|
||||||
|
TYPE.COOLDOWN: upgradeTowerProperty(tower, "action_cooldown")
|
||||||
|
|
||||||
|
upgradeUpgrade()
|
||||||
|
|
||||||
|
func upgradeTowerProperty(tower: Variant, property: String) -> void:
|
||||||
|
tower.set(property, getNextValue(tower.get(property)))
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
[gd_resource type="Resource" script_class="TowerUpgradeActionCooldown" load_steps=3 format=3 uid="uid://cfyahlbi4apsj"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dqvou7t7o1t5d" path="res://Assets/Icones/medal2.png" id="1_5165o"]
|
|
||||||
[ext_resource type="Script" uid="uid://c12qiuxn5uw2n" path="res://Towers/Scripts/Upgrades/TowerUpgradeActionCooldown.gd" id="2_lryxk"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_lryxk")
|
|
||||||
action_cooldown_decrease = 0.3
|
|
||||||
icon = ExtResource("1_5165o")
|
|
||||||
text = "Upgrade"
|
|
||||||
metadata/_custom_type_script = "uid://c12qiuxn5uw2n"
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
[gd_resource type="Resource" script_class="TowerUpgradeEnergyRegen" 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://qxrhvv2ohy7n" path="res://Towers/Scripts/Upgrades/TowerUpgradeEnergyRegen.gd" id="2_bp3h2"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_bp3h2")
|
|
||||||
energy_regen_increase = 5
|
|
||||||
icon = ExtResource("1_gcuvb")
|
|
||||||
text = "Upgrade"
|
|
||||||
metadata/_custom_type_script = "uid://qxrhvv2ohy7n"
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
[gd_resource type="Resource" script_class="TowerUpgradeMaxEnergy" load_steps=3 format=3 uid="uid://c6844q5o2gjhd"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dqvou7t7o1t5d" path="res://Assets/Icones/medal2.png" id="1_4dpim"]
|
|
||||||
[ext_resource type="Script" uid="uid://ce3cjsuia24yk" path="res://Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd" id="2_475q6"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_475q6")
|
|
||||||
max_energy_increase = 50
|
|
||||||
icon = ExtResource("1_4dpim")
|
|
||||||
text = "Upgrade"
|
|
||||||
metadata/_custom_type_script = "uid://ce3cjsuia24yk"
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
[gd_resource type="Resource" script_class="TowerUpgradeMaxEnergy" load_steps=3 format=3 uid="uid://bus11qw5jg8yo"]
|
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://dqvou7t7o1t5d" path="res://Assets/Icones/medal2.png" id="1_dj0mb"]
|
|
||||||
[ext_resource type="Script" uid="uid://ce3cjsuia24yk" path="res://Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd" id="2_8yvhd"]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
script = ExtResource("2_8yvhd")
|
|
||||||
max_energy_increase = 100
|
|
||||||
icon = ExtResource("1_dj0mb")
|
|
||||||
text = "Upgrade"
|
|
||||||
metadata/_custom_type_script = "uid://ce3cjsuia24yk"
|
|
||||||
41
Upgrades/Upgrade.gd
Normal file
41
Upgrades/Upgrade.gd
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
extends Resource
|
||||||
|
class_name Upgrade
|
||||||
|
|
||||||
|
|
||||||
|
enum SCALE_TYPE { LINEAR, EXP, LOG }
|
||||||
|
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(-1, 100, 1, "hide_slider") var maxLevel : int = -1 ##[param -1] for infinite leveling
|
||||||
|
|
||||||
|
@export_group("Upgrade Scaling")
|
||||||
|
@export var upgradeDirection : UPGRADE_DIRECTION = UPGRADE_DIRECTION.INCREASE
|
||||||
|
@export var upgradeScaleType : SCALE_TYPE = SCALE_TYPE.LINEAR
|
||||||
|
@export var costScaleType : SCALE_TYPE = SCALE_TYPE.LINEAR
|
||||||
|
@export var costModificator : float
|
||||||
|
|
||||||
|
|
||||||
|
var cost : int = baseCost
|
||||||
|
var level : int = 0
|
||||||
|
var isLevelMax : bool :
|
||||||
|
get(): return maxLevel == level
|
||||||
|
|
||||||
|
|
||||||
|
func upgrade(subject) -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func upgradeUpgrade() -> void:
|
||||||
|
cost += baseCost
|
||||||
|
|
||||||
|
|
||||||
|
func canUpgrade(money : int):
|
||||||
|
return isLevelMax && money > cost
|
||||||
|
|
||||||
|
|
||||||
|
func getNextValue(oldValue):
|
||||||
|
return oldValue + (value * upgradeDirection * level)
|
||||||
|
|
@ -44,7 +44,6 @@ folder_colors={
|
||||||
"res://Towers/Projectiles/": "orange",
|
"res://Towers/Projectiles/": "orange",
|
||||||
"res://Towers/Scenes": "pink",
|
"res://Towers/Scenes": "pink",
|
||||||
"res://Towers/Scenes/": "pink",
|
"res://Towers/Scenes/": "pink",
|
||||||
"res://Towers/Scripts/": "blue",
|
|
||||||
"res://UI/": "green",
|
"res://UI/": "green",
|
||||||
"res://Upgrades/": "purple",
|
"res://Upgrades/": "purple",
|
||||||
"res://Waves/": "pink"
|
"res://Waves/": "pink"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue