diff --git a/februarygodotgame/assets/audio/footsteps/Grass Running.wav b/februarygodotgame/assets/audio/footsteps/Grass Running.wav new file mode 100644 index 0000000..75e7657 Binary files /dev/null and b/februarygodotgame/assets/audio/footsteps/Grass Running.wav differ diff --git a/februarygodotgame/assets/audio/footsteps/Grass Running.wav.import b/februarygodotgame/assets/audio/footsteps/Grass Running.wav.import new file mode 100644 index 0000000..77db861 --- /dev/null +++ b/februarygodotgame/assets/audio/footsteps/Grass Running.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bxmwghxwdpegt" +path="res://.godot/imported/Grass Running.wav-fb3ec0c3442cd6d3926e29bba7ac3b4b.sample" + +[deps] + +source_file="res://assets/audio/footsteps/Grass Running.wav" +dest_files=["res://.godot/imported/Grass Running.wav-fb3ec0c3442cd6d3926e29bba7ac3b4b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/februarygodotgame/assets/audio/music/CrashingOut.ogg b/februarygodotgame/assets/audio/music/CrashingOut.ogg new file mode 100644 index 0000000..17f3594 Binary files /dev/null and b/februarygodotgame/assets/audio/music/CrashingOut.ogg differ diff --git a/februarygodotgame/assets/audio/music/CrashingOut.ogg.import b/februarygodotgame/assets/audio/music/CrashingOut.ogg.import new file mode 100644 index 0000000..a5950e0 --- /dev/null +++ b/februarygodotgame/assets/audio/music/CrashingOut.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://y4ivd6jojrx2" +path="res://.godot/imported/CrashingOut.ogg-ea1c5f192db5fa2b4890401779713691.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/music/CrashingOut.ogg" +dest_files=["res://.godot/imported/CrashingOut.ogg-ea1c5f192db5fa2b4890401779713691.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/februarygodotgame/assets/audio/music/DragAndDreadTheme.ogg b/februarygodotgame/assets/audio/music/DragAndDreadTheme.ogg new file mode 100644 index 0000000..8159f9b Binary files /dev/null and b/februarygodotgame/assets/audio/music/DragAndDreadTheme.ogg differ diff --git a/februarygodotgame/assets/audio/music/DragAndDreadTheme.ogg.import b/februarygodotgame/assets/audio/music/DragAndDreadTheme.ogg.import new file mode 100644 index 0000000..e6103ba --- /dev/null +++ b/februarygodotgame/assets/audio/music/DragAndDreadTheme.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dfidsrbun4b67" +path="res://.godot/imported/DragAndDreadTheme.ogg-b4abcf0b19a6cf56ec6f9cd4cdf57020.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/music/DragAndDreadTheme.ogg" +dest_files=["res://.godot/imported/DragAndDreadTheme.ogg-b4abcf0b19a6cf56ec6f9cd4cdf57020.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/februarygodotgame/assets/fonts/PixelOperator8-Bold.ttf b/februarygodotgame/assets/fonts/PixelOperator8-Bold.ttf new file mode 100644 index 0000000..10225eb Binary files /dev/null and b/februarygodotgame/assets/fonts/PixelOperator8-Bold.ttf differ diff --git a/februarygodotgame/assets/fonts/PixelOperator8-Bold.ttf.import b/februarygodotgame/assets/fonts/PixelOperator8-Bold.ttf.import new file mode 100644 index 0000000..dffcd37 --- /dev/null +++ b/februarygodotgame/assets/fonts/PixelOperator8-Bold.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://bvcw7a0wijdb" +path="res://.godot/imported/PixelOperator8-Bold.ttf-74faf550739674ad3170f08e646e0614.fontdata" + +[deps] + +source_file="res://assets/fonts/PixelOperator8-Bold.ttf" +dest_files=["res://.godot/imported/PixelOperator8-Bold.ttf-74faf550739674ad3170f08e646e0614.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/februarygodotgame/assets/fonts/PixelOperator8.ttf b/februarygodotgame/assets/fonts/PixelOperator8.ttf new file mode 100644 index 0000000..f9146ac Binary files /dev/null and b/februarygodotgame/assets/fonts/PixelOperator8.ttf differ diff --git a/februarygodotgame/assets/fonts/PixelOperator8.ttf.import b/februarygodotgame/assets/fonts/PixelOperator8.ttf.import new file mode 100644 index 0000000..b8f73dd --- /dev/null +++ b/februarygodotgame/assets/fonts/PixelOperator8.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dyhcvk7xwyipu" +path="res://.godot/imported/PixelOperator8.ttf-6f9f01766aff16f52046b880ffb8d367.fontdata" + +[deps] + +source_file="res://assets/fonts/PixelOperator8.ttf" +dest_files=["res://.godot/imported/PixelOperator8.ttf-6f9f01766aff16f52046b880ffb8d367.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/februarygodotgame/assets/graphics/player/death/Player Death 64x64 (2).png b/februarygodotgame/assets/graphics/player/death/Player Death 64x64 (2).png new file mode 100644 index 0000000..2e6a1ae Binary files /dev/null and b/februarygodotgame/assets/graphics/player/death/Player Death 64x64 (2).png differ diff --git a/februarygodotgame/assets/graphics/player/death/Player Death 64x64 (2).png.import b/februarygodotgame/assets/graphics/player/death/Player Death 64x64 (2).png.import new file mode 100644 index 0000000..2078b74 --- /dev/null +++ b/februarygodotgame/assets/graphics/player/death/Player Death 64x64 (2).png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4lmbns6bx0e1" +path="res://.godot/imported/Player Death 64x64 (2).png-e5470b4cc5e765a5e135f01f46599660.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/graphics/player/death/Player Death 64x64 (2).png" +dest_files=["res://.godot/imported/Player Death 64x64 (2).png-e5470b4cc5e765a5e135f01f46599660.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 diff --git a/februarygodotgame/project.godot b/februarygodotgame/project.godot index 2d83921..b7231a8 100644 --- a/februarygodotgame/project.godot +++ b/februarygodotgame/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="FebruaryGodotGame" run/main_scene="res://scenes/game.tscn" -config/features=PackedStringArray("4.3", "Forward Plus") +config/features=PackedStringArray("4.4", "Forward Plus") config/icon="res://icon.svg" [autoload] diff --git a/februarygodotgame/scenes/bullet.tscn b/februarygodotgame/scenes/bullet.tscn index fa29570..1232f31 100644 --- a/februarygodotgame/scenes/bullet.tscn +++ b/februarygodotgame/scenes/bullet.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://b1jq6yi0dh3c0"] -[ext_resource type="Script" path="res://scripts/bullet.gd" id="1_okq17"] +[ext_resource type="Script" uid="uid://nrybuacdknfd" path="res://scripts/bullet.gd" id="1_okq17"] [ext_resource type="Texture2D" uid="uid://bq0yaqauut372" path="res://assets/graphics/projectiles/pixel_bullet.png" id="2_ig66t"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_va0yp"] @@ -18,4 +18,5 @@ position = Vector2(-3, 2) scale = Vector2(-0.0800002, 0.0769233) texture = ExtResource("2_ig66t") +[connection signal="area_entered" from="." to="." method="_on_area_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/februarygodotgame/scenes/coin.tscn b/februarygodotgame/scenes/coin.tscn index 4273054..7c3f6ae 100644 --- a/februarygodotgame/scenes/coin.tscn +++ b/februarygodotgame/scenes/coin.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=17 format=3 uid="uid://meryvmptc54n"] [ext_resource type="Texture2D" uid="uid://b8vlyhcglefuj" path="res://assets/graphics/pickups/coin.png" id="1_abrt3"] -[ext_resource type="Script" path="res://scripts/coin.gd" id="1_ls8t6"] +[ext_resource type="Script" uid="uid://bh7ipor360jvl" path="res://scripts/coin.gd" id="1_ls8t6"] [sub_resource type="AtlasTexture" id="AtlasTexture_b03k4"] atlas = ExtResource("1_abrt3") diff --git a/februarygodotgame/scenes/game.tscn b/februarygodotgame/scenes/game.tscn index 37356d6..576893d 100644 --- a/februarygodotgame/scenes/game.tscn +++ b/februarygodotgame/scenes/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=4 uid="uid://bt6uaac8wfn8k"] +[gd_scene load_steps=27 format=4 uid="uid://bt6uaac8wfn8k"] [ext_resource type="Texture2D" uid="uid://b864327g3sfgt" path="res://assets/graphics/backgrounds/block.png" id="2_05t6n"] [ext_resource type="Texture2D" uid="uid://dceuefsnvb441" path="res://assets/graphics/terrains/Terrain (32x32) (1).png" id="2_k4vve"] @@ -6,14 +6,17 @@ [ext_resource type="PackedScene" uid="uid://cjvyslsoa7olc" path="res://scenes/player.tscn" id="3_771dm"] [ext_resource type="Texture2D" uid="uid://y3nls3jdessv" path="res://assets/graphics/backgrounds/forestbackground (2).png" id="3_b081f"] [ext_resource type="PackedScene" uid="uid://celwbq1syhdoa" path="res://scenes/crate.tscn" id="3_ek1d4"] -[ext_resource type="Script" path="res://scripts/crate.gd" id="4_5sp5n"] +[ext_resource type="Script" uid="uid://byf3jbnel85px" path="res://scripts/crate.gd" id="4_5sp5n"] [ext_resource type="Texture2D" uid="uid://cqsyqmn3x0krf" path="res://assets/graphics/backgrounds/shrubs.png" id="4_sqixw"] [ext_resource type="Texture2D" uid="uid://crulrkd4r5bln" path="res://assets/graphics/terrains/veg_32x32.png" id="4_ywc01"] [ext_resource type="Texture2D" uid="uid://bkmaqkvirjxs3" path="res://assets/graphics/backgrounds/rocks.png" id="5_4ta71"] [ext_resource type="Texture2D" uid="uid://bu6vmqioadmrh" path="res://assets/graphics/terrains/mushroom.png" id="5_7ribr"] -[ext_resource type="Script" path="res://scripts/scene_manager.gd" id="5_xhw0f"] +[ext_resource type="Script" uid="uid://dcxab0c313bxk" path="res://scripts/scene_manager.gd" id="5_xhw0f"] +[ext_resource type="AudioStream" uid="uid://y4ivd6jojrx2" path="res://assets/audio/music/CrashingOut.ogg" id="12_tencs"] +[ext_resource type="AudioStream" uid="uid://dfidsrbun4b67" path="res://assets/audio/music/DragAndDreadTheme.ogg" id="13_bb4js"] [ext_resource type="PackedScene" uid="uid://meryvmptc54n" path="res://scenes/coin.tscn" id="13_vf7vr"] [ext_resource type="PackedScene" uid="uid://c3blwnpwdol0a" path="res://scenes/slime.tscn" id="14_nv7k0"] +[ext_resource type="PackedScene" uid="uid://bv622vne87h0h" path="res://scenes/ui.tscn" id="15_2y4bi"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ud57a"] texture = ExtResource("2_k4vve") @@ -391,6 +394,11 @@ sources/3 = SubResource("TileSetAtlasSource_hir5y") [sub_resource type="RectangleShape2D" id="RectangleShape2D_ggdp1"] size = Vector2(72, 20) +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_3a348"] +streams_count = 2 +stream_0/stream = ExtResource("12_tencs") +stream_1/stream = ExtResource("13_bb4js") + [sub_resource type="CircleShape2D" id="CircleShape2D_opmvx"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_1ymsv"] @@ -481,10 +489,14 @@ position = Vector2(586, 347) unique_name_in_owner = true script = ExtResource("5_xhw0f") +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="SceneManager"] +stream = SubResource("AudioStreamRandomizer_3a348") +autoplay = true + [node name="triggers" type="Node2D" parent="."] [node name="Trigger" parent="triggers" instance=ExtResource("2_psv8k")] -position = Vector2(697, 465) +position = Vector2(632, 372) effect = "destroy" [node name="CollisionShape2D" type="CollisionShape2D" parent="triggers/Trigger"] @@ -515,3 +527,10 @@ position = Vector2(814, 411) [node name="Area2D" parent="badguys" instance=ExtResource("14_nv7k0")] position = Vector2(562, 469) + +[node name="Area2D2" parent="badguys" instance=ExtResource("14_nv7k0")] +position = Vector2(498, 405) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="ui" parent="CanvasLayer" instance=ExtResource("15_2y4bi")] diff --git a/februarygodotgame/scenes/level2.tscn b/februarygodotgame/scenes/level2.tscn index cf9762b..7e4fb93 100644 --- a/februarygodotgame/scenes/level2.tscn +++ b/februarygodotgame/scenes/level2.tscn @@ -1,21 +1,23 @@ -[gd_scene load_steps=22 format=4 uid="uid://bxnqbn4qfkh1y"] +[gd_scene load_steps=24 format=4 uid="uid://3ljjb5fedpwn"] -[ext_resource type="Script" path="res://scripts/gamecontroller.gd" id="1_hkovx"] -[ext_resource type="Texture2D" uid="uid://b864327g3sfgt" path="res://assets/graphics/backgrounds/block.png" id="2_6yvgp"] -[ext_resource type="Texture2D" uid="uid://y3nls3jdessv" path="res://assets/graphics/backgrounds/forestbackground (2).png" id="3_ta1h5"] -[ext_resource type="Texture2D" uid="uid://cqsyqmn3x0krf" path="res://assets/graphics/backgrounds/shrubs.png" id="4_jq3sv"] -[ext_resource type="Texture2D" uid="uid://bkmaqkvirjxs3" path="res://assets/graphics/backgrounds/rocks.png" id="5_vocq4"] -[ext_resource type="Texture2D" uid="uid://dceuefsnvb441" path="res://assets/graphics/terrains/Terrain (32x32) (1).png" id="6_yx2wt"] -[ext_resource type="Texture2D" uid="uid://crulrkd4r5bln" path="res://assets/graphics/terrains/veg_32x32.png" id="7_in53u"] -[ext_resource type="Texture2D" uid="uid://bu6vmqioadmrh" path="res://assets/graphics/terrains/mushroom.png" id="8_px8n8"] -[ext_resource type="PackedScene" uid="uid://celwbq1syhdoa" path="res://scenes/crate.tscn" id="9_c3hao"] -[ext_resource type="Script" path="res://scripts/crate.gd" id="10_b1chu"] -[ext_resource type="PackedScene" uid="uid://cjvyslsoa7olc" path="res://scenes/player.tscn" id="11_vaibk"] -[ext_resource type="Script" path="res://scripts/scene_manager.gd" id="12_dk1wg"] -[ext_resource type="PackedScene" uid="uid://bibqnht5dooss" path="res://scenes/trigger.tscn" id="13_kdnhf"] +[ext_resource type="Texture2D" uid="uid://b864327g3sfgt" path="res://assets/graphics/backgrounds/block.png" id="1_bdipr"] +[ext_resource type="Texture2D" uid="uid://y3nls3jdessv" path="res://assets/graphics/backgrounds/forestbackground (2).png" id="2_adtlj"] +[ext_resource type="Texture2D" uid="uid://cqsyqmn3x0krf" path="res://assets/graphics/backgrounds/shrubs.png" id="3_ichdk"] +[ext_resource type="Texture2D" uid="uid://bkmaqkvirjxs3" path="res://assets/graphics/backgrounds/rocks.png" id="4_5617y"] +[ext_resource type="Texture2D" uid="uid://dceuefsnvb441" path="res://assets/graphics/terrains/Terrain (32x32) (1).png" id="5_4jks0"] +[ext_resource type="Texture2D" uid="uid://crulrkd4r5bln" path="res://assets/graphics/terrains/veg_32x32.png" id="6_g06l8"] +[ext_resource type="Texture2D" uid="uid://bu6vmqioadmrh" path="res://assets/graphics/terrains/mushroom.png" id="7_iwifl"] +[ext_resource type="PackedScene" uid="uid://celwbq1syhdoa" path="res://scenes/crate.tscn" id="8_myql4"] +[ext_resource type="Script" uid="uid://byf3jbnel85px" path="res://scripts/crate.gd" id="9_l5pic"] +[ext_resource type="PackedScene" uid="uid://cjvyslsoa7olc" path="res://scenes/player.tscn" id="10_5xft3"] +[ext_resource type="Script" uid="uid://dcxab0c313bxk" path="res://scripts/scene_manager.gd" id="11_fw3pc"] +[ext_resource type="PackedScene" uid="uid://bibqnht5dooss" path="res://scenes/trigger.tscn" id="12_ve30e"] +[ext_resource type="PackedScene" uid="uid://meryvmptc54n" path="res://scenes/coin.tscn" id="13_4tfwl"] +[ext_resource type="PackedScene" uid="uid://c3blwnpwdol0a" path="res://scenes/slime.tscn" id="14_nm2am"] +[ext_resource type="PackedScene" uid="uid://bv622vne87h0h" path="res://scenes/ui.tscn" id="15_0c22k"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ud57a"] -texture = ExtResource("6_yx2wt") +texture = ExtResource("5_4jks0") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 @@ -354,14 +356,14 @@ texture_region_size = Vector2i(32, 32) 16:4/0/terrains_peering_bit/top_side = 0 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7tjg7"] -texture = ExtResource("7_in53u") +texture = ExtResource("6_g06l8") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 0:0/0/terrain = 1 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hir5y"] -texture = ExtResource("8_px8n8") +texture = ExtResource("7_iwifl") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 @@ -396,7 +398,6 @@ size = Vector2(72, 20) size = Vector2(20, 40) [node name="Game" type="Node2D"] -script = ExtResource("1_hkovx") [node name="sky" type="Parallax2D" parent="."] repeat_size = Vector2(320, 180) @@ -404,7 +405,7 @@ metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="sky"] position = Vector2(160, 90) -texture = ExtResource("2_6yvgp") +texture = ExtResource("1_bdipr") [node name="farbg" type="Parallax2D" parent="."] scroll_scale = Vector2(0.5, 1) @@ -413,7 +414,7 @@ metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="farbg"] position = Vector2(160, 410) -texture = ExtResource("3_ta1h5") +texture = ExtResource("2_adtlj") [node name="midground" type="Parallax2D" parent="."] repeat_size = Vector2(320, 0) @@ -421,7 +422,7 @@ metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="midground"] position = Vector2(160, 420) -texture = ExtResource("4_jq3sv") +texture = ExtResource("3_ichdk") [node name="foreground" type="Parallax2D" parent="."] scroll_scale = Vector2(1.5, 1) @@ -429,11 +430,11 @@ repeat_size = Vector2(320, 0) [node name="Sprite2D" type="Sprite2D" parent="foreground"] position = Vector2(160, 420) -texture = ExtResource("5_vocq4") +texture = ExtResource("4_5617y") [node name="TileMapLayer" type="TileMapLayer" parent="."] texture_filter = 1 -tile_map_data = PackedByteArray("AAAHAA8AAQAAAAQAAAAIAA8AAQABAAQAAAAJAA8AAQABAAQAAAAKAA8AAQABAAQAAAALAA8AAQABAAQAAAAMAA8AAQABAAQAAAANAA8AAQABAAQAAAAOAA8AAQABAAQAAAAPAA8AAQABAAQAAAAQAA8AAQABAAQAAAARAA8AAQABAAQAAAASAA8AAQABAAQAAAATAA8AAQABAAQAAAAUAA8AAQABAAQAAAAVAA8AAQABAAQAAAAWAA8AAQABAAQAAAAXAA8AAQABAAQAAAAYAA8AAQABAAQAAAAZAA8AAQABAAQAAAAaAA8AAQABAAQAAAAbAA8AAQABAAQAAAAcAA8AAQABAAQAAAAdAA8AAQABAAQAAAAeAA8AAQACAAQAAAASAAwAAQAEAAQAAAAVAA0AAQAAAAQAAAAWAA0AAQACAAQAAAAYAA0AAQAAAAQAAAAZAA0AAQABAAQAAAAaAA0AAQACAAQAAAAWAAsAAQAAAAQAAAAXAAsAAQAQAAQAAAAXAAoAAQAPAAMAAAAYAAoAAQAQAAQAAAAYAAkAAQAEAAAAAAASAAsAAgAAAAAAAAAYAAwAAgAAAAAAAAAZAAwAAgAAAAAAAAAaAAwAAgAAAAAAAAALAAwAAgAAAAAAAAAKAA0AAQACAAQAAAAJAA0AAQAAAAQAAAAIAAwAAQACAAQAAAAHAAwAAQAJAAQAAAAHAAsAAQACAAEAAAAHAAoAAQAHAAQAAAAHAAkAAQAEAAAAAAAGAAwAAQAPAAQAAAAGAAsAAQAAAAEAAAAGAAoAAQAAAAAAAAAMAAkAAQAAAAQAAAANAAkAAQABAAQAAAAOAAkAAQACAAQAAAAIAAsAAgAAAAAAAAAaAA4AAgAAAAAAAAARAAoAAQAAAAIAAAASAAoAAQACAAIAAAASAAkAAQAPAAEAAAARAAkAAQAAAAAAAAATAAkAAQACAAIAAAATAAgAAQACAAAAAAASAAgAAQAAAAAAAAATAAUAAQACAAQAAAASAAUAAQABAAQAAAARAAUAAQAAAAQAAAANAA4AAgAAAAAAAAAOAA4AAwAAAAEAAAAOAA0AAwAAAAAAAAATAAcAAwAAAAEAAAATAAYAAwAAAAAAAAASAAcAAgAAAAAAAAA=") +tile_map_data = PackedByteArray("AAAHAA8AAQAAAAQAAAAIAA8AAQABAAQAAAAJAA8AAQABAAQAAAAKAA8AAQABAAQAAAALAA8AAQABAAQAAAAMAA8AAQABAAQAAAANAA8AAQABAAQAAAAOAA8AAQABAAQAAAAPAA8AAQABAAQAAAAQAA8AAQABAAQAAAARAA8AAQABAAQAAAASAA8AAQABAAQAAAATAA8AAQABAAQAAAAUAA8AAQABAAQAAAAVAA8AAQABAAQAAAAWAA8AAQABAAQAAAAXAA8AAQABAAQAAAAYAA8AAQABAAQAAAAZAA8AAQABAAQAAAAaAA8AAQABAAQAAAAbAA8AAQABAAQAAAAcAA8AAQABAAQAAAAdAA8AAQABAAQAAAAeAA8AAQACAAQAAAASAAwAAQAEAAQAAAAOAA0AAQAAAAQAAAAPAA0AAQABAAQAAAAQAA0AAQACAAQAAAAVAA0AAQAAAAQAAAAWAA0AAQACAAQAAAAYAA0AAQAAAAQAAAAZAA0AAQABAAQAAAAaAA0AAQACAAQAAAAWAAsAAQAAAAQAAAAXAAsAAQAQAAQAAAAXAAoAAQAPAAMAAAAYAAoAAQAQAAQAAAAYAAkAAQAEAAAAAAASAAsAAgAAAAAAAAAYAAwAAgAAAAAAAAAZAAwAAgAAAAAAAAAaAAwAAgAAAAAAAAAOAAwAAwAAAAEAAAAOAAsAAwAAAAAAAAAYAAgAAgAAAAAAAAAcAA4AAwAAAAEAAAAcAA0AAwAAAAAAAAA=") tile_set = SubResource("TileSet_dj74p") [node name="StaticBody2D" type="StaticBody2D" parent="."] @@ -455,38 +456,43 @@ shape = SubResource("RectangleShape2D_ggdp1") [node name="crates" type="Node2D" parent="."] -[node name="crate2" parent="crates" instance=ExtResource("9_c3hao")] +[node name="crate1" parent="crates" instance=ExtResource("8_myql4")] +position = Vector2(481, 369) +script = ExtResource("9_l5pic") + +[node name="crate2" parent="crates" instance=ExtResource("8_myql4")] position = Vector2(534, 397) rotation = 0.380482 -script = ExtResource("10_b1chu") +script = ExtResource("9_l5pic") -[node name="crate4" parent="crates" instance=ExtResource("9_c3hao")] -position = Vector2(444, 233) +[node name="crate4" parent="crates" instance=ExtResource("8_myql4")] +position = Vector2(683, 338) rotation = 0.380482 -script = ExtResource("10_b1chu") +script = ExtResource("9_l5pic") -[node name="crate3" parent="crates" instance=ExtResource("9_c3hao")] +[node name="crate3" parent="crates" instance=ExtResource("8_myql4")] position = Vector2(693, 255) rotation = -0.760964 -script = ExtResource("10_b1chu") +script = ExtResource("9_l5pic") -[node name="CharacterBody2D" parent="." instance=ExtResource("11_vaibk")] -position = Vector2(274, 359) +[node name="CharacterBody2D" parent="." instance=ExtResource("10_5xft3")] +position = Vector2(586, 347) [node name="SceneManager" type="Node" parent="."] unique_name_in_owner = true -script = ExtResource("12_dk1wg") +script = ExtResource("11_fw3pc") [node name="triggers" type="Node2D" parent="."] -[node name="Trigger" parent="triggers" instance=ExtResource("13_kdnhf")] +[node name="Trigger" parent="triggers" instance=ExtResource("12_ve30e")] +position = Vector2(697, 465) effect = "destroy" [node name="CollisionShape2D" type="CollisionShape2D" parent="triggers/Trigger"] shape = SubResource("CircleShape2D_opmvx") debug_color = Color(0.731092, 0.294274, 0.91724, 0.42) -[node name="powerup" parent="triggers" instance=ExtResource("13_kdnhf")] +[node name="powerup" parent="triggers" instance=ExtResource("12_ve30e")] position = Vector2(791, 407) effect = "powerup" @@ -494,3 +500,23 @@ effect = "powerup" position = Vector2(0, -10) shape = SubResource("RectangleShape2D_1ymsv") debug_color = Color(0.156093, 0.622347, 0.484765, 0.42) + +[node name="coins" type="Node2D" parent="."] + +[node name="Area2D" parent="coins" instance=ExtResource("13_4tfwl")] +position = Vector2(616, 455) + +[node name="Area2D2" parent="coins" instance=ExtResource("13_4tfwl")] +position = Vector2(685, 411) + +[node name="Area2D3" parent="coins" instance=ExtResource("13_4tfwl")] +position = Vector2(814, 411) + +[node name="badguys" type="Node2D" parent="."] + +[node name="Area2D" parent="badguys" instance=ExtResource("14_nm2am")] +position = Vector2(562, 469) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="ui" parent="CanvasLayer" instance=ExtResource("15_0c22k")] diff --git a/februarygodotgame/scenes/level3.tscn b/februarygodotgame/scenes/level3.tscn index 12da5d4..b149eac 100644 --- a/februarygodotgame/scenes/level3.tscn +++ b/februarygodotgame/scenes/level3.tscn @@ -1,20 +1,23 @@ -[gd_scene load_steps=21 format=4 uid="uid://cce26eq3etcdg"] +[gd_scene load_steps=24 format=4 uid="uid://csinr866d53j5"] -[ext_resource type="Texture2D" uid="uid://b864327g3sfgt" path="res://assets/graphics/backgrounds/block.png" id="1_i0nwn"] -[ext_resource type="Texture2D" uid="uid://y3nls3jdessv" path="res://assets/graphics/backgrounds/forestbackground (2).png" id="2_6ftlp"] -[ext_resource type="Texture2D" uid="uid://cqsyqmn3x0krf" path="res://assets/graphics/backgrounds/shrubs.png" id="3_34sir"] -[ext_resource type="Texture2D" uid="uid://bkmaqkvirjxs3" path="res://assets/graphics/backgrounds/rocks.png" id="4_o62em"] -[ext_resource type="Texture2D" uid="uid://dceuefsnvb441" path="res://assets/graphics/terrains/Terrain (32x32) (1).png" id="5_aabh3"] -[ext_resource type="Texture2D" uid="uid://crulrkd4r5bln" path="res://assets/graphics/terrains/veg_32x32.png" id="6_06xm0"] -[ext_resource type="Texture2D" uid="uid://bu6vmqioadmrh" path="res://assets/graphics/terrains/mushroom.png" id="7_61gcb"] -[ext_resource type="PackedScene" uid="uid://celwbq1syhdoa" path="res://scenes/crate.tscn" id="8_4axuh"] -[ext_resource type="Script" path="res://scripts/crate.gd" id="9_jwr41"] -[ext_resource type="PackedScene" uid="uid://cjvyslsoa7olc" path="res://scenes/player.tscn" id="10_poa8t"] -[ext_resource type="Script" path="res://scripts/scene_manager.gd" id="11_lvxwe"] -[ext_resource type="PackedScene" uid="uid://bibqnht5dooss" path="res://scenes/trigger.tscn" id="12_527fi"] +[ext_resource type="Texture2D" uid="uid://b864327g3sfgt" path="res://assets/graphics/backgrounds/block.png" id="1_guqk6"] +[ext_resource type="Texture2D" uid="uid://y3nls3jdessv" path="res://assets/graphics/backgrounds/forestbackground (2).png" id="2_kf82u"] +[ext_resource type="Texture2D" uid="uid://cqsyqmn3x0krf" path="res://assets/graphics/backgrounds/shrubs.png" id="3_sfwji"] +[ext_resource type="Texture2D" uid="uid://bkmaqkvirjxs3" path="res://assets/graphics/backgrounds/rocks.png" id="4_3vafi"] +[ext_resource type="Texture2D" uid="uid://dceuefsnvb441" path="res://assets/graphics/terrains/Terrain (32x32) (1).png" id="5_hojom"] +[ext_resource type="Texture2D" uid="uid://crulrkd4r5bln" path="res://assets/graphics/terrains/veg_32x32.png" id="6_7nnrj"] +[ext_resource type="Texture2D" uid="uid://bu6vmqioadmrh" path="res://assets/graphics/terrains/mushroom.png" id="7_nvu0v"] +[ext_resource type="PackedScene" uid="uid://celwbq1syhdoa" path="res://scenes/crate.tscn" id="8_omegn"] +[ext_resource type="Script" uid="uid://byf3jbnel85px" path="res://scripts/crate.gd" id="9_egdbr"] +[ext_resource type="PackedScene" uid="uid://cjvyslsoa7olc" path="res://scenes/player.tscn" id="10_o6q0w"] +[ext_resource type="Script" uid="uid://dcxab0c313bxk" path="res://scripts/scene_manager.gd" id="11_nqywm"] +[ext_resource type="PackedScene" uid="uid://bibqnht5dooss" path="res://scenes/trigger.tscn" id="12_lqaop"] +[ext_resource type="PackedScene" uid="uid://meryvmptc54n" path="res://scenes/coin.tscn" id="13_vgo8v"] +[ext_resource type="PackedScene" uid="uid://c3blwnpwdol0a" path="res://scenes/slime.tscn" id="14_rox0s"] +[ext_resource type="PackedScene" uid="uid://bv622vne87h0h" path="res://scenes/ui.tscn" id="15_8ylp1"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ud57a"] -texture = ExtResource("5_aabh3") +texture = ExtResource("5_hojom") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 @@ -353,14 +356,14 @@ texture_region_size = Vector2i(32, 32) 16:4/0/terrains_peering_bit/top_side = 0 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7tjg7"] -texture = ExtResource("6_06xm0") +texture = ExtResource("6_7nnrj") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 0:0/0/terrain = 1 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hir5y"] -texture = ExtResource("7_61gcb") +texture = ExtResource("7_nvu0v") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 @@ -402,7 +405,7 @@ metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="sky"] position = Vector2(160, 90) -texture = ExtResource("1_i0nwn") +texture = ExtResource("1_guqk6") [node name="farbg" type="Parallax2D" parent="."] scroll_scale = Vector2(0.5, 1) @@ -411,7 +414,7 @@ metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="farbg"] position = Vector2(160, 410) -texture = ExtResource("2_6ftlp") +texture = ExtResource("2_kf82u") [node name="midground" type="Parallax2D" parent="."] repeat_size = Vector2(320, 0) @@ -419,7 +422,7 @@ metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="midground"] position = Vector2(160, 420) -texture = ExtResource("3_34sir") +texture = ExtResource("3_sfwji") [node name="foreground" type="Parallax2D" parent="."] scroll_scale = Vector2(1.5, 1) @@ -427,7 +430,7 @@ repeat_size = Vector2(320, 0) [node name="Sprite2D" type="Sprite2D" parent="foreground"] position = Vector2(160, 420) -texture = ExtResource("4_o62em") +texture = ExtResource("4_3vafi") [node name="TileMapLayer" type="TileMapLayer" parent="."] texture_filter = 1 @@ -453,35 +456,35 @@ shape = SubResource("RectangleShape2D_ggdp1") [node name="crates" type="Node2D" parent="."] -[node name="crate1" parent="crates" instance=ExtResource("8_4axuh")] +[node name="crate1" parent="crates" instance=ExtResource("8_omegn")] position = Vector2(481, 369) -script = ExtResource("9_jwr41") +script = ExtResource("9_egdbr") -[node name="crate2" parent="crates" instance=ExtResource("8_4axuh")] +[node name="crate2" parent="crates" instance=ExtResource("8_omegn")] position = Vector2(534, 397) rotation = 0.380482 -script = ExtResource("9_jwr41") +script = ExtResource("9_egdbr") -[node name="crate4" parent="crates" instance=ExtResource("8_4axuh")] -position = Vector2(628, 345) +[node name="crate4" parent="crates" instance=ExtResource("8_omegn")] +position = Vector2(683, 338) rotation = 0.380482 -script = ExtResource("9_jwr41") +script = ExtResource("9_egdbr") -[node name="crate3" parent="crates" instance=ExtResource("8_4axuh")] +[node name="crate3" parent="crates" instance=ExtResource("8_omegn")] position = Vector2(693, 255) rotation = -0.760964 -script = ExtResource("9_jwr41") +script = ExtResource("9_egdbr") -[node name="CharacterBody2D" parent="." instance=ExtResource("10_poa8t")] +[node name="CharacterBody2D" parent="." instance=ExtResource("10_o6q0w")] position = Vector2(586, 347) [node name="SceneManager" type="Node" parent="."] unique_name_in_owner = true -script = ExtResource("11_lvxwe") +script = ExtResource("11_nqywm") [node name="triggers" type="Node2D" parent="."] -[node name="Trigger" parent="triggers" instance=ExtResource("12_527fi")] +[node name="Trigger" parent="triggers" instance=ExtResource("12_lqaop")] position = Vector2(697, 465) effect = "destroy" @@ -489,7 +492,7 @@ effect = "destroy" shape = SubResource("CircleShape2D_opmvx") debug_color = Color(0.731092, 0.294274, 0.91724, 0.42) -[node name="powerup" parent="triggers" instance=ExtResource("12_527fi")] +[node name="powerup" parent="triggers" instance=ExtResource("12_lqaop")] position = Vector2(791, 407) effect = "powerup" @@ -497,3 +500,23 @@ effect = "powerup" position = Vector2(0, -10) shape = SubResource("RectangleShape2D_1ymsv") debug_color = Color(0.156093, 0.622347, 0.484765, 0.42) + +[node name="coins" type="Node2D" parent="."] + +[node name="Area2D" parent="coins" instance=ExtResource("13_vgo8v")] +position = Vector2(616, 455) + +[node name="Area2D2" parent="coins" instance=ExtResource("13_vgo8v")] +position = Vector2(685, 411) + +[node name="Area2D3" parent="coins" instance=ExtResource("13_vgo8v")] +position = Vector2(814, 411) + +[node name="badguys" type="Node2D" parent="."] + +[node name="Area2D" parent="badguys" instance=ExtResource("14_rox0s")] +position = Vector2(562, 469) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="ui" parent="CanvasLayer" instance=ExtResource("15_8ylp1")] diff --git a/februarygodotgame/scenes/player.tscn b/februarygodotgame/scenes/player.tscn index 33bc300..d9708ec 100644 --- a/februarygodotgame/scenes/player.tscn +++ b/februarygodotgame/scenes/player.tscn @@ -1,13 +1,54 @@ -[gd_scene load_steps=33 format=3 uid="uid://cjvyslsoa7olc"] +[gd_scene load_steps=44 format=3 uid="uid://cjvyslsoa7olc"] -[ext_resource type="Script" path="res://scripts/player.gd" id="1_ffdhb"] +[ext_resource type="Script" uid="uid://b5eit0edgwhq0" path="res://scripts/player.gd" id="1_ffdhb"] [ext_resource type="Texture2D" uid="uid://c8seclaqrgq6x" path="res://assets/graphics/player/hurt/Player Hurt 48x48.png" id="2_3u4bg"] [ext_resource type="Texture2D" uid="uid://d6cdeej48ryk" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="2_ekybh"] +[ext_resource type="Texture2D" uid="uid://c4lmbns6bx0e1" path="res://assets/graphics/player/death/Player Death 64x64 (2).png" id="2_g6kb3"] [ext_resource type="Texture2D" uid="uid://bo4lwotnk3cs" path="res://assets/graphics/player/jump/player jump 48x48.png" id="3_fab18"] [ext_resource type="Texture2D" uid="uid://dny0tvbhrt1jh" path="res://assets/graphics/player/run/player run 48x48.png" id="3_q7el6"] [sub_resource type="CircleShape2D" id="CircleShape2D_q23dn"] +[sub_resource type="AtlasTexture" id="AtlasTexture_lfx06"] +atlas = ExtResource("2_g6kb3") +region = Rect2(0, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_00rne"] +atlas = ExtResource("2_g6kb3") +region = Rect2(48, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_y5l30"] +atlas = ExtResource("2_g6kb3") +region = Rect2(96, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_aj0cj"] +atlas = ExtResource("2_g6kb3") +region = Rect2(144, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1fkb1"] +atlas = ExtResource("2_g6kb3") +region = Rect2(192, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yq6na"] +atlas = ExtResource("2_g6kb3") +region = Rect2(240, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0njwm"] +atlas = ExtResource("2_g6kb3") +region = Rect2(288, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yxrd7"] +atlas = ExtResource("2_g6kb3") +region = Rect2(336, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_aggyg"] +atlas = ExtResource("2_g6kb3") +region = Rect2(384, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_v8aph"] +atlas = ExtResource("2_g6kb3") +region = Rect2(432, 0, 48, 48) + [sub_resource type="AtlasTexture" id="AtlasTexture_40d3p"] atlas = ExtResource("2_3u4bg") region = Rect2(0, 0, 48, 48) @@ -112,6 +153,41 @@ region = Rect2(336, 0, 48, 48) animations = [{ "frames": [{ "duration": 1.0, +"texture": SubResource("AtlasTexture_lfx06") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_00rne") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_y5l30") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_aj0cj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1fkb1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yq6na") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0njwm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yxrd7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_aggyg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_v8aph") +}], +"loop": false, +"name": &"death", +"speed": 12.0 +}, { +"frames": [{ +"duration": 1.0, "texture": SubResource("AtlasTexture_40d3p") }, { "duration": 1.0, @@ -222,19 +298,21 @@ target_position = Vector2(16, 0) target_position = Vector2(-16, 0) [node name="rightTarget" type="Node2D" parent="."] -position = Vector2(18, -9) +position = Vector2(18, 0) [node name="leftTarget" type="Node2D" parent="."] -position = Vector2(-19, -9) +position = Vector2(-19, 0) [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] texture_filter = 1 position = Vector2(0, -7) sprite_frames = SubResource("SpriteFrames_ok1w6") -animation = &"run" +animation = &"death" autoplay = "hurt" [node name="Camera2D" type="Camera2D" parent="."] offset = Vector2(0, -30) +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] + [connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animation_finished"] diff --git a/februarygodotgame/scenes/slime.tscn b/februarygodotgame/scenes/slime.tscn index b027fda..88e3014 100644 --- a/februarygodotgame/scenes/slime.tscn +++ b/februarygodotgame/scenes/slime.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=9 format=3 uid="uid://c3blwnpwdol0a"] -[ext_resource type="Script" path="res://scripts/slime.gd" id="1_idpgq"] +[ext_resource type="Script" uid="uid://c2us5v211var4" path="res://scripts/slime.gd" id="1_idpgq"] [ext_resource type="Texture2D" uid="uid://gm75hmen7j50" path="res://assets/graphics/enemies/slime_green.png" id="2_834r1"] [sub_resource type="AtlasTexture" id="AtlasTexture_v06gt"] @@ -57,4 +57,18 @@ frame_progress = 0.906364 position = Vector2(0, 4.5) shape = SubResource("RectangleShape2D_7ddlr") +[node name="rightSideCast" type="RayCast2D" parent="."] +target_position = Vector2(13, 0) + +[node name="leftSideCast" type="RayCast2D" parent="."] +target_position = Vector2(-13, 0) + +[node name="rightDownCast" type="RayCast2D" parent="."] +position = Vector2(6, 0) +target_position = Vector2(0, 14) + +[node name="leftDownCast" type="RayCast2D" parent="."] +position = Vector2(-6, 0) +target_position = Vector2(0, 14) + [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/februarygodotgame/scenes/trigger.tscn b/februarygodotgame/scenes/trigger.tscn index a3d6c3d..71daec8 100644 --- a/februarygodotgame/scenes/trigger.tscn +++ b/februarygodotgame/scenes/trigger.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bibqnht5dooss"] -[ext_resource type="Script" path="res://scripts/trigger.gd" id="1_x8vqb"] +[ext_resource type="Script" uid="uid://0e68l0wtc2lq" path="res://scripts/trigger.gd" id="1_x8vqb"] [node name="Trigger" type="Area2D"] position = Vector2(700, 476) diff --git a/februarygodotgame/scenes/ui.tscn b/februarygodotgame/scenes/ui.tscn new file mode 100644 index 0000000..32fb398 --- /dev/null +++ b/februarygodotgame/scenes/ui.tscn @@ -0,0 +1,78 @@ +[gd_scene load_steps=4 format=3 uid="uid://bv622vne87h0h"] + +[ext_resource type="Script" uid="uid://ye0jb2lxcf0f" path="res://scripts/ui.gd" id="1_1d8ed"] +[ext_resource type="FontFile" uid="uid://dyhcvk7xwyipu" path="res://assets/fonts/PixelOperator8.ttf" id="2_u7ep1"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r7bnv"] +bg_color = Color(0.24807, 0.694112, 0.499273, 1) + +[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_1d8ed") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/MarginContainer"] +layout_mode = 2 + +[node name="health" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer/VBoxContainer"] +texture_filter = 1 +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_u7ep1") +theme_override_font_sizes/font_size = 8 +text = "Health" + +[node name="healthProgress" type="ProgressBar" parent="VBoxContainer/HBoxContainer/MarginContainer/VBoxContainer"] +texture_filter = 1 +layout_mode = 2 +show_percentage = false + +[node name="MarginContainer2" type="MarginContainer" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/MarginContainer2"] +layout_mode = 2 + +[node name="time" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer2/VBoxContainer"] +texture_filter = 1 +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_u7ep1") +theme_override_font_sizes/font_size = 8 +text = "time" +horizontal_alignment = 1 + +[node name="timeProgress" type="ProgressBar" parent="VBoxContainer/HBoxContainer/MarginContainer2/VBoxContainer"] +layout_mode = 2 +theme_override_styles/fill = SubResource("StyleBoxFlat_r7bnv") +value = 100.0 +show_percentage = false + +[node name="MarginContainer3" type="MarginContainer" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="coins" type="Label" parent="VBoxContainer/HBoxContainer/MarginContainer3"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_u7ep1") +theme_override_font_sizes/font_size = 8 +text = "coins" +horizontal_alignment = 2 diff --git a/februarygodotgame/scripts/bullet.gd b/februarygodotgame/scripts/bullet.gd index d540ce6..4688a0c 100644 --- a/februarygodotgame/scripts/bullet.gd +++ b/februarygodotgame/scripts/bullet.gd @@ -18,6 +18,10 @@ func _physics_process(delta: float) -> void: func _on_body_entered(body: Node2D) -> void: - print("bullet collision") if not body is Player: hit.emit(self, body) + + +func _on_area_entered(area: Area2D) -> void: + if area is Slime: + hit.emit(self, area) diff --git a/februarygodotgame/scripts/bullet.gd.uid b/februarygodotgame/scripts/bullet.gd.uid new file mode 100644 index 0000000..5ac1da9 --- /dev/null +++ b/februarygodotgame/scripts/bullet.gd.uid @@ -0,0 +1 @@ +uid://nrybuacdknfd diff --git a/februarygodotgame/scripts/coin.gd b/februarygodotgame/scripts/coin.gd index 4dcaabe..b871487 100644 --- a/februarygodotgame/scripts/coin.gd +++ b/februarygodotgame/scripts/coin.gd @@ -3,5 +3,4 @@ class_name Coin extends Area2D signal coinCollectedSignal(body, coin) func _on_body_entered(body: Node2D) -> void: - print("Coin collision") coinCollectedSignal.emit(body, self) diff --git a/februarygodotgame/scripts/coin.gd.uid b/februarygodotgame/scripts/coin.gd.uid new file mode 100644 index 0000000..ff9a41f --- /dev/null +++ b/februarygodotgame/scripts/coin.gd.uid @@ -0,0 +1 @@ +uid://bh7ipor360jvl diff --git a/februarygodotgame/scripts/crate.gd.uid b/februarygodotgame/scripts/crate.gd.uid new file mode 100644 index 0000000..12a3bb4 --- /dev/null +++ b/februarygodotgame/scripts/crate.gd.uid @@ -0,0 +1 @@ +uid://byf3jbnel85px diff --git a/februarygodotgame/scripts/gamecontroller.gd b/februarygodotgame/scripts/gamecontroller.gd index ccd132e..0f272b5 100644 --- a/februarygodotgame/scripts/gamecontroller.gd +++ b/februarygodotgame/scripts/gamecontroller.gd @@ -7,13 +7,19 @@ var coinsCollected =0 var totalCoinsAvailable = 0 var enemies = 0 +var enemiesDict = {} signal destroySignal(body) signal levelCompleteSignal(level) signal playerHurtSignal(healthRemaining) +signal playerKillSignal +signal timeCountSignal(timeRemaining, timeAvailable) +signal coinCountSignal(collected, available) + #level info var timer:= Timer.new() var levels = ["res://scenes/game.tscn","res://scenes/level2.tscn","res://scenes/level3.tscn"] +var soundtracks = ["res://assets/audio/music/CrashingOut.ogg","res://assets/audio/music/DragAndDreadTheme.ogg"] var timers = [20,15,25] var currentLevel = 0 var countdown=0 @@ -34,19 +40,18 @@ func _ready() -> void: timer.start() func reset(): countdown = timers[currentLevel] + player.health = player.max_health + coinsCollected = 0 func secondCounter(): countdown -=1 + timeCountSignal.emit(countdown, timers[currentLevel]) + if countdown <=0: - print("YOU LOSE") + levelCompleteSignal.emit(levels[currentLevel]) -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass - func _on_trigger_area_trigger(effect, body) -> void: - print("Do effect "+effect) match effect: "destroy": #write code to destroy @@ -55,44 +60,57 @@ func _on_trigger_area_trigger(effect, body) -> void: cratesDestroyed +=1 "powerup": if body is Player: - print("power up the player") + pass func bulletHit(body): - print("Gamecontroller knows bullet hit") if body is Crate: - print("You hit a crate") totalCrates -=1 destroySignal.emit(body) - print("Crates Remaining :: "+str(totalCrates - cratesDestroyed)) if totalCrates <=0: - print("You won!!!") + #player wins currentLevel +=1 if currentLevel >= levels.size(): currentLevel = 0 levelCompleteSignal.emit(levels[currentLevel]) + if body is Slime: + #reduce health of slime + enemiesDict[body]["health"] -=30 + if enemiesDict[body]["health"] <=0: + #killed the slime + destroySignal.emit(body) func numberOfCrates(value): totalCrates = value - print("Game Controller knows crates "+str(totalCrates) ) + func numberOfCoins(value): totalCoinsAvailable = value +func numberOfBadguys(value): + enemies = value +func addEnemyToLevel(enemy): + #assign a health using the enemy as a key + var enemyStat = { + "health": slime.health, + "damage": slime.meleeDamage + } + enemiesDict[enemy] = enemyStat + func coinCollected(body, coin): - print("GC knows coin collected") + if body is Player: #increase coins collected count coinsCollected +=1 + coinCountSignal.emit(coinsCollected, totalCoinsAvailable) destroySignal.emit(coin) func playerDamage(body, badguy): if body is Player: - print("GC knows player taking damage") - print("Player health "+str(player.health)+" takes damage "+str(slime.meleeDamage)) - player.health -= slime.meleeDamage + player.health -= enemiesDict[badguy]["damage"] if player.health > 0: - playerHurtSignal.emit(player.health) + playerHurtSignal.emit(player.health, player.max_health) else: - print("kill em") - - -func numberOfBadguys(value): - enemies = value + #stop the timer! + timer.stop() + playerKillSignal.emit() + +func playerDeathComplete(): + levelCompleteSignal.emit(levels[currentLevel]) diff --git a/februarygodotgame/scripts/gamecontroller.gd.uid b/februarygodotgame/scripts/gamecontroller.gd.uid new file mode 100644 index 0000000..c82c8b8 --- /dev/null +++ b/februarygodotgame/scripts/gamecontroller.gd.uid @@ -0,0 +1 @@ +uid://slg4asyj3ol6 diff --git a/februarygodotgame/scripts/player.gd b/februarygodotgame/scripts/player.gd index d617d35..7ca3893 100644 --- a/februarygodotgame/scripts/player.gd +++ b/februarygodotgame/scripts/player.gd @@ -1,6 +1,7 @@ class_name Player extends CharacterBody2D @onready var playerGraphic: AnimatedSprite2D = $AnimatedSprite2D - +@onready var audio_stream_player: AudioStreamPlayer = $AudioStreamPlayer +const GRASS_RUNNING = preload("res://assets/audio/footsteps/Grass Running.wav") const SPEED = 300.0 const JUMP_VELOCITY = -400.0 @@ -12,6 +13,8 @@ var pushLeftEnabled = false var pushTarget var isJumping = false +signal playerDeadSignal + @onready var right_cast: RayCast2D = $rightCast @onready var left_cast: RayCast2D = $leftCast @onready var right_target: Node2D = $rightTarget @@ -60,6 +63,9 @@ func _physics_process(delta: float) -> void: if direction: if not isJumping: playerGraphic.play("run") + if not audio_stream_player.playing: + audio_stream_player.stream=GRASS_RUNNING + audio_stream_player.playing=true if direction ==0: if not isJumping: playerGraphic.play("idle") @@ -74,11 +80,9 @@ func _physics_process(delta: float) -> void: move_and_slide() if right_cast.is_colliding(): - print("something on my right") var collider = right_cast.get_collider() if collider is Node: if collider is RigidBody2D: - print("shove this crate") #record that we can shove right pushRightEnabled = true #record what object to shove @@ -96,11 +100,17 @@ func _physics_process(delta: float) -> void: c.get_collider().apply_central_impulse(-c.get_normal() * 50) func hurtPlayer(health): - print("Player takes damage, health remaining:: "+str(health)) animPlaying = "hurt" playerGraphic.play(animPlaying) - +func killPlayer(): + animPlaying = "death" + living = false + playerGraphic.play(animPlaying) func _on_animation_finished() -> void: - if animPlaying=="hurt": - animPlaying=="idle" + match animPlaying: + "hurt": + animPlaying="idle" + "death": + #emit death complete signal + playerDeadSignal.emit() diff --git a/februarygodotgame/scripts/player.gd.uid b/februarygodotgame/scripts/player.gd.uid new file mode 100644 index 0000000..1867bc2 --- /dev/null +++ b/februarygodotgame/scripts/player.gd.uid @@ -0,0 +1 @@ +uid://b5eit0edgwhq0 diff --git a/februarygodotgame/scripts/res/characterStats.gd.uid b/februarygodotgame/scripts/res/characterStats.gd.uid new file mode 100644 index 0000000..17fd1f4 --- /dev/null +++ b/februarygodotgame/scripts/res/characterStats.gd.uid @@ -0,0 +1 @@ +uid://cn6xekfhl5rog diff --git a/februarygodotgame/scripts/res/playerStats.tres b/februarygodotgame/scripts/res/playerStats.tres index ec02cb1..dd7e4e0 100644 --- a/februarygodotgame/scripts/res/playerStats.tres +++ b/februarygodotgame/scripts/res/playerStats.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://bhxl0nmjr16wm"] -[ext_resource type="Script" path="res://scripts/res/characterStats.gd" id="1_dc0h5"] +[ext_resource type="Script" uid="uid://cn6xekfhl5rog" path="res://scripts/res/characterStats.gd" id="1_dc0h5"] [resource] script = ExtResource("1_dc0h5") diff --git a/februarygodotgame/scripts/res/slimeStats.tres b/februarygodotgame/scripts/res/slimeStats.tres index b5464bf..18a17ba 100644 --- a/februarygodotgame/scripts/res/slimeStats.tres +++ b/februarygodotgame/scripts/res/slimeStats.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="CharacterStats" load_steps=2 format=3 uid="uid://bmwctbkvbp0en"] -[ext_resource type="Script" path="res://scripts/res/characterStats.gd" id="1_ev6pb"] +[ext_resource type="Script" uid="uid://cn6xekfhl5rog" path="res://scripts/res/characterStats.gd" id="1_ev6pb"] [resource] script = ExtResource("1_ev6pb") diff --git a/februarygodotgame/scripts/scene_manager.gd b/februarygodotgame/scripts/scene_manager.gd index ca8d743..44cb580 100644 --- a/februarygodotgame/scripts/scene_manager.gd +++ b/februarygodotgame/scripts/scene_manager.gd @@ -5,6 +5,8 @@ extends Node @onready var coins: Node2D = $"../coins" @onready var badguys: Node2D = $"../badguys" @onready var player: Player = $"../CharacterBody2D" +@onready var ui: Control = $"../CanvasLayer/ui" +@onready var audio_stream_player: AudioStreamPlayer = $AudioStreamPlayer var bulletsFiredTotal = 0 var bulletsMadeTotal = 0 @@ -16,11 +18,12 @@ var bullet = preload("res://scenes/bullet.tscn") func bulletFactory(): var mybullet if bulletArray.size() < 7: - print("new bullet at factory") + #new bullet mybullet = bullet.instantiate() mybullet.connect("hit", bulletHit) + owner.add_child(mybullet) else: - print("recycled bullet at factory") + #recycled bullet mybullet = bulletArray.pop_back() bulletArray.push_front(mybullet) @@ -28,14 +31,12 @@ func bulletFactory(): # order desk for bullets func makeBullet(position, speed): - print("make a bullet") var newBullet = bulletFactory() - owner.add_child(newBullet) + newBullet.setSpeed(speed) newBullet.transform = position func bulletHit(bullet, body): - print("Tell the game controller a bullet hit something") Gamecontroller.bulletHit(body) bullet.setSpeed(0) bullet.position = Vector2(-100,-100) @@ -66,6 +67,7 @@ func buildLevel(): if obj is Slime: totalBadguys +=1 obj.playerDamageSignal.connect(Gamecontroller.playerDamage) + Gamecontroller.addEnemyToLevel(obj) Gamecontroller.numberOfBadguys(totalBadguys) #wire up the triggers for obj in triggers.get_children(): @@ -77,6 +79,11 @@ func buildLevel(): Gamecontroller.destroySignal.connect(destroy) Gamecontroller.levelCompleteSignal.connect(loadLevel) Gamecontroller.playerHurtSignal.connect(playerHurt) + Gamecontroller.playerHurtSignal.connect(ui.healthUpdate) + Gamecontroller.playerKillSignal.connect(playerKill) + Gamecontroller.timeCountSignal.connect(ui.timeUpdate) + Gamecontroller.coinCountSignal.connect(ui.coinsUpdate) + player.playerDeadSignal.connect(Gamecontroller.playerDeathComplete) func loadLevel(level): get_tree().change_scene_to_file(level) @@ -84,5 +91,9 @@ func loadLevel(level): func _ready() -> void: buildLevel() Gamecontroller.reset() -func playerHurt(health): + audio_stream_player.play +func playerHurt(health, _maxHealth): player.hurtPlayer(health) +func playerKill(): + player.killPlayer() + diff --git a/februarygodotgame/scripts/scene_manager.gd.uid b/februarygodotgame/scripts/scene_manager.gd.uid new file mode 100644 index 0000000..0ef2c35 --- /dev/null +++ b/februarygodotgame/scripts/scene_manager.gd.uid @@ -0,0 +1 @@ +uid://dcxab0c313bxk diff --git a/februarygodotgame/scripts/slime.gd b/februarygodotgame/scripts/slime.gd index b9faa9c..3f141af 100644 --- a/februarygodotgame/scripts/slime.gd +++ b/februarygodotgame/scripts/slime.gd @@ -1,7 +1,25 @@ class_name Slime extends Area2D +@onready var right_side_cast: RayCast2D = $rightSideCast +@onready var left_side_cast: RayCast2D = $leftSideCast +@onready var right_down_cast: RayCast2D = $rightDownCast +@onready var left_down_cast: RayCast2D = $leftDownCast +var direction = 1 +var speed = 100 + +@onready var sprite: AnimatedSprite2D = $AnimatedSprite2D signal playerDamageSignal +func _process(delta: float) -> void: + if not right_down_cast.is_colliding(): + #about to fall on the right.... + direction = -1 + sprite.flip_h = true + if not left_down_cast.is_colliding(): + direction = 1 + sprite.flip_h = false + + position.x += direction * speed * delta + func _on_body_entered(body: Node2D) -> void: - print("Bad guy contact") playerDamageSignal.emit(body, self) diff --git a/februarygodotgame/scripts/slime.gd.uid b/februarygodotgame/scripts/slime.gd.uid new file mode 100644 index 0000000..fdaad6d --- /dev/null +++ b/februarygodotgame/scripts/slime.gd.uid @@ -0,0 +1 @@ +uid://c2us5v211var4 diff --git a/februarygodotgame/scripts/trigger.gd b/februarygodotgame/scripts/trigger.gd index 8eff92d..a239a5d 100644 --- a/februarygodotgame/scripts/trigger.gd +++ b/februarygodotgame/scripts/trigger.gd @@ -4,7 +4,7 @@ class_name Trigger extends Area2D signal areaTrigger(effect, Object) # Called when the node enters the scene tree for the first time. func _ready() -> void: - print("Trigger is here") + pass # Called every frame. 'delta' is the elapsed time since the previous frame. @@ -13,5 +13,4 @@ func _process(delta: float) -> void: func _on_body_entered(body: Node2D) -> void: - print("Body collision in trigger") areaTrigger.emit(effect, body) diff --git a/februarygodotgame/scripts/trigger.gd.uid b/februarygodotgame/scripts/trigger.gd.uid new file mode 100644 index 0000000..557e1ca --- /dev/null +++ b/februarygodotgame/scripts/trigger.gd.uid @@ -0,0 +1 @@ +uid://0e68l0wtc2lq diff --git a/februarygodotgame/scripts/ui.gd b/februarygodotgame/scripts/ui.gd new file mode 100644 index 0000000..8817edd --- /dev/null +++ b/februarygodotgame/scripts/ui.gd @@ -0,0 +1,24 @@ +extends Control +@onready var coins: Label = $VBoxContainer/HBoxContainer/MarginContainer3/coins +@onready var time: Label = $VBoxContainer/HBoxContainer/MarginContainer2/VBoxContainer/time +@onready var time_progress: ProgressBar = $VBoxContainer/HBoxContainer/MarginContainer2/VBoxContainer/timeProgress +@onready var health: Label = $VBoxContainer/HBoxContainer/MarginContainer/VBoxContainer/health +@onready var health_progress: ProgressBar = $VBoxContainer/HBoxContainer/MarginContainer/VBoxContainer/healthProgress + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + health.text="HEALTH" + time.text="00:00" + coins.text = "COINS - 0" + +func healthUpdate(currentHealth, maxHealth): + health.text = "HEALTH "+str(currentHealth) + health_progress.value = float(currentHealth) / maxHealth * 100 + +func timeUpdate(timeRemaining, timeAvailable): + time.text = "TIME "+str(timeRemaining)+" of "+str(timeAvailable) + time_progress.value = float(timeRemaining) / timeAvailable * 100 + +func coinsUpdate(collected, available): + coins.text="COINS "+str(collected)+" of "+str(available) diff --git a/februarygodotgame/scripts/ui.gd.uid b/februarygodotgame/scripts/ui.gd.uid new file mode 100644 index 0000000..bcb5d06 --- /dev/null +++ b/februarygodotgame/scripts/ui.gd.uid @@ -0,0 +1 @@ +uid://ye0jb2lxcf0f