SeptemberGame/scripts/gamecontroller.gd

113 lines
2.9 KiB
GDScript3
Raw Normal View History

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)