enemies, more levels(fix everything)

This commit is contained in:
torontocaper committed 2026-05-25 21:04:07 -04:00
1 parent 28b59ef4fe
commit e4820d9bb9
15 files changed
+1191 -16

No files matched your search

+50 -2
View File
@@ -1,10 +1,36 @@
class_name game extends Node2D
extends Node2D
signal destroySignal (body)
var levels=["res://scene/game.tscn", "res://scene/level2.tscn", "res://scene/level3.tscn"]
var currentlevel=0
var timers=[5, 15, 10]
var timeleft=0
var playercurrenthealth:int = 100
var enemiesdict = {}
signal levelchangesignal(level)
var timer = Timer.new()
func secondcounter()-> void:
timeleft -=1
if timeleft <=0:
print("YOU LOOOSSSTTT!!!!")
levelchangesignal.emit(levels[currentlevel])
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
reset()
get_window().grab_focus()
add_child(timer)
timer.wait_time=1
timer.one_shot = false
timer.connect("timeout", secondcounter)
timer.start()
func reset()->void:
timeleft = timers[currentlevel]
# Called every frame. 'delta' is the elapsed time since the previous frame.
@@ -18,3 +44,25 @@ func on_trigger(body: Variant, intentMessage: Variant) -> void:
func totalCube(NumberOfCube:int)->void:
print ("gameknowscubes: "+str(NumberOfCube))
if NumberOfCube <=0:
print("YOu won!!")
currentlevel +=1
if currentlevel >= levels.size():
currentlevel = 0
levelchangesignal.emit(levels[currentlevel])
func _on_slime_damage(_body,slime)->void:
print("owie:(")
print("doing damage: " +str(enemiesdict[slime]["damage"]))
playercurrenthealth -=enemiesdict[slime]["damage"]
if playercurrenthealth <=0:
print("u ded")
func addenemytolevel(slime)->void:
print("adding enemhy to level")
var randamage = randi_range(1,20)
var enemystat = {
"health":50000,
"damage":25
}
enemiesdict[slime]=enemystat
+1 -1
View File
@@ -74,7 +74,7 @@ func handle_movement(delta)->void:
velocity.x = move_toward(velocity.x, 0, SPEED)
func handle_collisions()->void:
if right_cast.is_colliding() && facing==FaceDirection.RIGHT:
if right_cast.is_colliding() && facing==FaceDirection.RIGHT and right_cast.get_collider() is RigidBody2D:
var collider = right_cast.get_collider()
if collider is Node && collider is RigidBody2D:
pushTarget = collider
+20 -3
View File
@@ -1,16 +1,29 @@
class_name SM extends Node2D
var grenade = preload("res://scene/grenade.tscn")
@onready var game: Node2D = $".."
@onready var cube_container: Node2D = $"../cube container"
@onready var enemies: Node2D = $"../enemies"
func _ready() -> void:
print("hey it's working!")
game.destroySignal.connect(destroy)
gameController.reset()
gameController.destroySignal.connect(destroy)
buildLevel()
gameController.levelchangesignal.connect(changescene)
func buildLevel()->void:
updateCube()
if enemies:
updateenemies()
func updateenemies()->void:
var totalenemies = 0
for obj in enemies.get_children():
if obj is slime:
totalenemies +=1
if not obj.slimedamagesignal.is_connected(gameController._on_slime_damage):
obj.slimedamagesignal.is_connected(gameController._on_slime_damage)
gameController.addenemytolevel(obj)
func destroy(body)->void:
if body is Cube:
body.queue_free()
@@ -24,6 +37,7 @@ func updateCube()->void:
obj.tree_exited.connect(updateCube)
_CubeTotal +=1
print ("Number of cubes: "+str(_CubeTotal))
gameController.totalCube(_CubeTotal)
func makeGrenade(_grenadeposition, _grenadedirection)->void:
print("grenade time")
@@ -31,3 +45,6 @@ func makeGrenade(_grenadeposition, _grenadedirection)->void:
owner.add_child(myGrenade)
myGrenade.transform = _grenadeposition
myGrenade.apply_central_impulse(Vector2(_grenadedirection, -1)*400)
func changescene(level)->void:
get_tree().call_deferred("change_scene_to_file",level)
+32
View File
@@ -0,0 +1,32 @@
class_name slime extends Area2D
@onready var slime_texture: AnimatedSprite2D = $"slime texture"
@onready var leftdowncast: RayCast2D = $leftdowncast
@onready var rightcast: RayCast2D = $rightcast
@onready var rightdowncast: RayCast2D = $rightdowncast
@onready var leftcast: RayCast2D = $leftcast
signal slimedamagesignal(body, slime)
var speed: int = 100
var direction = 1
func _process(delta: float) -> void:
position.x += direction*speed*delta
if rightcast.is_colliding() and not rightcast.get_collider() is Player:
direction=-1
if leftcast.is_colliding() and not leftcast.get_collider() is Player:
direction=1
slime_texture.flip_h = false
if not rightdowncast.is_colliding():
direction = -1
if not leftdowncast.is_colliding():
direction = 1
func _on_body_entered(body: Node2D) -> void:
print("player damage at slime")
if body is Player:
print("slime see player")
slimedamagesignal.emit(body, self)
+1
View File
@@ -0,0 +1 @@
uid://bd6j515foi0bj