diff --git a/Globals/EventBus.gd b/Globals/EventBus.gd index d9ed06b..deac667 100644 --- a/Globals/EventBus.gd +++ b/Globals/EventBus.gd @@ -14,7 +14,7 @@ signal tower_builded(tower : Tower) ## [b]Emitter[/b] : [UpgradeButton][br] ## [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] diff --git a/Globals/Game.gd b/Globals/Game.gd index cd45b71..6adad79 100644 --- a/Globals/Game.gd +++ b/Globals/Game.gd @@ -1,3 +1,4 @@ +@tool class_name Game @@ -42,13 +43,13 @@ static func _static_init() -> void: preloadSceneInGlobal(towers, RESOURCE_TYPE.TOWER) #preloadSceneInGlobal(enemies, ENEMY_DIR) - -static func preloadSceneInGlobal(property: Dictionary, type: RESOURCE_TYPE): - var files : Array[String] = getPackedScenesPaths(type) - +## [color=crimson][b]WARNING :[/b] Work only with the [enum RESOURCE_TYPE] [param TOWER][/color] +static func preloadSceneInGlobal(property: Dictionary, type: RESOURCE_TYPE) -> void: if type != RESOURCE_TYPE.TOWER: return + var files : Array[String] = getPackedScenesPaths(type) + for file in files: var scene = load(file) if scene: diff --git a/Levels/world_manager.tscn b/Levels/world_manager.tscn index 41d6c6f..ac79788 100644 --- a/Levels/world_manager.tscn +++ b/Levels/world_manager.tscn @@ -1,7 +1,7 @@ [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://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="PackedScene" uid="uid://p6a6rb7sgeqd" path="res://UI/gui.tscn" id="6_ebgat"] diff --git a/Towers/Scenes/alex.tscn b/Towers/Scenes/alex.tscn index 1e6c87e..c90447b 100644 --- a/Towers/Scenes/alex.tscn +++ b/Towers/Scenes/alex.tscn @@ -2,7 +2,7 @@ [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="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")] tower_name = "Alex" diff --git a/Towers/Scenes/aline.tscn b/Towers/Scenes/aline.tscn index f910765..14cef26 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://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="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 840c817..ba0fe7c 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://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"] script = ExtResource("3_gr7yf") diff --git a/Towers/Scenes/geraldine.tscn b/Towers/Scenes/geraldine.tscn index 4a54274..308b960 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://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"] [node name="Geraldine" instance=ExtResource("1_bw8ui")] diff --git a/Towers/Scenes/maxence.tscn b/Towers/Scenes/maxence.tscn index 50e539d..ae3e08d 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://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"] radius = 0.2 diff --git a/Towers/Scenes/pierre.tscn b/Towers/Scenes/pierre.tscn index 5104507..f7a1562 100644 --- a/Towers/Scenes/pierre.tscn +++ b/Towers/Scenes/pierre.tscn @@ -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="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"] radius = 5.0 +[sub_resource type="ViewportTexture" id="ViewportTexture_r52mr"] +viewport_path = NodePath("EnergyBar3D/SubViewport") + [node name="Pierre" instance=ExtResource("1_s6dfo")] tower_name = "Pierre" tower_type = 1 @@ -28,3 +31,6 @@ action_cooldown = 1.0 max_energy = 50.0 energy_regen = 5.0 energy_cost = 2.0 + +[node name="EnergyBar3D" parent="." index="6"] +texture = SubResource("ViewportTexture_r52mr") diff --git a/Towers/Scenes/victoria.tscn b/Towers/Scenes/victoria.tscn index 18eec39..3bf7259 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://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"] [sub_resource type="SphereShape3D" id="SphereShape3D_rbuca"] diff --git a/Towers/Scripts/Upgrades/TowerUpgrade.gd b/Towers/Scripts/Upgrades/TowerUpgrade.gd deleted file mode 100644 index 50b7f05..0000000 --- a/Towers/Scripts/Upgrades/TowerUpgrade.gd +++ /dev/null @@ -1,5 +0,0 @@ -extends Upgrade -class_name TowerUpgrade - -func apply_upgrade(tower : Tower): - pass diff --git a/Towers/Scripts/Upgrades/TowerUpgradeActionCooldown.gd b/Towers/Scripts/Upgrades/TowerUpgradeActionCooldown.gd deleted file mode 100644 index cc51993..0000000 --- a/Towers/Scripts/Upgrades/TowerUpgradeActionCooldown.gd +++ /dev/null @@ -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 diff --git a/Towers/Scripts/Upgrades/TowerUpgradeActionCooldown.gd.uid b/Towers/Scripts/Upgrades/TowerUpgradeActionCooldown.gd.uid deleted file mode 100644 index 166692d..0000000 --- a/Towers/Scripts/Upgrades/TowerUpgradeActionCooldown.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c12qiuxn5uw2n diff --git a/Towers/Scripts/Upgrades/TowerUpgradeEnergyRegen.gd b/Towers/Scripts/Upgrades/TowerUpgradeEnergyRegen.gd deleted file mode 100644 index b4e5c3a..0000000 --- a/Towers/Scripts/Upgrades/TowerUpgradeEnergyRegen.gd +++ /dev/null @@ -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 diff --git a/Towers/Scripts/Upgrades/TowerUpgradeEnergyRegen.gd.uid b/Towers/Scripts/Upgrades/TowerUpgradeEnergyRegen.gd.uid deleted file mode 100644 index 1dd8788..0000000 --- a/Towers/Scripts/Upgrades/TowerUpgradeEnergyRegen.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://qxrhvv2ohy7n diff --git a/Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd b/Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd deleted file mode 100644 index 6cf937f..0000000 --- a/Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd +++ /dev/null @@ -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 diff --git a/Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd.uid b/Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd.uid deleted file mode 100644 index 7ce1b3d..0000000 --- a/Towers/Scripts/Upgrades/TowerUpgradeMaxEnergy.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ce3cjsuia24yk diff --git a/Towers/Scripts/Upgrades/Upgrade.gd b/Towers/Scripts/Upgrades/Upgrade.gd deleted file mode 100644 index 2b90750..0000000 --- a/Towers/Scripts/Upgrades/Upgrade.gd +++ /dev/null @@ -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 diff --git a/Towers/Scripts/Tower.gd b/Towers/Tower.gd similarity index 77% rename from Towers/Scripts/Tower.gd rename to Towers/Tower.gd index bbdc940..486ef9d 100644 --- a/Towers/Scripts/Tower.gd +++ b/Towers/Tower.gd @@ -55,13 +55,13 @@ var is_rest : bool = true: else: in_action() + @export_category("Upgrades") -var tower_upgrades : Array[TowerUpgrade] -@export var tower_shop : Array[TowerUpgrade] +@export var upgrades : Array[TowerUpgrade] func _ready() -> void: - EventBus.tower_upgraded.connect(_on_EventBus_tower_upgraded) + EventBus.tower_upgraded.connect(apply_upgrade) EventBus.energy_has_changed.emit(self) # WARNING : Prevent .tscn file to be modified by the load of the scene in editor if not Engine.is_editor_hint(): @@ -85,27 +85,13 @@ func _process(_delta: float) -> void: func get_available_upgrades() -> Array[TowerUpgrade]: - var available_upgrades : Array[TowerUpgrade] - #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 + return upgrades.filter(func(u: TowerUpgrade): u.isLevelMax) -func apply_upgrade(upgrade : TowerUpgrade): - upgrade.apply_upgrade(self) - if tower_shop.has(upgrade): - tower_shop.erase(upgrade) - tower_upgrades.append(upgrade) - else: - printerr("Upgrade already bought") + +func apply_upgrade(towerType : Tower.TYPE, upgrade : TowerUpgrade): + ## TODO DANGER connect cube money + if towerType == tower_type && upgrade.canUpgrade(100): + upgrade.upgrade(self) func shoot() -> void: @@ -172,8 +158,3 @@ func _on_cooldown_timeout() -> void: func _on_energy_cooldown_timeout() -> void: resting() - - -func _on_EventBus_tower_upgraded(tower_to_upgrade : String, upgrade : TowerUpgrade) -> void: - if tower_to_upgrade == tower_name: - apply_upgrade(upgrade) diff --git a/Towers/Scripts/Tower.gd.uid b/Towers/Tower.gd.uid similarity index 100% rename from Towers/Scripts/Tower.gd.uid rename to Towers/Tower.gd.uid diff --git a/Towers/Scripts/TowerManager.gd b/Towers/TowerManager.gd similarity index 100% rename from Towers/Scripts/TowerManager.gd rename to Towers/TowerManager.gd diff --git a/Towers/Scripts/TowerManager.gd.uid b/Towers/TowerManager.gd.uid similarity index 100% rename from Towers/Scripts/TowerManager.gd.uid rename to Towers/TowerManager.gd.uid diff --git a/Towers/tower.tscn b/Towers/tower.tscn index 684674a..286ede6 100644 --- a/Towers/tower.tscn +++ b/Towers/tower.tscn @@ -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://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="Resource" uid="uid://c6844q5o2gjhd" path="res://Upgrades/Tower/TowerUpgradeMaxEnergy1.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://bg0x4egeu17qb" path="res://Upgrades/Tower/TowerUpgrade.gd" id="3_5dr1v"] +[ext_resource type="Resource" uid="uid://c6844q5o2gjhd" path="res://Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres" id="3_jv31o"] [ext_resource type="Script" uid="uid://blnmjxmusrsa7" path="res://UI/GameStyleBoxFlat.gd" id="8_5dr1v"] [sub_resource type="BoxShape3D" id="BoxShape3D_egfuc"] @@ -32,7 +31,7 @@ collision_mask = 4 script = ExtResource("1_egfuc") icone = ExtResource("2_mnaic") 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="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00914001, 0) diff --git a/UI/gui.gd b/UI/gui.gd index 527f4ba..6e47c54 100644 --- a/UI/gui.gd +++ b/UI/gui.gd @@ -62,8 +62,6 @@ func createTowerButton(towerType : Tower.TYPE) -> void: var towerBtn : GuiButton = guiButton.instantiate() var tower : PackedScene = Game.towers.get(towerType) towerBtn.towerType = towerType - towerBtn.hasEnergyBar = true - towerBtn.toggle_mode = true towerBtn.tooltip_text = str(EnhancedResource.getPackedSceneProperty(tower, "name")) towerBtn.texture = EnhancedResource.getPackedSceneProperty(tower, "icone") towerBtn.set_meta("dynamicButton", true) diff --git a/UI/gui_button.gd b/UI/gui_button.gd index bd51288..b96e5ec 100644 --- a/UI/gui_button.gd +++ b/UI/gui_button.gd @@ -3,19 +3,24 @@ extends Button class_name GuiButton +enum TYPE { BASIC, TOWER } + + +var type : TYPE = TYPE.BASIC + + var towerType : Tower.TYPE : set(value): towerType = value if towerType != Tower.TYPE.NONE: + type = TYPE.TOWER + toggle_mode = true + $EnergyBar.visible = true EventBus.energy_has_changed.connect(towerChanged) EventBus.tower_builded.connect(towerChanged) 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 : set(value): texture = value @@ -23,7 +28,7 @@ var towerType : Tower.TYPE : 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) diff --git a/UI/upgrade_button.gd b/UI/upgrade_button.gd index bb57960..b29b41a 100644 --- a/UI/upgrade_button.gd +++ b/UI/upgrade_button.gd @@ -2,9 +2,9 @@ extends Button class_name UpgradeButton @export var upgrade : Upgrade -@export var tower_to_upgrade : String +@export var towerType : Tower.TYPE func _on_pressed() -> void: - EventBus.tower_upgraded.emit(tower_to_upgrade, upgrade) + EventBus.tower_upgraded.emit(towerType, upgrade) queue_free() diff --git a/Upgrades/CubeUpgrade.gd b/Upgrades/CubeUpgrade.gd new file mode 100644 index 0000000..98e7144 --- /dev/null +++ b/Upgrades/CubeUpgrade.gd @@ -0,0 +1,13 @@ +extends Node +class_name CubeUpgrade + + +enum TYPE { + HEALTH, + HEALTH_REGEN +} + +@export var type : TYPE + +func upgrade() -> void: + pass diff --git a/Upgrades/CubeUpgrade.gd.uid b/Upgrades/CubeUpgrade.gd.uid new file mode 100644 index 0000000..9823ad2 --- /dev/null +++ b/Upgrades/CubeUpgrade.gd.uid @@ -0,0 +1 @@ +uid://djhstur8ci655 diff --git a/Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres b/Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres new file mode 100644 index 0000000..cab45b1 --- /dev/null +++ b/Upgrades/Tower/Resources/TowerActionCooldownUpgrade.tres @@ -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" diff --git a/Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres b/Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres new file mode 100644 index 0000000..34b12f3 --- /dev/null +++ b/Upgrades/Tower/Resources/TowerEnergyRegenUpgrade.tres @@ -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 diff --git a/Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres b/Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres new file mode 100644 index 0000000..3172bc0 --- /dev/null +++ b/Upgrades/Tower/Resources/TowerMaxEnergyUpgrade.tres @@ -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 diff --git a/Upgrades/Tower/TowerUpgrade.gd b/Upgrades/Tower/TowerUpgrade.gd new file mode 100644 index 0000000..4f92ade --- /dev/null +++ b/Upgrades/Tower/TowerUpgrade.gd @@ -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))) diff --git a/Towers/Scripts/Upgrades/TowerUpgrade.gd.uid b/Upgrades/Tower/TowerUpgrade.gd.uid similarity index 100% rename from Towers/Scripts/Upgrades/TowerUpgrade.gd.uid rename to Upgrades/Tower/TowerUpgrade.gd.uid diff --git a/Upgrades/Tower/TowerUpgradeActionCooldown1.tres b/Upgrades/Tower/TowerUpgradeActionCooldown1.tres deleted file mode 100644 index d53713e..0000000 --- a/Upgrades/Tower/TowerUpgradeActionCooldown1.tres +++ /dev/null @@ -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" diff --git a/Upgrades/Tower/TowerUpgradeEnergyRegen1.tres b/Upgrades/Tower/TowerUpgradeEnergyRegen1.tres deleted file mode 100644 index 0862b5d..0000000 --- a/Upgrades/Tower/TowerUpgradeEnergyRegen1.tres +++ /dev/null @@ -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" diff --git a/Upgrades/Tower/TowerUpgradeMaxEnergy1.tres b/Upgrades/Tower/TowerUpgradeMaxEnergy1.tres deleted file mode 100644 index 49c6d0a..0000000 --- a/Upgrades/Tower/TowerUpgradeMaxEnergy1.tres +++ /dev/null @@ -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" diff --git a/Upgrades/Tower/TowerUpgradeMaxEnergy2.tres b/Upgrades/Tower/TowerUpgradeMaxEnergy2.tres deleted file mode 100644 index e9a3762..0000000 --- a/Upgrades/Tower/TowerUpgradeMaxEnergy2.tres +++ /dev/null @@ -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" diff --git a/Upgrades/Upgrade.gd b/Upgrades/Upgrade.gd new file mode 100644 index 0000000..adeaef1 --- /dev/null +++ b/Upgrades/Upgrade.gd @@ -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) diff --git a/Towers/Scripts/Upgrades/Upgrade.gd.uid b/Upgrades/Upgrade.gd.uid similarity index 100% rename from Towers/Scripts/Upgrades/Upgrade.gd.uid rename to Upgrades/Upgrade.gd.uid diff --git a/project.godot b/project.godot index 61eb72a..e8c1483 100644 --- a/project.godot +++ b/project.godot @@ -44,7 +44,6 @@ folder_colors={ "res://Towers/Projectiles/": "orange", "res://Towers/Scenes": "pink", "res://Towers/Scenes/": "pink", -"res://Towers/Scripts/": "blue", "res://UI/": "green", "res://Upgrades/": "purple", "res://Waves/": "pink"