enemies, more levels(fix everything)
This commit is contained in:
1 parent
28b59ef4fe
commit
e4820d9bb9
15 files changed
+1191
-16
No files matched your search
+50
-2
@@ -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
|
||||
@@ -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
@@ -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)
|
||||
@@ -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)
|
||||
@@ -0,0 +1 @@
|
||||
uid://bd6j515foi0bj
|
||||
Reference in new issue
Block a user