aprilGame/scripts/scenemanager.gd

51 lines
1.5 KiB
GDScript

class_name SM extends Node2D
var grenade = preload("res://scene/grenade.tscn")
@onready var cube_container: Node2D = $"../cube container"
@onready var enemies: Node2D = $"../enemies"
func _ready() -> void:
gameController.reset()
gameController.destroySignal.connect(destroy)
buildLevel()
gameController.levelchangesignal.connect(changescene)
func buildLevel()->void:
updateCube()
if enemies:
updateenemies()
func updateenemies()->void:
var totalenemies = 0
for obj in enemies.get_children():
if obj is slime:
totalenemies +=1
if not obj.slimedamagesignal.is_connected(gameController._on_slime_damage):
obj.slimedamagesignal.is_connected(gameController._on_slime_damage)
gameController.addenemytolevel(obj)
func destroy(body)->void:
if body is Cube:
body.queue_free()
func updateCube()->void:
# make sure there are crates
var _CubeTotal:int= 0
if cube_container:
for obj in cube_container.get_children():
if obj is Cube:
if not obj.tree_exited.is_connected(updateCube):
obj.tree_exited.connect(updateCube)
_CubeTotal +=1
print ("Number of cubes: "+str(_CubeTotal))
gameController.totalCube(_CubeTotal)
func makeGrenade(_grenadeposition, _grenadedirection)->void:
print("grenade time")
var myGrenade:grenade = grenade.instantiate()
owner.add_child(myGrenade)
myGrenade.transform = _grenadeposition
myGrenade.apply_central_impulse(Vector2(_grenadedirection, -1)*400)
func changescene(level)->void:
get_tree().call_deferred("change_scene_to_file",level)