class_name SceneManager extends Node2D const bullet_scene = preload("res://scenes/bullet.tscn") var game := Gamecontroller @onready var triggers: Node2D = $"../triggers" @onready var coins: Node2D = $"../coins" @onready var ennemies: Node2D = $"../ennemies" var MAX_BULLET := 50 var available_bullets = [] var score := 0 func _ready() -> void: for i in range(MAX_BULLET): var new_bullet = bullet_scene.instantiate() new_bullet.bulletHitSignal.connect(game.onBulletHitSignal) available_bullets.push_front(new_bullet) if triggers: for trig in triggers.get_children(): if trig is Trigger: trig.areaTriggerSignal.connect(game._on_trigger) if ennemies: updateEnnemies() if coins: updateCoins() game.destroySignal.connect(destroy) game.levelChangeSignal.connect(changeScene) func updateEnnemies(): print("pdate ennemies") for ennemy in ennemies.get_children(): if ennemy is Slime: if not ennemy.playerDamageSignal.is_connected(game.playerAttacked): ennemy.playerDamageSignal.connect(game.playerAttacked) func updateCoins(): var coinCount := 0 for coin in coins.get_children(): if coin is Coin: coinCount += 1 if not coin.coinCollectedSignal.is_connected(game.onCoinCollected): coin.coinCollectedSignal.connect(game.onCoinCollected) if not coin.tree_exited.is_connected(updateCoins): coin.tree_exited.connect(updateCoins) game.setTotalCoinCount(coinCount) func make_bullet(start_position: Transform2D, speed: int): var new_bullet = bullet_factory(start_position, speed) if new_bullet: owner.add_child(new_bullet) new_bullet.setSpeed(speed) func reload_bullet(bullet: Bullet): available_bullets.push(bullet) func bullet_factory(start_position: Transform2D, speed: int) -> Bullet: var shot_bullet = available_bullets.pop_back() shot_bullet.global_transform = start_position available_bullets.push_front(shot_bullet) return shot_bullet func destroy(body: Node2D): body.queue_free() func changeScene(level): get_tree().call_deferred("change_scene_to_file", level)