Compare commits

..

No commits in common. "main" and "week2" have entirely different histories.
main ... week2

46 changed files with 133 additions and 2371 deletions

Binary file not shown.

Before

(image error) Size: 500 B

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cco2vhmejry0v"
path="res://.godot/imported/coin.png-20c0ec177f21de2ef8f2f0e70fa6fe8a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/collectibles/coin.png"
dest_files=["res://.godot/imported/coin.png-20c0ec177f21de2ef8f2f0e70fa6fe8a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 1.0 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dqo6e8pa3jewf"
path="res://.godot/imported/slime_purple.png-7c7bd1452ab1f0d8805110e20459acf6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/enemies/slime_purple.png"
dest_files=["res://.godot/imported/slime_purple.png-7c7bd1452ab1f0d8805110e20459acf6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 1.7 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dwx4x0wq3vetw"
path="res://.godot/imported/crate.png-b286bd97caa3cbc59746f2db7de46191.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/objects/crate.png"
dest_files=["res://.godot/imported/crate.png-b286bd97caa3cbc59746f2db7de46191.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 1.5 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c1l8de3i0kljl"
path="res://.godot/imported/Player Death 64x64.png-0c6ff54e7d9aad74b66dce47376541f8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/player/death/Player Death 64x64.png"
dest_files=["res://.godot/imported/Player Death 64x64.png-0c6ff54e7d9aad74b66dce47376541f8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 1.4 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d0osk3f111068"
path="res://.godot/imported/Player Hurt 48x48.png-a720e51cb19103e76b22ab6c1b81302d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/player/hurt/Player Hurt 48x48.png"
dest_files=["res://.godot/imported/Player Hurt 48x48.png-a720e51cb19103e76b22ab6c1b81302d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 1.8 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfhqvl875is6f"
path="res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/player/idle/Player Idle 48x48.png"
dest_files=["res://.godot/imported/Player Idle 48x48.png-9f43f14976963a2821a06ddf8579a76a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 1021 B

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2s48joyna11q"
path="res://.godot/imported/player jump 48x48.png-1ccba0c36041038682bf917e1f6cf991.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/player/jump/player jump 48x48.png"
dest_files=["res://.godot/imported/player jump 48x48.png-1ccba0c36041038682bf917e1f6cf991.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 3.1 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvat1vqwtua2p"
path="res://.godot/imported/player run 48x48.png-6d66612d48bfa4c8721495ba557ab7c6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/player/run/player run 48x48.png"
dest_files=["res://.godot/imported/player run 48x48.png-6d66612d48bfa4c8721495ba557ab7c6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 3.8 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://66hnfsu3e8ll"
path="res://.godot/imported/pixel_bullet.png-30d6d1e8b5e1332f8b2e2cee72a9e790.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/projectiles/pixel_bullet.png"
dest_files=["res://.godot/imported/pixel_bullet.png-30d6d1e8b5e1332f8b2e2cee72a9e790.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 12 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dktvd8atklmau"
path="res://.godot/imported/Terrain (32x32).png-7361ca574569f6e5ff16ef11d25a8904.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/terrains/Terrain (32x32).png"
dest_files=["res://.godot/imported/Terrain (32x32).png-7361ca574569f6e5ff16ef11d25a8904.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 7.3 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dordo7deet5y0"
path="res://.godot/imported/forestbackground.png-f42d75295504b2d17acc59ff8840ec7f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/terrains/backgrounds/forestbackground.png"
dest_files=["res://.godot/imported/forestbackground.png-f42d75295504b2d17acc59ff8840ec7f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 584 B

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cukevm4avtgnp"
path="res://.godot/imported/sky.png-51a4e0a575be38e95f86ed632e1f79b6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/terrains/backgrounds/sky.png"
dest_files=["res://.godot/imported/sky.png-51a4e0a575be38e95f86ed632e1f79b6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

Before

(image error) Size: 20 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cg03sfie3jb4h"
path="res://.godot/imported/trees.png-48cbb9e027f2fcbb533617bea5488df9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/terrains/backgrounds/trees.png"
dest_files=["res://.godot/imported/trees.png-48cbb9e027f2fcbb533617bea5488df9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -15,18 +15,6 @@ run/main_scene="res://scenes/game.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/icon="res://icon.svg"
[autoload]
GameController="*res://scripts/gameController.gd"
[display]
window/size/viewport_width=320
window/size/viewport_height=180
window/size/window_width_override=960
window/size/window_height_override=540
window/stretch/mode="viewport"
[file_customization]
folder_colors={

View File

@ -1,75 +0,0 @@
[gd_scene load_steps=9 format=3 uid="uid://bk0pk4m1ln716"]
[ext_resource type="Script" path="res://scripts/badguy.gd" id="1_oeik4"]
[ext_resource type="Texture2D" uid="uid://dqo6e8pa3jewf" path="res://assets/graphics/enemies/slime_purple.png" id="2_bfdny"]
[sub_resource type="AtlasTexture" id="AtlasTexture_r6wn1"]
atlas = ExtResource("2_bfdny")
region = Rect2(0, 24, 24, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_te1wg"]
atlas = ExtResource("2_bfdny")
region = Rect2(24, 24, 24, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_g742w"]
atlas = ExtResource("2_bfdny")
region = Rect2(48, 24, 24, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_6ebwa"]
atlas = ExtResource("2_bfdny")
region = Rect2(72, 24, 24, 24)
[sub_resource type="SpriteFrames" id="SpriteFrames_mb27d"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_r6wn1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_te1wg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_g742w")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6ebwa")
}],
"loop": true,
"name": &"idle",
"speed": 12.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_blkie"]
size = Vector2(14, 15)
[node name="Area2D" type="Area2D" groups=["enemies"]]
scale = Vector2(2, 2)
script = ExtResource("1_oeik4")
metadata/_edit_group_ = true
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
texture_filter = 1
sprite_frames = SubResource("SpriteFrames_mb27d")
animation = &"idle"
autoplay = "idle"
frame_progress = 0.396641
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, 4.5)
shape = SubResource("RectangleShape2D_blkie")
[node name="RightRay" type="RayCast2D" parent="."]
target_position = Vector2(13, 0)
[node name="LeftRay" type="RayCast2D" parent="."]
target_position = Vector2(-13, 0)
[node name="RightFloorRay" type="RayCast2D" parent="."]
position = Vector2(8, 3)
target_position = Vector2(0, 11)
[node name="LeftFloorRay" type="RayCast2D" parent="."]
position = Vector2(-8, 3)
target_position = Vector2(0, 11)
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -1,13 +1,11 @@
[gd_scene load_steps=4 format=3 uid="uid://b53r5iysu7d4t"]
[gd_scene load_steps=3 format=3 uid="uid://b53r5iysu7d4t"]
[ext_resource type="Script" path="res://scripts/bullet.gd" id="1_qubif"]
[ext_resource type="Texture2D" uid="uid://66hnfsu3e8ll" path="res://assets/graphics/projectiles/pixel_bullet.png" id="2_ifgvb"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_qxj7e"]
size = Vector2(19, 4)
[node name="Area2D" type="Area2D"]
position = Vector2(1, 0)
script = ExtResource("1_qubif")
metadata/_edit_group_ = true
@ -16,11 +14,4 @@ position = Vector2(-0.5, 0)
shape = SubResource("RectangleShape2D_qxj7e")
debug_color = Color(0.717124, 0, 0.290401, 0.42)
[node name="Sprite2D" type="Sprite2D" parent="."]
texture_filter = 1
position = Vector2(-6, -2)
rotation = -3.14159
scale = Vector2(0.151432, 0.0740068)
texture = ExtResource("2_ifgvb")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -1,116 +0,0 @@
[gd_scene load_steps=17 format=3 uid="uid://cey0ymp1n0iqe"]
[ext_resource type="Texture2D" uid="uid://cco2vhmejry0v" path="res://assets/graphics/collectibles/coin.png" id="1_c71mt"]
[ext_resource type="Script" path="res://scripts/coin.gd" id="1_h4xkt"]
[sub_resource type="AtlasTexture" id="AtlasTexture_n1dcx"]
atlas = ExtResource("1_c71mt")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_13l51"]
atlas = ExtResource("1_c71mt")
region = Rect2(16, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_hahrw"]
atlas = ExtResource("1_c71mt")
region = Rect2(32, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_mfe8o"]
atlas = ExtResource("1_c71mt")
region = Rect2(48, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_71uln"]
atlas = ExtResource("1_c71mt")
region = Rect2(64, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_c7ty3"]
atlas = ExtResource("1_c71mt")
region = Rect2(80, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_n435u"]
atlas = ExtResource("1_c71mt")
region = Rect2(96, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_6uw02"]
atlas = ExtResource("1_c71mt")
region = Rect2(112, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_xlt2g"]
atlas = ExtResource("1_c71mt")
region = Rect2(128, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_367r4"]
atlas = ExtResource("1_c71mt")
region = Rect2(144, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_omldi"]
atlas = ExtResource("1_c71mt")
region = Rect2(160, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_74aet"]
atlas = ExtResource("1_c71mt")
region = Rect2(176, 0, 16, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_dwt5l"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_n1dcx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_13l51")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hahrw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mfe8o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_71uln")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c7ty3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n435u")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6uw02")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xlt2g")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_367r4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_omldi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_74aet")
}],
"loop": true,
"name": &"idle",
"speed": 12.0
}]
[sub_resource type="CircleShape2D" id="CircleShape2D_4xboy"]
radius = 5.0
[node name="Area2D" type="Area2D" groups=["collectibles"]]
script = ExtResource("1_h4xkt")
metadata/_edit_group_ = true
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
texture_filter = 1
sprite_frames = SubResource("SpriteFrames_dwt5l")
animation = &"idle"
autoplay = "idle"
frame_progress = 0.32788
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_4xboy")
debug_color = Color(0.614132, 0.536519, 0.0596093, 0.42)
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -1,19 +1,11 @@
[gd_scene load_steps=3 format=3 uid="uid://djkjmi7bo58uv"]
[ext_resource type="Texture2D" uid="uid://dwx4x0wq3vetw" path="res://assets/graphics/objects/crate.png" id="1_6lxxi"]
[gd_scene load_steps=2 format=3 uid="uid://djkjmi7bo58uv"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ilk50"]
size = Vector2(47, 44)
[node name="RigidBody2D" type="RigidBody2D" groups=["destructables"]]
[node name="RigidBody2D" type="RigidBody2D"]
metadata/_edit_group_ = true
[node name="Sprite2D" type="Sprite2D" parent="."]
texture_filter = 1
position = Vector2(0, 3)
scale = Vector2(0.1762, 0.152876)
texture = ExtResource("1_6lxxi")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_ilk50")
debug_color = Color(0.889053, 0.327177, 5.77569e-07, 0.42)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,296 +1,17 @@
[gd_scene load_steps=44 format=3 uid="uid://b2hyqfqh02ep6"]
[gd_scene load_steps=3 format=3 uid="uid://b2hyqfqh02ep6"]
[ext_resource type="Script" path="res://scripts/charController.gd" id="1_4o8do"]
[ext_resource type="Texture2D" uid="uid://c1l8de3i0kljl" path="res://assets/graphics/player/death/Player Death 64x64.png" id="2_alp3v"]
[ext_resource type="Texture2D" uid="uid://bfhqvl875is6f" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="2_yfuca"]
[ext_resource type="Texture2D" uid="uid://d0osk3f111068" path="res://assets/graphics/player/hurt/Player Hurt 48x48.png" id="3_5pi5t"]
[ext_resource type="Texture2D" uid="uid://c2s48joyna11q" path="res://assets/graphics/player/jump/player jump 48x48.png" id="3_p8gbr"]
[ext_resource type="Texture2D" uid="uid://bvat1vqwtua2p" path="res://assets/graphics/player/run/player run 48x48.png" id="3_y36hw"]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qr8pt"]
radius = 9.93
height = 35.0
[sub_resource type="CircleShape2D" id="CircleShape2D_uvblg"]
radius = 32.5576
[sub_resource type="AtlasTexture" id="AtlasTexture_iomdd"]
atlas = ExtResource("2_alp3v")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qlc64"]
atlas = ExtResource("2_alp3v")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_r8feb"]
atlas = ExtResource("2_alp3v")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_pchcp"]
atlas = ExtResource("2_alp3v")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_ekkmw"]
atlas = ExtResource("2_alp3v")
region = Rect2(192, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_aenr4"]
atlas = ExtResource("2_alp3v")
region = Rect2(240, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_c2bld"]
atlas = ExtResource("2_alp3v")
region = Rect2(288, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_556cp"]
atlas = ExtResource("2_alp3v")
region = Rect2(336, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_hf6j1"]
atlas = ExtResource("2_alp3v")
region = Rect2(384, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_pvct1"]
atlas = ExtResource("2_alp3v")
region = Rect2(432, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_0ae2b"]
atlas = ExtResource("3_5pi5t")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_0i34p"]
atlas = ExtResource("3_5pi5t")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_k17h1"]
atlas = ExtResource("3_5pi5t")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_1nyuv"]
atlas = ExtResource("3_5pi5t")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_cdvw1"]
atlas = ExtResource("2_yfuca")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_q1l1v"]
atlas = ExtResource("2_yfuca")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_6hv7e"]
atlas = ExtResource("2_yfuca")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_4h4qw"]
atlas = ExtResource("2_yfuca")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_638nb"]
atlas = ExtResource("2_yfuca")
region = Rect2(192, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_73fjy"]
atlas = ExtResource("2_yfuca")
region = Rect2(240, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_7r0nq"]
atlas = ExtResource("2_yfuca")
region = Rect2(288, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_5potv"]
atlas = ExtResource("2_yfuca")
region = Rect2(336, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_c5yi2"]
atlas = ExtResource("2_yfuca")
region = Rect2(384, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_flju4"]
atlas = ExtResource("2_yfuca")
region = Rect2(432, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ckr0"]
atlas = ExtResource("3_p8gbr")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_7vs6r"]
atlas = ExtResource("3_p8gbr")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_ktf26"]
atlas = ExtResource("3_p8gbr")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_csmmg"]
atlas = ExtResource("3_y36hw")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qwm4e"]
atlas = ExtResource("3_y36hw")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_mynlp"]
atlas = ExtResource("3_y36hw")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_q5scx"]
atlas = ExtResource("3_y36hw")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_j0rp2"]
atlas = ExtResource("3_y36hw")
region = Rect2(192, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_7fytd"]
atlas = ExtResource("3_y36hw")
region = Rect2(240, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_nw067"]
atlas = ExtResource("3_y36hw")
region = Rect2(288, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_1caon"]
atlas = ExtResource("3_y36hw")
region = Rect2(336, 0, 48, 48)
[sub_resource type="SpriteFrames" id="SpriteFrames_52pno"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_iomdd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qlc64")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_r8feb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pchcp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ekkmw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_aenr4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c2bld")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_556cp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hf6j1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pvct1")
}],
"loop": false,
"name": &"playerDeath",
"speed": 6.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0ae2b")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0i34p")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_k17h1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1nyuv")
}],
"loop": false,
"name": &"playerHurt",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_cdvw1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q1l1v")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6hv7e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4h4qw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_638nb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_73fjy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7r0nq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5potv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_c5yi2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_flju4")
}],
"loop": true,
"name": &"playerIdle",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_4ckr0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7vs6r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ktf26")
}],
"loop": false,
"name": &"playerJump",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_csmmg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qwm4e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mynlp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q5scx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j0rp2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7fytd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nw067")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1caon")
}],
"loop": true,
"name": &"playerRun",
"speed": 12.0
}]
[node name="CharacterBody2D" type="CharacterBody2D" groups=["player"]]
[node name="CharacterBody2D" type="CharacterBody2D"]
script = ExtResource("1_4o8do")
PUSH_FORCE = 100
metadata/_edit_group_ = true
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CapsuleShape2D_qr8pt")
shape = SubResource("CircleShape2D_uvblg")
debug_color = Color(0.872789, 0.000463018, 0.842707, 0.42)
[node name="RightRay" type="RayCast2D" parent="."]
@ -304,18 +25,3 @@ position = Vector2(35, -10)
[node name="MarkerLeft" type="Node2D" parent="."]
position = Vector2(-35, -10)
[node name="Camera2D" type="Camera2D" parent="."]
offset = Vector2(0, -30)
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
texture_filter = 1
position = Vector2(-1, -3)
scale = Vector2(1.29167, 1.29167)
sprite_frames = SubResource("SpriteFrames_52pno")
animation = &"playerDeath"
autoplay = "playerIdle"
frame = 9
frame_progress = 1.0
[connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animated_finished"]

View File

@ -1,75 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://dna0q0tmmxs0g"]
[ext_resource type="Script" path="res://scripts/ui.gd" id="1_1b5vo"]
[sub_resource type="LabelSettings" id="LabelSettings_bb10x"]
font_size = 12
font_color = Color(0.776471, 0.027451, 0.113725, 1)
outline_size = 1
outline_color = Color(0.0768358, 0.0768358, 0.0768358, 1)
shadow_size = 3
shadow_color = Color(0.121569, 0.121569, 0.121569, 0.670588)
[sub_resource type="LabelSettings" id="LabelSettings_rb7h3"]
font_size = 12
outline_size = 1
outline_color = Color(0.0768358, 0.0768358, 0.0768358, 1)
shadow_size = 3
shadow_color = Color(0.121569, 0.121569, 0.121569, 0.670588)
[sub_resource type="LabelSettings" id="LabelSettings_fsj7b"]
font_size = 12
font_color = Color(0.99068, 0.855439, 0.297628, 1)
outline_size = 1
outline_color = Color(0.0768358, 0.0768358, 0.0768358, 1)
shadow_size = 3
shadow_color = Color(0.121569, 0.121569, 0.121569, 0.670588)
[node name="Control" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_1b5vo")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 10
anchor_right = 1.0
offset_bottom = 23.0
grow_horizontal = 2
metadata/_edit_use_anchors_ = true
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
texture_filter = 1
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="health" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer"]
texture_filter = 1
layout_mode = 2
label_settings = SubResource("LabelSettings_bb10x")
[node name="MarginContainer3" type="MarginContainer" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="timer" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer3"]
layout_mode = 2
label_settings = SubResource("LabelSettings_rb7h3")
horizontal_alignment = 1
[node name="MarginContainer2" type="MarginContainer" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="coins" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer2"]
texture_filter = 1
layout_mode = 2
label_settings = SubResource("LabelSettings_fsj7b")
horizontal_alignment = 2

View File

@ -1,32 +0,0 @@
class_name BadGuy extends Area2D
@onready var sprite: AnimatedSprite2D = $AnimatedSprite2D
@onready var right_ray: RayCast2D = $RightRay
@onready var left_ray: RayCast2D = $LeftRay
@onready var right_floor_ray: RayCast2D = $RightFloorRay
@onready var left_floor_ray: RayCast2D = $LeftFloorRay
const speed := 60
var direction = 1
signal playerHurt
func _process(delta: float) -> void:
if not right_floor_ray.is_colliding():
#about to fall off the right
direction = -1
sprite.flip_h = not sprite.flip_h
if not left_floor_ray.is_colliding():
#about to fall off the left
sprite.flip_h = not sprite.flip_h
direction = 1
position.x += direction*speed*delta
func _on_body_entered(body: Node2D) -> void:
if body.is_in_group("player"):
print("player hurt")
playerHurt.emit()
# queue_free()

View File

@ -1,31 +1,14 @@
class_name Bullet extends Area2D
extends Area2D
@onready var bulletGraphic: Sprite2D = $Sprite2D
@export var speed := 700
signal hit(bullet, body)
var speed = 700
signal hit
func set_speed(speedval):
speed = speedval
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta):
pass
func _physics_process(delta: float) -> void:
func _physics_process(delta):
position += transform.x * speed * delta
func setSpeed(value):
speed = value
if speed < 0:
bulletGraphic.flip_h = true
else:
bulletGraphic.flip_h = false
func _on_body_entered(body: Node2D) -> void:
print("Bullet hit sumtin")
if not body.is_in_group("player"):
hit.emit(self, body)
func _on_body_entered(body):
print ("Hit a thing") # Replace with function body.

View File

@ -5,7 +5,7 @@ const SPEED = 500.0
const JUMP_VELOCITY = -600.0
@export var BUMP_FORCE = 90
@export var PUSH_FORCE = 700
@onready var animation: AnimatedSprite2D = $AnimatedSprite2D
var faceLeft = false
var pushLeftEnabled = false
@ -19,110 +19,79 @@ var bullet = preload("res://scenes/bullet.tscn")
@onready var marker_right = $MarkerRight
@onready var marker_left = $MarkerLeft
var isJumping = false
var living = true
var animPlaying = "playerIdle"
signal deathAnimDone
func hurtPlayer(_amt):
if living:
animPlaying = "playerHurt"
animation.play(animPlaying)
func killPlayer():
if living:
living = false
print("Oh no")
animPlaying = "playerDeath"
animation.play(animPlaying)
func _physics_process(delta: float) -> void:
if living and not animPlaying == "playerHurt":
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
else:
isJumping = false
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
isJumping = true
velocity.y = JUMP_VELOCITY
# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
if pushTarget:
if Input.is_action_just_pressed("Shove") && pushLeftEnabled && faceLeft:
print("shove left")
pushTarget.apply_central_impulse(Vector2(-1,0) * PUSH_FORCE * 10)
pushLeftEnabled = false
if pushTarget:
if Input.is_action_just_pressed("Shove") && pushLeftEnabled && faceLeft:
print("shove left")
pushTarget.apply_central_impulse(Vector2(-1,0) * PUSH_FORCE * 10)
if Input.is_action_just_pressed("Shove") && pushRightEnabled && not faceLeft:
print("shove right")
pushTarget.apply_central_impulse(Vector2(1,0) * PUSH_FORCE * 15)
pushRightEnabled = false
if Input.is_action_just_pressed("Shoot"):
var mybullet = bullet.instantiate()
print("I will shoot")
if faceLeft:
print("shoot left")
mybullet.set_speed(-700)
mybullet.transform = marker_right.global_transform
else:
print("shoot right")
mybullet.transform = marker_right.global_transform
owner.add_child(mybullet)
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction := Input.get_axis("ui_left", "ui_right")
if direction < 0:
faceLeft = true
if direction > 0:
faceLeft = false
if direction:
velocity.x = direction * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
for i in (get_slide_collision_count()):
var c = get_slide_collision(i)
if c.get_collider() is RigidBody2D:
c.get_collider().apply_central_impulse(-c.get_normal()*BUMP_FORCE)
pushTarget = false
if left_ray.is_colliding():
print("Left ray collision")
var collider = left_ray.get_collider()
if collider is Node:
if collider.is_in_group("pushables"):
pushLeftEnabled = true
pushTarget = collider
else:
pushLeftEnabled = false
if Input.is_action_just_pressed("Shove") && pushRightEnabled && not faceLeft:
print("shove right")
pushTarget.apply_central_impulse(Vector2(1,0) * PUSH_FORCE * 15)
if right_ray.is_colliding():
print("Right ray collision")
var collider = right_ray.get_collider()
if collider is Node:
if collider.is_in_group("pushables"):
pushRightEnabled = true
pushTarget = collider
else:
pushRightEnabled = false
if Input.is_action_just_pressed("Shoot"):
if faceLeft:
var _myBullet = %SceneManager.makeBullet(marker_left.global_transform, -700)
else:
var _myBullet = %SceneManager.makeBullet(marker_right.global_transform, 700)
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction := Input.get_axis("ui_left", "ui_right")
if direction:
if direction < 0:
faceLeft = true
if direction > 0:
faceLeft = false
animation.flip_h = faceLeft
if not isJumping:
animation.play("playerRun")
else:
animation.play("playerJump")
velocity.x = direction * SPEED
else:
if not isJumping:
animation.play("playerIdle")
else:
animation.play("playerJump")
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
for i in (get_slide_collision_count()):
var c = get_slide_collision(i)
if c.get_collider() is RigidBody2D:
c.get_collider().apply_central_impulse(-c.get_normal()*BUMP_FORCE)
pushTarget = false
if left_ray.is_colliding():
var collider = left_ray.get_collider()
if collider is Node:
if collider.is_in_group("pushables"):
pushLeftEnabled = true
pushTarget = collider
else:
pushLeftEnabled = false
if right_ray.is_colliding():
var collider = right_ray.get_collider()
if collider is Node:
if collider.is_in_group("pushables"):
pushRightEnabled = true
pushTarget = collider
else:
pushRightEnabled = false
func _on_animated_finished() -> void:
if animPlaying == "playerHurt":
animPlaying = "playerIdle"
if animPlaying == "playerDeath":
# emit death signal
deathAnimDone.emit()

View File

@ -1,9 +0,0 @@
class_name Coin extends Area2D
signal coinCollected
func _on_body_entered(body: Node2D) -> void:
if body.is_in_group("player"):
coinCollected.emit()
queue_free()

View File

@ -1,109 +1,38 @@
extends Node2D
var boxTotal = 3
var timer:= Timer.new()
var secondCount= 99
var totalCrates := 0
var totalCoins := 0
var totalBadGuys := 0
var totalCoinsCollected := 0
var cratesDestroyed := 0
var player:Resource
# level info
var levels = ["res://scenes/game.tscn", "res://scenes/level2.tscn"]
var timers = [90, 90]
var currentLevel = 0
#Gamecontroller signals
signal destroyBox(body)
signal levelComplete(leveltoLoad)
signal playerHurt(amt, max)
signal playerDeath()
signal tick(timeRemaining)
signal coinsUpdate(collected, remaining)
@export var secondCount= 15
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
player = load("res://scripts/res/playerstats.tres")
print("Player Health: "+str(player.health))
print("Number of levels: "+str(levels.size()))
add_child(timer)
timer.wait_time = 1
timer.one_shot = false
timer.connect("timeout", secondCounter)
timer.start()
func reset():
secondCount = timers[currentLevel]
player.health = player.starting_health
playerHurt.emit.call_deferred(player.health, player.max_health)
tick.emit.call_deferred(secondCount)
totalCoinsCollected = 0
coinsUpdate.emit.call_deferred(totalCoinsCollected, totalCoins)
func secondCounter():
print("time left: ", secondCount)
secondCount -=1
tick.emit(secondCount)
if secondCount <= 0:
print("TIME IS UP")
levelComplete.emit(levels[currentLevel])
print("A loser is you")
get_tree().reload_current_scene()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func playerDamaged():
print("GC knows player took damage")
player.health = max(player.health-20, 0)
print("Player Health: "+str(player.health))
playerHurt.emit(player.health, player.max_health)
if player.health <= 0:
playerDeath.emit()
func coinCollected():
totalCoinsCollected += 1
print("DING! Coins collected: "+ str(totalCoinsCollected) )
coinsUpdate.emit(totalCoinsCollected, totalCoins)
func bulletHit(body):
print("Game controller knows bullet hit something")
if body.is_in_group("destructables"):
destroyBox.emit(body)
totalCrates -= 1
cratesDestroyed += 1
if totalCrates <=0:
print("You Won...")
currentLevel +=1
if currentLevel >= levels.size():
currentLevel = 0
levelComplete.emit(levels[currentLevel])
else:
print("Crates Remaining: "+str(totalCrates) )
# Coming from scenemanager
func countCrates(value):
totalCrates = value
func countCoins(value):
totalCoins = value
func countBadGuys(value):
totalBadGuys = value
func playerDead():
print("GC knows player is dead")
levelComplete.emit(levels[currentLevel])
func _on_trigger(effect: Variant, body) -> void:
print("they were triggered!")
if body is RigidBody2D:
print("crate spotted")
boxTotal -= 1
body.queue_free()
if boxTotal <=0:
print("A winner is you")
get_tree().reload_current_scene()

View File

@ -1,5 +0,0 @@
class_name CharacterStats extends Resource
@export var max_health:int = 100
@export var starting_health:int = 100
@export var health:int = 100

View File

@ -1,9 +0,0 @@
[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://hdyv13v8yr88"]
[ext_resource type="Script" path="res://scripts/res/characterStats.gd" id="1_d4qjr"]
[resource]
script = ExtResource("1_d4qjr")
max_health = 150
starting_health = 100
health = 100

View File

@ -1,9 +0,0 @@
[gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://3vw8xffecvtj"]
[ext_resource type="Script" path="res://scripts/res/characterStats.gd" id="1_74dik"]
[resource]
script = ExtResource("1_74dik")
max_health = 60
starting_health = 50
health = 50

View File

@ -1,92 +0,0 @@
extends Node
# @onready var game: Node2D = $".."
@onready var crates: Node2D = $"../crates"
@onready var coins: Node2D = $"../coins"
@onready var enemies: Node2D = $"../enemies"
@onready var player: CharacterBody2D = $"../CharacterBody2D"
@onready var ui: Control = $"../CanvasLayer/ui"
var theBullet = preload("res://scenes/bullet.tscn")
var bulletArray:Array = []
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
var totalCrates = 0
GameController.reset()
GameController.destroyBox.connect(boxDestroy)
for obj in crates.get_children():
if obj.is_in_group("destructables"):
totalCrates += 1
GameController.countCrates(totalCrates)
var totalCoins = 0
for obj in coins.get_children():
if obj.is_in_group("collectibles"):
totalCoins += 1
obj.coinCollected.connect(GameController.coinCollected)
GameController.countCoins(totalCoins)
var totalEnemies = 0
for obj in enemies.get_children():
if obj.is_in_group("enemies"):
totalEnemies += 1
obj.playerHurt.connect(GameController.playerDamaged)
GameController.countBadGuys(totalEnemies)
GameController.countCrates(totalCrates)
# Player interactions
GameController.playerHurt.connect(player.hurtPlayer)
GameController.playerDeath.connect(player.killPlayer)
# Subscribe to signals
GameController.levelComplete.connect(changeLevel)
player.deathAnimDone.connect(GameController.playerDead)
GameController.tick.connect(ui.timerUpdate)
GameController.playerHurt.connect(ui.healthUpdate, ConnectFlags.CONNECT_DEFERRED)
GameController.coinsUpdate.connect(ui.coinsUpdate)
GameController.reset()
func changeLevel(level):
print("New level")
get_tree().change_scene_to_file(level)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
pass
func bulletFactory():
print("Factory will make a bullet")
var myBullet
if bulletArray.size() < 4:
myBullet = theBullet.instantiate()
myBullet.connect("hit", onBulletHit)
owner.add_child(myBullet)
else:
myBullet = bulletArray.pop_back()
bulletArray.push_front(myBullet)
print("there are ", bulletArray.size(), " bullets")
return myBullet
func makeBullet(position, speed):
var myBullet = bulletFactory()
myBullet.transform = position
myBullet.setSpeed(speed)
return
func onBulletHit(bullet, body):
bullet.position = Vector2(-100, -100)
bullet.setSpeed(0)
print("Scene manager knows bullet hit")
GameController.bulletHit(body)
func boxDestroy(body):
print("sceneMgr knows body destroyed")
body.queue_free()

View File

@ -9,7 +9,7 @@ func _ready() -> void:
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
func _process(delta: float) -> void:
pass

View File

@ -1,31 +0,0 @@
extends Control
@onready var timer: Label = $VBoxContainer/HBoxContainer/MarginContainer3/timer
@onready var health: Label = $VBoxContainer/HBoxContainer/MarginContainer/health
@onready var coins: Label = $VBoxContainer/HBoxContainer/MarginContainer2/coins
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func timerUpdate(timeRemaining):
if timeRemaining <= 0:
timer.text = "OUT OF TIME"
else:
timer.text = "🕔: "+str(timeRemaining)
func healthUpdate(healthRemaining, healthMax):
if healthRemaining <= 0:
health.text = " 💀 💀 💀 💀 "
else:
health.text = (" ❤️: "+str(healthRemaining)+"/"+str(healthMax))
func coinsUpdate(collected, remaining):
coins.text = ("🪙: "+str(collected)+"/"+str(remaining)+" ")