extends Node2D var totalCrates = 2 #This will be updated in the future, see SceneManager var cratesDestroyed = 0 var timeLimit = 10 #var timer:= Timer.new() #var timerLabel = var coinsCollectedTotal:int = 0 var totalCoinsAvailable:int = 0 var levels = ["res://scenes/game.tscn", "res://scenes/level2.tscn", "res://scenes/level3.tscn"] var timers = [6, 10, 15] var timeAvailable:int = 0 var currentLevel = 0 var timer:= Timer.new() # signals signal levelChangeSignal(level) signal destroySignal(body) signal playerDamagedSignal(health, maxHealth) signal playerDeathSignal var enemy:CharacterStats var player:CharacterStats var enemiesDict = {} var playerCurrentHealth:int = 0 # Called when the node enters the scene tree for the first time. func _ready(): # load in characters enemy = load("res://scripts/rscs/slime_stats.tres") player = load("res://scripts/rscs/player_stats.tres") playerCurrentHealth = player.starting_health add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() #$TimerLabel.text = str(timeLimit) func secondCounter() -> void: #timeLimit -= 1 #$TimerLabel.text = str(timeLimit) #if timeLimit <=0: # print("You lose baby!") # get_tree().reload_current_scene() #class timeAvailable -= 1 if timeAvailable <= 0: print("You lose baby!") levelChangeSignal.emit(levels[currentLevel]) func reset() -> void: timeAvailable = timers[currentLevel] enemiesDict.clear() playerCurrentHealth = player.starting_health func _on_trigger_fired(intent: Variant, body) -> void: #print("GC knows trigger fired " +intent) match intent: "destroy": #if body.name.begins_with("Crate"): # cratesDestroyed +=1 # body.queue_free() # destroy the crate - again will move to SceneManager #if cratesDestroyed>=totalCrates: # print("You win baby!") # get_tree().reload_current_scene() destroySignal.emit(body) "powerup": print("power up this thing") func _on_coin_collected(body, coin): print("GC knows coin collected") coinsCollectedTotal += 1 destroySignal.emit(coin) func totalCoins(value): if value == 0: # you won print("you won") currentLevel += 1 if currentLevel >= levels.size(): currentLevel = 0 levelChangeSignal.emit(levels[currentLevel]) func _on_slime_damage(body, slime): print("GC knows slime damage") print("Damage " + str(enemiesDict[slime]["damage"])) playerCurrentHealth -= enemiesDict[slime]["damage"] if playerCurrentHealth <= 0: print("YOU DIED") playerDeathSignal.emit() else: print("Player Health " + str(playerCurrentHealth) + " of " + str(player.starting_health)) playerDamagedSignal.emit(playerCurrentHealth, player.starting_health) func totalEnemies(value): print("GC knows total enemies " + str(value)) #totalEnemies = value func addEnemyToLevel(slime) -> void: print("GC adding enemy") var randDamage:int = randi() % 10 var enemyStat = { "health": enemy.health, "damage": enemy.meleeDamage + randDamage } enemiesDict[slime] = enemyStat func bulletDamage(area, bullet) -> void: print("Bullet hitting area") if area is Slime: print("Hitting a slime") enemiesDict[area]["health"] -= player.rangeDamage if enemiesDict[area]["health"] <= 0: print("enemy killed") removeEnemyFromLevel(area) destroySignal.emit(area) else: print("Slime health " + str(enemiesDict[area]["health"])) func removeEnemyFromLevel(slime) -> void: enemiesDict.erase(slime)