changed stuff

This commit is contained in:
StevenSoroka committed 2025-09-08 20:56:39 -04:00
1 parent b824c5eb64
commit 632d6fd508
15 files changed
+1265 -9

No files matched your search

+60 -1
View File
@@ -1,6 +1,44 @@
extends Node2D
signal playerDamage
signal destroySignal(body)
signal levelChangeSignal(level: String)
var coinCount : int = 0
var score:int = 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 = [30, 50, 30]
var currentLevel: int = 0
var enemy: CharacterStats
var playerStats: CharacterStats
func _ready():
enemy = load("res://scripts/resources/slimeStats.tres")
playerStats = load("res://scripts/resources/playerStats.tres")
add_child(timer)
timer.wait_time = 1
timer.one_shot = false
timer.connect("timeout", secondCounter)
timer.start()
timeAvailable = timers[currentLevel]
func secondCounter():
timeAvailable -= 1
print("second")
if timeAvailable <= 0:
print("dead")
levelChangeSignal.emit(levels[currentLevel])
Gamecontroller.reset()
func _on_area_2d_area_trigger_signal(effect: String, body: Node2D) -> void:
if body.name == "world-boundary":
@@ -21,4 +59,25 @@ func bulletDamage(target: Node2D, bullet: Node2D):
bullet.visible = false
func coin_collected(coin: Coin):
coin.queue_free()
#coin.queue_free()
destroySignal.emit(coin)
score += 1
coinCount -= 1
if coinCount == 0:
currentLevel = (currentLevel + 1) % len(levels)
levelChangeSignal.emit(levels[currentLevel])
print("Win!")
func totalCoinCount(count: int):
print("count is "+ str(count))
coinCount = count
func reset():
score = 0
timeAvailable = timers[currentLevel]
func playerAttacked(body, slime):
playerStats.health -= enemy.meleDamage
print("enemy did " + str(enemy.meleDamage) + " damage, player has " + str(playerStats.health) + " health")
print("GC knows slime attacked")
+8
View File
@@ -0,0 +1,8 @@
class_name CharacterStats extends Resource
@export var health: float = 100.0
@export var max_health: float = 100.0
@export var starting_health: float = 100.0
@export var meleDamage: float = 10
@export var rangeDamage: float = 0
+1
View File
@@ -0,0 +1 @@
uid://1inibslv874a
+12
View File
@@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://rc5t6lf31v5e"]
[ext_resource type="Script" uid="uid://1inibslv874a" path="res://scripts/resources/characterstats.gd" id="1_tsub5"]
[resource]
script = ExtResource("1_tsub5")
health = 100.0
max_health = 100.0
starting_health = 100.0
meleDamage = 10.0
rangeDamage = 0.0
metadata/_custom_type_script = "uid://1inibslv874a"
+12
View File
@@ -0,0 +1,12 @@
[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://deddwp54e2uu5"]
[ext_resource type="Script" uid="uid://1inibslv874a" path="res://scripts/resources/characterstats.gd" id="1_v5vo6"]
[resource]
script = ExtResource("1_v5vo6")
health = 100.0
max_health = 100.0
starting_health = 100.0
meleDamage = 10.0
rangeDamage = 0.0
metadata/_custom_type_script = "uid://1inibslv874a"
+33 -6
View File
@@ -1,9 +1,9 @@
class_name SceneManager extends Node2D
const BulletScn = preload("res://scenes/bullet.tscn")
@onready var game: Node2D = $".."
@onready var triggers: Node2D = $"../triggers"
@onready var coins: Node = $"../coins"
@onready var enemies: Node = $"../Enemies"
var bullets: Array[Bullet] = []
const MAX_BULLETS = 10
@@ -13,18 +13,40 @@ func _ready() -> void:
if triggers:
for obj in triggers.get_children():
if obj is Trigger:
obj.areaTriggerSignal.connect(game._on_area_2d_area_trigger_signal)
obj.areaTriggerSignal.connect(Gamecontroller._on_area_2d_area_trigger_signal)
if coins:
for obj in coins.get_children():
if obj is Coin:
obj.coin_collected.connect(game.coin_collected)
updateCoins()
if enemies:
updateEnemies()
Gamecontroller.destroySignal.connect(destroy)
Gamecontroller.levelChangeSignal.connect(changeScene)
func updateEnemies():
for obj in enemies.get_children():
if obj is Slime:
if !obj.slimeAttacked.is_connected(Gamecontroller.playerAttacked):
obj.slimeAttacked.connect(Gamecontroller.playerAttacked)
func updateCoins():
var coinCount: int = 0
for obj in coins.get_children():
if obj is Coin:
if not obj.coin_collected.is_connected(Gamecontroller.coin_collected):
obj.coin_collected.connect(Gamecontroller.coin_collected)
# connect tree exit
if not obj.tree_exited.is_connected(updateCoins):
obj.tree_exited.connect(updateCoins)
coinCount += 1
Gamecontroller.totalCoinCount(coinCount)
# makes and recycles bullets
func bulletFactory() -> Bullet:
if len(bullets) < MAX_BULLETS:
# create new
var b = BulletScn.instantiate()
b.bulletDamageSignal.connect(game.bulletDamage)
b.bulletDamageSignal.connect(Gamecontroller.bulletDamage)
add_child(b)
bullets.append(b)
return b
@@ -35,6 +57,8 @@ func bulletFactory() -> Bullet:
bullets[i].visible = true
return bullets[i]
func destroy(body):
body.queue_free()
func makeBullet(pos: Transform2D, dir: int) -> Node2D:
var b = bulletFactory()
@@ -42,3 +66,6 @@ func makeBullet(pos: Transform2D, dir: int) -> Node2D:
b.transform = pos
b.setSpeed(dir * 700)
return b
func changeScene(level: String):
get_tree().call_deferred("change_scene_to_file", level)
+39
View File
@@ -0,0 +1,39 @@
class_name Slime extends Area2D
@onready var left_cast: RayCast2D = $LeftCast
@onready var left_cliff_cast: RayCast2D = $LeftCliffCast
@onready var right_cast: RayCast2D = $RightCast
@onready var right_cliff_cast: RayCast2D = $RightCliffCast
@onready var slime_sprite: AnimatedSprite2D = $SlimeSprite
@export var direction: int = -1
@export var speed: float = 100
signal slimeAttacked(body, slime)
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
func cast_is_colliding(cast: RayCast2D) -> bool:
return cast.is_colliding() && cast.get_collider() is not Player
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
position.x += direction * speed * delta
if cast_is_colliding(left_cast) && direction == -1:
direction = 1
elif cast_is_colliding(right_cast) && direction == 1:
direction = -1
elif direction == -1 && !cast_is_colliding(left_cliff_cast):
direction = 1
elif direction == 1 && !cast_is_colliding(right_cliff_cast):
direction = -1
slime_sprite.flip_h = direction == -1
func _on_body_entered(body: Node2D) -> void:
if body is Player:
print("slime attack!")
slimeAttacked.emit(body, self)
+1
View File
@@ -0,0 +1 @@
uid://dh168hjmye0c2