july-game/scripts/gamecontroller.gd

82 lines
2.0 KiB
GDScript

extends Node2D
@onready var player: Player = $player
signal playerDamage
signal destroySignal(body)
signal levelChangeSignal(level)
var score := 0
var totalCoin := 0
var coinCollected := 0
var timer := Timer.new()
var timeAvailable: int = 5
var levels = ["res://scenes/game.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"]
var timers = [60, 10, 9]
var currentLevel = 0
#caracter stats
var enemy_stats: CharacterStats
var player_stats: CharacterStats
var player_current_health: int
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
enemy_stats = load("res://scripts/rscs/slimeStats.tres")
player_stats = load("res://scripts/rscs/playerStats.tres")
player_current_health = player_stats.starting_health
reset()
print("in _ready")
add_child(timer)
timer.wait_time = 1
timer.one_shot = false
timer.connect("timeout", secondCounter)
timer.start()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func secondCounter():
timeAvailable -= 1
if timeAvailable <= 0:
print("you lose")
reset()
levelChangeSignal.emit(levels[currentLevel])
func _on_trigger(effect: Variant, body: Variant) -> void:
if effect == "destroy" && not body is Player:
body.queue_free()
elif effect == "player_hurt":
playerDamage.emit()
func onBulletHitSignal(body: Node, bullet: Bullet):
body.queue_free()
func onCoinCollected(body, coin: Coin):
destroySignal.emit(coin)
func setTotalCoinCount(coinCount: int):
totalCoin = coinCount
if totalCoin == 0:
print("you win!")
currentLevel += 1
if currentLevel >= levels.size():
currentLevel = 0
levelChangeSignal.emit(levels[currentLevel])
func reset():
timeAvailable = timers[currentLevel]
func playerAttacked(body, slime):
print("player was attacked")
player_current_health -= enemy_stats.melee_damage
if player_current_health <= 0:
print("YOU ARE DEAD")
else:
print("remaining life: ", player_current_health)