GodotGameWorkshop/Scripts/gamecontroller.gd

82 lines
2.0 KiB
GDScript

extends Node2D
var totalCoinsAvailable
var timer = Timer.new()
var timeAvailable = 5
var level="res://Scenes/game.tscn"
var levelTwo = "res://Scenes/level2.tscn"
var levels = ["res://Scenes/game.tscn", "res://Scenes/level2.tscn", "res://Scenes/level3.tscn"]
var timers = [10,15,9]
var currentLevel = 0
signal destroySignal(body)
signal levelChangeSignal(level)
signal playerTakesDamageSignal(health)
signal playerDiesSignal
var player:CharacterStats
var enemy:CharacterStats
var playerHealth:int
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
player = load("res://Scripts/rscs/playerStats.tres")
enemy = load("res://Scripts/rscs/slimeStats.tres")
playerHealth = 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("LOSE")
#reload the current scene
levelChangeSignal.emit(levels[currentLevel])
func reset() -> void:
timeAvailable = timers[currentLevel]
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _on_areatrigger(effect, body) -> void:
print("Game controller knows about trigger")
if effect == "destroy":
print("Destroy this thing")
body.queue_free()
if effect == "lavaBurn":
if body is Player:
playerHealth -= 10
print("Player health is now "+str(playerHealth))
func totalCoinCount(totalCoins):
print("GC knows the total coins is "+str(totalCoins) )
totalCoinsAvailable = totalCoins
func coinCollected(body, coin):
destroySignal.emit(coin)
totalCoinsAvailable -=1
if totalCoinsAvailable <= 0:
currentLevel +=1
if currentLevel >= levels.size():
currentLevel = 0
levelChangeSignal.emit(levels[currentLevel])
func playerAttacked(body, slime):
print("GC knows player attacked")
playerHealth -= enemy.meleeDamage
if playerHealth <=0:
playerDiesSignal.emit()
else:
print("Received damage...")
playerTakesDamageSignal.emit(playerHealth)