extends Node var bulletsFiredTotal := 0 var bulletsMadeTotal := 0 var bulletArray:Array = [] var timer:= Timer.new() @onready var coins: Node = $"../Coins" @onready var bad_guys: Node = $"../BadGuys" @onready var player: CharacterBody2D = $"../CharacterBody2D" @onready var ui: Control = $"../CanvasLayer/Control" @onready var key_trigger: Area2D = $"../KeyTrigger" 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) ### enemies loop for n in bad_guys.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(showKey) key_trigger.keyCollect.connect(GameController.keyCollected) key_trigger.keyCollect.connect(player.keyCollected) 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 bullets 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("RIP") body.queue_free() func hurtPlayer(amt): player.hurtPlayer(amt) func killPlayer(): player.killPlayer() func deadPlayer(): GameController.reset() get_tree().reload_current_scene() func showKey(key): if key == true: player.keyCollected() else: player.keyDrop() func changeLevel(level): print("Scene manager should change level") GameController.reset() get_tree().change_scene_to_file(level)