extends Node2D var bullet = preload("res://Scenes/bullet.tscn") var bulletArray =[] var totalAllowedBullets = 7 @onready var triggers: Node2D = $"../Triggers" @onready var coins: Node2D = $"../Coins" @onready var enemies: Node2D = $"../Enemies" @onready var player: Player = $"../Player" func _ready() -> void: Gamecontroller.reset() for obj in triggers.get_children(): obj.areatrigger.connect(Gamecontroller._on_areatrigger) if enemies: for obj in enemies.get_children(): if obj is Slime: obj.playerDamageSignal.connect(Gamecontroller.playerAttacked) updateCoins() Gamecontroller.destroySignal.connect(destroyItem) Gamecontroller.levelChangeSignal.connect(changeScene) Gamecontroller.playerTakesDamageSignal.connect(player.playerTakesDamage) Gamecontroller.playerDiesSignal.connect(player.playerDies) #call this any time the coins change func updateCoins() -> void: var coinCount = 0 for obj in coins.get_children(): #connect coin collected to game controller if not obj.coinCollectedSignal.is_connected(Gamecontroller.coinCollected): obj.coinCollectedSignal.connect(Gamecontroller.coinCollected) #connect tree_exited signal for updates if not obj.tree_exited.is_connected(updateCoins): obj.tree_exited.connect(updateCoins) coinCount +=1 #send information to the game controller Gamecontroller.totalCoinCount(coinCount) #makes bullets func bulletFactory(): var mybullet if bulletArray.size() < totalAllowedBullets: #make a new bullet mybullet = bullet.instantiate() owner.add_child(mybullet) else: #recycle bullet mybullet = bulletArray.pop_back() bulletArray.push_front(mybullet) return mybullet #order desk func makeBullet(position, speed): print("Scenemanger orders a bullet") #ask the factory for a bullet var mybullet = bulletFactory() #set the speed for the bullet mybullet.setSpeed(speed) #position the bullet mybullet.transform = position func destroyItem(body): body.queue_free() func changeScene(level): get_tree().call_deferred("change_scene_to_file", level)