extends Node2D #bullet factory 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.playerTakeDamageSignal.connect(player.playerTakesDamage) Gamecontroller.playerDiesSignal.connect(player.playerDies) #call this anytimes the coins change func updateCoins() ->void: var coinCount = 0 #connect coin collected to game controller for obj in coins.get_children(): 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 the info to game controller Gamecontroller.totalCoinCount(coinCount) #makes bullets func bulletFactory(): var mybullet if bulletArray.size() < totalAllowedBullets: mybullet = bullet.instantiate() owner.add_child(mybullet) else: mybullet = bulletArray.pop_back() bulletArray.push_front(mybullet) return mybullet #order desk func makeBullet(position, speed): # 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)