july-game/scripts/scene_manager.gd

78 lines
2.0 KiB
GDScript3
Raw Normal View History

2025-08-12 01:03:09 +00:00
class_name SceneManager extends Node2D
const bullet_scene = preload("res://scenes/bullet.tscn")
var game := Gamecontroller
2025-08-19 01:06:02 +00:00
@onready var triggers: Node2D = $"../triggers"
@onready var coins: Node2D = $"../coins"
@onready var ennemies: Node2D = $"../ennemies"
2025-08-12 01:03:09 +00:00
var MAX_BULLET := 50
var available_bullets = []
var score := 0
2025-08-12 01:03:09 +00:00
func _ready() -> void:
2025-08-12 01:03:09 +00:00
for i in range(MAX_BULLET):
var new_bullet = bullet_scene.instantiate()
new_bullet.bulletHitSignal.connect(game.onBulletHitSignal)
available_bullets.push_front(new_bullet)
2025-08-19 01:06:02 +00:00
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)
2025-08-12 01:03:09 +00:00
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)
2025-08-12 01:03:09 +00:00
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)