extends Node var bulletsFiredTotal := 0 var bulletsMadeTotal := 0 var bulletArray:Array = [] var timer:= Timer.new() @onready var coins: Node = $"../Coins" @onready var enemies: Node = $"../enemies" @onready var gun_trigger: Area2D = $"../GunTrigger" @onready var player: CharacterBody2D = $"../CharacterBody2D" @onready var ui: Control = $"../CanvasLayer/Control" var bullet = preload("res://scenes/bullet.tscn") func _ready() -> void: add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", GameController.timeOut) timer.start() var totalCoins = 0 var totalEnemies = 0 ## Coins loop for n in coins.get_children(): totalCoins += 1 n.coinCollected.connect(GameController.coinCollected) ## enemy loop for n in enemies.get_children(): totalEnemies += 1 n.playerDamage.connect(GameController.playerDamage) ## wire up GameController signals to Player GameController.playerHurt.connect(hurtPlayer) GameController.playerHurt.connect(ui.healthUpdate) GameController.playerDeath.connect(killPlayer) GameController.levelComplete.connect(changeLevel) GameController.tick.connect(ui.timerUpdate) GameController.playerOptions.connect(showGun) gun_trigger.gunCollect.connect(GameController.gunCollected) gun_trigger.gunCollect.connect(player.gunCollected) player.playerDead.connect(deadPlayer) GameController.coinsUpdate.connect(ui.coinsUpdate) GameController.setTotalCoins(totalCoins) GameController.sendOptions() func bulletFactory(): print("Make a bullet at the factory") var mybullet # How many bullet have been made if bulletArray.size() < 4: # make a new bullet mybullet = bullet.instantiate() mybullet.connect("hit", onBulletHit) owner.add_child(mybullet) else: mybullet = bulletArray.pop_back() bulletArray.push_front(mybullet) bulletsMadeTotal += 1 return mybullet func onBulletHit(bullet, body): print("Scene Manager knows a bullet hit something") bullet.setSpeed(0) if body.is_in_group("shootable"): print("explode this thing") body.queue_free() func hurtPlayer(amt): player.hurtPlayer(amt) func killPlayer(): player.killPlayer() func deadPlayer(): GameController.reset() get_tree().reload_current_scene() func showGun(gun): if gun == true: player.gunCollected() else: player.gunDrop() func changeLevel(level): print("Scene Manager should change level") GameController.reset() get_tree().change_scene_to_file(level)