From e4820d9bb9955fe6953996b70de5023af46e7997 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 25 May 2026 21:04:07 -0400 Subject: [PATCH] enemies, more levels(fix everything) --- assets/graphics/enemies/slime_purple.png | Bin 0 -> 1030 bytes .../graphics/enemies/slime_purple.png.import | 40 ++ assets/graphics/objects/pixil-frame-0(1).png | Bin 0 -> 401 bytes .../objects/pixil-frame-0(1).png.import | 40 ++ project.godot | 4 + scene/cube.tscn | 7 + scene/game.tscn | 51 +- scene/level2.tscn | 439 ++++++++++++++++++ scene/level3.tscn | 438 +++++++++++++++++ scripts/game.gd | 52 ++- scripts/player_guy.gd | 2 +- scripts/scenemanager.gd | 23 +- scripts/slimy.gd | 32 ++ scripts/slimy.gd.uid | 1 + slimy.tscn | 78 ++++ 15 files changed, 1191 insertions(+), 16 deletions(-) create mode 100644 assets/graphics/enemies/slime_purple.png create mode 100644 assets/graphics/enemies/slime_purple.png.import create mode 100644 assets/graphics/objects/pixil-frame-0(1).png create mode 100644 assets/graphics/objects/pixil-frame-0(1).png.import create mode 100644 scene/level2.tscn create mode 100644 scene/level3.tscn create mode 100644 scripts/slimy.gd create mode 100644 scripts/slimy.gd.uid create mode 100644 slimy.tscn diff --git a/assets/graphics/enemies/slime_purple.png b/assets/graphics/enemies/slime_purple.png new file mode 100644 index 0000000000000000000000000000000000000000..76f564e1d18d3f4b59c032ee8233ebf4665af431 GIT binary patch literal 1030 zcmeAS@N?(olHy`uVBq!ia0vp^2|(<@!3HEb(?2AGr~;43Vg?3oVGw3ym^DX&fq{94 zr;B4q#hkZu_UB)A5IH_yFgSBs)oT$}vmn=*zw9@ptqPdBe?d}nV{fk>$4CBvg?)Ed z_vO50>IiWPSm-r%m!<3^wh~P~_4RS~ zpI=Gub+-QhIeq%h`RaxX{5TJNc>dLzfkEQSwe9u4|AzdIT*^2{!A86~-QWe|7ymwB zC>Ti{|81}_`+UPPl@+TN=sEg&On58UrMgnvLQXF0_ys@bQ1@EdnLWo=s>t&5b6*sD zcFMcwU?tm(D_Xg)W-Wc$-E!h}Crjk()1K3gUwWA?xq;Wdw18cHo3k~Zx-$Fb`AU$*-@DD zmGPf?jG6V$dCTQj>{2>(Zt>F0fcfj}50vb4xa*Xko3|y%e%9UPUyOMTg5ncDvEEv- z-pIj{ckVgygWdnMA2Z(bzqjb#^{`seQ^pPQ$9_6a&90O2#S*<mC1;UMyZZkxfN& z@uKHWkGnrH91Z`H^EmwCk41a3FUGWg-!^5J_|wx1K5Uz!#D3x7Zw}ELVrNTt9P8IR z_1(WOXsY%rc>^6i*W&vj&+HC_UuW8s@vbNLPX_a-G3SZZpfA+a0i__;?$Us=0$M^mx|@{Z%Av~aU37bg$<*Becv}Vfza_kz@osfS~jfz~#{^-C9^H!@Gr4G59inuKK( z3fym|t 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 diff --git a/scripts/player_guy.gd b/scripts/player_guy.gd index 633f2af..b9a1791 100644 --- a/scripts/player_guy.gd +++ b/scripts/player_guy.gd @@ -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 diff --git a/scripts/scenemanager.gd b/scripts/scenemanager.gd index 8a54888..b1313ff 100644 --- a/scripts/scenemanager.gd +++ b/scripts/scenemanager.gd @@ -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) diff --git a/scripts/slimy.gd b/scripts/slimy.gd new file mode 100644 index 0000000..e6557b6 --- /dev/null +++ b/scripts/slimy.gd @@ -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) diff --git a/scripts/slimy.gd.uid b/scripts/slimy.gd.uid new file mode 100644 index 0000000..213c978 --- /dev/null +++ b/scripts/slimy.gd.uid @@ -0,0 +1 @@ +uid://bd6j515foi0bj diff --git a/slimy.tscn b/slimy.tscn new file mode 100644 index 0000000..0083105 --- /dev/null +++ b/slimy.tscn @@ -0,0 +1,78 @@ +[gd_scene format=3 uid="uid://ctfxiipsy88op"] + +[ext_resource type="Script" uid="uid://bd6j515foi0bj" path="res://scripts/slimy.gd" id="1_m2evq"] +[ext_resource type="Texture2D" uid="uid://ct2w85dun0kjq" path="res://assets/graphics/enemies/slime_purple.png" id="1_pngbj"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_m2evq"] +atlas = ExtResource("1_pngbj") +region = Rect2(0, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_v6kx6"] +atlas = ExtResource("1_pngbj") +region = Rect2(24, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xi873"] +atlas = ExtResource("1_pngbj") +region = Rect2(48, 24, 24, 24) + +[sub_resource type="AtlasTexture" id="AtlasTexture_eyx2s"] +atlas = ExtResource("1_pngbj") +region = Rect2(72, 24, 24, 24) + +[sub_resource type="SpriteFrames" id="SpriteFrames_jhbdr"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_m2evq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_v6kx6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xi873") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_eyx2s") +}], +"loop": true, +"name": &"idle", +"speed": 12.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_pssmh"] +size = Vector2(19, 35) + +[node name="slimy" type="Area2D" unique_id=1550071708] +position = Vector2(12, 23) +script = ExtResource("1_m2evq") +metadata/_edit_group_ = true + +[node name="slime texture" type="AnimatedSprite2D" parent="." unique_id=618621224] +texture_filter = 1 +position = Vector2(9.5, 9) +scale = Vector2(1.7916666, 1.75) +sprite_frames = SubResource("SpriteFrames_jhbdr") +animation = &"idle" +autoplay = "idle" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1805299238] +position = Vector2(9.5, 11.5) +shape = SubResource("RectangleShape2D_pssmh") + +[node name="leftdowncast" type="RayCast2D" parent="." unique_id=1676774856] +position = Vector2(-2, 21) +target_position = Vector2(0, 11) + +[node name="rightcast" type="RayCast2D" parent="." unique_id=279001476] +position = Vector2(18, 14) +target_position = Vector2(7, 0) + +[node name="rightdowncast" type="RayCast2D" parent="." unique_id=822428022] +position = Vector2(20, 21) +target_position = Vector2(0, 11) + +[node name="leftcast" type="RayCast2D" parent="." unique_id=1706617986] +position = Vector2(0, 14) +target_position = Vector2(-7, 0) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"]