fin~ player damage, player death, slime damag,e slime death, custom resources. multiple levels

This commit is contained in:
MarkYabut committed 2026-11-03 20:50:59 -05:00
1 parent c1bdb544a6
commit 7ead578152
19 files changed
+1383 -21

No files matched your search

+64 -1
View File
@@ -2,16 +2,38 @@ class_name GameController extends Node2D
signal teleportSignal(body:RigidBody2D)
signal destroySignal(body)
signal damageSignal(body)
var numberOfCrates = 2
var totalCoins = 0
var coinsRemaining = 0
var coinsCollected = 0
var enemy:CharacterStats
var player:CharacterStats
var enemiesDict={}
var playerStats={}
# level information
var levelArray = ["res://scenes/game.tscn", "res://scenes/level2.tscn", "res://scenes/level3.tscn"]
var currentLevel = 0
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
get_window().grab_focus()
enemy = load("res://scripts/rscs/slimeStats.tres")
player = load("res://scripts/rscs/playerStats.tres")
func reset()->void:
playerStats={
"health":player.currentHealth,
"meleeAttack":player.meleeDamage,
"rangeAttack":player.rangeDamage
}
coinsCollected = 0
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
@@ -30,16 +52,34 @@ func _on_trigger(effect: Variant, Object: Variant) -> void:
teleportSignal.emit(Object)
func _on_bullet_hit(body, bullet) -> void:
print("GC knows bullet hit")
#print("GC knows bullet hit")
if body is Crate:
destroySignal.emit(body)
destroySignal.emit(bullet)
if body is Slime:
enemiesDict[body]["health"] -= playerStats.rangeAttack
if enemiesDict[body]["health"] <= 0:
print("Enemy is dead")
destroySignal.emit(body)
destroySignal.emit(bullet)
removeEnemyFromLevel(body)
else:
print("Enemy takes damage")
destroySignal.emit(bullet)
damageSignal.emit(body)
func crateTotal(amount)->void:
numberOfCrates = amount
if numberOfCrates<=0:
print("YOU WON!!!")
if currentLevel<levelArray.size()-1:
currentLevel += 1
else:
currentLevel = 0
levelChange()
func coinTotal(amount)->void:
if totalCoins == 0:
totalCoins = amount
@@ -50,3 +90,26 @@ func coinCollected(body, coin)->void:
#give them a coin
coinsCollected +=1
destroySignal.emit(coin)
func slimeAttack(body, slime)->void:
print("GC knows slime attacking")
playerStats.health -= enemiesDict[slime].meleeDamage
if playerStats.health >0:
print("player takes damage")
damageSignal.emit(body)
else:
print("player is dead!!")
destroySignal.emit(body)
func addEnemyToLevel(slime)->void:
print("Adding enemy to level")
var stat={
"health":enemy.currentHealth + randi_range(0,10),
"meleeDamage":enemy.meleeDamage+ randi_range(0,10)
}
enemiesDict[slime]=stat
func removeEnemyFromLevel(enemy)->void:
print("removeEnemyFromLevel")
enemiesDict.erase(enemy)
func levelChange()-> void:
get_tree().change_scene_to_file(levelArray[currentLevel])