From e421662534cec14c1250ec42c9fcbcdce0152f4a Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Mon, 16 May 2022 12:46:06 +0200 Subject: [PATCH] New blobby character, overhauled project structure --- .vscode/launch.json | 18 ---- .vscode/settings.json | 3 - assets/blobby/blobby1.png | Bin 0 -> 272 bytes assets/blobby/blobby1.png.import | 35 +++++++ assets/blobby/blobby2.png | Bin 0 -> 270 bytes .../blobby/blobby2.png.import | 7 +- assets/blobby/blobby3.png | Bin 0 -> 261 bytes .../blobby/blobby3.png.import | 7 +- .../contraption}/bumper.png | Bin .../contraption}/bumper.png.import | 7 +- .../contraption}/portal.png | Bin .../contraption}/portal.png.import | 7 +- {start-assets => assets/enemy}/enemy.png | Bin .../enemy/enemy.png.import | 7 +- .../environment/background}/background.png | Bin .../background/background.png.import | 35 +++++++ .../environment/blocks/Basic stone block.png | Bin 0 -> 214 bytes .../blocks/Basic stone block.png.import | 35 +++++++ .../blocks}/approx build block.png | Bin .../blocks/approx build block.png.import | 35 +++++++ .../meta}/font_default.tres | 0 {start-assets => assets/meta}/font_title.tres | 0 {start-assets => assets/meta}/icon.png | Bin {start-assets => assets/meta}/icon.png.import | 7 +- {start-assets => assets/meta}/light.png | Bin .../meta}/light.png.import | 7 +- .../meta}/montserrat_extrabold.otf | Bin .../meta}/new_dynamicfont.tres | 2 +- {start-assets => assets/meta}/tileset.png | Bin .../meta}/tileset.png.import | 7 +- {start-assets => assets/meta}/tileset.tres | 2 +- {start-assets => assets/meta}/ui_theme.tres | 3 +- .../neutral object}/coin.png | Bin .../neutral object/coin.png.import | 7 +- .../player}/approx mannequin.png | Bin .../player/approx mannequin.png.import | 7 +- {start-assets => assets/player}/player.png | Bin .../player}/player.png.import | 7 +- assets/player/th.jpg | Bin 0 -> 27655 bytes .../player/th.jpg.import | 7 +- icon.png.import | 1 + project.godot | 12 +-- src/Actor/Blobby.gd | 7 ++ src/Actor/Blobby.tscn | 29 +++--- src/Actor/Enemy.gd | 2 +- src/Actor/Enemy.tscn | 3 +- src/Actor/Turret.tscn | 23 +++++ src/Contraptions/Platform/AnimationPlayer.gd | 16 +++ src/Contraptions/Platform/Track.gd | 15 +++ src/Contraptions/Platform/Track.tscn | 47 +++++++++ .../Portal}/Portal.gd | 0 .../Portal}/Portal.tscn | 5 +- src/Levels/Level02.tscn | 16 +-- src/Levels/Level03.tscn | 34 ++++--- src/Levels/LevelTemplate.tscn | 14 +-- src/Levels/Plattforms Level.tscn | 92 ++++++++++++++++++ .../{ApproxLevel.tscn => Simple Level.tscn} | 61 ++---------- src/Levels/StaticBody2D.gd | 16 +++ src/Levels/Tween.gd | 16 +++ src/{Objects => Neutral Objects}/Coin.gd | 0 src/{Objects => Neutral Objects}/Coin.tscn | 4 +- .../{ => Buttons}/ChangeSceneButton.tscn | 6 +- .../{ => Buttons}/EndsScreen.tscn | 17 ++-- src/UserInterface/{ => Buttons}/PlayButton.gd | 0 src/UserInterface/{ => Buttons}/QuitButton.gd | 0 .../{ => Buttons}/QuitButton.tscn | 3 +- .../{ => Buttons}/RetryButton.gd | 0 .../{ => Buttons}/RetryButton.tscn | 3 +- src/UserInterface/{ => Buttons}/StatsLabel.gd | 0 .../{ => Buttons}/StatsLabel.tscn | 3 +- src/UserInterface/{ => Buttons}/Titel.tscn | 5 +- .../{ => Buttons}/UserInterface.gd | 0 .../{ => Buttons}/UserInterface.tscn | 10 +- .../Screens/MainScreen.tscn | 20 ++-- start-assets/Basic stone block.png | Bin 249 -> 0 bytes 75 files changed, 528 insertions(+), 204 deletions(-) delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json create mode 100644 assets/blobby/blobby1.png create mode 100644 assets/blobby/blobby1.png.import create mode 100644 assets/blobby/blobby2.png rename start-assets/approx mannequin.png.import => assets/blobby/blobby2.png.import (66%) create mode 100644 assets/blobby/blobby3.png rename start-assets/Basic stone block.png.import => assets/blobby/blobby3.png.import (66%) rename {start-assets => assets/contraption}/bumper.png (100%) rename {start-assets => assets/contraption}/bumper.png.import (67%) rename {start-assets => assets/contraption}/portal.png (100%) rename {start-assets => assets/contraption}/portal.png.import (67%) rename {start-assets => assets/enemy}/enemy.png (100%) rename start-assets/coin.png.import => assets/enemy/enemy.png.import (67%) rename {start-assets => assets/environment/background}/background.png (100%) create mode 100644 assets/environment/background/background.png.import create mode 100644 assets/environment/blocks/Basic stone block.png create mode 100644 assets/environment/blocks/Basic stone block.png.import rename {start-assets => assets/environment/blocks}/approx build block.png (100%) create mode 100644 assets/environment/blocks/approx build block.png.import rename {start-assets => assets/meta}/font_default.tres (100%) rename {start-assets => assets/meta}/font_title.tres (100%) rename {start-assets => assets/meta}/icon.png (100%) rename {start-assets => assets/meta}/icon.png.import (68%) rename {start-assets => assets/meta}/light.png (100%) rename {start-assets => assets/meta}/light.png.import (68%) rename {start-assets => assets/meta}/montserrat_extrabold.otf (100%) rename {start-assets => assets/meta}/new_dynamicfont.tres (53%) rename {start-assets => assets/meta}/tileset.png (100%) rename {start-assets => assets/meta}/tileset.png.import (67%) rename {start-assets => assets/meta}/tileset.tres (93%) rename {start-assets => assets/meta}/ui_theme.tres (52%) rename {start-assets => assets/neutral object}/coin.png (100%) rename start-assets/background.png.import => assets/neutral object/coin.png.import (66%) rename {start-assets => assets/player}/approx mannequin.png (100%) rename start-assets/approx build block.png.import => assets/player/approx mannequin.png.import (64%) rename {start-assets => assets/player}/player.png (100%) rename {start-assets => assets/player}/player.png.import (67%) create mode 100644 assets/player/th.jpg rename start-assets/enemy.png.import => assets/player/th.jpg.import (68%) create mode 100644 src/Actor/Turret.tscn create mode 100644 src/Contraptions/Platform/AnimationPlayer.gd create mode 100644 src/Contraptions/Platform/Track.gd create mode 100644 src/Contraptions/Platform/Track.tscn rename src/{Objects => Contraptions/Portal}/Portal.gd (100%) rename src/{Objects => Contraptions/Portal}/Portal.tscn (93%) create mode 100644 src/Levels/Plattforms Level.tscn rename src/Levels/{ApproxLevel.tscn => Simple Level.tscn} (82%) create mode 100644 src/Levels/StaticBody2D.gd create mode 100644 src/Levels/Tween.gd rename src/{Objects => Neutral Objects}/Coin.gd (100%) rename src/{Objects => Neutral Objects}/Coin.tscn (93%) rename src/UserInterface/{ => Buttons}/ChangeSceneButton.tscn (67%) rename src/UserInterface/{ => Buttons}/EndsScreen.tscn (69%) rename src/UserInterface/{ => Buttons}/PlayButton.gd (100%) rename src/UserInterface/{ => Buttons}/QuitButton.gd (100%) rename src/UserInterface/{ => Buttons}/QuitButton.tscn (79%) rename src/UserInterface/{ => Buttons}/RetryButton.gd (100%) rename src/UserInterface/{ => Buttons}/RetryButton.tscn (76%) rename src/UserInterface/{ => Buttons}/StatsLabel.gd (100%) rename src/UserInterface/{ => Buttons}/StatsLabel.tscn (83%) rename src/UserInterface/{ => Buttons}/Titel.tscn (70%) rename src/UserInterface/{ => Buttons}/UserInterface.gd (100%) rename src/UserInterface/{ => Buttons}/UserInterface.tscn (80%) rename src/{ => UserInterface}/Screens/MainScreen.tscn (70%) delete mode 100644 start-assets/Basic stone block.png diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 70bbfed..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "GDScript Godot", - "type": "godot", - "request": "launch", - "project": "${workspaceFolder}", - "port": 6007, - "address": "127.0.0.1", - "launch_game_instance": true, - "launch_scene": false - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 391d43a..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "godot_tools.scene_file_config": "c:\\Users\\Jakob\\Documents\\Godot\\Wumper\\src\\Levels\\ApproxLevel.tscn.tmp" -} \ No newline at end of file diff --git a/assets/blobby/blobby1.png b/assets/blobby/blobby1.png new file mode 100644 index 0000000000000000000000000000000000000000..29f7d7361cca1d816ba045080810266655187109 GIT binary patch literal 272 zcmV+r0q_2aP)Px#%1J~)R9J=Wl~E4FAP7WZvp3bAN_*DXkCqKJg0x?oEH5ExVv%t~B}$Sc`FHqk zLTNzczkTD--0vp^d-Zc_Cn6%0hOiI|l!nKYc7#{JR40l1#)O#b*NOSaJKZpyczKib zN(6xT%w^_Fj0JUwXxT2y30HuiMOZ~=V|pQ$h>!pgF@6L1#%xSuHSY2htVBe{Ji-pl z&^FJuA;K*OMs#niRxPJt#FZ^gv$}Xzct>&Ro9^5@LdF$a_ds~#qHjQ?Xp$t!Pw@d= WqovF=g8Px#$Vo&&R9J=WltB&yAqYi3O>e4mD)p>%VV$C_=+HFX@Dej|6!;R9hUFlzAqhm)F6KI)W#Xne$q`^?(9@QPx-kZn zqlwP3KhT@d@rT^lj9Y-K$jq%W(FvFVfU93VzdLJVUC4NM>xss?(AG3Q)64y~gZGs35-SNT^8%$2#L*Al{U ztM#;mv4*IX+SI(w49l$U-OyvP(qKxuKRr7>dTPZPzLk;<9SrxY1wW=)Eie&_{cO8X zm$64AkyZ9*iqbTW=?r2E_jkTXR-WJDnlUeqaT-T|e%o#)<&>H3xgR!!GWPC~UcKh0 zX~wcmKQBf6{cKd-6+OAYz2n@CS9vvI4(bBWHoI&~&LLpMk8!mK&P#+y3~7`9!HK2m+I zaLt(-tHwpEq~`N!bglZxr>nGYb>ZI(15x!=v7b-=?R&Mu$#zLgtc=`;$y!Z|5B6T3 zI>9u~{+vmq&>f$*`>Ysp7tOji(Np;UtWD=CjX8IJm^I_fnqI~m+%wK51n;W9#R_yA NgQu&X%Q~loCIDRVQ_cVY literal 0 HcmV?d00001 diff --git a/assets/environment/blocks/Basic stone block.png.import b/assets/environment/blocks/Basic stone block.png.import new file mode 100644 index 0000000..89a6436 --- /dev/null +++ b/assets/environment/blocks/Basic stone block.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Basic stone block.png-792e2d0e74ce98f19c08e1de3555021f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/environment/blocks/Basic stone block.png" +dest_files=[ "res://.import/Basic stone block.png-792e2d0e74ce98f19c08e1de3555021f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/start-assets/approx build block.png b/assets/environment/blocks/approx build block.png similarity index 100% rename from start-assets/approx build block.png rename to assets/environment/blocks/approx build block.png diff --git a/assets/environment/blocks/approx build block.png.import b/assets/environment/blocks/approx build block.png.import new file mode 100644 index 0000000..4b9fad2 --- /dev/null +++ b/assets/environment/blocks/approx build block.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/approx build block.png-b9080cd7ffa85a7f7c054de97101424f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/environment/blocks/approx build block.png" +dest_files=[ "res://.import/approx build block.png-b9080cd7ffa85a7f7c054de97101424f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/start-assets/font_default.tres b/assets/meta/font_default.tres similarity index 100% rename from start-assets/font_default.tres rename to assets/meta/font_default.tres diff --git a/start-assets/font_title.tres b/assets/meta/font_title.tres similarity index 100% rename from start-assets/font_title.tres rename to assets/meta/font_title.tres diff --git a/start-assets/icon.png b/assets/meta/icon.png similarity index 100% rename from start-assets/icon.png rename to assets/meta/icon.png diff --git a/start-assets/icon.png.import b/assets/meta/icon.png.import similarity index 68% rename from start-assets/icon.png.import rename to assets/meta/icon.png.import index 3015f44..b527f75 100644 --- a/start-assets/icon.png.import +++ b/assets/meta/icon.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/icon.png-fc66d857429a1b59b2fa881b4c230697.stex" +path="res://.import/icon.png-eade320076b24b97f544206fea4c6c6f.stex" metadata={ "vram_texture": false } [deps] -source_file="res://start-assets/icon.png" -dest_files=[ "res://.import/icon.png-fc66d857429a1b59b2fa881b4c230697.stex" ] +source_file="res://assets/meta/icon.png" +dest_files=[ "res://.import/icon.png-eade320076b24b97f544206fea4c6c6f.stex" ] [params] @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/start-assets/light.png b/assets/meta/light.png similarity index 100% rename from start-assets/light.png rename to assets/meta/light.png diff --git a/start-assets/light.png.import b/assets/meta/light.png.import similarity index 68% rename from start-assets/light.png.import rename to assets/meta/light.png.import index 761a86a..b4b3dd4 100644 --- a/start-assets/light.png.import +++ b/assets/meta/light.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/light.png-032cd0595f1dc9a0c36b1cff34ddab1f.stex" +path="res://.import/light.png-90b266ae7695c7c763c4fd90b49b4148.stex" metadata={ "vram_texture": false } [deps] -source_file="res://start-assets/light.png" -dest_files=[ "res://.import/light.png-032cd0595f1dc9a0c36b1cff34ddab1f.stex" ] +source_file="res://assets/meta/light.png" +dest_files=[ "res://.import/light.png-90b266ae7695c7c763c4fd90b49b4148.stex" ] [params] @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/start-assets/montserrat_extrabold.otf b/assets/meta/montserrat_extrabold.otf similarity index 100% rename from start-assets/montserrat_extrabold.otf rename to assets/meta/montserrat_extrabold.otf diff --git a/start-assets/new_dynamicfont.tres b/assets/meta/new_dynamicfont.tres similarity index 53% rename from start-assets/new_dynamicfont.tres rename to assets/meta/new_dynamicfont.tres index dbd1f81..be354f7 100644 --- a/start-assets/new_dynamicfont.tres +++ b/assets/meta/new_dynamicfont.tres @@ -1,6 +1,6 @@ [gd_resource type="DynamicFont" load_steps=2 format=2] -[ext_resource path="res://start-assets/montserrat_extrabold.otf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/meta/montserrat_extrabold.otf" type="DynamicFontData" id=1] [resource] size = 10 diff --git a/start-assets/tileset.png b/assets/meta/tileset.png similarity index 100% rename from start-assets/tileset.png rename to assets/meta/tileset.png diff --git a/start-assets/tileset.png.import b/assets/meta/tileset.png.import similarity index 67% rename from start-assets/tileset.png.import rename to assets/meta/tileset.png.import index 232b108..effc5e3 100644 --- a/start-assets/tileset.png.import +++ b/assets/meta/tileset.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/tileset.png-7d62e0550cb9afaf31af18a1fd42a92a.stex" +path="res://.import/tileset.png-249669a2e33cfee7524dfa51f24daa21.stex" metadata={ "vram_texture": false } [deps] -source_file="res://start-assets/tileset.png" -dest_files=[ "res://.import/tileset.png-7d62e0550cb9afaf31af18a1fd42a92a.stex" ] +source_file="res://assets/meta/tileset.png" +dest_files=[ "res://.import/tileset.png-249669a2e33cfee7524dfa51f24daa21.stex" ] [params] @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/start-assets/tileset.tres b/assets/meta/tileset.tres similarity index 93% rename from start-assets/tileset.tres rename to assets/meta/tileset.tres index 971af92..e24d7f7 100644 --- a/start-assets/tileset.tres +++ b/assets/meta/tileset.tres @@ -1,6 +1,6 @@ [gd_resource type="TileSet" load_steps=4 format=2] -[ext_resource path="res://start-assets/tileset.png" type="Texture" id=1] +[ext_resource path="res://assets/meta/tileset.png" type="Texture" id=1] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 0, 0, 80, 0, 80, 80, 0, 80 ) diff --git a/start-assets/ui_theme.tres b/assets/meta/ui_theme.tres similarity index 52% rename from start-assets/ui_theme.tres rename to assets/meta/ui_theme.tres index 4f5da1c..cb52438 100644 --- a/start-assets/ui_theme.tres +++ b/assets/meta/ui_theme.tres @@ -1,6 +1,7 @@ [gd_resource type="Theme" load_steps=2 format=2] -[ext_resource path="res://start-assets/new_dynamicfont.tres" type="DynamicFont" id=1] +[ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=1] + [resource] default_font = ExtResource( 1 ) diff --git a/start-assets/coin.png b/assets/neutral object/coin.png similarity index 100% rename from start-assets/coin.png rename to assets/neutral object/coin.png diff --git a/start-assets/background.png.import b/assets/neutral object/coin.png.import similarity index 66% rename from start-assets/background.png.import rename to assets/neutral object/coin.png.import index 50a0801..4ad041f 100644 --- a/start-assets/background.png.import +++ b/assets/neutral object/coin.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/background.png-81d2bbbda17f3da939f0efdb2d10572c.stex" +path="res://.import/coin.png-fe8bb2aa6121a142ba566306481b879c.stex" metadata={ "vram_texture": false } [deps] -source_file="res://start-assets/background.png" -dest_files=[ "res://.import/background.png-81d2bbbda17f3da939f0efdb2d10572c.stex" ] +source_file="res://assets/neutral object/coin.png" +dest_files=[ "res://.import/coin.png-fe8bb2aa6121a142ba566306481b879c.stex" ] [params] @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/start-assets/approx mannequin.png b/assets/player/approx mannequin.png similarity index 100% rename from start-assets/approx mannequin.png rename to assets/player/approx mannequin.png diff --git a/start-assets/approx build block.png.import b/assets/player/approx mannequin.png.import similarity index 64% rename from start-assets/approx build block.png.import rename to assets/player/approx mannequin.png.import index 36f7d7a..f3d2b5f 100644 --- a/start-assets/approx build block.png.import +++ b/assets/player/approx mannequin.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/approx build block.png-49ad0e1ad31136d94884e26eab12689d.stex" +path="res://.import/approx mannequin.png-6e1845e85175130a6ea95276556c5741.stex" metadata={ "vram_texture": false } [deps] -source_file="res://start-assets/approx build block.png" -dest_files=[ "res://.import/approx build block.png-49ad0e1ad31136d94884e26eab12689d.stex" ] +source_file="res://assets/player/approx mannequin.png" +dest_files=[ "res://.import/approx mannequin.png-6e1845e85175130a6ea95276556c5741.stex" ] [params] @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/start-assets/player.png b/assets/player/player.png similarity index 100% rename from start-assets/player.png rename to assets/player/player.png diff --git a/start-assets/player.png.import b/assets/player/player.png.import similarity index 67% rename from start-assets/player.png.import rename to assets/player/player.png.import index 79a9310..30036e3 100644 --- a/start-assets/player.png.import +++ b/assets/player/player.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/player.png-8cef2a46c175270e62c64717d7716e7f.stex" +path="res://.import/player.png-e230e05e2d932a710303ee07f401e40f.stex" metadata={ "vram_texture": false } [deps] -source_file="res://start-assets/player.png" -dest_files=[ "res://.import/player.png-8cef2a46c175270e62c64717d7716e7f.stex" ] +source_file="res://assets/player/player.png" +dest_files=[ "res://.import/player.png-e230e05e2d932a710303ee07f401e40f.stex" ] [params] @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/assets/player/th.jpg b/assets/player/th.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29b6b0363b196a16ac5925a4166310cd2cebd7e0 GIT binary patch literal 27655 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 Se=QdJXF1jX_H%;%%>NII7^GqV literal 0 HcmV?d00001 diff --git a/start-assets/enemy.png.import b/assets/player/th.jpg.import similarity index 68% rename from start-assets/enemy.png.import rename to assets/player/th.jpg.import index 622a59e..39892d8 100644 --- a/start-assets/enemy.png.import +++ b/assets/player/th.jpg.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/enemy.png-1c716757e52981306f381ad5bad394ac.stex" +path="res://.import/th.jpg-cc137ca9b69564ee23cce46a01652543.stex" metadata={ "vram_texture": false } [deps] -source_file="res://start-assets/enemy.png" -dest_files=[ "res://.import/enemy.png-1c716757e52981306f381ad5bad394ac.stex" ] +source_file="res://assets/player/th.jpg" +dest_files=[ "res://.import/th.jpg-cc137ca9b69564ee23cce46a01652543.stex" ] [params] @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/icon.png.import b/icon.png.import index 96cbf46..a4c02e6 100644 --- a/icon.png.import +++ b/icon.png.import @@ -28,6 +28,7 @@ process/fix_alpha_border=true process/premult_alpha=false process/HDR_as_SRGB=false process/invert_color=false +process/normal_map_invert_y=false stream=false size_limit=0 detect_3d=true diff --git a/project.godot b/project.godot index 589dc98..72b3442 100644 --- a/project.godot +++ b/project.godot @@ -39,7 +39,7 @@ _global_script_class_icons={ [application] config/name="Wumper" -run/main_scene="res://src/Screens/MainScreen.tscn" +run/main_scene="res://src/UserInterface/Screens/MainScreen.tscn" config/icon="res://icon.png" [autoload] @@ -63,32 +63,32 @@ window/stretch/shrink=4.5 move_left={ "deadzone": 0.5, "events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":false,"script":null) ] } move_right={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":15,"pressure":0.0,"pressed":false,"script":null) ] } jump={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) ] } pause={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) ] } boost_move={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) ] } diff --git a/src/Actor/Blobby.gd b/src/Actor/Blobby.gd index a07470f..62b8f40 100644 --- a/src/Actor/Blobby.gd +++ b/src/Actor/Blobby.gd @@ -10,6 +10,13 @@ onready var init_boost_type = player_state_machine.init_boost_type onready var camera_tween = $Camera2D/ShiftTween onready var camera = $Camera2D +# TODO Midair Boost sometimes to far +# TODO Stuck to Wallslide on input +# TODO Too much speed reduction on landings +# TODO Too much speed through midair boosting +# TODO Mini hopping through jump buffer(rare wallslide) +# TODO + func _on_EnemyDetector_area_entered(area: Area2D) -> void: _velocity = calculate_stomp_velocity(_velocity, stomp_feedback) diff --git a/src/Actor/Blobby.tscn b/src/Actor/Blobby.tscn index 521b627..d7dabee 100644 --- a/src/Actor/Blobby.tscn +++ b/src/Actor/Blobby.tscn @@ -1,30 +1,31 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=6 format=2] -[ext_resource path="res://start-assets/approx mannequin.png" type="Texture" id=1] +[ext_resource path="res://assets/blobby/blobby1.png" type="Texture" id=1] [ext_resource path="res://src/Actor/PlayerStateMachine.gd" type="Script" id=2] [ext_resource path="res://src/Actor/Blobby.gd" type="Script" id=5] [ext_resource path="res://src/Actor/Camera2D.gd" type="Script" id=6] -[sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 10.6846, 20.1701 ) - [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 11.2458, 19.4685 ) [node name="Blobby" type="KinematicBody2D"] collision_mask = 8 script = ExtResource( 5 ) -jump_buffer_filled = null [node name="Player" type="Sprite" parent="."] +position = Vector2( -0.00490093, 0.00763269 ) +scale = Vector2( 0.668819, 1.21494 ) texture = ExtResource( 1 ) -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource( 1 ) +[node name="AnimationPlayer" type="AnimationPlayer" parent="Player"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PoolVector2Array( -6.76445, -3.27282, -2.66045, -7.27159, 3.75863, -7.44698, 7.45577, -2.58186, 7.97746, -1.86331, 7.99487, 8.61092, 4.14448, 8.72349, -3.67768, 8.75857, -6.62144, 8.69444 ) [node name="Camera2D" type="Camera2D" parent="."] position = Vector2( 80, 0 ) current = true +zoom = Vector2( 2, 2 ) limit_left = 0 limit_top = 0 limit_smoothed = true @@ -41,8 +42,8 @@ script = ExtResource( 6 ) [node name="ShiftTween" type="Tween" parent="Camera2D"] [node name="EnemyDetector" type="Area2D" parent="."] -monitorable = false collision_mask = 2 +monitorable = false [node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyDetector"] modulate = Color( 0.2, 0, 0.494118, 1 ) @@ -68,13 +69,11 @@ custom_colors/font_color = Color( 0, 0, 0, 1 ) text = "Ihre Werbung" align = 1 valign = 1 -__meta__ = { -"_edit_use_anchors_": false -} [node name="WallRaycasts" type="Node2D" parent="."] [node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"] +position = Vector2( 3.95827, 5.64054 ) [node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] position = Vector2( -10.706, -8.03844 ) @@ -83,7 +82,7 @@ cast_to = Vector2( -2, 0 ) collision_mask = 9 [node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] -position = Vector2( -10.706, 14.8466 ) +position = Vector2( -10.706, -1.9261 ) enabled = true cast_to = Vector2( -2, 0 ) collision_mask = 9 @@ -91,13 +90,13 @@ collision_mask = 9 [node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] -position = Vector2( 10.6962, -8.03844 ) +position = Vector2( 7.97737, -0.838908 ) enabled = true cast_to = Vector2( 2, 0 ) collision_mask = 9 [node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] -position = Vector2( 11, 14.8466 ) +position = Vector2( 8.0633, 3.84536 ) enabled = true cast_to = Vector2( 2, 0 ) collision_mask = 9 diff --git a/src/Actor/Enemy.gd b/src/Actor/Enemy.gd index 76a4513..6d4e8a6 100644 --- a/src/Actor/Enemy.gd +++ b/src/Actor/Enemy.gd @@ -16,7 +16,7 @@ func _on_StompDetector_body_entered(body: Node) -> void: func _physics_process(delta: float) -> void: - _velocity.y += gravity * delta + _velocity.y += _gravity * delta if is_on_wall(): _velocity.x *= -1.0 _velocity.y = move_and_slide(_velocity, FLOOR_NORMAL).y diff --git a/src/Actor/Enemy.tscn b/src/Actor/Enemy.tscn index 2e40c15..b91f55b 100644 --- a/src/Actor/Enemy.tscn +++ b/src/Actor/Enemy.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://start-assets/enemy.png" type="Texture" id=1] +[ext_resource path="res://assets/enemy/enemy.png" type="Texture" id=1] [ext_resource path="res://src/Actor/Enemy.gd" type="Script" id=2] [sub_resource type="RectangleShape2D" id=1] @@ -38,4 +38,5 @@ collision_layer = 2 [node name="CollisionShape2D2" type="CollisionShape2D" parent="StompDetector"] position = Vector2( 0.44545, -13 ) shape = SubResource( 2 ) + [connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"] diff --git a/src/Actor/Turret.tscn b/src/Actor/Turret.tscn new file mode 100644 index 0000000..91b4b9f --- /dev/null +++ b/src/Actor/Turret.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://assets/contraption/bumper.png" type="Texture" id=1] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 108.869, 37.2448 ) + +[node name="Turret" type="KinematicBody2D"] +collision_layer = 2 +collision_mask = 3 + +[node name="Sprite" type="Sprite" parent="."] +scale = Vector2( 0.612294, 1 ) +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +scale = Vector2( 0.310271, 1.02855 ) +shape = SubResource( 1 ) + +[node name="RayCast2D" type="RayCast2D" parent="."] +enabled = true +collision_mask = 0 +collide_with_bodies = false diff --git a/src/Contraptions/Platform/AnimationPlayer.gd b/src/Contraptions/Platform/AnimationPlayer.gd new file mode 100644 index 0000000..8bd8d42 --- /dev/null +++ b/src/Contraptions/Platform/AnimationPlayer.gd @@ -0,0 +1,16 @@ +extends AnimationPlayer + + +# Declare member variables here. Examples: +# var a: int = 2 +# var b: String = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + play() + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta: float) -> void: +# pass diff --git a/src/Contraptions/Platform/Track.gd b/src/Contraptions/Platform/Track.gd new file mode 100644 index 0000000..2f08bf7 --- /dev/null +++ b/src/Contraptions/Platform/Track.gd @@ -0,0 +1,15 @@ +extends Node2D + +# Declare member variables here. Examples: +# var a: int = 2 +# var b: String = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + $anim.play("Horizontal") + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta: float) -> void: +# pass diff --git a/src/Contraptions/Platform/Track.tscn b/src/Contraptions/Platform/Track.tscn new file mode 100644 index 0000000..dc99c91 --- /dev/null +++ b/src/Contraptions/Platform/Track.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://assets/environment/blocks/Basic stone block.png" type="Texture" id=1] +[ext_resource path="res://src/Contraptions/Platform/Track.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 19.0405, 7.97217 ) + +[sub_resource type="Animation" id=2] +resource_name = "Horizontal" +length = 2.5 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("KinematicBody2D:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 30, 0 ) ] +} + +[node name="Track" type="Node2D"] +script = ExtResource( 2 ) + +[node name="KinematicBody2D" type="KinematicBody2D" parent="."] +position = Vector2( 19.2307, 0 ) +collision_layer = 8 +collision_mask = 8 +motion/sync_to_physics = true + +[node name="Sprite" type="Sprite" parent="KinematicBody2D"] +position = Vector2( -0.0275421, 0.0656414 ) +scale = Vector2( 2.38059, 1 ) +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="KinematicBody2D"] +position = Vector2( -0.00535583, 0.0656414 ) +shape = SubResource( 1 ) + +[node name="anim" type="AnimationPlayer" parent="."] +pause_mode = 2 +playback_process_mode = 0 +anims/Horizontal = SubResource( 2 ) diff --git a/src/Objects/Portal.gd b/src/Contraptions/Portal/Portal.gd similarity index 100% rename from src/Objects/Portal.gd rename to src/Contraptions/Portal/Portal.gd diff --git a/src/Objects/Portal.tscn b/src/Contraptions/Portal/Portal.tscn similarity index 93% rename from src/Objects/Portal.tscn rename to src/Contraptions/Portal/Portal.tscn index 08f3d02..1659229 100644 --- a/src/Objects/Portal.tscn +++ b/src/Contraptions/Portal/Portal.tscn @@ -1,7 +1,8 @@ [gd_scene load_steps=6 format=2] -[ext_resource path="res://start-assets/portal.png" type="Texture" id=1] -[ext_resource path="res://src/Objects/Portal.gd" type="Script" id=2] +[ext_resource path="res://assets/contraption/portal.png" type="Texture" id=1] +[ext_resource path="res://src/Contraptions/Portal/Portal.gd" type="Script" id=2] + [sub_resource type="CapsuleShape2D" id=1] radius = 39.0 diff --git a/src/Levels/Level02.tscn b/src/Levels/Level02.tscn index 7268466..69a886f 100644 --- a/src/Levels/Level02.tscn +++ b/src/Levels/Level02.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=8 format=2] [ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1] -[ext_resource path="res://start-assets/tileset.png" type="Texture" id=2] +[ext_resource path="res://assets/meta/tileset.png" type="Texture" id=2] [ext_resource path="res://src/Actor/Enemy.tscn" type="PackedScene" id=3] -[ext_resource path="res://start-assets/background.png" type="Texture" id=4] -[ext_resource path="res://src/Objects/Coin.tscn" type="PackedScene" id=5] +[ext_resource path="res://assets/environment/background/background.png" type="Texture" id=4] +[ext_resource path="res://src/Neutral Objects/Coin.tscn" type="PackedScene" id=5] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 0, 0, 80, 0, 80, 80, 0, 80 ) @@ -44,9 +44,6 @@ margin_bottom = 76.0 texture = ExtResource( 4 ) expand = true stretch_mode = 1 -__meta__ = { -"_edit_use_anchors_": false -} [node name="TileMap" type="TileMap" parent="."] tile_set = SubResource( 2 ) @@ -57,13 +54,16 @@ format = 1 tile_data = PoolIntArray( 0, 0, 0, 65536, 0, 0, 131072, 0, 0, 196608, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 0, 0, 262153, 0, 0, 262154, 0, 0, 327680, 0, 0, 327686, 0, 0, 327702, 0, 0, 327703, 0, 0, 393216, 0, 0, 393221, 0, 0, 393222, 0, 0, 393237, 0, 0, 393238, 0, 0, 393239, 0, 0, 393247, 0, 0, 393248, 0, 0, 458752, 0, 0, 458753, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458760, 0, 0, 458761, 0, 0, 458762, 0, 0, 458763, 0, 0, 458764, 0, 0, 458765, 0, 0, 458766, 0, 0, 458767, 0, 0, 458768, 0, 0, 458769, 0, 0, 458770, 0, 0, 458771, 0, 0, 458772, 0, 0, 458773, 0, 0, 458774, 0, 0, 458775, 0, 0, 458776, 0, 0, 458777, 0, 0, 458778, 0, 0, 458779, 0, 0, 458780, 0, 0, 458781, 0, 0, 458782, 0, 0, 458783, 0, 0, 458784, 0, 0, 458785, 0, 0, 458786, 0, 0, 458787, 0, 0, 458788, 0, 0, 458789, 0, 0, 458790, 0, 0, 458791, 0, 0, 458792, 0, 0, 458793, 0, 0, 458794, 0, 0, 458795, 0, 0, 458796, 0, 0, 458797, 0, 0, 458798, 0, 0, 458799, 0, 0, 458800, 0, 0, 458801, 0, 0, 458802, 0, 0, 458803, 0, 0, 458804, 0, 0, 458805, 0, 0, 458806, 0, 0, 458807, 0, 0, 458808, 0, 0, 458809, 0, 0, 458810, 0, 0, 458811, 0, 0, 458812, 0, 0, 458813, 0, 0, 458814, 0, 0, 458815, 0, 0, 458816, 0, 0, 458817, 0, 0, 458818, 0, 0, 458819, 0, 0, 458820, 0, 0, 458821, 0, 0, 458822, 0, 0, 458823, 0, 0, 458824, 0, 0, 458825, 0, 0, 458826, 0, 0, 458827, 0, 0, 458828, 0, 0, 458829, 0, 0, 458830, 0, 0, 458831, 0, 0, 458832, 0, 0, 458833, 0, 0, 458834, 0, 0, 458835, 0, 0, 458836, 0, 0, 458837, 0, 0, 458838, 0, 0, 524288, 0, 0, 524289, 0, 0, 524290, 0, 0, 524291, 0, 0, 524292, 0, 0, 524293, 0, 0, 524294, 0, 0, 524295, 0, 0, 524296, 0, 0, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 524303, 0, 0, 524304, 0, 0, 524305, 0, 0, 524306, 0, 0, 524307, 0, 0, 524308, 0, 0, 524309, 0, 0, 524310, 0, 0, 524311, 0, 0, 524312, 0, 0, 524313, 0, 0, 524314, 0, 0, 524315, 0, 0, 524316, 0, 0, 524317, 0, 0, 524318, 0, 0, 524319, 0, 0, 524320, 0, 0, 524321, 0, 0, 524322, 0, 0, 524323, 0, 0, 524324, 0, 0, 524325, 0, 0, 524326, 0, 0, 524327, 0, 0, 524328, 0, 0, 524329, 0, 0, 524330, 0, 0, 524331, 0, 0, 524332, 0, 0, 524333, 0, 0, 524334, 0, 0, 524335, 0, 0, 524336, 0, 0, 524337, 0, 0, 524338, 0, 0, 524339, 0, 0, 524340, 0, 0, 524341, 0, 0, 524342, 0, 0, 524343, 0, 0, 524344, 0, 0, 524345, 0, 0, 524346, 0, 0, 524347, 0, 0, 524348, 0, 0, 524349, 0, 0, 524350, 0, 0, 524351, 0, 0, 524352, 0, 0, 524353, 0, 0, 524354, 0, 0, 524355, 0, 0, 524356, 0, 0, 524357, 0, 0, 524358, 0, 0, 524359, 0, 0, 524360, 0, 0, 524361, 0, 0, 524362, 0, 0, 524363, 0, 0, 524364, 0, 0, 524365, 0, 0, 524366, 0, 0, 524367, 0, 0, 524368, 0, 0, 524369, 0, 0, 524370, 0, 0, 524371, 0, 0, 524372, 0, 0, 524373, 0, 0, 524374, 0, 0, 589824, 0, 0, 589825, 0, 0, 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589829, 0, 0, 589830, 0, 0, 589831, 0, 0, 589832, 0, 0, 589833, 0, 0, 589834, 0, 0, 589835, 0, 0, 589836, 0, 0, 589837, 0, 0, 589838, 0, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 589843, 0, 0, 589844, 0, 0, 589845, 0, 0, 589846, 0, 0, 589847, 0, 0, 589848, 0, 0, 589849, 0, 0, 589850, 0, 0, 589851, 0, 0, 589852, 0, 0, 589853, 0, 0, 589854, 0, 0, 589855, 0, 0, 589856, 0, 0, 589857, 0, 0, 589858, 0, 0, 589859, 0, 0, 589860, 0, 0, 589861, 0, 0, 589862, 0, 0, 589863, 0, 0, 589864, 0, 0, 589865, 0, 0, 589866, 0, 0, 589867, 0, 0, 589868, 0, 0, 589869, 0, 0, 589870, 0, 0, 589871, 0, 0, 589872, 0, 0, 589873, 0, 0, 589874, 0, 0, 589875, 0, 0, 589876, 0, 0, 589877, 0, 0, 589878, 0, 0, 589879, 0, 0, 589880, 0, 0, 589881, 0, 0, 589882, 0, 0, 589883, 0, 0, 589884, 0, 0, 589885, 0, 0, 589886, 0, 0, 589887, 0, 0, 589888, 0, 0, 589889, 0, 0, 589890, 0, 0, 589891, 0, 0, 589892, 0, 0, 589893, 0, 0, 589894, 0, 0, 589895, 0, 0, 589896, 0, 0, 589897, 0, 0, 589898, 0, 0, 589899, 0, 0, 589900, 0, 0, 589901, 0, 0, 589902, 0, 0, 589903, 0, 0, 589904, 0, 0, 589905, 0, 0, 589906, 0, 0, 589907, 0, 0, 589908, 0, 0, 589909, 0, 0, 589910, 0, 0 ) [node name="Blobby" parent="." instance=ExtResource( 1 )] -position = Vector2( 131, 560 ) +position = Vector2( 145.066, 551.48 ) [node name="Camera2D" parent="Blobby" index="2"] limit_right = 85000 [node name="CollisionShape2D" parent="Blobby/EnemyDetector" index="0"] -position = Vector2( 0, -44 ) +position = Vector2( 0.187286, 0.0127563 ) + +[node name="RightWallRaycast" parent="Blobby/WallRaycasts" index="1"] +position = Vector2( 0.0715485, 0.00415039 ) [node name="Enemy" parent="." instance=ExtResource( 3 )] position = Vector2( 2174, 560 ) diff --git a/src/Levels/Level03.tscn b/src/Levels/Level03.tscn index 647e384..a0f6802 100644 --- a/src/Levels/Level03.tscn +++ b/src/Levels/Level03.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=9 format=2] [ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1] -[ext_resource path="res://start-assets/tileset.tres" type="TileSet" id=2] +[ext_resource path="res://assets/meta/tileset.tres" type="TileSet" id=2] [ext_resource path="res://src/Actor/Enemy.tscn" type="PackedScene" id=3] -[ext_resource path="res://start-assets/background.png" type="Texture" id=4] -[ext_resource path="res://src/Objects/Coin.tscn" type="PackedScene" id=5] -[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6] -[ext_resource path="res://src/UserInterface/EndsScreen.tscn" type="PackedScene" id=7] -[ext_resource path="res://src/Objects/Portal.tscn" type="PackedScene" id=8] +[ext_resource path="res://assets/environment/background/background.png" type="Texture" id=4] +[ext_resource path="res://src/Neutral Objects/Coin.tscn" type="PackedScene" id=5] +[ext_resource path="res://src/UserInterface/Buttons/UserInterface.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/UserInterface/Buttons/EndsScreen.tscn" type="PackedScene" id=7] +[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=8] [node name="Level03" type="Node2D"] @@ -25,9 +25,6 @@ margin_right = -0.384033 texture = ExtResource( 4 ) expand = true stretch_mode = 1 -__meta__ = { -"_edit_use_anchors_": false -} [node name="TileMap" type="TileMap" parent="."] tile_set = ExtResource( 2 ) @@ -40,8 +37,11 @@ tile_data = PoolIntArray( -1048576, 0, 0, -1048564, 0, 0, -983040, 0, 0, -983028 [node name="Blobby" parent="." instance=ExtResource( 1 )] position = Vector2( 131, 560 ) -[node name="CollisionShape2D" parent="Blobby" index="1"] -position = Vector2( 0.224487, -32.0436 ) +[node name="Player" parent="Blobby" index="0"] +position = Vector2( -0.476822, -29.8424 ) + +[node name="CollisionPolygon2D" parent="Blobby" index="1"] +position = Vector2( -1.16798, -29.1162 ) [node name="Camera2D" parent="Blobby" index="2"] position = Vector2( 390.714, -75 ) @@ -49,8 +49,6 @@ limit_top = -10000 limit_right = 1040 limit_bottom = 700 drag_margin_h_enabled = false -smoothing_enabled = false -editor_draw_limits = true [node name="EnemyDetector" parent="Blobby" index="3"] position = Vector2( 14.6832, -44.0497 ) @@ -58,6 +56,15 @@ position = Vector2( 14.6832, -44.0497 ) [node name="CollisionShape2D" parent="Blobby/EnemyDetector" index="0"] position = Vector2( -15.3507, 14.3845 ) +[node name="StateLabel" parent="Blobby" index="5"] +margin_left = -38.6708 +margin_top = -73.3364 +margin_right = 48.3292 +margin_bottom = -59.3364 + +[node name="WallRaycasts" parent="Blobby" index="6"] +position = Vector2( -0.589935, -29.85 ) + [node name="Enemy" parent="." instance=ExtResource( 3 )] position = Vector2( 715.5, 560 ) @@ -78,5 +85,4 @@ position = Vector2( 130.332, -461.479 ) next_scene = ExtResource( 7 ) [editable path="Blobby"] - [editable path="Coin"] diff --git a/src/Levels/LevelTemplate.tscn b/src/Levels/LevelTemplate.tscn index a0a3ae0..67063f7 100644 --- a/src/Levels/LevelTemplate.tscn +++ b/src/Levels/LevelTemplate.tscn @@ -1,14 +1,14 @@ [gd_scene load_steps=13 format=2] [ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1] -[ext_resource path="res://start-assets/tileset.png" type="Texture" id=2] +[ext_resource path="res://assets/meta/tileset.png" type="Texture" id=2] [ext_resource path="res://src/Actor/Enemy.tscn" type="PackedScene" id=3] -[ext_resource path="res://start-assets/background.png" type="Texture" id=4] -[ext_resource path="res://src/Objects/Coin.tscn" type="PackedScene" id=5] -[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6] -[ext_resource path="res://src/Objects/Portal.tscn" type="PackedScene" id=7] -[ext_resource path="res://src/UserInterface/EndsScreen.tscn" type="PackedScene" id=8] -[ext_resource path="res://start-assets/tileset.tres" type="TileSet" id=9] +[ext_resource path="res://assets/environment/background/background.png" type="Texture" id=4] +[ext_resource path="res://src/Neutral Objects/Coin.tscn" type="PackedScene" id=5] +[ext_resource path="res://src/UserInterface/Buttons/UserInterface.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=7] +[ext_resource path="res://src/UserInterface/Buttons/EndsScreen.tscn" type="PackedScene" id=8] +[ext_resource path="res://assets/meta/tileset.tres" type="TileSet" id=9] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 0, 0, 80, 0, 80, 80, 0, 80 ) diff --git a/src/Levels/Plattforms Level.tscn b/src/Levels/Plattforms Level.tscn new file mode 100644 index 0000000..1b37395 --- /dev/null +++ b/src/Levels/Plattforms Level.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1] +[ext_resource path="res://assets/environment/blocks/Basic stone block.png" type="Texture" id=2] +[ext_resource path="res://src/Levels/StaticBody2D.gd" type="Script" id=3] +[ext_resource path="res://assets/environment/background/background.png" type="Texture" id=4] +[ext_resource path="res://src/Actor/Camera2D.gd" type="Script" id=5] + +[sub_resource type="NavigationPolygon" id=1] +vertices = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) +polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] + +[sub_resource type="OccluderPolygon2D" id=2] +polygon = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) + +[sub_resource type="TileSet" id=4] +0/name = "Basic stone block.png 0" +0/texture = ExtResource( 2 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 16, 16 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/occluder = SubResource( 2 ) +0/navigation_offset = Vector2( 0, 0 ) +0/navigation = SubResource( 1 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 3 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 190, 8 ) + +[node name="LevelTemplate" type="Node2D"] +__meta__ = { +"_edit_horizontal_guides_": [ 464.0 ], +"_edit_vertical_guides_": [ 2880.0 ] +} + +[node name="Blobby" parent="." instance=ExtResource( 1 )] +position = Vector2( 50.7867, 604.063 ) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -1 +script = ExtResource( 5 ) + +[node name="background" type="TextureRect" parent="CanvasLayer"] +margin_right = 426.667 +margin_bottom = 240.0 +texture = ExtResource( 4 ) +expand = true +stretch_mode = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="TileMap" type="TileMap" parent="."] +tile_set = SubResource( 4 ) +cell_size = Vector2( 16, 16 ) +cell_quadrant_size = 32 +cell_custom_transform = Transform2D( 16, 0, 0, 16, 0, 0 ) +collision_layer = 8 +collision_mask = 2147483648 +format = 1 +tile_data = PoolIntArray( 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 8, 0, 0, 9, 0, 0, 10, 0, 0, 11, 0, 0, 12, 0, 0, 13, 0, 0, 14, 0, 0, 15, 0, 0, 16, 0, 0, 17, 0, 0, 18, 0, 0, 19, 0, 0, 20, 0, 0, 21, 0, 0, 22, 0, 0, 23, 0, 0, 24, 0, 0, 25, 0, 0, 26, 0, 0, 27, 0, 0, 28, 0, 0, 29, 0, 0, 30, 0, 0, 31, 0, 0, 32, 0, 0, 33, 0, 0, 34, 0, 0, 35, 0, 0, 36, 0, 0, 37, 0, 0, 38, 0, 0, 39, 0, 0, 40, 0, 0, 41, 0, 0, 42, 0, 0, 43, 0, 0, 44, 0, 0, 45, 0, 0, 46, 0, 0, 47, 0, 0, 48, 0, 0, 49, 0, 0, 50, 0, 0, 51, 0, 0, 52, 0, 0, 53, 0, 0, 54, 0, 0, 55, 0, 0, 56, 0, 0, 57, 0, 0, 58, 0, 0, 59, 0, 0, 60, 0, 0, 65536, 0, 0, 65596, 0, 0, 131072, 0, 0, 131132, 0, 0, 196608, 0, 0, 196668, 0, 0, 262144, 0, 0, 262204, 0, 0, 327680, 0, 0, 327740, 0, 0, 393216, 0, 0, 393276, 0, 0, 458752, 0, 0, 458812, 0, 0, 524288, 0, 0, 524348, 0, 0, 589824, 0, 0, 589884, 0, 0, 655360, 0, 0, 655420, 0, 0, 720896, 0, 0, 720956, 0, 0, 786432, 0, 0, 786492, 0, 0, 851968, 0, 0, 852028, 0, 0, 917504, 0, 0, 917564, 0, 0, 983040, 0, 0, 983100, 0, 0, 1048576, 0, 0, 1048636, 0, 0, 1114112, 0, 0, 1114172, 0, 0, 1179648, 0, 0, 1179708, 0, 0, 1245184, 0, 0, 1245244, 0, 0, 1310720, 0, 0, 1310780, 0, 0, 1376256, 0, 0, 1376316, 0, 0, 1441792, 0, 0, 1441852, 0, 0, 1507328, 0, 0, 1507388, 0, 0, 1572864, 0, 0, 1572924, 0, 0, 1638400, 0, 0, 1638460, 0, 0, 1703936, 0, 0, 1703996, 0, 0, 1769472, 0, 0, 1769532, 0, 0, 1835008, 0, 0, 1835068, 0, 0, 1900544, 0, 0, 1900604, 0, 0, 1966080, 0, 0, 1966140, 0, 0, 2031616, 0, 0, 2031676, 0, 0, 2097152, 0, 0, 2097212, 0, 0, 2162688, 0, 0, 2162748, 0, 0, 2228224, 0, 0, 2228284, 0, 0, 2293760, 0, 0, 2293820, 0, 0, 2359296, 0, 0, 2359356, 0, 0, 2424832, 0, 0, 2424892, 0, 0, 2490368, 0, 0, 2490428, 0, 0, 2555904, 0, 0, 2555905, 0, 0, 2555906, 0, 0, 2555907, 0, 0, 2555908, 0, 0, 2555909, 0, 0, 2555910, 0, 0, 2555911, 0, 0, 2555912, 0, 0, 2555913, 0, 0, 2555914, 0, 0, 2555915, 0, 0, 2555916, 0, 0, 2555917, 0, 0, 2555918, 0, 0, 2555919, 0, 0, 2555920, 0, 0, 2555921, 0, 0, 2555922, 0, 0, 2555923, 0, 0, 2555924, 0, 0, 2555925, 0, 0, 2555926, 0, 0, 2555927, 0, 0, 2555928, 0, 0, 2555929, 0, 0, 2555930, 0, 0, 2555931, 0, 0, 2555932, 0, 0, 2555933, 0, 0, 2555934, 0, 0, 2555935, 0, 0, 2555936, 0, 0, 2555937, 0, 0, 2555938, 0, 0, 2555939, 0, 0, 2555940, 0, 0, 2555941, 0, 0, 2555942, 0, 0, 2555943, 0, 0, 2555944, 0, 0, 2555945, 0, 0, 2555946, 0, 0, 2555947, 0, 0, 2555948, 0, 0, 2555949, 0, 0, 2555950, 0, 0, 2555951, 0, 0, 2555952, 0, 0, 2555953, 0, 0, 2555954, 0, 0, 2555955, 0, 0, 2555956, 0, 0, 2555957, 0, 0, 2555958, 0, 0, 2555959, 0, 0, 2555960, 0, 0, 2555961, 0, 0, 2555962, 0, 0, 2555963, 0, 0, 2555964, 0, 0 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] +script = ExtResource( 3 ) + +[node name="Tween" type="Tween" parent="StaticBody2D"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 413.838, 598.422 ) +shape = SubResource( 5 ) + +[node name="Sprite" type="Sprite" parent="StaticBody2D/CollisionShape2D"] +position = Vector2( -0.0883788, 0 ) +scale = Vector2( 23.7344, 1 ) +texture = ExtResource( 2 ) diff --git a/src/Levels/ApproxLevel.tscn b/src/Levels/Simple Level.tscn similarity index 82% rename from src/Levels/ApproxLevel.tscn rename to src/Levels/Simple Level.tscn index 5b09929..5b7c354 100644 --- a/src/Levels/ApproxLevel.tscn +++ b/src/Levels/Simple Level.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://src/Actor/Blobby.tscn" type="PackedScene" id=1] -[ext_resource path="res://start-assets/Basic stone block.png" type="Texture" id=2] -[ext_resource path="res://start-assets/background.png" type="Texture" id=4] +[ext_resource path="res://assets/environment/blocks/Basic stone block.png" type="Texture" id=2] +[ext_resource path="res://src/Contraptions/Platform/Track.tscn" type="PackedScene" id=3] +[ext_resource path="res://assets/environment/background/background.png" type="Texture" id=4] [sub_resource type="NavigationPolygon" id=1] vertices = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) @@ -45,6 +46,12 @@ __meta__ = { "_edit_vertical_guides_": [ 2880.0 ] } +[node name="Blobby" parent="." instance=ExtResource( 1 )] +position = Vector2( 46.7551, 565.6 ) + +[node name="Track" parent="." instance=ExtResource( 3 )] +position = Vector2( 327.524, 546.169 ) + [node name="CanvasLayer" type="CanvasLayer" parent="."] layer = -1 @@ -58,52 +65,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Blobby" parent="." instance=ExtResource( 1 )] -position = Vector2( 85.2018, 551.133 ) -jump_buffer_filled = null - -[node name="Player" parent="Blobby" index="0"] -position = Vector2( 0.279999, 0 ) - -[node name="CollisionShape2D" parent="Blobby" index="1"] -position = Vector2( 0, 0.14032 ) - -[node name="Camera2D" parent="Blobby" index="2"] -limit_top = 272 -limit_right = 974 -limit_bottom = 638 -limit_smoothed = false -smoothing_speed = 1.0 -drag_margin_bottom = 0.08 - -[node name="CollisionShape2D" parent="Blobby/EnemyDetector" index="0"] -position = Vector2( 0, 0.14032 ) - -[node name="WallRaycasts" parent="Blobby" index="6"] -position = Vector2( 0, 0.14032 ) - -[node name="LeftWallRaycast" parent="Blobby/WallRaycasts" index="0"] -position = Vector2( -4.56001, -0.982147 ) - -[node name="Left_Wallcast1" parent="Blobby/WallRaycasts/LeftWallRaycast" index="0"] -position = Vector2( -6.16, -3.41351 ) -collision_mask = 8 - -[node name="Left_Wallcast2" parent="Blobby/WallRaycasts/LeftWallRaycast" index="1"] -position = Vector2( -6.16, 17.3041 ) -collision_mask = 8 - -[node name="RightWallRaycast" parent="Blobby/WallRaycasts" index="1"] -position = Vector2( 3.15692, -0.982147 ) - -[node name="Right_Wallcast1" parent="Blobby/WallRaycasts/RightWallRaycast" index="0"] -position = Vector2( 7.57186, -3.41351 ) -collision_mask = 8 - -[node name="Right_Wallcast2" parent="Blobby/WallRaycasts/RightWallRaycast" index="1"] -position = Vector2( 7.57186, 17.3041 ) -collision_mask = 8 - [node name="TileMap" type="TileMap" parent="."] tile_set = SubResource( 4 ) cell_size = Vector2( 16, 16 ) @@ -112,5 +73,3 @@ collision_layer = 8 collision_mask = 2147483648 format = 1 tile_data = PoolIntArray( 1114112, 0, 0, 1114113, 0, 0, 1114114, 0, 0, 1114115, 0, 0, 1114116, 0, 0, 1114117, 0, 0, 1114118, 0, 0, 1114119, 0, 0, 1114120, 0, 0, 1114121, 0, 0, 1114122, 0, 0, 1114123, 0, 0, 1114124, 0, 0, 1114125, 0, 0, 1114126, 0, 0, 1114127, 0, 0, 1114128, 0, 0, 1114129, 0, 0, 1114130, 0, 0, 1114131, 0, 0, 1114132, 0, 0, 1114133, 0, 0, 1114134, 0, 0, 1114135, 0, 0, 1114136, 0, 0, 1114137, 0, 0, 1114138, 0, 0, 1114139, 0, 0, 1114140, 0, 0, 1114141, 0, 0, 1114142, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114150, 0, 0, 1114151, 0, 0, 1114152, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 0, 1114160, 0, 0, 1114161, 0, 0, 1114162, 0, 0, 1114163, 0, 0, 1114164, 0, 0, 1114165, 0, 0, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 0, 1114169, 0, 0, 1114170, 0, 0, 1114171, 0, 0, 1114172, 0, 0, 1179648, 0, 0, 1179708, 0, 0, 1245184, 0, 0, 1245244, 0, 0, 1310720, 0, 0, 1310780, 0, 0, 1376256, 0, 0, 1376316, 0, 0, 1441792, 0, 0, 1441852, 0, 0, 1507328, 0, 0, 1507388, 0, 0, 1572864, 0, 0, 1572865, 0, 0, 1572866, 0, 0, 1572867, 0, 0, 1572924, 0, 0, 1638400, 0, 0, 1638401, 0, 0, 1638402, 0, 0, 1638460, 0, 0, 1703936, 0, 0, 1703937, 0, 0, 1703938, 0, 0, 1703943, 0, 0, 1703944, 0, 0, 1703996, 0, 0, 1769472, 0, 0, 1769473, 0, 0, 1769474, 0, 0, 1769479, 0, 0, 1769480, 0, 0, 1769481, 0, 0, 1769482, 0, 0, 1769483, 0, 0, 1769487, 0, 0, 1769488, 0, 0, 1769489, 0, 0, 1769495, 0, 0, 1769500, 0, 0, 1769501, 0, 0, 1769502, 0, 0, 1769503, 0, 0, 1769504, 0, 0, 1769526, 0, 0, 1769527, 0, 0, 1769532, 0, 0, 1835008, 0, 0, 1835009, 0, 0, 1835044, 0, 0, 1835045, 0, 0, 1835068, 0, 0, 1900544, 0, 0, 1900565, 0, 0, 1900566, 0, 0, 1900584, 0, 0, 1900585, 0, 0, 1900586, 0, 0, 1900587, 0, 0, 1900588, 0, 0, 1900604, 0, 0, 1966080, 0, 0, 1966139, 0, 0, 1966140, 0, 0, 2031616, 0, 0, 2031663, 0, 0, 2031664, 0, 0, 2031675, 0, 0, 2031676, 0, 0, 2097152, 0, 0, 2097201, 0, 0, 2097202, 0, 0, 2097208, 0, 0, 2097209, 0, 0, 2097210, 0, 0, 2097211, 0, 0, 2097212, 0, 0, 2162688, 0, 0, 2162744, 0, 0, 2162745, 0, 0, 2162746, 0, 0, 2162747, 0, 0, 2162748, 0, 0, 2228224, 0, 0, 2228241, 0, 0, 2228277, 0, 0, 2228278, 0, 0, 2228279, 0, 0, 2228280, 0, 0, 2228281, 0, 0, 2228282, 0, 0, 2228283, 0, 0, 2228284, 0, 0, 2293760, 0, 0, 2293771, 0, 0, 2293777, 0, 0, 2293778, 0, 0, 2293813, 0, 0, 2293814, 0, 0, 2293815, 0, 0, 2293816, 0, 0, 2293817, 0, 0, 2293818, 0, 0, 2293819, 0, 0, 2293820, 0, 0, 2359296, 0, 0, 2359297, 0, 0, 2359298, 0, 0, 2359299, 0, 0, 2359300, 0, 0, 2359301, 0, 0, 2359302, 0, 0, 2359303, 0, 0, 2359304, 0, 0, 2359305, 0, 0, 2359306, 0, 0, 2359307, 0, 0, 2359308, 0, 0, 2359309, 0, 0, 2359310, 0, 0, 2359311, 0, 0, 2359312, 0, 0, 2359313, 0, 0, 2359314, 0, 0, 2359315, 0, 0, 2359316, 0, 0, 2359317, 0, 0, 2359321, 0, 0, 2359322, 0, 0, 2359323, 0, 0, 2359324, 0, 0, 2359325, 0, 0, 2359326, 0, 0, 2359327, 0, 0, 2359328, 0, 0, 2359329, 0, 0, 2359330, 0, 0, 2359331, 0, 0, 2359332, 0, 0, 2359333, 0, 0, 2359334, 0, 0, 2359335, 0, 0, 2359336, 0, 0, 2359342, 0, 0, 2359343, 0, 0, 2359344, 0, 0, 2359345, 0, 0, 2359346, 0, 0, 2359347, 0, 0, 2359348, 0, 0, 2359349, 0, 0, 2359350, 0, 0, 2359351, 0, 0, 2359352, 0, 0, 2359353, 0, 0, 2359354, 0, 0, 2359355, 0, 0, 2359356, 0, 0, 2424832, 0, 0, 2424833, 0, 0, 2424834, 0, 0, 2424835, 0, 0, 2424836, 0, 0, 2424837, 0, 0, 2424838, 0, 0, 2424839, 0, 0, 2424840, 0, 0, 2424841, 0, 0, 2424842, 0, 0, 2424843, 0, 0, 2424844, 0, 0, 2424845, 0, 0, 2424846, 0, 0, 2424847, 0, 0, 2424848, 0, 0, 2424849, 0, 0, 2424850, 0, 0, 2424851, 0, 0, 2424852, 0, 0, 2424853, 0, 0, 2424854, 0, 0, 2424857, 0, 0, 2424858, 0, 0, 2424859, 0, 0, 2424860, 0, 0, 2424861, 0, 0, 2424862, 0, 0, 2424863, 0, 0, 2424864, 0, 0, 2424865, 0, 0, 2424866, 0, 0, 2424867, 0, 0, 2424868, 0, 0, 2424869, 0, 0, 2424870, 0, 0, 2424871, 0, 0, 2424872, 0, 0, 2424873, 0, 0, 2424874, 0, 0, 2424878, 0, 0, 2424879, 0, 0, 2424880, 0, 0, 2424881, 0, 0, 2424882, 0, 0, 2424883, 0, 0, 2424884, 0, 0, 2424885, 0, 0, 2424886, 0, 0, 2424887, 0, 0, 2424888, 0, 0, 2424889, 0, 0, 2424890, 0, 0, 2424891, 0, 0, 2424892, 0, 0, 2490368, 0, 0, 2490369, 0, 0, 2490370, 0, 0, 2490371, 0, 0, 2490372, 0, 0, 2490373, 0, 0, 2490374, 0, 0, 2490375, 0, 0, 2490376, 0, 0, 2490377, 0, 0, 2490378, 0, 0, 2490379, 0, 0, 2490380, 0, 0, 2490381, 0, 0, 2490382, 0, 0, 2490383, 0, 0, 2490384, 0, 0, 2490385, 0, 0, 2490386, 0, 0, 2490387, 0, 0, 2490388, 0, 0, 2490389, 0, 0, 2490390, 0, 0, 2490393, 0, 0, 2490394, 0, 0, 2490395, 0, 0, 2490396, 0, 0, 2490397, 0, 0, 2490398, 0, 0, 2490399, 0, 0, 2490400, 0, 0, 2490401, 0, 0, 2490402, 0, 0, 2490403, 0, 0, 2490404, 0, 0, 2490405, 0, 0, 2490406, 0, 0, 2490407, 0, 0, 2490408, 0, 0, 2490409, 0, 0, 2490410, 0, 0, 2490414, 0, 0, 2490415, 0, 0, 2490416, 0, 0, 2490417, 0, 0, 2490418, 0, 0, 2490419, 0, 0, 2490420, 0, 0, 2490421, 0, 0, 2490422, 0, 0, 2490423, 0, 0, 2490424, 0, 0, 2490425, 0, 0, 2490426, 0, 0, 2490427, 0, 0, 2490428, 0, 0, 2555904, 0, 0, 2555905, 0, 0, 2555906, 0, 0, 2555907, 0, 0, 2555908, 0, 0, 2555909, 0, 0, 2555910, 0, 0, 2555911, 0, 0, 2555912, 0, 0, 2555913, 0, 0, 2555914, 0, 0, 2555915, 0, 0, 2555916, 0, 0, 2555917, 0, 0, 2555918, 0, 0, 2555919, 0, 0, 2555920, 0, 0, 2555921, 0, 0, 2555922, 0, 0, 2555923, 0, 0, 2555924, 0, 0, 2555925, 0, 0, 2555926, 0, 0, 2555927, 0, 0, 2555928, 0, 0, 2555929, 0, 0, 2555930, 0, 0, 2555931, 0, 0, 2555932, 0, 0, 2555933, 0, 0, 2555934, 0, 0, 2555935, 0, 0, 2555936, 0, 0, 2555937, 0, 0, 2555938, 0, 0, 2555939, 0, 0, 2555940, 0, 0, 2555941, 0, 0, 2555942, 0, 0, 2555943, 0, 0, 2555944, 0, 0, 2555945, 0, 0, 2555946, 0, 0, 2555947, 0, 0, 2555948, 0, 0, 2555949, 0, 0, 2555950, 0, 0, 2555951, 0, 0, 2555952, 0, 0, 2555953, 0, 0, 2555954, 0, 0, 2555955, 0, 0, 2555956, 0, 0, 2555957, 0, 0, 2555958, 0, 0, 2555959, 0, 0, 2555960, 0, 0, 2555961, 0, 0, 2555962, 0, 0, 2555963, 0, 0, 2555964, 0, 0 ) - -[editable path="Blobby"] diff --git a/src/Levels/StaticBody2D.gd b/src/Levels/StaticBody2D.gd new file mode 100644 index 0000000..a693bd4 --- /dev/null +++ b/src/Levels/StaticBody2D.gd @@ -0,0 +1,16 @@ +extends StaticBody2D + + +# Declare member variables here. Examples: +# var a: int = 2 +# var b: String = "text" + + +# 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: float) -> void: +# pass diff --git a/src/Levels/Tween.gd b/src/Levels/Tween.gd new file mode 100644 index 0000000..8c62465 --- /dev/null +++ b/src/Levels/Tween.gd @@ -0,0 +1,16 @@ +extends Tween + + +# Declare member variables here. Examples: +# var a: int = 2 +# var b: String = "text" + + +# 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: float) -> void: +# pass diff --git a/src/Objects/Coin.gd b/src/Neutral Objects/Coin.gd similarity index 100% rename from src/Objects/Coin.gd rename to src/Neutral Objects/Coin.gd diff --git a/src/Objects/Coin.tscn b/src/Neutral Objects/Coin.tscn similarity index 93% rename from src/Objects/Coin.tscn rename to src/Neutral Objects/Coin.tscn index a591267..a09d516 100644 --- a/src/Objects/Coin.tscn +++ b/src/Neutral Objects/Coin.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=2] -[ext_resource path="res://start-assets/coin.png" type="Texture" id=1] -[ext_resource path="res://src/Objects/Coin.gd" type="Script" id=2] +[ext_resource path="res://assets/neutral object/coin.png" type="Texture" id=1] +[ext_resource path="res://src/Neutral Objects/Coin.gd" type="Script" id=2] [sub_resource type="CircleShape2D" id=1] radius = 34.0147 diff --git a/src/UserInterface/ChangeSceneButton.tscn b/src/UserInterface/Buttons/ChangeSceneButton.tscn similarity index 67% rename from src/UserInterface/ChangeSceneButton.tscn rename to src/UserInterface/Buttons/ChangeSceneButton.tscn index f1bfcf1..498a7c2 100644 --- a/src/UserInterface/ChangeSceneButton.tscn +++ b/src/UserInterface/Buttons/ChangeSceneButton.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://src/UserInterface/PlayButton.gd" type="Script" id=1] +[ext_resource path="res://src/UserInterface/Buttons/PlayButton.gd" type="Script" id=1] [node name="ChangeSceneButton" type="Button"] margin_right = 139.0 @@ -8,7 +8,5 @@ margin_bottom = 78.0 size_flags_vertical = 3 text = "Begin" script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} + [connection signal="button_up" from="." to="." method="_on_button_up"] diff --git a/src/UserInterface/EndsScreen.tscn b/src/UserInterface/Buttons/EndsScreen.tscn similarity index 69% rename from src/UserInterface/EndsScreen.tscn rename to src/UserInterface/Buttons/EndsScreen.tscn index b9c0403..73c1397 100644 --- a/src/UserInterface/EndsScreen.tscn +++ b/src/UserInterface/Buttons/EndsScreen.tscn @@ -1,13 +1,14 @@ [gd_scene load_steps=9 format=2] -[ext_resource path="res://start-assets/background.png" type="Texture" id=1] -[ext_resource path="res://src/UserInterface/ChangeSceneButton.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/UserInterface/QuitButton.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/UserInterface/StatsLabel.tscn" type="PackedScene" id=4] -[ext_resource path="res://src/UserInterface/StatsLabel.gd" type="Script" id=5] -[ext_resource path="res://start-assets/ui_theme.tres" type="Theme" id=6] -[ext_resource path="res://src/UserInterface/Titel.tscn" type="PackedScene" id=7] -[ext_resource path="res://start-assets/new_dynamicfont.tres" type="DynamicFont" id=8] +[ext_resource path="res://assets/environment/background/background.png" type="Texture" id=1] +[ext_resource path="res://src/UserInterface/Buttons/ChangeSceneButton.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/UserInterface/Buttons/QuitButton.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/UserInterface/Buttons/StatsLabel.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/UserInterface/Buttons/StatsLabel.gd" type="Script" id=5] +[ext_resource path="res://assets/meta/ui_theme.tres" type="Theme" id=6] +[ext_resource path="res://src/UserInterface/Buttons/Titel.tscn" type="PackedScene" id=7] +[ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=8] + [node name="EndScreen" type="Control"] anchor_right = 1.0 diff --git a/src/UserInterface/PlayButton.gd b/src/UserInterface/Buttons/PlayButton.gd similarity index 100% rename from src/UserInterface/PlayButton.gd rename to src/UserInterface/Buttons/PlayButton.gd diff --git a/src/UserInterface/QuitButton.gd b/src/UserInterface/Buttons/QuitButton.gd similarity index 100% rename from src/UserInterface/QuitButton.gd rename to src/UserInterface/Buttons/QuitButton.gd diff --git a/src/UserInterface/QuitButton.tscn b/src/UserInterface/Buttons/QuitButton.tscn similarity index 79% rename from src/UserInterface/QuitButton.tscn rename to src/UserInterface/Buttons/QuitButton.tscn index 003e58c..98e94dd 100644 --- a/src/UserInterface/QuitButton.tscn +++ b/src/UserInterface/Buttons/QuitButton.tscn @@ -1,6 +1,7 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://src/UserInterface/QuitButton.gd" type="Script" id=1] +[ext_resource path="res://src/UserInterface/Buttons/QuitButton.gd" type="Script" id=1] + [node name="QuitButton" type="Button"] anchor_left = 0.5 diff --git a/src/UserInterface/RetryButton.gd b/src/UserInterface/Buttons/RetryButton.gd similarity index 100% rename from src/UserInterface/RetryButton.gd rename to src/UserInterface/Buttons/RetryButton.gd diff --git a/src/UserInterface/RetryButton.tscn b/src/UserInterface/Buttons/RetryButton.tscn similarity index 76% rename from src/UserInterface/RetryButton.tscn rename to src/UserInterface/Buttons/RetryButton.tscn index 3a8a91e..9950eb8 100644 --- a/src/UserInterface/RetryButton.tscn +++ b/src/UserInterface/Buttons/RetryButton.tscn @@ -1,6 +1,7 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://src/UserInterface/RetryButton.gd" type="Script" id=1] +[ext_resource path="res://src/UserInterface/Buttons/RetryButton.gd" type="Script" id=1] + [node name="RetryButton" type="Button"] margin_right = 139.0 diff --git a/src/UserInterface/StatsLabel.gd b/src/UserInterface/Buttons/StatsLabel.gd similarity index 100% rename from src/UserInterface/StatsLabel.gd rename to src/UserInterface/Buttons/StatsLabel.gd diff --git a/src/UserInterface/StatsLabel.tscn b/src/UserInterface/Buttons/StatsLabel.tscn similarity index 83% rename from src/UserInterface/StatsLabel.tscn rename to src/UserInterface/Buttons/StatsLabel.tscn index 0ebcd3f..389e27d 100644 --- a/src/UserInterface/StatsLabel.tscn +++ b/src/UserInterface/Buttons/StatsLabel.tscn @@ -1,6 +1,7 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://start-assets/montserrat_extrabold.otf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/meta/montserrat_extrabold.otf" type="DynamicFontData" id=1] + [sub_resource type="DynamicFont" id=1] size = 24 diff --git a/src/UserInterface/Titel.tscn b/src/UserInterface/Buttons/Titel.tscn similarity index 70% rename from src/UserInterface/Titel.tscn rename to src/UserInterface/Buttons/Titel.tscn index 36dbe2f..dbc0c8e 100644 --- a/src/UserInterface/Titel.tscn +++ b/src/UserInterface/Buttons/Titel.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://start-assets/montserrat_extrabold.otf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/meta/montserrat_extrabold.otf" type="DynamicFontData" id=1] [sub_resource type="DynamicFont" id=1] size = 69 @@ -16,6 +16,3 @@ custom_fonts/font = SubResource( 1 ) text = "Title" align = 1 valign = 1 -__meta__ = { -"_edit_use_anchors_": false -} diff --git a/src/UserInterface/UserInterface.gd b/src/UserInterface/Buttons/UserInterface.gd similarity index 100% rename from src/UserInterface/UserInterface.gd rename to src/UserInterface/Buttons/UserInterface.gd diff --git a/src/UserInterface/UserInterface.tscn b/src/UserInterface/Buttons/UserInterface.tscn similarity index 80% rename from src/UserInterface/UserInterface.tscn rename to src/UserInterface/Buttons/UserInterface.tscn index 29b8ce9..3488476 100644 --- a/src/UserInterface/UserInterface.tscn +++ b/src/UserInterface/Buttons/UserInterface.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=6 format=2] -[ext_resource path="res://start-assets/ui_theme.tres" type="Theme" id=1] -[ext_resource path="res://src/UserInterface/QuitButton.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/UserInterface/ChangeSceneButton.tscn" type="PackedScene" id=3] -[ext_resource path="res://src/UserInterface/RetryButton.tscn" type="PackedScene" id=4] -[ext_resource path="res://src/UserInterface/UserInterface.gd" type="Script" id=5] +[ext_resource path="res://assets/meta/ui_theme.tres" type="Theme" id=1] +[ext_resource path="res://src/UserInterface/Buttons/QuitButton.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/UserInterface/Buttons/ChangeSceneButton.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/UserInterface/Buttons/RetryButton.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/UserInterface/Buttons/UserInterface.gd" type="Script" id=5] [node name="UserInterface" type="Control"] pause_mode = 2 diff --git a/src/Screens/MainScreen.tscn b/src/UserInterface/Screens/MainScreen.tscn similarity index 70% rename from src/Screens/MainScreen.tscn rename to src/UserInterface/Screens/MainScreen.tscn index 6747312..66824ab 100644 --- a/src/Screens/MainScreen.tscn +++ b/src/UserInterface/Screens/MainScreen.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=6 format=2] -[ext_resource path="res://src/UserInterface/QuitButton.tscn" type="PackedScene" id=1] -[ext_resource path="res://src/UserInterface/Titel.tscn" type="PackedScene" id=2] -[ext_resource path="res://src/UserInterface/ChangeSceneButton.tscn" type="PackedScene" id=3] -[ext_resource path="res://start-assets/background.png" type="Texture" id=4] -[ext_resource path="res://start-assets/ui_theme.tres" type="Theme" id=5] +[ext_resource path="res://src/UserInterface/Buttons/QuitButton.tscn" type="PackedScene" id=1] +[ext_resource path="res://src/UserInterface/Buttons/Titel.tscn" type="PackedScene" id=2] +[ext_resource path="res://src/UserInterface/Buttons/ChangeSceneButton.tscn" type="PackedScene" id=3] +[ext_resource path="res://assets/environment/background/background.png" type="Texture" id=4] +[ext_resource path="res://assets/meta/ui_theme.tres" type="Theme" id=5] [node name="MainScreen" type="Control"] anchor_right = 1.0 @@ -12,17 +12,11 @@ anchor_bottom = 1.0 margin_right = -1493.33 margin_bottom = -840.0 theme = ExtResource( 5 ) -__meta__ = { -"_edit_use_anchors_": false -} [node name="ViewportContainer" type="ViewportContainer" parent="."] margin_right = 426.667 margin_bottom = 240.0 stretch = true -__meta__ = { -"_edit_use_anchors_": false -} [node name="background" type="TextureRect" parent="ViewportContainer"] anchor_right = 1.0 @@ -43,7 +37,7 @@ margin_bottom = 85.0 grow_horizontal = 2 size_flags_horizontal = 2 size_flags_vertical = 2 -text = "poá¹£a" +text = "Very Bad Game" [node name="MenuContainer" type="VBoxContainer" parent="ViewportContainer"] anchor_left = 0.5 @@ -60,7 +54,7 @@ __meta__ = { [node name="PlayButton" parent="ViewportContainer/MenuContainer" instance=ExtResource( 3 )] margin_right = 97.0 margin_bottom = 38.0 -next_scene_path = "res://src/Levels/ApproxLevel.tscn" +next_scene_path = "res://src/Levels/Simple Level.tscn" [node name="QuitButton" parent="ViewportContainer/MenuContainer" instance=ExtResource( 1 )] anchor_left = 0.0 diff --git a/start-assets/Basic stone block.png b/start-assets/Basic stone block.png deleted file mode 100644 index 32487102ee9f8bf2642a1c6245277443dba5306f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!9GtH#}Etu-u{cc2NXD5vX>Y9k3U`@dF;hY zNv4iv`kBle?BP}Km4dQsZ5FP0+08FlWHA4j^o6`-JqK?bI1zUEP|blueFkpR+Nb*7 zD36MW%I*oWU3B<`r=OR&*2OQW{DpECWS=