extends Node #@onready var gameController: GameController = $".." @onready var crates: Node2D = $"../Crates" @onready var triggers: Node2D = $"../triggers" @onready var coins: Node2D = $"../coins" @onready var badguys: Node2D = $"../badguys" @onready var player: Player = $"../CharacterBody2D" var bulletsFiredTotal = 0 var bulletsMadeTotal = 0 var bulletArray= [] var bullet = preload("res://Scenes/bullet.tscn") # bullet factory - makes bullets func bulletFactory(): var mybullet if bulletArray.size() < 8: print("new bullet at factory") mybullet = bullet.instantiate() mybullet.connect("hit", bulletHit) else: print("recycled bullet at factory") mybullet = bulletArray.pop_back() bulletArray.push_front(mybullet) return mybullet # order desk for bullets func makeBullet(position, speed): print("make a bullet") var newBullet = bulletFactory() owner.add_child(newBullet) newBullet.setSpeed(speed) newBullet.transform = position func bulletHit(bullet, body): print("tell the game controller a bullet hit smthn") #gameController.bulletHit(body) Gamecontroller.bulletHit(body) bullet.setSpeed(0) bullet.position = Vector2(-100,-100) func destroy(body): body.queue_free() func buildLevel(): #how many crates? var totalCrates = 0 for obj in crates.get_children(): if obj is Crate: totalCrates +=1 #gameController.numberOfCrates(totalCrates) Gamecontroller.numberOfCrates(totalCrates) #how many coints? var totalCoins =0 if coins: for obj in coins.get_children(): if obj is Coin: totalCoins +=1 obj.coinCollectedSignal.connect(Gamecontroller.coinCollected) Gamecontroller.numberOfCoins(totalCoins) #how many bad guys var totalBadguys =0 if badguys: for obj in badguys.get_children(): if obj is Slime: totalBadguys +=1 obj.playerDamagSignal.connect(Gamecontroller.playerDamage) Gamecontroller.numberOfBadguys(totalBadguys) #wire up the triggers for obj in triggers.get_children(): if obj is Trigger: #wire up to GC #obj.areaTrigger.connect(gameController._on_trigger_area_trigger) obj.areaTrigger.connect(Gamecontroller._on_trigger_area_trigger) #Listen to gameController Gamecontroller.destroySignal.connect(destroy) Gamecontroller.LevelCompleteSignal.connect(loadLevel) Gamecontroller.playerHurtSignal.connect(playerHurt) func loadLevel(level): get_tree().change_scene_to_file(level) func _ready() -> void: buildLevel() Gamecontroller.reset() func playerHurt(health): player.hurtPlayer(health)