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)