extends Node2D signal destroySignal(body) signal levelChangeSignal(level) var levels = ["res://Scenes/game.tscn","res://Scenes/level 2.tscn","res://Scenes/level3.tscn"] var currentLevel = 0 var timers = [5,10,15] var timeAvailable=0 var timer = Timer.new() #player variables var playerCurrentHealth:int = 100 #enemies var enemiesDict = {} # Called when the node enters the scene tree for the first time. func _ready() -> void: get_window().grab_focus() add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() func secondCounter()->void: print("tick") timeAvailable-=1 if timeAvailable <=0: print ("you loose!") levelChangeSignal.emit(levels[currentLevel]) func reset() -> void: timeAvailable = timers[currentLevel] playerCurrentHealth = 100 get_window().grab_focus() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass func _on_triggerSignal(body: Variant, intentMessage: Variant) -> void: print("GC knows about a trigger!") if body.is_in_group("destructible") and intentMessage == "destroy": destroySignal.emit(body) func totalCrates(numberOfCrates:int)->void: print("GC knows total crates: "+str(numberOfCrates)) if numberOfCrates <=0: print("You WON!!!!") currentLevel +=1 if currentLevel >= levels.size(): currentLevel = 0 levelChangeSignal.emit(levels[currentLevel]) func _on_slime_damage(_body, slime)->void: print ("GC knows slime doing damage") print("doing damage: "+str(enemiesDict[slime]["damage"])) playerCurrentHealth -= enemiesDict[slime]["damage"] if playerCurrentHealth <=0: print ("U ded") levelChangeSignal.emit(levels[currentLevel]) func addEnemyToLevel(slime)->void: #give each enemy some health and damage var randamage = randi_range(1,20) var enemyStat = { "health": 50, "damage": 30+randamage } enemiesDict[slime]=enemyStat