extends Node2D signal destroySignal(body) signal levelChangeSignal(level) signal damagePlayerSignal(damageTotal,playerHealthTotal) signal killPlayerSignal signal timeChangeSignal(currentTimeAvailable) var levels=["res://Scenes/game.tscn","res://Scenes/level2.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 = {} var enemy:CharacterStats var player:CharacterStats # Called when the node enters the scene tree for the first time. func _ready() -> void: get_window().grab_focus() enemy = load("res://Scripts/rscs/slime_stats.tres") player = load("res://Scripts/rscs/player_stats.tres") reset() add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() func secondCounter()->void: timeAvailable -=1 timeChangeSignal.emit(timeAvailable) if timeAvailable <=0: print("You lose baby!") levelChangeSignal.emit(levels[currentLevel]) func reset()->void: timeAvailable = timers[currentLevel] playerCurrentHealth = player.starting_health # 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: if body.is_in_group("destructible") and intentMessage == "destroy": destroySignal.emit(body) func totalCrates(numberOfCrates:int)->void: 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: playerCurrentHealth -= enemiesDict[slime]["damage"] #send a custom signal about damage damagePlayerSignal.emit(enemiesDict[slime]["damage"],playerCurrentHealth) if playerCurrentHealth <=0: print("U ded") killPlayerSignal.emit() func addEnemyToLevel(slime)->void: #give each enemy some health and damage var randamage = randi_range(1,20) var enemyStat = { "health": enemy.starting_health, "damage": enemy.meleeDamage+randamage } enemiesDict[slime]=enemyStat func respawn()->void: levelChangeSignal.emit(levels[currentLevel])