extends Node2D var coinsCollectedTotal:int = 0 var totalCoinsAvailable:int = 0 var levels=["res://scenes/game.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"] var timers=[16,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/slimeStats.tres") player = load("res://scripts/rscs/playerStats.tres") playerCurrentHealth = player.starting_health add_child(timer) timer.wait_time = 1 timer.one_shot = false timer.connect("timeout", secondCounter) timer.start() func secondCounter()->void: timeAvailable -=1 if timeAvailable <=0: print("YOu LOOSAE Baby!") print(levels[currentLevel]) levelChangeSignal.emit(levels[currentLevel]) func reset()->void: timeAvailable = timers[currentLevel] enemiesDict.clear() playerCurrentHealth = player.starting_health # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): pass func _on_trigger_fired(intent, body): print("GC knows trigger fired "+intent) match intent: "destroy": print("destroy this thing") destroySignal.emit(body) "powerup": print("power up this thing") func _on_coin_collected(body, coin): destroySignal.emit(coin) func totalCoins(value): if value == 0: #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"])) print("Player Health "+str(playerCurrentHealth)+" of "+str(player.starting_health)) playerCurrentHealth -= enemiesDict[slime]["damage"] if playerCurrentHealth <=0: print("YOU DED") playerDeathSignal.emit() else: print("Taking damage") playerDamagedSignal.emit(playerCurrentHealth, player.starting_health) func totalEnemies(value): print("GC knows total enemies "+str(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") print("Slime health "+str(enemiesDict[area]["health"])) enemiesDict[area]["health"]-=player.rangeDamage if enemiesDict[area]["health"] <=0: print("enemy killed") removeEnemyFromLevel(area) destroySignal.emit(area) else: print("enemy damaged") func removeEnemyFromLevel(slime)->void: enemiesDict.erase(slime)