final week

This commit is contained in:
OddlyTimbot committed 2026-04-13 20:36:19 -04:00
1 parent fa5025b626
commit 7b14cc8333
20 files changed
+494 -12

No files matched your search

+29 -8
View File
@@ -4,6 +4,11 @@ var crateTotal = 0
signal destroySignal(body)
signal teleportSignal(body)
signal levelChangeSignal(level)
signal playerDamageSignal(health, maxHealth)
signal playerDeathSignal
signal countDownSignal(timeRemaining)
signal coinCollectedSignal(totalCoinsCollected, coinsRemaining)
var currentScene:String = "res://scenes/game.tscn"
var timer := Timer.new()
@@ -20,22 +25,29 @@ var playerStartingHealth = 100
var enemiesDict={}
var enemy:CharacterStats
var player:CharacterStats
# 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")
add_child(timer)
timer.wait_time = 1
timer.one_shot= false
timer.connect("timeout", secondCounter)
timer.start()
func reset()->void:
timeAvailable = timers[currentLevel]
playerHealth = playerStartingHealth
playerHealth = player.starting_health
coinsCollected = 0
func secondCounter()->void:
func secondCounter()->void:
timeAvailable -=1
countDownSignal.emit(timeAvailable)
if timeAvailable <=0:
print("YOU LOSE BABY!!")
levelChangeSignal.emit(levels[currentLevel])
@@ -78,7 +90,7 @@ func bulletDamage(body:Node2D, bullet:Bullet)->void:
destroySignal.emit(body)
destroySignal.emit(bullet)
if body is Slime:
enemiesDict[body]["health"] -= 10
enemiesDict[body]["health"] -= player.rangeDamage
if enemiesDict[body]["health"]<=0:
destroySignal.emit(body)
destroySignal.emit(bullet)
@@ -90,6 +102,7 @@ func _on_coin_collected(body:Node2D, coin:Coin)->void:
func totalCoins(value)->void:
print("GC knows coins remaining "+str(value))
coinCollectedSignal.emit(coinsCollected, value)
if value <=0:
#no coins left in level
currentLevel +=1
@@ -103,12 +116,20 @@ func _on_slime_damage(body:Node2D, slime:Slime)->void:
print("GC knows slime damage to player "+str(playerHealth))
if playerHealth <=0:
print("YOU DED")
levelChangeSignal.emit(levels[currentLevel])
playerDeathSignal.emit()
else:
#damage
playerDamageSignal.emit(playerHealth, player.max_health)
func addEnemyToLevel(slime:Slime)->void:
var randDamage:int = randi()%10
# var randDamage:int = randi()%10
var enemyStat = {
"health":50,
"damage":randDamage
"health":enemy.starting_health,
"damage":enemy.meleeDamage
}
#put it in dictionary
enemiesDict[slime]=enemyStat
func loadLevel()->void:
levelChangeSignal.emit(levels[currentLevel])
+20 -2
View File
@@ -11,13 +11,16 @@ const BUMP_POWER = 50
enum FaceDirection{LEFT, RIGHT}
var facing:FaceDirection = FaceDirection.RIGHT
var direction
enum PlayerState{IDLE,RUNNING, JUMPING, FALLING}
enum PlayerState{IDLE,RUNNING, JUMPING, FALLING, HURT, DEAD}
var current_player_state:PlayerState = PlayerState.IDLE
var jumpUp:bool = false
signal deathAnimationCompleteSignal
func _physics_process(delta: float) -> void:
handle_input()
if current_player_state != PlayerState.DEAD:
handle_input()
handle_movement(delta)
handle_state()
handle_animation()
@@ -36,6 +39,7 @@ func handle_input()->void:
velocity.y = JUMP_VELOCITY
current_player_state = PlayerState.JUMPING
jumpUp = true
# Handle Shoot
if Input.is_action_just_pressed("shoot"):
print("Player wants to shoot")
@@ -71,6 +75,10 @@ func handle_animation()->void:
player_graphic.play("jumping")
PlayerState.FALLING:
player_graphic.play("falling")
PlayerState.HURT:
player_graphic.play("hurt")
PlayerState.DEAD:
player_graphic.play("death")
func handle_movement(delta)->void:
# Add the gravity.
@@ -98,3 +106,13 @@ func _on_animation_finished() -> void:
match current_player_state:
PlayerState.JUMPING:
jumpUp = false
PlayerState.HURT:
current_player_state = PlayerState.IDLE
PlayerState.DEAD:
deathAnimationCompleteSignal.emit()
func playerDamage(health, maxHealth) ->void:
current_player_state = PlayerState.HURT
func playerDead()->void:
print("Player should die")
current_player_state = PlayerState.DEAD
+11
View File
@@ -0,0 +1,11 @@
class_name CharacterStats extends Resource
@export_category("health")
@export var health:int = 100
@export var max_health:int =100
@export var starting_health:int = 100
# damage"
@export_category("damage")
@export var meleeDamage: int = 10
@export var rangeDamage: int =5
+1
View File
@@ -0,0 +1 @@
uid://jdmo742f5t43
+7
View File
@@ -0,0 +1,7 @@
[gd_resource type="Resource" script_class="CharacterStats" format=3 uid="uid://b6qxf7j8kcw7f"]
[ext_resource type="Script" uid="uid://jdmo742f5t43" path="res://scripts/rscs/characterStats.gd" id="1_sqkfu"]
[resource]
script = ExtResource("1_sqkfu")
metadata/_custom_type_script = "uid://jdmo742f5t43"
+12
View File
@@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="CharacterStats" format=3 uid="uid://qpkg5xp8sk1a"]
[ext_resource type="Script" uid="uid://jdmo742f5t43" path="res://scripts/rscs/characterStats.gd" id="1_ppipo"]
[resource]
script = ExtResource("1_ppipo")
health = 20
max_health = 30
starting_health = 20
meleeDamage = 20
rangeDamage = 0
metadata/_custom_type_script = "uid://jdmo742f5t43"
+13 -1
View File
@@ -4,6 +4,8 @@ class_name SceneManager extends Node2D
@onready var level: Node2D = $"../Level"
@onready var coins: Node2D = $"../Coins"
@onready var slimes: Node2D = $"../Slimes"
@onready var player: Player = $"../Player"
@onready var ui: UI = $"../CanvasLayer/ui"
var bullet = preload("res://scenes/bullet.tscn")
var bulletArray:Array[Bullet] = []
@@ -20,7 +22,10 @@ func _ready() -> void:
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
if Input.is_action_just_pressed("save"):
print("Save the game!")
if Input.is_action_just_pressed("load"):
print("Load the game!")
func buildLevel()->void:
print("building level")
@@ -33,6 +38,13 @@ func buildLevel()->void:
Gamecontroller.destroySignal.connect(destroy)
Gamecontroller.teleportSignal.connect(teleport)
Gamecontroller.levelChangeSignal.connect(loadLevel)
Gamecontroller.playerDamageSignal.connect(player.playerDamage)
Gamecontroller.playerDamageSignal.connect(ui.updateHealth)
Gamecontroller.playerDeathSignal.connect(player.playerDead)
Gamecontroller.countDownSignal.connect(ui.updateTimer)
Gamecontroller.coinCollectedSignal.connect(ui.updateCoins)
player.deathAnimationCompleteSignal.connect(Gamecontroller.loadLevel)
func updateEnemies()->void:
if slimes:
var totalSlimes = 0
+16
View File
@@ -0,0 +1,16 @@
class_name UI extends Control
@onready var health: Label = $VBoxContainer/HBoxContainer/MarginContainer/health
@onready var timer: Label = $VBoxContainer/HBoxContainer/MarginContainer2/timer
@onready var coins: Label = $VBoxContainer/HBoxContainer/MarginContainer3/coiins
func _ready() -> void:
health.text = "Hi MOM!"
func updateTimer(timerValue)->void:
timer.text = str(timerValue)
func updateHealth(healthValue, maxHealth)->void:
health.text = str(healthValue)
func updateCoins(collectedCoins, coinsRemaining)->void:
coins.text= str(collectedCoins)+" of "+str(coinsRemaining+collectedCoins)
+1
View File
@@ -0,0 +1 @@
uid://6tbvoaj20pws