Files
Sept26Game-tim-fork/scripts/gamecontroller.gd
T

95 lines
2.3 KiB
GDScript
Raw Normal View History

class_name GameController extends Node2D
signal teleportSignal(body:RigidBody2D)
signal destroySignal(body)
2026-11-03 17:03:06 -05:00
signal damageSignal(body)
2026-10-27 21:03:58 -04:00
var numberOfCrates = 2
var totalCoins = 0
var coinsRemaining = 0
var coinsCollected = 0
2026-11-03 17:03:06 -05:00
var enemiesDict={}
var playerStats={
"health": 100,
"meleeDamage": 20,
"rangeDamage": 20
}
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
get_window().grab_focus()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _on_trigger(effect: Variant, Object: Variant) -> void:
print("GC knows about trigger")
match effect:
"destroy":
if not Object is Player:
destroySignal.emit(Object)
"teleport":
print("Trigger wants to teleport")
if Object is Crate:
teleportSignal.emit(Object)
2026-11-03 17:03:06 -05:00
func _on_bullet_hit(body, bullet) -> void:
if body is Crate:
destroySignal.emit(body)
destroySignal.emit(bullet)
2026-11-03 17:03:06 -05:00
if body is Slime:
#damage the slime
enemiesDict[body]["health"] -= playerStats.rangeDamage
if(enemiesDict[body]["health"] <=0):
print("enemy dead")
destroySignal.emit(body)
destroySignal.emit(bullet)
removeEnemyFromLevel(body)
else:
print("enemy damaged")
destroySignal.emit(bullet)
damageSignal.emit(body)
2026-10-27 21:03:58 -04:00
func crateTotal(amount)->void:
numberOfCrates = amount
if numberOfCrates<=0:
print("YOU WON!!!")
func coinTotal(amount)->void:
if totalCoins == 0:
totalCoins = amount
coinsRemaining = amount
print("Collected "+str(totalCoins-coinsRemaining)+" of "+str(totalCoins) )
func coinCollected(body, coin)->void:
if body is Player:
#give them a coin
coinsCollected +=1
destroySignal.emit(coin)
2026-11-03 17:03:06 -05:00
func slimeAttack(body, slime)->void:
print("GC knows slime attacked player for "+str(enemiesDict[slime].meleeDamage))
playerStats.health -= enemiesDict[slime].meleeDamage
if playerStats.health <=0:
#kill the player
destroySignal.emit(body)
else:
#damage the player
print("you took damage")
damageSignal.emit(body)
func addEnemyToLevel(enemy:Slime)->void:
#make some stats for the bad guy
var stats = {
"health": 100,
"meleeDamage": 10
}
#add em to a dictionary of enemies
enemiesDict[enemy]=stats
func removeEnemyFromLevel(enemy)->void:
enemiesDict.erase(enemy)
func levelChange()->void:
print("change levels (reload)")
get_tree().reload_current_scene()