game1/scripts/scene_manager.gd

82 lines
2.0 KiB
GDScript3
Raw Normal View History

2025-08-18 02:18:14 +00:00
class_name SCENEMANAGER extends Node2D
const bulletscn = preload("res://Scenes/bullet.tscn")
2025-08-19 01:06:03 +00:00
@onready var triggers: Node2D = $"../Triggers"
2025-08-26 01:07:18 +00:00
@onready var coins: Node2D = $"../Coins"
2025-09-09 00:57:14 +00:00
@onready var enemies: Node2D = $"../enemies"
2025-08-18 02:18:14 +00:00
2025-08-19 01:06:03 +00:00
func _ready() -> void:
2025-09-09 00:57:14 +00:00
Gamecontroller.reset()
2025-08-19 01:06:03 +00:00
if triggers:
for obj in triggers.get_children():
if obj is Trigger:
2025-09-09 00:57:14 +00:00
obj.areaTriggerSignal.connect(Gamecontroller._on_trigger)
2025-08-26 01:07:18 +00:00
if coins:
2025-09-09 00:57:14 +00:00
Updatecoins()
2025-08-26 01:07:18 +00:00
2025-09-09 00:57:14 +00:00
if enemies:
updateEnemies()
Gamecontroller.destroySignal.connect(destroy)
Gamecontroller.levelChangeSignal.connect(changeScene)
func updateEnemies():
for obj in enemies.get_children():
if obj is Slime:
if not obj.playerDamageSignal.is_connected(Gamecontroller.playerAttacked):
obj.playerDamageSignal.connect(Gamecontroller.playerAttacked)
func Updatecoins():
var coincount = 0
for obj in coins.get_children():
if obj is Coin:
if not obj.coincollectedsignal.is_connected(Gamecontroller.coincollected):
obj.coincollectedsignal.connect(Gamecontroller.coincollected)
print("hooked up")
#connect tree exit
if not obj.tree_exited.is_connected(Updatecoins):
obj.tree_exited.connect(Updatecoins)
coincount +=1
Gamecontroller.totalcoincount(coincount)
2025-08-19 01:06:03 +00:00
2025-08-18 02:18:14 +00:00
var bullets: Array[Bullet] = []
const MAX_BULLETS = 10
var current_bullet = 0
# makes and recycles bullets
func bulletFactory() -> Bullet:
if len(bullets) < MAX_BULLETS:
# create new bujllet
var b = bulletscn.instantiate()
2025-09-09 00:57:14 +00:00
b.bulletDamageSignal.connect(Gamecontroller.bulletDamage)
2025-08-18 02:18:14 +00:00
add_child(b)
bullets.append(b)
return b
else:
# recycle
var i = current_bullet
current_bullet = (current_bullet + 1) % MAX_BULLETS
bullets[i].visible = true
return bullets[i]
func makeBullet(pos: Transform2D, dir: int) -> Node2D:
var b = bulletFactory()
# b.position = pos.get_origin()
b.transform = pos
b.setSpeed(dir * 700)
return b
2025-09-09 00:57:14 +00:00
func destroy(body):
body.queue_free()
print("destroy")
func changeScene(level):
get_tree().call_deferred("change_scene_to_file", level)