TowerDefense/Globals/Game.gd

76 lines
1.4 KiB
GDScript3
Raw Normal View History

2025-09-03 18:39:58 +02:00
@tool
extends Node
## Game
signal cube_integrity_changed
signal money_changed
signal loose
signal allowed_tower_has_change
var towerPackedScenes : Dictionary
var enmies : Dictionary
var towers : Dictionary
var allowedTowers : Array[Tower.TYPE] :
set(value):
allowedTowers = value
allowed_tower_has_change.emit()
var max_health : int = 50
var health : int = max_health :
set(value):
health = value
cube_integrity_changed.emit()
if health <= 0:
death()
var healthPercentage : int :
get():
return float(health) / float(max_health) * 100.0
var money : int = 0:
set(value):
money = value
money_changed.emit()
func _ready() -> void:
EventBus.player_has_won.connect(win)
Helper.preloadSceneInGlobal(towerPackedScenes, Helper.RESOURCE_TYPE.TOWER)
#Helper.preloadSceneInGlobal(towerPackedScenes, Helper.RESOURCE_TYPE.ENEMY)
func initTower(towerType: Tower.TYPE) -> Tower:
var tower : Tower = towerPackedScenes.get(towerType).instantiate()
towers.set(towerType, tower)
return 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 = []
money = 0
health = max_health
func win():
Transition.goto("res://UI/win_screen.tscn")
resetGame()
2025-09-03 18:39:58 +02:00
func spendMoney(amount : int) -> bool:
if money > amount:
money -= amount
return true
return false
func death():
loose.emit()
Transition.goto("res://UI/defeat_screen.tscn")
resetGame()