From ae6c8bfeb36f4aa905645495be281a55a67fe338 Mon Sep 17 00:00:00 2001 From: "T. Depraz" Date: Sun, 12 Jul 2020 15:04:29 +0200 Subject: [PATCH] Added main menu --- .gitignore | 11 + Assets/Fonts/BitPotion.ttf | Bin 0 -> 9932 bytes Assets/Fonts/base_font.tres | 7 + Assets/Fonts/joystix.monospace.ttf | Bin 0 -> 47604 bytes Assets/Fonts/small_font.tres | 6 + Assets/Fonts/title_font.tres | 9 + Assets/Sprites/UI/back_arrow.png | Bin 0 -> 493 bytes .../back_arrow.png.import} | 6 +- Assets/Sprites/UI/back_arrow1.png | Bin 0 -> 252 bytes Assets/Sprites/UI/back_arrow1.png.import | 34 +++ Assets/Sprites/UI/back_arrow2.png | Bin 0 -> 217 bytes Assets/Sprites/UI/back_arrow2.png.import | 34 +++ Assets/Sprites/UI/back_arrow3.png | Bin 0 -> 254 bytes Assets/Sprites/UI/back_arrow3.png.import | 34 +++ Assets/Sprites/UI/back_arrow4.png | Bin 0 -> 249 bytes Assets/Sprites/UI/back_arrow4.png.import | 34 +++ Assets/Sprites/UI/controls_background.png | Bin 0 -> 314 bytes .../Sprites/UI/controls_background.png.import | 34 +++ Assets/Sprites/{ => UI}/key_place.png | Bin Assets/Sprites/UI/key_place.png.import | 34 +++ Assets/Sprites/{ => UI}/left.png | Bin Assets/Sprites/{ => UI}/left.png.import | 6 +- Assets/Sprites/UI/palette.aseprite | Bin 0 -> 338 bytes Assets/Sprites/{ => UI}/right.png | Bin Assets/Sprites/{ => UI}/right.png.import | 6 +- Assets/Sprites/UI/spacebar.png | Bin 0 -> 556 bytes .../spacebar.png.import} | 6 +- Assets/Sprites/{ => UI}/spacebar_place.png | Bin .../{ => UI}/spacebar_place.png.import | 6 +- Assets/Sprites/UI/theme-Sheet.png | Bin 0 -> 304 bytes Assets/Sprites/UI/theme-Sheet.png.import | 34 +++ Assets/Sprites/UI/transition.png | Bin 0 -> 147 bytes Assets/Sprites/UI/transition.png.import | 34 +++ Assets/Sprites/controls_background.png | Bin 152 -> 0 bytes Assets/Sprites/effects/effects.aseprite | Bin 0 -> 990 bytes Assets/Sprites/effects/fireball_particle.png | Bin 0 -> 90 bytes .../fireball_particle.png.import} | 6 +- Assets/Sprites/effects/flag_particle.png | Bin 0 -> 97 bytes .../Sprites/effects/flag_particle.png.import | 34 +++ .../Sprites/effects/player_death_particle.png | Bin 0 -> 140 bytes .../effects/player_death_particle.png.import | 34 +++ Assets/Sprites/effects/shooter_smoke.png | Bin 0 -> 252 bytes .../Sprites/effects/shooter_smoke.png.import | 34 +++ Assets/Sprites/fireball/fireball-Sheet.png | Bin 0 -> 402 bytes .../fireball/fireball-Sheet.png.import | 34 +++ Assets/Sprites/fireball/fireball.aseprite | Bin 0 -> 994 bytes Assets/Sprites/flag/flag-Sheet.png | Bin 0 -> 615 bytes Assets/Sprites/flag/flag-Sheet.png.import | 34 +++ Assets/Sprites/flag/flag.aseprite | Bin 0 -> 1545 bytes Assets/Sprites/player-Sheet.png | Bin 2602 -> 3452 bytes Assets/Sprites/player.aseprite | Bin 3599 -> 4178 bytes Assets/Sprites/shooter/shooter-Sheet.png | Bin 0 -> 1103 bytes .../Sprites/shooter/shooter-Sheet.png.import | 34 +++ Assets/Sprites/shooter/shooter1.png | Bin 420 -> 0 bytes Assets/Sprites/shooter/shooter2.png | Bin 412 -> 0 bytes Assets/Sprites/shooter/shooter2.png.import | 34 --- Assets/Sprites/shooter/shooter3.png | Bin 445 -> 0 bytes Assets/Sprites/shooter/shooter3.png.import | 34 --- Assets/Sprites/shooter/shooter4.png | Bin 440 -> 0 bytes Assets/Sprites/shooter/shooter4.png.import | 34 --- Assets/Sprites/shooter/shooter5.png | Bin 442 -> 0 bytes Assets/Sprites/shooter/shooter5.png.import | 34 --- Assets/Sprites/spacebar.png | Bin 568 -> 0 bytes Assets/Sprites/spikes/spikes.aseprite | Bin 0 -> 1740 bytes Assets/Sprites/spikes/spikes.png | Bin 0 -> 1412 bytes .../spikes.png.import} | 6 +- Assets/Sprites/spikes/spikes1.png | Bin 0 -> 537 bytes Assets/Sprites/spikes/spikes1.png.import | 34 +++ Assets/Sprites/spikes/spikes2.png | Bin 0 -> 472 bytes Assets/Sprites/spikes/spikes2.png.import | 34 +++ Assets/Sprites/spikes/spikes3.png | Bin 0 -> 539 bytes Assets/Sprites/spikes/spikes3.png.import | 34 +++ Assets/Sprites/spikes/spikes4.png | Bin 0 -> 529 bytes Assets/Sprites/spikes/spikes4.png.import | 34 +++ Assets/Sprites/spikes/spikes5.png | Bin 0 -> 511 bytes Assets/Sprites/spikes/spikes5.png.import | 34 +++ Assets/Sprites/spikes/spikes6.png | Bin 0 -> 576 bytes Assets/Sprites/spikes/spikes6.png.import | 34 +++ Assets/Sprites/spikes/spikes7.png | Bin 0 -> 536 bytes Assets/Sprites/spikes/spikes7.png.import | 34 +++ Assets/Sprites/spikes/spikes8.png | Bin 0 -> 512 bytes Assets/Sprites/spikes/spikes8.png.import | 34 +++ Assets/Sprites/spikes/spikes_animated.tres | 20 ++ Assets/Sprites/terrain_tiles.png | Bin 6271 -> 4546 bytes Assets/Sprites/zones_tiles.png | Bin 440 -> 0 bytes Assets/Sprites/zones_tiles.png.import | 34 --- Assets/Themes/Main.tres | 71 +++++ .../{hazards.tres => anti_control.tres} | 120 ++++----- Assets/Tilesets/spikes.tres | 63 +++++ Assets/Tilesets/terrain_solid.tres | 221 +++++++++++++-- README.md | 6 +- Scenes/Global.tscn | 2 + Scenes/Main.tscn | 255 +++++++++++++++++- Scenes/Objects/Checkpoint.tscn | 67 +++++ Scenes/Objects/ControlJump.tscn | 21 +- Scenes/Objects/ControlLeft.tscn | 21 +- Scenes/Objects/ControlRight.tscn | 21 +- Scenes/Objects/Effect.tscn | 27 ++ Scenes/Objects/Fireball.tscn | 51 ++++ Scenes/Objects/Shooter.tscn | 99 +++++++ Scenes/Player.tscn | 27 +- Scenes/World.tscn | 115 ++++++-- Scripts/ControlBlock.gd | 56 ++-- Scripts/Fireball.gd | 25 ++ Scripts/Main.gd | 15 +- Scripts/Player.gd | 72 ++++- Scripts/Shooter.gd | 36 +++ Scripts/World.gd | 57 +++- project.godot | 19 ++ 109 files changed, 2059 insertions(+), 421 deletions(-) create mode 100644 .gitignore create mode 100644 Assets/Fonts/BitPotion.ttf create mode 100644 Assets/Fonts/base_font.tres create mode 100644 Assets/Fonts/joystix.monospace.ttf create mode 100644 Assets/Fonts/small_font.tres create mode 100644 Assets/Fonts/title_font.tres create mode 100644 Assets/Sprites/UI/back_arrow.png rename Assets/Sprites/{shooter/shooter1.png.import => UI/back_arrow.png.import} (68%) create mode 100644 Assets/Sprites/UI/back_arrow1.png create mode 100644 Assets/Sprites/UI/back_arrow1.png.import create mode 100644 Assets/Sprites/UI/back_arrow2.png create mode 100644 Assets/Sprites/UI/back_arrow2.png.import create mode 100644 Assets/Sprites/UI/back_arrow3.png create mode 100644 Assets/Sprites/UI/back_arrow3.png.import create mode 100644 Assets/Sprites/UI/back_arrow4.png create mode 100644 Assets/Sprites/UI/back_arrow4.png.import create mode 100644 Assets/Sprites/UI/controls_background.png create mode 100644 Assets/Sprites/UI/controls_background.png.import rename Assets/Sprites/{ => UI}/key_place.png (100%) create mode 100644 Assets/Sprites/UI/key_place.png.import rename Assets/Sprites/{ => UI}/left.png (100%) rename Assets/Sprites/{ => UI}/left.png.import (71%) create mode 100644 Assets/Sprites/UI/palette.aseprite rename Assets/Sprites/{ => UI}/right.png (100%) rename Assets/Sprites/{ => UI}/right.png.import (71%) create mode 100644 Assets/Sprites/UI/spacebar.png rename Assets/Sprites/{key_place.png.import => UI/spacebar.png.import} (69%) rename Assets/Sprites/{ => UI}/spacebar_place.png (100%) rename Assets/Sprites/{ => UI}/spacebar_place.png.import (67%) create mode 100644 Assets/Sprites/UI/theme-Sheet.png create mode 100644 Assets/Sprites/UI/theme-Sheet.png.import create mode 100644 Assets/Sprites/UI/transition.png create mode 100644 Assets/Sprites/UI/transition.png.import delete mode 100644 Assets/Sprites/controls_background.png create mode 100644 Assets/Sprites/effects/effects.aseprite create mode 100644 Assets/Sprites/effects/fireball_particle.png rename Assets/Sprites/{controls_background.png.import => effects/fireball_particle.png.import} (66%) create mode 100644 Assets/Sprites/effects/flag_particle.png create mode 100644 Assets/Sprites/effects/flag_particle.png.import create mode 100644 Assets/Sprites/effects/player_death_particle.png create mode 100644 Assets/Sprites/effects/player_death_particle.png.import create mode 100644 Assets/Sprites/effects/shooter_smoke.png create mode 100644 Assets/Sprites/effects/shooter_smoke.png.import create mode 100644 Assets/Sprites/fireball/fireball-Sheet.png create mode 100644 Assets/Sprites/fireball/fireball-Sheet.png.import create mode 100644 Assets/Sprites/fireball/fireball.aseprite create mode 100644 Assets/Sprites/flag/flag-Sheet.png create mode 100644 Assets/Sprites/flag/flag-Sheet.png.import create mode 100644 Assets/Sprites/flag/flag.aseprite create mode 100644 Assets/Sprites/shooter/shooter-Sheet.png create mode 100644 Assets/Sprites/shooter/shooter-Sheet.png.import delete mode 100644 Assets/Sprites/shooter/shooter1.png delete mode 100644 Assets/Sprites/shooter/shooter2.png delete mode 100644 Assets/Sprites/shooter/shooter2.png.import delete mode 100644 Assets/Sprites/shooter/shooter3.png delete mode 100644 Assets/Sprites/shooter/shooter3.png.import delete mode 100644 Assets/Sprites/shooter/shooter4.png delete mode 100644 Assets/Sprites/shooter/shooter4.png.import delete mode 100644 Assets/Sprites/shooter/shooter5.png delete mode 100644 Assets/Sprites/shooter/shooter5.png.import delete mode 100644 Assets/Sprites/spacebar.png create mode 100644 Assets/Sprites/spikes/spikes.aseprite create mode 100644 Assets/Sprites/spikes/spikes.png rename Assets/Sprites/{spacebar.png.import => spikes/spikes.png.import} (69%) create mode 100644 Assets/Sprites/spikes/spikes1.png create mode 100644 Assets/Sprites/spikes/spikes1.png.import create mode 100644 Assets/Sprites/spikes/spikes2.png create mode 100644 Assets/Sprites/spikes/spikes2.png.import create mode 100644 Assets/Sprites/spikes/spikes3.png create mode 100644 Assets/Sprites/spikes/spikes3.png.import create mode 100644 Assets/Sprites/spikes/spikes4.png create mode 100644 Assets/Sprites/spikes/spikes4.png.import create mode 100644 Assets/Sprites/spikes/spikes5.png create mode 100644 Assets/Sprites/spikes/spikes5.png.import create mode 100644 Assets/Sprites/spikes/spikes6.png create mode 100644 Assets/Sprites/spikes/spikes6.png.import create mode 100644 Assets/Sprites/spikes/spikes7.png create mode 100644 Assets/Sprites/spikes/spikes7.png.import create mode 100644 Assets/Sprites/spikes/spikes8.png create mode 100644 Assets/Sprites/spikes/spikes8.png.import create mode 100644 Assets/Sprites/spikes/spikes_animated.tres delete mode 100644 Assets/Sprites/zones_tiles.png delete mode 100644 Assets/Sprites/zones_tiles.png.import create mode 100644 Assets/Themes/Main.tres rename Assets/Tilesets/{hazards.tres => anti_control.tres} (69%) create mode 100644 Assets/Tilesets/spikes.tres create mode 100644 Scenes/Objects/Checkpoint.tscn create mode 100644 Scenes/Objects/Effect.tscn create mode 100644 Scenes/Objects/Fireball.tscn create mode 100644 Scenes/Objects/Shooter.tscn create mode 100644 Scripts/Fireball.gd create mode 100644 Scripts/Shooter.gd diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d06af6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ + +# Godot-specific ignores +.import/ +export.cfg +export_presets.cfg + +# Mono-specific ignores +.mono/ +data_*/ + +Builds/ \ No newline at end of file diff --git a/Assets/Fonts/BitPotion.ttf b/Assets/Fonts/BitPotion.ttf new file mode 100644 index 0000000000000000000000000000000000000000..263e7efb0510f90cf3844eeeada1a26c4e04baee GIT binary patch literal 9932 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 PK0B{JIk=8*{)X%SaR-PC literal 0 HcmV?d00001 diff --git a/Assets/Fonts/base_font.tres b/Assets/Fonts/base_font.tres new file mode 100644 index 0000000..90c7b90 --- /dev/null +++ b/Assets/Fonts/base_font.tres @@ -0,0 +1,7 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://Assets/Fonts/joystix.monospace.ttf" type="DynamicFontData" id=1] + +[resource] +size = 10 +font_data = ExtResource( 1 ) diff --git a/Assets/Fonts/joystix.monospace.ttf b/Assets/Fonts/joystix.monospace.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5fd36a5435f787a86adba9b38736d0f7fdc86687 GIT binary patch literal 47604 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 literal 0 HcmV?d00001 diff --git a/Assets/Fonts/small_font.tres b/Assets/Fonts/small_font.tres new file mode 100644 index 0000000..91855de --- /dev/null +++ b/Assets/Fonts/small_font.tres @@ -0,0 +1,6 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://Assets/Fonts/BitPotion.ttf" type="DynamicFontData" id=1] + +[resource] +font_data = ExtResource( 1 ) diff --git a/Assets/Fonts/title_font.tres b/Assets/Fonts/title_font.tres new file mode 100644 index 0000000..a29025d --- /dev/null +++ b/Assets/Fonts/title_font.tres @@ -0,0 +1,9 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://Assets/Fonts/joystix.monospace.ttf" type="DynamicFontData" id=1] + +[resource] +size = 20 +extra_spacing_top = 5 +extra_spacing_bottom = 5 +font_data = ExtResource( 1 ) diff --git a/Assets/Sprites/UI/back_arrow.png b/Assets/Sprites/UI/back_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..d3606dc4b247b8228b0bea79c5d496a4be715e41 GIT binary patch literal 493 zcmVPx$r%6OXR7i>4malHZFc8K+S3_e%lY$m75|9TN=_W;kl{UDbfw1ijR;g0^1}Q5j zYGES{R+Z9_K0rW8L5d;;m6dv+apnB!;&Z1-+lL(R^LKZ?vjdcL*M0;54uI!tlKwO= zVB2xI?YKPOh|FiZJ6+^4nz7xPfRf-L}8Jx|w*AwC4FIS+`6ya8^6_GFxC83i zUS$;Y!v1;HwY|zH91C!+2Ez$H-rT}BMdRrVuP@Jq@81$LObcnU<{hs%b1E}vm=*(o zG+Fca{-{s{(cY?j$Lke}AljSaFH7YPFieZFd{HUFHra?7X9^pAR|IALL=i~-LQ%9- zioXQ_X|jf4T1-B5%5x}qzw43PzwEEm{<6Q2>T`I!1Ee4-<3J38^!HZhe-7_=y~;R{ jWSAC^|4ZlVf6adZ*7_rN9esxu00000NkvXXu0mjfgrni| literal 0 HcmV?d00001 diff --git a/Assets/Sprites/shooter/shooter1.png.import b/Assets/Sprites/UI/back_arrow.png.import similarity index 68% rename from Assets/Sprites/shooter/shooter1.png.import rename to Assets/Sprites/UI/back_arrow.png.import index 39680a2..d595f37 100644 --- a/Assets/Sprites/shooter/shooter1.png.import +++ b/Assets/Sprites/UI/back_arrow.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/shooter1.png-1e6152c40b6591ed09a765b20414d7ef.stex" +path="res://.import/back_arrow.png-fcd8bec33cde834ec64a5412550de19e.stex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/shooter/shooter1.png" -dest_files=[ "res://.import/shooter1.png-1e6152c40b6591ed09a765b20414d7ef.stex" ] +source_file="res://Assets/Sprites/UI/back_arrow.png" +dest_files=[ "res://.import/back_arrow.png-fcd8bec33cde834ec64a5412550de19e.stex" ] [params] diff --git a/Assets/Sprites/UI/back_arrow1.png b/Assets/Sprites/UI/back_arrow1.png new file mode 100644 index 0000000000000000000000000000000000000000..d176c4919a5d6d7af3893ac5263a3e9a95686d1d GIT binary patch literal 252 zcmVPx#wn;=mR49?9lPwa$Fc5{m?Qn`HA}|p>Kut}jk_%LG5AK2P1&~Y)h66;@RJ5ws z2%>>0^e+RSTJzq^zMa4qNty#V!1+0xmpIM}7iWd@Myu?`;>Z2w;;dk=4*=MJ&}c~< ziY$q*m-D7LNplf~ohQj%+iV)xsvJ6)dv?ew7T>`?h|-3>t=;kTxpPPdN*fVBOia4A z!B!=JteHdreOsfnk#TD1Io}=3nf!#(2K-;}^D0kOD?_J~h|QA#0000Jk99J6PLrR(aUsH@3CmQ>awx1wf*0DcJs!g z3~@YHy)OuSigoH?)G;`=`S*2+B_dlT)UPiS%Gb7=ZlLg6ke`9!T1wCC4)JwSK<6=d My85}Sb4q9e0Q^r(fB*mh literal 0 HcmV?d00001 diff --git a/Assets/Sprites/UI/back_arrow2.png.import b/Assets/Sprites/UI/back_arrow2.png.import new file mode 100644 index 0000000..31b7254 --- /dev/null +++ b/Assets/Sprites/UI/back_arrow2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/back_arrow2.png-fd2a9dafbf69c0b31209cde4e51781f1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/back_arrow2.png" +dest_files=[ "res://.import/back_arrow2.png-fd2a9dafbf69c0b31209cde4e51781f1.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/UI/back_arrow3.png b/Assets/Sprites/UI/back_arrow3.png new file mode 100644 index 0000000000000000000000000000000000000000..36c763cc116448a4b17c24481b3d1686e1ecaa72 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0w6XA8<1SE`<)7qVk{1FcVbv~PUa<$v%}NHF+^ix za)JYM*ta|$AowpSA@R@o<`L!@&%XZF{~N#m|E2mBjuni;o1P`JmxK61p3{sTUb3mb zY4vH&-n#!w|JSYLHF*B`D9C`GfU_!=(riq!Uj-5!^b!&i8h)4?YH{d!Yyp`ou~cNM z#Js!vzunj0%6N2wgS&0hERc}oLY|s7gGa_KosEr+4{!d><_YSG>Y1HpKH*6X8(W6N q0!b%>uMb&)f;>DID%v)EWMWv?9_e#9IZ+Ad2L?}9KbLh*2~7YJWn)wT literal 0 HcmV?d00001 diff --git a/Assets/Sprites/UI/back_arrow3.png.import b/Assets/Sprites/UI/back_arrow3.png.import new file mode 100644 index 0000000..6e16e99 --- /dev/null +++ b/Assets/Sprites/UI/back_arrow3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/back_arrow3.png-3f80609d3f3bfa5a60b2e197f360dcc9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/back_arrow3.png" +dest_files=[ "res://.import/back_arrow3.png-3f80609d3f3bfa5a60b2e197f360dcc9.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/UI/back_arrow4.png b/Assets/Sprites/UI/back_arrow4.png new file mode 100644 index 0000000000000000000000000000000000000000..e688b1b90b1eec6016c83b1a36787cca7c251fc5 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0w6XA8<1SE`<)7qVk{1FcVbv~PUa<$v)R+dF+^ix za)JYM*ta|$AowpSA@R@o<`L!@X|~f}{IAlx_Tc7tiM}#x!kb_rX_r#Ys|7P<9bw%~Okopp{=;5>nht9u?Z?0gR ut*Ek;Ii_s_>k^Tz5)un48BZPKW_YCT{9sStqkTZ``Mj$F3uK z`(KazggvLfU!QXCLY^Og#`e75g});&8*@Z#|0{4%hmptX@%Qi5zW$0XESp&jT>e;` zk7FrjF>v@}(U~xfflsZ@M);r%qm0L&3Rf0mmI8r~kL{H#?!Do^CGqIEwVblVyr9Hy z?72K2AIH8sWpR0vPMp+&OX*b%4qXgPTUi8Fs5Ut0GO}cGDg<~lG)6ITToH0uFpXHL ayNv!N1-zRB1)l@`&*16m=d#Wzp$PyQb!`#= literal 0 HcmV?d00001 diff --git a/Assets/Sprites/UI/controls_background.png.import b/Assets/Sprites/UI/controls_background.png.import new file mode 100644 index 0000000..804f620 --- /dev/null +++ b/Assets/Sprites/UI/controls_background.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/controls_background.png-e8607ab50b2e9abc5f8927bfcc93b021.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/controls_background.png" +dest_files=[ "res://.import/controls_background.png-e8607ab50b2e9abc5f8927bfcc93b021.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/key_place.png b/Assets/Sprites/UI/key_place.png similarity index 100% rename from Assets/Sprites/key_place.png rename to Assets/Sprites/UI/key_place.png diff --git a/Assets/Sprites/UI/key_place.png.import b/Assets/Sprites/UI/key_place.png.import new file mode 100644 index 0000000..6f25226 --- /dev/null +++ b/Assets/Sprites/UI/key_place.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/key_place.png-00153811ffb4e0fea6e974554c27cc36.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/key_place.png" +dest_files=[ "res://.import/key_place.png-00153811ffb4e0fea6e974554c27cc36.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/left.png b/Assets/Sprites/UI/left.png similarity index 100% rename from Assets/Sprites/left.png rename to Assets/Sprites/UI/left.png diff --git a/Assets/Sprites/left.png.import b/Assets/Sprites/UI/left.png.import similarity index 71% rename from Assets/Sprites/left.png.import rename to Assets/Sprites/UI/left.png.import index 975c7ff..9d268bb 100644 --- a/Assets/Sprites/left.png.import +++ b/Assets/Sprites/UI/left.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/left.png-3d705574e28ed47072146d7976ecd186.stex" +path="res://.import/left.png-895e65649ac8f2fc1ccdaccd9cf25518.stex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/left.png" -dest_files=[ "res://.import/left.png-3d705574e28ed47072146d7976ecd186.stex" ] +source_file="res://Assets/Sprites/UI/left.png" +dest_files=[ "res://.import/left.png-895e65649ac8f2fc1ccdaccd9cf25518.stex" ] [params] diff --git a/Assets/Sprites/UI/palette.aseprite b/Assets/Sprites/UI/palette.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..aa93d62595653434ed1ec24a79544ffd947f8c95 GIT binary patch literal 338 zcmWGyWMFu(l#zjxfsug&h#44CfEWRQ;vhi=0U)FWxCAux*GCqxtt>!x01!(ma6+x( zfYNBxe+C9=X=xy-=MoJh{Zbo%WN!0pAh~}3B_R3o{Wl=_|6AmLRiIWDkiVct0`&nk z0d)YC1J!~Qev4EBDN^7^vIVG{fs4T@F*!TED8Do>MH|RxRe&h?&jg`CW->BV%t=m2 QNlHshO@0m(Ze&me0B2V*OaK4? literal 0 HcmV?d00001 diff --git a/Assets/Sprites/right.png b/Assets/Sprites/UI/right.png similarity index 100% rename from Assets/Sprites/right.png rename to Assets/Sprites/UI/right.png diff --git a/Assets/Sprites/right.png.import b/Assets/Sprites/UI/right.png.import similarity index 71% rename from Assets/Sprites/right.png.import rename to Assets/Sprites/UI/right.png.import index 3c11731..3a1bc6b 100644 --- a/Assets/Sprites/right.png.import +++ b/Assets/Sprites/UI/right.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/right.png-428ee97e53a186622ceca4ca45829464.stex" +path="res://.import/right.png-2465c4ae5e337a92cc5d5324c9d5312b.stex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/right.png" -dest_files=[ "res://.import/right.png-428ee97e53a186622ceca4ca45829464.stex" ] +source_file="res://Assets/Sprites/UI/right.png" +dest_files=[ "res://.import/right.png-2465c4ae5e337a92cc5d5324c9d5312b.stex" ] [params] diff --git a/Assets/Sprites/UI/spacebar.png b/Assets/Sprites/UI/spacebar.png new file mode 100644 index 0000000000000000000000000000000000000000..f713340e06529c35eab7475678fe671c3476cd59 GIT binary patch literal 556 zcmV+{0@MA8P)Px$=1D|BRCt{2n=NmHU=)Q9%l<`^ek843>Y6lF&GbZNQ5865Q7maPRPAsTD3FNh ziSid_C-#x-cQCO*ZWplkGDiV9Ntg-`u*@3uyHElG_^4?gHbHzuzvI;S)1K0-GvVH*D0bA|=0xrt_7l7CX*@qHseSUod zuwB3aPywu03#?ZQrUf1V8Jr1$0-!4}3xYZT88j=(vu~6c5NJ~%E6TPf$ox=S{W#o& u{ofPpy00O10DS?S=?Pw%oCn~1Ki~(MDRY3yWh_nr0000?yC9;q!^2X+?^QKos)S96$K+&+ZaS$vD)M zcXNHgnGfghecF1T!Qq)rqoYuCuxw-{!?WM&YhPH$>&T~^yZo~#b*b@l%}(7nX~$3f zwowi74iGGhI^>eN_s`>>NoVK#9b;jb`FTx^P&Ctp?Eeow7ww;G)jIulZSB0X;(NG5 z{I#62{#*zvFxsEAHEMH_oxh>f4?QpUkOl)S2MJMy9xeelR*uC?ErE=ORxl)jg=g&I z&MLG1f6Qg+%fMp~3w)~2KA$$xIe}sAV%5+2UO(MME{84I4D>aFr>mdKI;Vst0CO3A A#sB~S literal 0 HcmV?d00001 diff --git a/Assets/Sprites/UI/theme-Sheet.png.import b/Assets/Sprites/UI/theme-Sheet.png.import new file mode 100644 index 0000000..06f1c2f --- /dev/null +++ b/Assets/Sprites/UI/theme-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/theme-Sheet.png-c1fc5ddf9ef0600c6e1f6030ac5d9756.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/theme-Sheet.png" +dest_files=[ "res://.import/theme-Sheet.png-c1fc5ddf9ef0600c6e1f6030ac5d9756.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/UI/transition.png b/Assets/Sprites/UI/transition.png new file mode 100644 index 0000000000000000000000000000000000000000..55e041e74b7280d6a5be15a261027dabe07eab56 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|d_7$pLo9le zQyiEtUApxD;?W5QFE96(ocL2i#%b0@Nv3px)slAw+=@(;r4PCExuqQNSohYzVI#L2 uuY|};hGPpfG$&_qTsz~kM)Ac>Nrnyc6f+*i@k9a*X7F_Nb6Mw<&;$T(!7#l5 literal 0 HcmV?d00001 diff --git a/Assets/Sprites/UI/transition.png.import b/Assets/Sprites/UI/transition.png.import new file mode 100644 index 0000000..dba2757 --- /dev/null +++ b/Assets/Sprites/UI/transition.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/transition.png-9d595f3fd9dd278ea0f177f150ba7ce1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/transition.png" +dest_files=[ "res://.import/transition.png-9d595f3fd9dd278ea0f177f150ba7ce1.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/controls_background.png b/Assets/Sprites/controls_background.png deleted file mode 100644 index 052e6065df8d30084209f8fdf486c34834315d24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|f;?RuLo9le zzxe0>nJ*xC!htVhLy|4?<6nQL|I?4yI8TRJNQp@@B4LhkblSuvH;<_IHiAH>&gzK= wRxmDRmdKI;Vst0Bt@rB>(^b diff --git a/Assets/Sprites/effects/effects.aseprite b/Assets/Sprites/effects/effects.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..bba59ea5a95caf2418fa89af6f8668fd448bf249 GIT binary patch literal 990 zcmb`GUr19?9LIn6-c1)|8xy2@*`Yt9K-|B$Dvcb*z*^9nw3MKxGr@sIA(8Y4YSEYm z>mNnhgD?414@po6S}=T&3WW(}MNO)QLL%crYqoCRds%n4(PL+v59ge_eSe>G&fQyq zD0|057JL|SMAU^|YFJYi)#s(v|2Ik^J-=*Fs~QkngI>whlDZ zHT8qe$a(N!-y#?tk-@{yKY&kP{{&?;qLF(K!3$>-U{5RtwueLDiRMA@uGO;=Fcr`n6{Wud!@p+tf%)It?%=o7OfNx!Otd^mpT{>)-15wMAc zM@t+14$<@V$I#`+$$g2v4tle>&KxWY_G!V~zk;ij;P+STCSQK5E8bSf&1bL1lbQ6H zoFvd#&f42jme-)=;Vsb)&{Ev}AJOL4!h>;PEMfhAPU7j>@Tz)mSx&8%!~d1TVZ#|* W!mQ6eCww+i#|@#{qW-q@AN~z^J_L~f literal 0 HcmV?d00001 diff --git a/Assets/Sprites/effects/fireball_particle.png b/Assets/Sprites/effects/fireball_particle.png new file mode 100644 index 0000000000000000000000000000000000000000..d755a5a94aebeae4f7f57d06325475c1e9e4fbf7 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^Od!m`1|*BN@u~nR#^NA%Cx&(BWL^R}BAzaeAsjQ4 ka}tdHpFaQuM;KTcq!=0ZEI6Dw1t`zp>FVdQ&MBb@07J?b5&!@I literal 0 HcmV?d00001 diff --git a/Assets/Sprites/controls_background.png.import b/Assets/Sprites/effects/fireball_particle.png.import similarity index 66% rename from Assets/Sprites/controls_background.png.import rename to Assets/Sprites/effects/fireball_particle.png.import index 3c1753b..fc0da8b 100644 --- a/Assets/Sprites/controls_background.png.import +++ b/Assets/Sprites/effects/fireball_particle.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/controls_background.png-8075a9795c163e6849a5138607b40f31.stex" +path="res://.import/fireball_particle.png-410a0545b899daa39388bd91b8fae583.stex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Sprites/controls_background.png" -dest_files=[ "res://.import/controls_background.png-8075a9795c163e6849a5138607b40f31.stex" ] +source_file="res://Assets/Sprites/effects/fireball_particle.png" +dest_files=[ "res://.import/fireball_particle.png-410a0545b899daa39388bd91b8fae583.stex" ] [params] diff --git a/Assets/Sprites/effects/flag_particle.png b/Assets/Sprites/effects/flag_particle.png new file mode 100644 index 0000000000000000000000000000000000000000..af72fd2662b2fe481ea7e1b89acef6a0ba1ce325 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^%plCc1|-8Yw(bW~jKx9jP7LeL$-D$|q&;06LpWw8 qCjh~ZfA;U}nSnsLhmqZYk>SE6&fooK!>WMF7(8A5T-G@yGywqO#~68C{b(S1j|Z5SnLF+F-Qc(B~P| mHXYoId+zV=p8B@Tj$w_z@b7uks#gO|WbkzLb6Mw<&;$VgaWAw0 literal 0 HcmV?d00001 diff --git a/Assets/Sprites/effects/player_death_particle.png.import b/Assets/Sprites/effects/player_death_particle.png.import new file mode 100644 index 0000000..74df625 --- /dev/null +++ b/Assets/Sprites/effects/player_death_particle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/player_death_particle.png-17399c3bbc245dae39c1e7355efb81e4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/effects/player_death_particle.png" +dest_files=[ "res://.import/player_death_particle.png-17399c3bbc245dae39c1e7355efb81e4.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/effects/shooter_smoke.png b/Assets/Sprites/effects/shooter_smoke.png new file mode 100644 index 0000000000000000000000000000000000000000..cb634950b703847fc46fae6f5915dc1f8eb5a576 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^4L~fw!3HGnMU-~{DaPU;cPEB*=VV?2Iomv4978f1 z-%dNo%c98Pn!a7(*ZRY4Y5rZ)c^YcP@Op)iC_iysy2FCeL+Ps_Uk?bawdp zv?t-;Z|_Zixb?G*<@sOp4hhab5O;mw){kB5Z#pU6iq7thKhGi8dqdc*z%1IzQG3nR z%4;jWt=aqbRlUT0!4~m^XLIF_I%xo14D^vkowrZDkJIm2{UENVtDnm{r-UW|1dnUp literal 0 HcmV?d00001 diff --git a/Assets/Sprites/effects/shooter_smoke.png.import b/Assets/Sprites/effects/shooter_smoke.png.import new file mode 100644 index 0000000..37f17a3 --- /dev/null +++ b/Assets/Sprites/effects/shooter_smoke.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shooter_smoke.png-d2b7557e1d1a8da72522523cd3d8f83f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/effects/shooter_smoke.png" +dest_files=[ "res://.import/shooter_smoke.png-d2b7557e1d1a8da72522523cd3d8f83f.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/fireball/fireball-Sheet.png b/Assets/Sprites/fireball/fireball-Sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..6aae33c1802eb523bd9ddfec4bb1533f5f2f7636 GIT binary patch literal 402 zcmV;D0d4+?P)Px$Oi4sRR9J=WRy&TuFc5uEBYG?DH~>n4v`63|d#oIUBOq;oasYQ;(XXgsi}hqZ z#7<@sQ>->mih`89&&)U@fD!oGKE~d8mBt+J61h7et=JUKD>RB}X~?C57n@+Dm(pBI zjP1p*N`{djF^?6Fn~*~-X}iq`~)xfDbTDjw*c1S!aW2)Tvw2;U5VpMt{iQ!Oz7 wvzBO#xl1_59};|C7~1~=f1STz!GeE)Z#!DsG>c*tt^fc407*qoM6N<$f&$d8+5i9m literal 0 HcmV?d00001 diff --git a/Assets/Sprites/fireball/fireball-Sheet.png.import b/Assets/Sprites/fireball/fireball-Sheet.png.import new file mode 100644 index 0000000..3fad198 --- /dev/null +++ b/Assets/Sprites/fireball/fireball-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fireball-Sheet.png-7809d22f240dacbbc4d3a60d6fb0736c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/fireball/fireball-Sheet.png" +dest_files=[ "res://.import/fireball-Sheet.png-7809d22f240dacbbc4d3a60d6fb0736c.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/fireball/fireball.aseprite b/Assets/Sprites/fireball/fireball.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..2df26bd2747268e058aa489f000865db10afaacf GIT binary patch literal 994 zcmb`FT}V?=0LPEHHH(>o5oxv^YossPJ}fZ@Q%kKJRz4V3&|On;la`u9%lt@XQyJ{8 zVrmKnl1~P;2%#_*tsY9r!6L1PW^IE$Fq{xH#oPa`ND=a>GwzSGbK(4cXJ;Q{3Gv?% zkVJeai6Mkk;#nS8;}@gvmskJaY!16e=7dqJ5Zi9SBcf5|3duXnlPUePB3iN+59|*f1C3AQVD=3YSYp@%mX*jrr8)=H zXc|E|(+-|8&4Bs=4m>jv0AIad1UU>s2JVi6oh??-U^Idi0sRXA_=)t#5 zk3f6x5wPdHoHOD80{(ZWnBWjN0rJs~a8x51y@*9AGSP@Y)FBOBh(Zx^_!f>s1rp$g z9A;?Ygb+5Uq`ZmZy8jL&5E0Sp%vB9kQG+i+%E#bP>wxHpBVuxCP|xHEkBY07RQ?!h zKI>z3lKn*v(M-~nVb1GQxjk%fazb!_Ti>{1Jl|>U?vQJDyVS1KxQ?kqvy1lG(n^in z$IMH~7P1rYrTj&2~{599&`M1|C;Jrih-sfG8o#m33i*}16X3EB!b)mGc2b{Hx zve?NbT({~fRctUna<4Dp1+8b*+Ia2uYq`fg-hjWw9nz5Ry@nd|Dz#xvbzWP#Mad=C z5jHi=e7fP_m!Ec<_uE2i`|Hh_7MrdiUK?U;Bbz)$&f@IY>CC=V*U84wHV?D)uqM`( zlJ&sxv^7h-o@|sD)0+spD^SN>LQbYWcCeHFD>P+64E_pDEI|+izr+G literal 0 HcmV?d00001 diff --git a/Assets/Sprites/flag/flag-Sheet.png b/Assets/Sprites/flag/flag-Sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..69efc33089fa25f9624ca014fbaebb3814a3c023 GIT binary patch literal 615 zcmV-t0+{`YP)Px%AxT6*RA_I)@d;cwq96est{JXmD_?=Cw zR^#FIr8mFkox@UpOvk|Y9^{<*MVzN4dLZ+ghUiwi$djjhXN_SuS6!nqep56-Es`2^ zIPE>H!)cG%w94`2&kKk0?EA~3z;Zsdi}uWv6o zaK34LeFNbJ5}!aiQX|HfMRJXXGtsy*zt*h2;jz>o8=g@8(!ZsC8l;ehB|kxGh5A7J zCSIP~I#4$dft`IOK)W#r=JzBw%QT|=*|Z8ZE(?86t%gYbNj{{GMMKsf(1=265Qg?L z2De=<+-6?6U0pjECeXl7(P;U{)jCJR<1=nD|HAcW`OnaZ)o;;h`8Xf6d-Dc2Q0lZ_ zn$ONUSsEAGSXW!W6`eEC$nfh87&%5?zj}y%yuZs9Ed2k&w`|d|Z=iy|Mf%V9f`XxN zn|bB7%SFzwkix$*e%U|;gAg2`&_9}16#jMae*j(r1>4FBG*%3V*%iQ6 zB3WVwWJ@XloeBmZby&cE28NsA$v|?Akr9yW53>f6X_kinWq^uVKz@T708|B30+a_z zs(|Dan30SFYGUAF2rekfEJ;-e&PYuyX$Fe0DnOL{XM)g>5UH4xoUp+12mjF}t5`SZ zx2gY+PfqzVpYgIxiShsM?UBufKJrFvGaGaGgruGAJ@}^ArS$mL&swS&BezWark_mJ z##hJF*c(5%7&7-;#W1X!&$Bn=BL5}s?!$^J>J4@(c_GR+R_*yo; zJpNE@!#xvkXP#1py$04Fe=skvE2-vaWjw>fl=bnIdZ7H(FU?<+jy?>yY%g(#;hKLA zFfYxMpuVcHP4#6l+P7kjhxfnS}y z%nVb!=TD!2=9~un&annMr|{&$%@6;~et7c#bqUEv!(BD?GfX9#Z)9X0$e9o)aV*I` z#@>hb3{OgrvwjRH(z*?RP$z!gOBuxweR zIStJ{ZTQ_|33SiJqlGJ5KSNUy%drz_iXR_l{XV?rpu{pZV5B9cDI~}Iax6Mg1&p+3 z@)JOjwnJ)0T#EVQ3*DjiX6BDBbYF!;nzMc=W~5abFV>!j=Bh^gu9E)I-}Z6kK>=8# z$-pD+Ez`@^M4Pk&UzJxoUgJJwU|jgp9~fyD`*YZKRpq=pzD&Noeq)>bCP|)_!_v#^ zguVoX+I#2+$?%!}Z9d4G@b}0uMh2k=3uUIDIj9A{gP^Hs>TZlwbmk}jW$weEWaK`L z{o;u#M~QapgH@Mxcmv-wB%17v_}jilezs)Amq#Vc%nuEYubR(d`{T=Gt^-vQ9~G>4 zDbJI~@LJuBkAbgqk!CNNn`-g8Ny6ZReEW@h6SJ_=?4F(rPya#kyXBjRUSjPMUI%nf6_hS)XlCJij=8;KkN@RF~8L_;>ID z+lIQN#|#WpDp!SMqB$lK>KG;lCI&=V#LmFS04j?Zn*Rs%@Ijm)R#~$1|BIr`X>AD~ pP2Jp1eERW3<6?I>pGx29wHZY`E~f$)iR-WzYkM#-Y(AIJ4**C&=ePg> literal 0 HcmV?d00001 diff --git a/Assets/Sprites/player-Sheet.png b/Assets/Sprites/player-Sheet.png index 8e276ffad9c719e3015b4714e6a7651c5d8eabfc..923ed8c7d53a0157181489b8a860ac421b4633f8 100644 GIT binary patch literal 3452 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 diff --git a/Assets/Sprites/shooter/shooter-Sheet.png b/Assets/Sprites/shooter/shooter-Sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..6a31167fb2c7afe1acd14da3c627265b0b54d66a GIT binary patch literal 1103 zcmV-V1hD&wP)Px(2}wjjRCt{2oUv}(NEAiSEVfXW#y}9jNfknkQsyHhrpYenAmkIEw zn?JzIXPR=s?g3~FcX#&yyv^PhCD)2ixu8Wd`1Srf@UvkS(7KfiS~LKsg4F;>fLD6) z$lZOlcnQF4c2)cOhx8_{>ZV*^b5}3L5|7EK#^264Lu!`u z91qL{y4uGGobea zs)hbE;M3>pQel!LKu7$5Xdd$CAAjWqmYs)|`T@~Al)?P(QsGne15OTAnJ@32=Sq|1 z4z(h{%j^I0?s=|mtx|#Uc-%NgYX(4bbjv}|x_dvM0qpGu=voZ$L`1}&23C<~9_cDq zp1fEQ?Gr*58e-Y`Qril&QoGa~8c1agBASO<)JP!YPXiOOv-1OLt?(SP$|6pjHy^v<2dtLsyuh;aaC$#r=LZjcwDrp^ z$`E-25fMw7lrX$4aao1JhqbEU2Nd&yx_OH6f066t`vdeL%G>OHaeIyxpK?KqWKeVT z>QkjUp>_9uKmk@uAm3!Ac+6B?Enac~td?scqx}K?a?Rzd7daQ$%mDGH0TmOQJpvJyuuZH2Q0|W z&JUN9$QzI(i4KCv{s0jnNs@M-7f6!C z?7VKFS(s><5TH4RS6pI4@8Q zq;%b>#L@c!8@#Owg^#N69J9&JtH8m2K-(OhW6{rm%60DtJmd#-=Da|0e?TYyKVX|5 z@KnzWw9XIc|39Gj1A0H8QS^R5?MyrTfQwW{yXyz+^Zx<8AJ8mL;|H`Yo9w&_{0~LS V=P6hR0lWYJ002ovPDHLkV1i@t2E+gW literal 0 HcmV?d00001 diff --git a/Assets/Sprites/shooter/shooter-Sheet.png.import b/Assets/Sprites/shooter/shooter-Sheet.png.import new file mode 100644 index 0000000..2b44f15 --- /dev/null +++ b/Assets/Sprites/shooter/shooter-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shooter-Sheet.png-eb45fa7f0372ee1e2cfdba310d2e5983.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/shooter/shooter-Sheet.png" +dest_files=[ "res://.import/shooter-Sheet.png-eb45fa7f0372ee1e2cfdba310d2e5983.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/shooter/shooter1.png b/Assets/Sprites/shooter/shooter1.png deleted file mode 100644 index 52ac1b3c0229f097091df8f23d13f728f9e16d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmV;V0bBlwP)Px$UP(kjR9J=OmoZMmKoCXWAc}Ok0CcR}I3?FYN#Q-jrU=T3xI^4nDd7UCpc@MB zI0=puP`q(~FIloy-uW}LGyBKF7OJWM%;(SSBG0qty(}xdp8*Je05?NBFf_iNq5^mv zckUH{Nj3&xRc&}$e{}6T2b#dPx$R!KxbR9J=Omoaj}Fc3u_nG|#>X;MbxMmY#G9K~^lW^;z9VdD56>Fkn2K*Lbx z1a#>(4RUb6lLRD8;Lo`5j@Kgt4P9DJ81ZxvEii&x@sGqp!z25OrFE5<-i?>G5v4n_!CpUfW zY=UzWM8+C{OP!lwZ9;DPfm0sUw4CmKFA7FgRkKuLInCPXdM;IsqBspp{gZ{>C?w|O8?|lF zYH+FftC3n4L|!-_I*Jj>Qi(#gkCpD!3I|R2A8(TvuL7SS?;>S3QG6Bv0000Px$cS%G+R9J=Om$7cbFc5~nR2{l?L8_1_Tf`E^zD1t|p@p!ozt*E7>4jaZ zwrh}57uYWWZ!*WR$AcZ21wXfG<1)K z?lF`VLs`|fxGc@d(i}}v1V7c_W)`SgywS?i+;FTJi1C00000NkvXXu0mjf=-$S+ diff --git a/Assets/Sprites/shooter/shooter3.png.import b/Assets/Sprites/shooter/shooter3.png.import deleted file mode 100644 index 0ab318d..0000000 --- a/Assets/Sprites/shooter/shooter3.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/shooter3.png-e0c161d900c0493c4787cdbc5b7f161e.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Assets/Sprites/shooter/shooter3.png" -dest_files=[ "res://.import/shooter3.png-e0c161d900c0493c4787cdbc5b7f161e.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 -stream=false -size_limit=0 -detect_3d=false -svg/scale=1.0 diff --git a/Assets/Sprites/shooter/shooter4.png b/Assets/Sprites/shooter/shooter4.png deleted file mode 100644 index ac26110817843440cc58b9e465bb070048678fcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)Px$a!Eu%R9J=Om%nbpFc617R~^_`Sdb{2#R6j=f;>x<(eKcV7S9r|eFs=jwiJn( zsokyvaRP)?Rf!8Nzsa(k`_7l#pD1cc5*q+U;~|HdPAAoRKA)qM0#N(|JzU#?YwPqa z3V=Z~(r*CFCVc>w>m5n{(e~UWk^nZp&20oAiA`$?g!ueLWbcToOok4Gl-yR>Q4m62 z9w5sy0f?dq5eZ#i#51xi1K{z@A!Qe-7&HK{g!#>0vQVFDmYY#5xh(U*N2 zZB+M7u?4`E4%$V^>6wnC>>`yUHWdrHPl3iD<@3(BIO@r-p@5h7QYE9_=os*mQTnDv i;foCZ#lOkB?*gAb*q%684s>P!0000Px$bV)=(R9J=Om%nbpFc8Lnt~#)>upm*UT3N!_w~8XM_#wO?S$Uwo16iVMG!ipY zySYPbg9xEjiGjA?WS#8$?#{kH7VKg3OaU;PPdP-ICShHc6-q4u1b+Yzw>IF`IKD*- zppeYu8vu)B48XeDk=Gx6=PrSbp!3_jodD#S>P>+d&tL0R8}wH1pt^ft9WT&L0bvSF zv)KkgOy|9R&*6-+XAfKk>mB#Jk0&+>Q)sJ@0K7V(riO^OW8{eEG(qbXN-b>!F01v5 zG)*va6ojV&03e*hSHmJ1^GX+Id~tO_pVxeG9r~EJ%}Q*sicG z|5E4Lv#ObIZ6DoD)|&Uia{nIt=eGRyS`U`l@H-gpiBGhW+jw?G*5!3TQCAV%n^*f_Z{tdbep>cj?<1(=xmhwnZdc$pJOTI$XH6 z^&9``4V%h6IBwOt$T|c&gb8kzJ79JoY%7b|ZQ0B0zUR&}y#N3DP3es^hK5HEfAXIG z+49ykv~bd+rytLKV_*g`+ok!aJe(j7e7)$J_{ z?z&%LG+|8PC<^5N_HM|me@k{Y? z`>wiu=NaCJ7%+q|%q`=dTh^V~$nLN?iR$2nY>_N&=LGVB{4r{nJa70el2C$y5TG2dXjvFSU*Hs)T;sRTi z*2(G}K6Ot~G2^>nDT6O#r0ba~hT9C$=k~MzVfym3=*K=^S0-RmVDNPHb6Mw<&;$Tt CtMyj^ diff --git a/Assets/Sprites/spikes/spikes.aseprite b/Assets/Sprites/spikes/spikes.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..d648add9e9f622382d575b46819c5dd568a9a425 GIT binary patch literal 1740 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 z zP|6(4aMsITpez2$9ALU@PRYi%+QOfOe>n$q#VzLmqX4Z}sMh5+-U}w9p*unPoCO3B z$G(MCfLRV;zbxDMb73|{XL0Him4RqFp6xcZbJy9$a(-#h%JtUZhVLKK*$2@Rqb`g9 O0000Px$)k#D_R9J=0mpxD0P!xur1NkYAy;TfkGcpSjtVZh8rKqr1Li`615;H`=!c>W@ z9T?h(Y+MKy@$d0&rmZTfnk&8})Y@-OR+45;Lrsl`*S*!E0~Yd87%RZv``i3QD{`DhfbE3M zja>kDDF8^P-BMM3$@nUK6Nb<2CnC=r;VK1cBk(=?gP!e_COd%uA|mt$y}S;%Mp@n# zc^7$J7ca_ws{u=4S_91WUQi~jS&J#4CDpf#e=`E#BMM{FqMCMuGA+htICEJ9YvZ%b z0XiIwdC2}R>cM4vEqwGG@F^l7Ni)tbkMn28?NEyCZ{6GG=Bx|MB0#&hzvsRx{DCsw z2}Go+c9^$6dprkg5V|?*GW7odaA=*_s`7PVPK=9&BgdE?Z<#|E=85Uhn__002ovPDHLkV1j3^_aguR literal 0 HcmV?d00001 diff --git a/Assets/Sprites/spikes/spikes3.png.import b/Assets/Sprites/spikes/spikes3.png.import new file mode 100644 index 0000000..5365d7d --- /dev/null +++ b/Assets/Sprites/spikes/spikes3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/spikes3.png-4bb0e3932d1d572798d91238cda03017.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/spikes/spikes3.png" +dest_files=[ "res://.import/spikes3.png-4bb0e3932d1d572798d91238cda03017.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/spikes/spikes4.png b/Assets/Sprites/spikes/spikes4.png new file mode 100644 index 0000000000000000000000000000000000000000..201fbad0005467caf817c82ee5733a4c8814a3b1 GIT binary patch literal 529 zcmV+s0`C2ZP)Px$%Sl8*R9J=0SG!KbKoFco`4q?Q5KTHGLxDs@=SWmEL?k^D%11;<^obN2Dx{>P zpdlii8${>Fr&wAF`%Y))VaGm)jN~FW&du(6_jZp^AMDsJEYko0_(3EI%QP^Vjj@aO zg9yvjLM)L6drH|10FLcy6J*DB*A`R9Xcs^1kKhLpo?qY5X}1K`R3I1tyfDVo{Vgoh zK&$8!VjD@j``e0?hjFulnT2qZxku;sDh<9w4foz6|U_o;ROy?hR;q7IrRX_@P zVZ6!tt-J`p*Y{j4nMTh5X2!*N4}iWBs0_1&KPPx$xk*GpR9J=0m%B;>K@^6+kvvK+o!F#XSS&1p-3F{|3?#iEd59p`ClDJeL0bze z!EPI|+smUY9GjVCvYTW#$!yHu?fl8P%|CO_C=Q4CUO=zg1|W*loalAi%$GB^@ll-e z_5E&^l!JI`#SGwkfis8VdqHVYC#JUXlhKqYPI-KOrQc~8s;NQ&pa8N3QYe<-6!e;4~_{nH$zFo+@E(8$myAk8N@W)KNh_$|VP2eEtJK$dw z;Cq1-yMR>OzE%9r=ylupUSQw)O%_7XIhf(hIkS=Edg`P&O;^qWwc+nLfGh6t* zF&Rx|zMK`~X&Rz^Z%z*CJ!j|3*`YxT$4k8A`w!U15bs09co+Zx002ovPDHLkV1g=@ B@`3;W literal 0 HcmV?d00001 diff --git a/Assets/Sprites/spikes/spikes5.png.import b/Assets/Sprites/spikes/spikes5.png.import new file mode 100644 index 0000000..74a748e --- /dev/null +++ b/Assets/Sprites/spikes/spikes5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/spikes5.png-00fdc790e8b391180f9981a5f044736e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/spikes/spikes5.png" +dest_files=[ "res://.import/spikes5.png-00fdc790e8b391180f9981a5f044736e.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 +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Assets/Sprites/spikes/spikes6.png b/Assets/Sprites/spikes/spikes6.png new file mode 100644 index 0000000000000000000000000000000000000000..97e431208daa4d9d280ad43c6271a61fb7ea1ea2 GIT binary patch literal 576 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 O0ET)dx|P~4kN*z`1SjwS diff --git a/Assets/Sprites/zones_tiles.png b/Assets/Sprites/zones_tiles.png deleted file mode 100644 index 6b64afb5e2626b91cef44847c4c44651bbd21a34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zi#%N%Ln`LH zo$bhV$brYz*m?bx~<#hsMfpjiZ4}vQXp7$?d+_FYyYkN`rSC8H`1P2VEX1K=T|&j^u=-i z{=Ls;nH$xtuDiplSud=6IJv6n2E%pBEroh#KcyRL{K zYlp^MnFZ2C4VQiRUO1?;Z{b-ldaCH!pC=4g3IeSx9n7CFET1WJq0x^oLo!Z#%F{JJ zPcj1SDk*BnJHhB@Y`K7WuFM6aJz*NBBR@}O4mj-k@(F|B#KUzZv%jw05Aw#}SAXU0 zr~j|up7QJKmiJ31as1b35Z4P*XJ63Ped#3Qu7{Nkm(P4|;47JjVRy@O#zp%7ZdV@Q Y&X=^lRDQa;7Z?=`p00i_>zopr0JNIMm;e9( diff --git a/Assets/Sprites/zones_tiles.png.import b/Assets/Sprites/zones_tiles.png.import deleted file mode 100644 index 87e37f6..0000000 --- a/Assets/Sprites/zones_tiles.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/zones_tiles.png-4e16678f300a4aa29e0f95d20661838c.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://Assets/Sprites/zones_tiles.png" -dest_files=[ "res://.import/zones_tiles.png-4e16678f300a4aa29e0f95d20661838c.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=true -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 -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/Assets/Themes/Main.tres b/Assets/Themes/Main.tres new file mode 100644 index 0000000..ef38272 --- /dev/null +++ b/Assets/Themes/Main.tres @@ -0,0 +1,71 @@ +[gd_resource type="Theme" load_steps=10 format=2] + +[ext_resource path="res://Assets/Sprites/UI/theme-Sheet.png" type="Texture" id=1] +[ext_resource path="res://Assets/Fonts/joystix.monospace.ttf" type="DynamicFontData" id=2] +[ext_resource path="res://Assets/Fonts/base_font.tres" type="DynamicFont" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 10 +font_data = ExtResource( 2 ) + +[sub_resource type="StyleBoxTexture" id=2] +texture = ExtResource( 1 ) +region_rect = Rect2( 16, 0, 16, 16 ) +margin_left = 3.3719 +margin_right = 3.25483 +margin_top = 3.08429 +margin_bottom = 3.08123 + +[sub_resource type="StyleBoxTexture" id=3] +texture = ExtResource( 1 ) +region_rect = Rect2( 32, 0, 16, 16 ) +margin_left = 3.3719 +margin_right = 3.25483 +margin_top = 3.08429 +margin_bottom = 3.08123 + +[sub_resource type="StyleBoxTexture" id=4] +texture = ExtResource( 1 ) +region_rect = Rect2( 48, 0, 16, 16 ) +margin_left = 3.3719 +margin_right = 3.25483 +margin_top = 3.08429 +margin_bottom = 3.08123 + +[sub_resource type="StyleBoxTexture" id=5] +texture = ExtResource( 1 ) +region_rect = Rect2( 64, 0, 16, 16 ) +margin_left = 3.3719 +margin_right = 3.25483 +margin_top = 3.08429 +margin_bottom = 3.08123 + +[sub_resource type="StyleBoxTexture" id=6] +texture = ExtResource( 1 ) +region_rect = Rect2( 80, 0, 16, 16 ) +margin_left = 3.3719 +margin_right = 3.25483 +margin_top = 3.08429 +margin_bottom = 3.08123 + +[resource] +Button/colors/font_color = Color( 0, 0, 0, 1 ) +Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Button/colors/font_color_hover = Color( 0, 0, 0, 1 ) +Button/colors/font_color_pressed = Color( 0, 0, 0, 1 ) +Button/constants/hseparation = 2 +Button/fonts/font = SubResource( 1 ) +Button/styles/disabled = SubResource( 2 ) +Button/styles/focus = SubResource( 3 ) +Button/styles/hover = SubResource( 4 ) +Button/styles/normal = SubResource( 5 ) +Button/styles/pressed = SubResource( 6 ) +Label/colors/font_color = Color( 1, 1, 1, 1 ) +Label/colors/font_color_shadow = Color( 0, 0, 0, 0 ) +Label/colors/font_outline_modulate = Color( 1, 1, 1, 1 ) +Label/constants/line_spacing = 3 +Label/constants/shadow_as_outline = 0 +Label/constants/shadow_offset_x = 1 +Label/constants/shadow_offset_y = 1 +Label/fonts/font = ExtResource( 3 ) +Label/styles/normal = null diff --git a/Assets/Tilesets/hazards.tres b/Assets/Tilesets/anti_control.tres similarity index 69% rename from Assets/Tilesets/hazards.tres rename to Assets/Tilesets/anti_control.tres index 133c849..c0e4c16 100644 --- a/Assets/Tilesets/hazards.tres +++ b/Assets/Tilesets/anti_control.tres @@ -1,57 +1,54 @@ -[gd_resource type="TileSet" load_steps=19 format=2] +[gd_resource type="TileSet" load_steps=18 format=2] [ext_resource path="res://Assets/Sprites/terrain_tiles.png" type="Texture" id=1] +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + [sub_resource type="ConvexPolygonShape2D" id=3] -points = PoolVector2Array( 12, 16, 4, 16, 4, 4, 12, 4 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=4] -points = PoolVector2Array( 12, 16, 4, 16, 4, 0, 12, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=5] -points = PoolVector2Array( 12, 12, 4, 12, 4, 0, 12, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=6] -points = PoolVector2Array( 16, 16, 4, 16, 4, 4, 16, 4 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=7] -points = PoolVector2Array( 16, 16, 0, 16, 0, 4, 16, 4 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=8] -points = PoolVector2Array( 12, 16, 0, 16, 0, 4, 12, 4 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=9] -points = PoolVector2Array( 12, 16, 0, 16, 0, 0, 12, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=10] -points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=11] -points = PoolVector2Array( 16, 16, 4, 16, 4, 0, 16, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=12] -points = PoolVector2Array( 16, 12, 4, 12, 4, 0, 16, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=13] -points = PoolVector2Array( 16, 12, 0, 12, 0, 0, 16, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=14] -points = PoolVector2Array( 12, 12, 0, 12, 0, 0, 12, 0 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=15] -points = PoolVector2Array( 16, 12, 4, 12, 4, 4, 16, 4 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=16] -points = PoolVector2Array( 16, 12, 0, 12, 0, 4, 16, 4 ) - -[sub_resource type="ConvexPolygonShape2D" id=17] -points = PoolVector2Array( 12, 12, 0, 12, 0, 4, 12, 4 ) - -[sub_resource type="ConvexPolygonShape2D" id=18] -points = PoolVector2Array( 12, 12, 4, 12, 4, 4, 12, 4 ) - -[sub_resource type="ConvexPolygonShape2D" id=19] -points = PoolVector2Array( 0, 16, 4, 8, 12, 8, 16, 16, 12, 20, 4, 20 ) +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [resource] 0/name = "terrain_tiles.png 0" @@ -62,7 +59,7 @@ points = PoolVector2Array( 0, 16, 4, 8, 12, 8, 16, 16, 12, 20, 4, 20 ) 0/tile_mode = 1 0/autotile/bitmask_mode = 1 0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] -0/autotile/icon_coordinate = Vector2( 0, 3 ) +0/autotile/icon_coordinate = Vector2( 0, 0 ) 0/autotile/tile_size = Vector2( 16, 16 ) 0/autotile/spacing = 0 0/autotile/occluder_map = [ ] @@ -73,125 +70,104 @@ points = PoolVector2Array( 0, 16, 4, 8, 12, 8, 16, 16, 12, 20, 4, 20 ) 0/navigation_offset = Vector2( 0, 0 ) 0/shape_offset = Vector2( 0, 0 ) 0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -0/shape = SubResource( 3 ) +0/shape = SubResource( 1 ) 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( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, "shape": SubResource( 3 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 0, 1 ), +"autotile_coord": Vector2( 3, 0 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 4 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 0, 2 ), +"autotile_coord": Vector2( 3, 1 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 5 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 1, 0 ), +"autotile_coord": Vector2( 2, 1 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 6 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 2, 0 ), +"autotile_coord": Vector2( 1, 1 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 7 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 3, 0 ), +"autotile_coord": Vector2( 0, 1 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 8 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 3, 1 ), +"autotile_coord": Vector2( 0, 2 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 9 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 2, 1 ), +"autotile_coord": Vector2( 1, 2 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 10 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 1, 1 ), +"autotile_coord": Vector2( 2, 2 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 11 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 1, 2 ), +"autotile_coord": Vector2( 3, 2 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 12 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 2, 2 ), +"autotile_coord": Vector2( 0, 3 ), "one_way": false, "one_way_margin": 1.0, "shape": SubResource( 13 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { -"autotile_coord": Vector2( 3, 2 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 14 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -}, { "autotile_coord": Vector2( 1, 3 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 15 ), +"shape": SubResource( 14 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 2, 3 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 16 ), +"shape": SubResource( 15 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 3, 3 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 17 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -}, { -"autotile_coord": Vector2( 0, 3 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 18 ), +"shape": SubResource( 16 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 -1/name = "terrain_tiles.png 1" -1/texture = ExtResource( 1 ) -1/tex_offset = Vector2( 0, 0 ) -1/modulate = Color( 1, 1, 1, 1 ) -1/region = Rect2( 128, 64, 16, 32 ) -1/tile_mode = 0 -1/occluder_offset = Vector2( 0, 0 ) -1/navigation_offset = Vector2( 0, 0 ) -1/shape_offset = Vector2( 0, 0 ) -1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -1/shape = SubResource( 19 ) -1/shape_one_way = false -1/shape_one_way_margin = 1.0 -1/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 19 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -} ] -1/z_index = 0 diff --git a/Assets/Tilesets/spikes.tres b/Assets/Tilesets/spikes.tres new file mode 100644 index 0000000..f7362d1 --- /dev/null +++ b/Assets/Tilesets/spikes.tres @@ -0,0 +1,63 @@ +[gd_resource type="TileSet" load_steps=6 format=2] + +[ext_resource path="res://Assets/Sprites/spikes/spikes_animated.tres" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 16, 16, 0, 16, 4, 12, 12, 12 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 12, 4, 4, 4, 0, 0, 16, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 4, 12, 0, 16, 0, 0, 4, 4 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 16, 16, 12, 12, 12, 4, 16, 0 ) + +[resource] +0/name = "spikes_animated.tres 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 64, 16 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 16, 16 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +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( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 diff --git a/Assets/Tilesets/terrain_solid.tres b/Assets/Tilesets/terrain_solid.tres index 3f0f87d..6618b0e 100644 --- a/Assets/Tilesets/terrain_solid.tres +++ b/Assets/Tilesets/terrain_solid.tres @@ -1,4 +1,4 @@ -[gd_resource type="TileSet" load_steps=32 format=2] +[gd_resource type="TileSet" load_steps=50 format=2] [ext_resource path="res://Assets/Sprites/terrain_tiles.png" type="Texture" id=1] @@ -29,6 +29,9 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=9] points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + [sub_resource type="ConvexPolygonShape2D" id=11] points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) @@ -45,19 +48,19 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=16] -points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) [sub_resource type="ConvexPolygonShape2D" id=17] -points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) [sub_resource type="ConvexPolygonShape2D" id=18] -points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) [sub_resource type="ConvexPolygonShape2D" id=19] -points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) [sub_resource type="ConvexPolygonShape2D" id=20] -points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 ) [sub_resource type="ConvexPolygonShape2D" id=21] points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) @@ -92,6 +95,57 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) [sub_resource type="ConvexPolygonShape2D" id=31] points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) +[sub_resource type="ConvexPolygonShape2D" id=32] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=33] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=34] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=35] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=36] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=37] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=38] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=39] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=40] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=41] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=42] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=43] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=44] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=45] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=46] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=47] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + +[sub_resource type="ConvexPolygonShape2D" id=48] +points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) + [resource] 0/name = "terrain_tiles.png 0" 0/texture = ExtResource( 1 ) @@ -173,38 +227,68 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) "autotile_coord": Vector2( 1, 1 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 11 ), +"shape": SubResource( 10 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 0, 1 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 12 ), +"shape": SubResource( 11 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 1, 0 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 13 ), +"shape": SubResource( 12 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 0, 0 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 14 ), +"shape": SubResource( 13 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 2, 0 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 15 ), +"shape": SubResource( 14 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 3, 0 ), "one_way": false, "one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, "shape": SubResource( 16 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 1/name = "terrain_tiles.png 1" @@ -226,98 +310,128 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) 1/navigation_offset = Vector2( 0, 0 ) 1/shape_offset = Vector2( 0, 0 ) 1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -1/shape = SubResource( 17 ) +1/shape = SubResource( 21 ) 1/shape_one_way = false 1/shape_one_way_margin = 1.0 1/shapes = [ { "autotile_coord": Vector2( 0, 0 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 17 ), +"shape": SubResource( 21 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 1, 0 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 18 ), +"shape": SubResource( 22 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 2, 0 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 19 ), +"shape": SubResource( 23 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 3, 0 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 20 ), +"shape": SubResource( 24 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 3, 1 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 21 ), +"shape": SubResource( 25 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 1, 1 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 22 ), +"shape": SubResource( 26 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 0, 1 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 23 ), +"shape": SubResource( 27 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 0, 2 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 24 ), +"shape": SubResource( 28 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 1, 2 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 25 ), +"shape": SubResource( 29 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 2, 2 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 26 ), +"shape": SubResource( 30 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 3, 2 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 27 ), +"shape": SubResource( 31 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 0, 3 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 28 ), +"shape": SubResource( 32 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 1, 3 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 29 ), +"shape": SubResource( 33 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 2, 3 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 30 ), +"shape": SubResource( 34 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) }, { "autotile_coord": Vector2( 3, 3 ), "one_way": false, "one_way_margin": 1.0, -"shape": SubResource( 31 ), +"shape": SubResource( 35 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 36 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 37 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 38 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 39 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 4 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 40 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 1/z_index = 0 @@ -338,9 +452,58 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) 2/navigation_offset = Vector2( 0, 0 ) 2/shape_offset = Vector2( 0, 0 ) 2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 41 ) 2/shape_one_way = false -2/shape_one_way_margin = 0.0 -2/shapes = [ ] +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 41 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 42 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 43 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 44 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 4, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 45 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 5, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 46 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 6, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 47 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 7, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 48 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] 2/z_index = 0 3/name = "terrain_tiles.png 3" 3/texture = ExtResource( 1 ) diff --git a/README.md b/README.md index 8f1ceba..10ffc47 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ -# GMTK_Jam_2020 \ No newline at end of file +# GMTK_Jam_2020 + +## Credits: +- [Joystix Font](https://www.1001fonts.com/joystix-font.html) by [Raymond Larabie](https://www.1001fonts.com/users/typodermic/) +- [BitPotion Font Family](https://www.1001fonts.com/bitpotion-font.html) by [JoebRogers](https://www.1001fonts.com/users/JoebRogers/) \ No newline at end of file diff --git a/Scenes/Global.tscn b/Scenes/Global.tscn index 66db92e..721e4fd 100644 --- a/Scenes/Global.tscn +++ b/Scenes/Global.tscn @@ -4,3 +4,5 @@ [node name="Global" type="Node"] script = ExtResource( 1 ) + +[node name="MusicPlayer" type="AudioStreamPlayer" parent="."] diff --git a/Scenes/Main.tscn b/Scenes/Main.tscn index 5f77bac..772426e 100644 --- a/Scenes/Main.tscn +++ b/Scenes/Main.tscn @@ -1,33 +1,264 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=20 format=2] [ext_resource path="res://Scripts/Main.gd" type="Script" id=1] +[ext_resource path="res://Assets/Themes/Main.tres" type="Theme" id=2] +[ext_resource path="res://Assets/Fonts/title_font.tres" type="DynamicFont" id=3] +[ext_resource path="res://Assets/Sprites/UI/back_arrow1.png" type="Texture" id=4] +[ext_resource path="res://Assets/Fonts/small_font.tres" type="DynamicFont" id=5] +[ext_resource path="res://Assets/Sprites/UI/back_arrow2.png" type="Texture" id=6] +[ext_resource path="res://Assets/Sprites/UI/back_arrow4.png" type="Texture" id=7] +[ext_resource path="res://Assets/Sprites/UI/back_arrow3.png" type="Texture" id=8] +[ext_resource path="res://Assets/Tilesets/terrain_solid.tres" type="TileSet" id=9] +[ext_resource path="res://Assets/Sprites/player-Sheet.png" type="Texture" id=10] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 10 ) +region = Rect2( 0, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 10 ) +region = Rect2( 32, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 10 ) +region = Rect2( 64, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 10 ) +region = Rect2( 96, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 10 ) +region = Rect2( 128, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 10 ) +region = Rect2( 160, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 10 ) +region = Rect2( 192, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 10 ) +region = Rect2( 224, 0, 32, 32 ) + +[sub_resource type="SpriteFrames" id=9] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] [node name="Main" type="Node2D"] script = ExtResource( 1 ) -[node name="Control" type="Control" parent="."] -margin_right = 1024.0 -margin_bottom = 600.0 +[node name="MainMenu" type="Control" parent="."] +margin_right = 320.0 +margin_bottom = 184.0 +theme = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } -[node name="CenterContainer" type="CenterContainer" parent="Control"] +[node name="ColorRect" type="ColorRect" parent="MainMenu"] margin_right = 320.0 margin_bottom = 184.0 +color = Color( 0.105882, 0.105882, 0.105882, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Background" type="Node2D" parent="MainMenu"] + +[node name="TileMap" type="TileMap" parent="MainMenu/Background"] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 16, 16 ) +format = 1 +tile_data = PoolIntArray( 327680, 3, 0, 327698, 3, 0, 327699, 0, 1, 327700, 0, 3, 458751, 0, 1, 393216, 0, 3, 393234, 0, 196609, 393235, 0, 65538, 393236, 0, 65539, 524287, 0, 65537, 458752, 0, 65539, 458767, 1, 196609, 458768, 1, 196610, 458769, 1, 2, 458770, 2, 7, 458771, 0, 262144, 458772, 0, 65539, 589823, 0, 65537, 524288, 0, 262144, 524289, 0, 3, 524290, 3, 1, 524305, 1, 131073, 524306, 2, 4, 524307, 2, 2, 524308, 0, 65539, 655359, 0, 65537, 589824, 0, 262145, 589825, 2, 3, 589826, 1, 2, 589827, 1, 2, 589828, 1, 196611, 589842, 0, 65537, 589843, 0, 262146, 589844, 0, 65539, 720895, 0, 65537, 655360, 0, 65538, 655361, 0, 262147, 655362, 2, 6, 655363, 1, 65539, 655364, 3, 1, 655376, 3, 0, 655377, 0, 1, 655378, 0, 65538, 655379, 0, 262147, 655380, 0, 65539, 786431, 0, 131073, 720896, 0, 131074, 720897, 0, 65538, 720898, 2, 1, 720899, 2, 1, 720900, 0, 196611, 720912, 0, 196609, 720913, 0, 131074, 720914, 0, 131074, 720915, 0, 131074, 720916, 0, 131075 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="MainMenu/Background"] +position = Vector2( 72, 128 ) +frames = SubResource( 9 ) +frame = 3 +playing = true + +[node name="MainMenuContainer" type="VBoxContainer" parent="MainMenu"] +margin_right = 320.0 +margin_bottom = 176.0 size_flags_horizontal = 3 -size_flags_vertical = 3 __meta__ = { "_edit_use_anchors_": false } -[node name="Button" type="Button" parent="Control/CenterContainer"] -margin_left = 139.0 -margin_top = 82.0 -margin_right = 180.0 -margin_bottom = 102.0 +[node name="Label" type="Label" parent="MainMenu/MainMenuContainer"] +margin_right = 320.0 +margin_bottom = 34.0 +custom_fonts/font = ExtResource( 3 ) +text = "Out of Control(s)" +align = 1 +uppercase = true + +[node name="CenterContainer" type="CenterContainer" parent="MainMenu/MainMenuContainer"] +margin_top = 38.0 +margin_right = 320.0 +margin_bottom = 92.0 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="MainMenu/MainMenuContainer/CenterContainer"] +margin_left = 96.0 +margin_right = 224.0 +margin_bottom = 54.0 + +[node name="Start" type="Button" parent="MainMenu/MainMenuContainer/CenterContainer/VBoxContainer"] +margin_right = 128.0 +margin_bottom = 32.0 +rect_min_size = Vector2( 128, 32 ) text = "Start" + +[node name="Credits" type="Button" parent="MainMenu/MainMenuContainer/CenterContainer/VBoxContainer"] +margin_top = 36.0 +margin_right = 128.0 +margin_bottom = 54.1655 +text = "Credits" + +[node name="Container" type="Container" parent="MainMenu/MainMenuContainer"] +margin_top = 96.0 +margin_right = 320.0 +margin_bottom = 154.0 +size_flags_vertical = 3 + +[node name="CenterContainer2" type="CenterContainer" parent="MainMenu/MainMenuContainer"] +margin_top = 158.0 +margin_right = 320.0 +margin_bottom = 176.166 +size_flags_horizontal = 3 + +[node name="Quit" type="Button" parent="MainMenu/MainMenuContainer/CenterContainer2"] +margin_left = 140.0 +margin_right = 178.627 +margin_bottom = 18.1655 +text = "Quit" + +[node name="Credits" type="Control" parent="."] +visible = false +margin_right = 320.0 +margin_bottom = 184.0 +theme = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } -[connection signal="pressed" from="Control/CenterContainer/Button" to="." method="_on_Button_pressed"] + +[node name="ColorRect" type="ColorRect" parent="Credits"] +margin_right = 320.0 +margin_bottom = 184.0 +color = Color( 0.105882, 0.105882, 0.105882, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Credits"] +margin_right = 320.0 +margin_bottom = 184.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MarginContainer" type="MarginContainer" parent="Credits/VBoxContainer"] +margin_right = 320.0 +margin_bottom = 23.0 +custom_constants/margin_right = 5 +custom_constants/margin_top = 5 +custom_constants/margin_left = 5 +custom_constants/margin_bottom = 5 + +[node name="CenterContainer" type="CenterContainer" parent="Credits/VBoxContainer/MarginContainer"] +margin_left = 5.0 +margin_top = 5.0 +margin_right = 315.0 +margin_bottom = 18.0 + +[node name="Label" type="Label" parent="Credits/VBoxContainer/MarginContainer/CenterContainer"] +margin_left = 127.0 +margin_right = 183.0 +margin_bottom = 12.0 +text = "Credits" + +[node name="Back" type="TextureButton" parent="Credits/VBoxContainer/MarginContainer"] +margin_left = 5.0 +margin_top = 5.0 +margin_right = 21.0 +margin_bottom = 18.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +texture_normal = ExtResource( 8 ) +texture_pressed = ExtResource( 7 ) +texture_hover = ExtResource( 6 ) +texture_disabled = ExtResource( 4 ) +texture_focused = ExtResource( 6 ) + +[node name="ScrollContainer" type="ScrollContainer" parent="Credits/VBoxContainer"] +margin_top = 27.0 +margin_right = 320.0 +margin_bottom = 184.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CenterContainer" type="CenterContainer" parent="Credits/VBoxContainer/ScrollContainer"] +margin_right = 320.0 +margin_bottom = 157.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="VBoxContainer2" type="VBoxContainer" parent="Credits/VBoxContainer/ScrollContainer/CenterContainer"] +margin_left = 68.0 +margin_top = 35.0 +margin_right = 252.0 +margin_bottom = 121.0 +custom_constants/separation = 16 + +[node name="VBoxContainer" type="VBoxContainer" parent="Credits/VBoxContainer/ScrollContainer/CenterContainer/VBoxContainer2"] +margin_right = 184.0 +margin_bottom = 25.0 +custom_constants/separation = 0 + +[node name="Label" type="Label" parent="Credits/VBoxContainer/ScrollContainer/CenterContainer/VBoxContainer2/VBoxContainer"] +margin_right = 184.0 +margin_bottom = 12.0 +text = "Code, Design & Graphics" + +[node name="Label2" type="Label" parent="Credits/VBoxContainer/ScrollContainer/CenterContainer/VBoxContainer2/VBoxContainer"] +margin_top = 12.0 +margin_right = 184.0 +margin_bottom = 25.0 +custom_fonts/font = ExtResource( 5 ) +text = "Geegaz" +align = 1 + +[node name="VBoxContainer2" type="VBoxContainer" parent="Credits/VBoxContainer/ScrollContainer/CenterContainer/VBoxContainer2"] +margin_top = 41.0 +margin_right = 184.0 +margin_bottom = 86.0 + +[node name="Label" type="Label" parent="Credits/VBoxContainer/ScrollContainer/CenterContainer/VBoxContainer2/VBoxContainer2"] +margin_right = 184.0 +margin_bottom = 12.0 +text = "Fonts" +align = 1 + +[node name="Label2" type="Label" parent="Credits/VBoxContainer/ScrollContainer/CenterContainer/VBoxContainer2/VBoxContainer2"] +margin_top = 16.0 +margin_right = 184.0 +margin_bottom = 45.0 +custom_fonts/font = ExtResource( 5 ) +text = "Joystix by Raymond Larabie +BitPotion by JoebRogers" +align = 1 +[connection signal="pressed" from="MainMenu/MainMenuContainer/CenterContainer/VBoxContainer/Start" to="." method="_on_Start_pressed"] +[connection signal="pressed" from="MainMenu/MainMenuContainer/CenterContainer/VBoxContainer/Credits" to="." method="_on_Credits_pressed"] +[connection signal="pressed" from="MainMenu/MainMenuContainer/CenterContainer2/Quit" to="." method="_on_Quit_pressed"] +[connection signal="pressed" from="Credits/VBoxContainer/MarginContainer/Back" to="." method="_on_Back_pressed"] diff --git a/Scenes/Objects/Checkpoint.tscn b/Scenes/Objects/Checkpoint.tscn new file mode 100644 index 0000000..e303b95 --- /dev/null +++ b/Scenes/Objects/Checkpoint.tscn @@ -0,0 +1,67 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://Assets/Sprites/flag/flag-Sheet.png" type="Texture" id=1] +[ext_resource path="res://Assets/Sprites/effects/flag_particle.png" type="Texture" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 6, 7 ) + +[sub_resource type="Animation" id=3] +resource_name = "flag_down" +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 8 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "flag_up" +length = 0.8 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 4, 5, 6, 7 ] +} + +[node name="Checkpoint" type="StaticBody2D"] +collision_layer = 4 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 0, 1 ) +shape = SubResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +hframes = 9 +frame = 8 + +[node name="Player" type="AnimationPlayer" parent="."] +autoplay = "flag_down" +anims/flag_down = SubResource( 3 ) +anims/flag_up = SubResource( 2 ) + +[node name="Particle" type="CPUParticles2D" parent="."] +emitting = false +amount = 4 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 2 ) +direction = Vector2( 0, -1 ) +spread = 20.0 +initial_velocity = 60.0 diff --git a/Scenes/Objects/ControlJump.tscn b/Scenes/Objects/ControlJump.tscn index 018b4be..97467e2 100644 --- a/Scenes/Objects/ControlJump.tscn +++ b/Scenes/Objects/ControlJump.tscn @@ -1,15 +1,13 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://Scripts/ControlBlock.gd" type="Script" id=1] -[ext_resource path="res://Assets/Sprites/spacebar.png" type="Texture" id=2] +[ext_resource path="res://Assets/Sprites/UI/spacebar.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 32, 8 ) - -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 32, 8 ) +extents = Vector2( 31, 7 ) [node name="ControlJump" type="KinematicBody2D"] +collision_mask = 0 script = ExtResource( 1 ) [node name="Collider" type="CollisionShape2D" parent="."] @@ -30,14 +28,13 @@ __meta__ = { } [node name="Area2D" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 17 -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -shape = SubResource( 2 ) +[node name="Collider2" type="CollisionShape2D" parent="Area2D"] +shape = SubResource( 1 ) -[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] -position = Vector2( 1.90735e-06, 4.17233e-07 ) -scale = Vector2( 3.2, 0.8 ) +[node name="Tween" type="Tween" parent="."] [connection signal="gui_input" from="Control" to="." method="_on_Control_gui_input"] [connection signal="mouse_entered" from="Control" to="." method="_on_Control_mouse_entered"] [connection signal="mouse_exited" from="Control" to="." method="_on_Control_mouse_exited"] -[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] diff --git a/Scenes/Objects/ControlLeft.tscn b/Scenes/Objects/ControlLeft.tscn index 463d42f..ec75d32 100644 --- a/Scenes/Objects/ControlLeft.tscn +++ b/Scenes/Objects/ControlLeft.tscn @@ -1,15 +1,13 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://Scripts/ControlBlock.gd" type="Script" id=1] -[ext_resource path="res://Assets/Sprites/left.png" type="Texture" id=2] +[ext_resource path="res://Assets/Sprites/UI/left.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 8, 8 ) - -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 8, 8 ) +extents = Vector2( 7, 7 ) [node name="ControlLeft" type="KinematicBody2D"] +collision_mask = 0 script = ExtResource( 1 ) control_type = 1 @@ -31,14 +29,13 @@ __meta__ = { } [node name="Area2D" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 17 -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -shape = SubResource( 2 ) +[node name="Collider2" type="CollisionShape2D" parent="Area2D"] +shape = SubResource( 1 ) -[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] -position = Vector2( 0, 4.17233e-07 ) -scale = Vector2( 0.8, 0.8 ) +[node name="Tween" type="Tween" parent="."] [connection signal="gui_input" from="Control" to="." method="_on_Control_gui_input"] [connection signal="mouse_entered" from="Control" to="." method="_on_Control_mouse_entered"] [connection signal="mouse_exited" from="Control" to="." method="_on_Control_mouse_exited"] -[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] diff --git a/Scenes/Objects/ControlRight.tscn b/Scenes/Objects/ControlRight.tscn index d94f571..17fcbbf 100644 --- a/Scenes/Objects/ControlRight.tscn +++ b/Scenes/Objects/ControlRight.tscn @@ -1,15 +1,13 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://Scripts/ControlBlock.gd" type="Script" id=1] -[ext_resource path="res://Assets/Sprites/right.png" type="Texture" id=2] +[ext_resource path="res://Assets/Sprites/UI/right.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 8, 8 ) - -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 8, 8 ) +extents = Vector2( 7, 7 ) [node name="ControlRight" type="KinematicBody2D"] +collision_mask = 0 script = ExtResource( 1 ) control_type = 2 @@ -31,14 +29,13 @@ __meta__ = { } [node name="Area2D" type="Area2D" parent="."] +collision_layer = 0 +collision_mask = 17 -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -shape = SubResource( 2 ) +[node name="Collider2" type="CollisionShape2D" parent="Area2D"] +shape = SubResource( 1 ) -[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] -position = Vector2( 0, 4.17233e-07 ) -scale = Vector2( 0.8, 0.8 ) +[node name="Tween" type="Tween" parent="."] [connection signal="gui_input" from="Control" to="." method="_on_Control_gui_input"] [connection signal="mouse_entered" from="Control" to="." method="_on_Control_mouse_entered"] [connection signal="mouse_exited" from="Control" to="." method="_on_Control_mouse_exited"] -[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] diff --git a/Scenes/Objects/Effect.tscn b/Scenes/Objects/Effect.tscn new file mode 100644 index 0000000..6d0b3bd --- /dev/null +++ b/Scenes/Objects/Effect.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://Assets/Sprites/effects/shooter_smoke.png" type="Texture" id=1] + + +[sub_resource type="Animation" id=1] +resource_name = "shoot_effect" +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 4, 5, 6, 7 ] +} + +[node name="Effect" type="Sprite"] +texture = ExtResource( 1 ) +hframes = 8 +frame = 7 + +[node name="Player" type="AnimationPlayer" parent="."] +anims/shoot_effect = SubResource( 1 ) diff --git a/Scenes/Objects/Fireball.tscn b/Scenes/Objects/Fireball.tscn new file mode 100644 index 0000000..3b2df77 --- /dev/null +++ b/Scenes/Objects/Fireball.tscn @@ -0,0 +1,51 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://Assets/Sprites/fireball/fireball-Sheet.png" type="Texture" id=1] +[ext_resource path="res://Scripts/Fireball.gd" type="Script" id=2] + +[sub_resource type="CircleShape2D" id=1] +radius = 3.0 + +[sub_resource type="Animation" id=2] +resource_name = "fireball" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3 ] +} + +[node name="Fireball" type="KinematicBody2D"] +collision_layer = 2 +script = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +hframes = 4 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "fireball" +anims/fireball = SubResource( 2 ) + +[node name="CPUParticles2D" type="CPUParticles2D" parent="."] +emitting = false +amount = 4 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +direction = Vector2( 0, -1 ) +initial_velocity = 40.0 +scale_amount = 2.0 +scale_amount_random = 1.0 +color = Color( 0.501961, 0.00784314, 0.215686, 1 ) diff --git a/Scenes/Objects/Shooter.tscn b/Scenes/Objects/Shooter.tscn new file mode 100644 index 0000000..dc869a8 --- /dev/null +++ b/Scenes/Objects/Shooter.tscn @@ -0,0 +1,99 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://Assets/Sprites/shooter/shooter-Sheet.png" type="Texture" id=1] +[ext_resource path="res://Scripts/Shooter.gd" type="Script" id=2] +[ext_resource path="res://Scenes/Objects/Effect.tscn" type="PackedScene" id=3] + +[sub_resource type="Animation" id=1] +resource_name = "glint_down" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame_coords") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 0, 0 ), Vector2( 0, 1 ), Vector2( 0, 2 ), Vector2( 0, 3 ), Vector2( 0, 4 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "glint_left" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame_coords") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 3, 0 ), Vector2( 3, 1 ), Vector2( 3, 2 ), Vector2( 3, 3 ), Vector2( 3, 4 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "glint_right" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame_coords") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 2, 0 ), Vector2( 2, 1 ), Vector2( 2, 2 ), Vector2( 2, 3 ), Vector2( 2, 4 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "glint_up" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame_coords") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 1, 0 ), Vector2( 1, 1 ), Vector2( 1, 2 ), Vector2( 1, 3 ), Vector2( 1, 4 ) ] +} + +[node name="Shooter" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +vframes = 5 +hframes = 4 +frame = 17 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/glint_down = SubResource( 1 ) +anims/glint_left = SubResource( 3 ) +anims/glint_right = SubResource( 4 ) +anims/glint_up = SubResource( 2 ) + +[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( 0, -8.34465e-07 ) + +[node name="Timer" type="Timer" parent="."] +autostart = true + +[node name="Effect" parent="." instance=ExtResource( 3 )] +[connection signal="screen_entered" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_entered"] +[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] diff --git a/Scenes/Player.tscn b/Scenes/Player.tscn index 6ff5ab5..e1a90d6 100644 --- a/Scenes/Player.tscn +++ b/Scenes/Player.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://Scripts/Player.gd" type="Script" id=1] [ext_resource path="res://Assets/Sprites/player-Sheet.png" type="Texture" id=2] +[ext_resource path="res://Assets/Sprites/effects/player_death_particle.png" type="Texture" id=3] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 5, 7 ) @@ -71,6 +72,7 @@ tracks/0/keys = { } [node name="Player" type="KinematicBody2D"] +collision_layer = 16 script = ExtResource( 1 ) [node name="Collider" type="CollisionShape2D" parent="."] @@ -78,11 +80,13 @@ position = Vector2( 0, 1 ) shape = SubResource( 1 ) [node name="Sprite" type="Sprite" parent="."] +position = Vector2( 0, -8 ) texture = ExtResource( 2 ) vframes = 3 hframes = 8 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" anims/fall = SubResource( 2 ) anims/idle = SubResource( 3 ) anims/jump = SubResource( 4 ) @@ -99,12 +103,29 @@ enabled = true cast_to = Vector2( 0, 2 ) [node name="Effector" type="Area2D" parent="."] -monitorable = false collision_layer = 0 -collision_mask = 6 +collision_mask = 14 [node name="EffectorCollider" type="CollisionShape2D" parent="Effector"] position = Vector2( 0, 1 ) shape = SubResource( 1 ) + +[node name="DeathParticles" type="CPUParticles2D" parent="."] +emitting = false +one_shot = true +explosiveness = 1.0 +local_coords = false +texture = ExtResource( 3 ) +direction = Vector2( 0, 0 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 40.0 +damping = 40.0 +scale_amount_random = 1.0 + +[node name="DeathTimer" type="Timer" parent="."] +wait_time = 1.2 +one_shot = true [connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] [connection signal="body_entered" from="Effector" to="." method="_on_Effector_body_entered"] +[connection signal="timeout" from="DeathTimer" to="." method="_on_DeathTimer_timeout"] diff --git a/Scenes/World.tscn b/Scenes/World.tscn index e5a4124..ff61823 100644 --- a/Scenes/World.tscn +++ b/Scenes/World.tscn @@ -1,20 +1,27 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=15 format=2] [ext_resource path="res://Assets/Tilesets/terrain_solid.tres" type="TileSet" id=1] [ext_resource path="res://Scenes/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Scenes/Objects/ControlJump.tscn" type="PackedScene" id=3] [ext_resource path="res://Scripts/World.gd" type="Script" id=4] -[ext_resource path="res://Assets/Sprites/spacebar_place.png" type="Texture" id=5] -[ext_resource path="res://Assets/Sprites/key_place.png" type="Texture" id=6] +[ext_resource path="res://Assets/Sprites/UI/spacebar_place.png" type="Texture" id=5] +[ext_resource path="res://Assets/Sprites/UI/key_place.png" type="Texture" id=6] [ext_resource path="res://Scenes/Objects/ControlRight.tscn" type="PackedScene" id=7] [ext_resource path="res://Scenes/Objects/ControlLeft.tscn" type="PackedScene" id=8] [ext_resource path="res://Scripts/Camera.gd" type="Script" id=9] -[ext_resource path="res://Assets/Sprites/controls_background.png" type="Texture" id=10] -[ext_resource path="res://Assets/Tilesets/hazards.tres" type="TileSet" id=11] +[ext_resource path="res://Assets/Sprites/UI/controls_background.png" type="Texture" id=10] +[ext_resource path="res://Scenes/Objects/Shooter.tscn" type="PackedScene" id=11] +[ext_resource path="res://Assets/Tilesets/spikes.tres" type="TileSet" id=12] +[ext_resource path="res://Assets/Tilesets/anti_control.tres" type="TileSet" id=13] +[ext_resource path="res://Scenes/Objects/Checkpoint.tscn" type="PackedScene" id=14] [node name="Node2D" type="Node2D"] script = ExtResource( 4 ) +[node name="ParallaxBackground" type="ParallaxBackground" parent="."] + +[node name="Sprite" type="Sprite" parent="ParallaxBackground"] + [node name="Terrain" type="TileMap" parent="."] tile_set = ExtResource( 1 ) cell_size = Vector2( 16, 16 ) @@ -22,44 +29,81 @@ collision_mask = 0 format = 1 tile_data = PoolIntArray( -65538, 0, 1, -65537, 0, 2, -131072, 0, 2, -131071, 0, 2, -131070, 0, 2, -131069, 0, 2, -131068, 0, 2, -131067, 0, 2, -131066, 0, 2, -131065, 0, 2, -131064, 0, 2, -131063, 0, 2, -131062, 0, 2, -131061, 0, 2, -131060, 0, 2, -131059, 0, 2, -131058, 0, 2, -131057, 0, 2, -131056, 0, 2, -131055, 0, 2, -131054, 0, 2, -131053, 0, 2, -131052, 0, 2, -131051, 0, 3, -2, 0, 65537, -1, 0, 262145, -65536, 0, 65538, -65535, 0, 65538, -65534, 0, 262145, -65533, 0, 262145, -65532, 0, 262145, -65531, 0, 262145, -65530, 0, 262144, -65529, 0, 262146, -65528, 0, 262144, -65527, 0, 262145, -65526, 0, 262144, -65525, 0, 262144, -65524, 0, 262145, -65523, 0, 65538, -65522, 0, 262145, -65521, 0, 262144, -65520, 0, 262144, -65519, 0, 131074, -65518, 0, 131074, -65517, 0, 262144, -65516, 0, 65538, -65515, 0, 65539, 65534, 0, 65537, 65535, 0, 65538, 0, 0, 262145, 1, 0, 131074, 2, 0, 131074, 3, 0, 131074, 4, 0, 131074, 5, 0, 131074, 6, 0, 131074, 7, 0, 131074, 8, 0, 131074, 9, 0, 131074, 10, 0, 131074, 11, 0, 131074, 12, 0, 131074, 13, 0, 131074, 14, 0, 262144, 15, 0, 262146, 16, 0, 131075, 17, 1, 1, 18, 1, 3, 19, 0, 65537, 20, 0, 262145, 21, 0, 65539, 131070, 0, 65537, 131071, 0, 262145, 65536, 0, 65539, 65550, 0, 131073, 65551, 0, 131075, 65553, 1, 65537, 65554, 1, 65539, 65555, 0, 65537, 65556, 0, 262145, 65557, 0, 65539, 196606, 0, 65537, 196607, 0, 65538, 131072, 0, 65539, 131089, 1, 131073, 131090, 1, 65539, 131091, 0, 65537, 131092, 0, 262147, 131093, 0, 65539, 262142, 0, 65537, 262143, 0, 262147, 196608, 0, 65539, 196626, 1, 131072, 196627, 0, 65537, 196628, 0, 262144, 196629, 0, 65539, 327678, 0, 65537, 327679, 0, 262144, 262144, 0, 65539, 262163, 0, 65537, 262164, 0, 65538, 262165, 0, 65539, 393214, 0, 65537, 393215, 0, 65538, 327680, 0, 65539, 327699, 0, 65537, 327700, 0, 65538, 327701, 0, 65539, 458750, 0, 65537, 458751, 0, 262147, 393216, 0, 65539, 393235, 0, 65537, 393236, 0, 262145, 393237, 0, 65539, 524286, 0, 65537, 524287, 0, 262144, 458752, 0, 65539, 458762, 1, 196608, 458769, 3, 1, 458770, 1, 0, 458771, 0, 65537, 458772, 0, 65538, 458773, 0, 65539, 589822, 0, 65537, 589823, 0, 65538, 524288, 0, 65539, 524289, 1, 0, 524296, 1, 196608, 524305, 1, 1, 524306, 1, 65539, 524307, 0, 65537, 524308, 0, 262146, 524309, 0, 65539, 655358, 0, 65537, 655359, 0, 65538, 589824, 0, 65539, 589825, 1, 131073, 589826, 1, 196611, 589829, 3, 1, 589830, 3, 0, 589831, 3, 1, 589834, 3, 1, 589836, 1, 196609, 589837, 1, 196611, 589841, 1, 131073, 589842, 1, 131075, 589843, 0, 65537, 589844, 0, 65538, 589845, 0, 65539, 720894, 0, 65537, 720895, 0, 262144, 655360, 0, 262145, 655361, 0, 2, 655362, 0, 2, 655363, 0, 2, 655364, 0, 2, 655365, 0, 2, 655366, 0, 2, 655367, 0, 2, 655368, 0, 2, 655369, 0, 2, 655370, 0, 2, 655371, 0, 2, 655372, 0, 2, 655373, 0, 2, 655374, 0, 2, 655375, 0, 2, 655376, 0, 2, 655377, 0, 2, 655378, 0, 2, 655379, 0, 65538, 655380, 0, 65538, 655381, 0, 65539, 786430, 0, 65537, 786431, 0, 262144, 720896, 0, 262146, 720897, 0, 262146, 720898, 0, 262146, 720899, 0, 65538, 720900, 0, 262146, 720901, 0, 65538, 720902, 0, 262145, 720903, 0, 262147, 720904, 0, 262147, 720905, 0, 262145, 720906, 0, 65538, 720907, 0, 262147, 720908, 0, 262144, 720909, 0, 262144, 720910, 0, 65538, 720911, 0, 65538, 720912, 0, 262144, 720913, 0, 65538, 720914, 0, 262145, 720915, 0, 65538, 720916, 0, 65538, 720917, 0, 65539, 851966, 0, 65537, 851967, 0, 262147, 786432, 0, 65538, 786433, 0, 262146, 786434, 0, 65538, 786435, 0, 65538, 786436, 0, 262144, 786437, 0, 262146, 786438, 0, 262147, 786439, 0, 262145, 786440, 0, 262147, 786441, 0, 262146, 786442, 0, 65538, 786443, 0, 65538, 786444, 0, 262144, 786445, 0, 262145, 786446, 0, 65538, 786447, 0, 262144, 786448, 0, 65538, 786449, 0, 65538, 786450, 0, 65538, 786451, 0, 262144, 786452, 0, 262147, 786453, 0, 65539, 917502, 0, 131073, 917503, 0, 131074, 851968, 0, 131074, 851969, 0, 131074, 851970, 0, 131074, 851971, 0, 131074, 851972, 0, 131074, 851973, 0, 131074, 851974, 0, 131074, 851975, 0, 131074, 851976, 0, 131074, 851977, 0, 131074, 851978, 0, 131074, 851979, 0, 131074, 851980, 0, 131074, 851981, 0, 131074, 851982, 0, 131074, 851983, 0, 131074, 851984, 0, 131074, 851985, 0, 131074, 851986, 0, 131074, 851987, 0, 131074, 851988, 0, 131074, 851989, 0, 131075 ) +[node name="AntiControl" type="TileMap" parent="."] +tile_set = ExtResource( 13 ) +cell_size = Vector2( 16, 16 ) +collision_layer = 16 +collision_mask = 0 +format = 1 + [node name="Hazards" type="TileMap" parent="."] -tile_set = ExtResource( 11 ) +tile_set = ExtResource( 12 ) cell_size = Vector2( 16, 16 ) collision_layer = 2 collision_mask = 0 format = 1 -tile_data = PoolIntArray( 589838, 0, 1, 589839, 0, 2, 589840, 0, 3, 655374, 0, 65537, 655375, 0, 65538, 655376, 0, 65539, 720910, 0, 65537, 720911, 0, 65538, 720912, 0, 65539, 786446, 0, 131073, 786447, 0, 131074, 786448, 0, 131075 ) +tile_data = PoolIntArray( 589838, 0, 0, 589839, 0, 0, 589840, 0, 0 ) + +[node name="Shooter" parent="Hazards" instance=ExtResource( 11 )] +position = Vector2( 24, 120 ) +direction = 1 +speed = 100.0 + +[node name="Checkpoints" type="Node2D" parent="."] + +[node name="Checkpoint" parent="Checkpoints" instance=ExtResource( 14 )] +position = Vector2( 200, 136 ) [node name="ScreenPos" type="CanvasLayer" parent="."] -[node name="NinePatchRect" type="NinePatchRect" parent="ScreenPos"] -margin_left = -8.0 -margin_top = 163.0 -margin_right = 326.0 -margin_bottom = 184.0 +[node name="ControlsBar" type="Sprite" parent="ScreenPos"] +position = Vector2( 160, 180 ) texture = ExtResource( 10 ) -patch_margin_left = 3 -patch_margin_top = 3 -patch_margin_right = 3 -patch_margin_bottom = 3 [node name="ControlJumpPos" type="Position2D" parent="ScreenPos"] position = Vector2( 184, 168 ) -[node name="Sprite" type="Sprite" parent="ScreenPos/ControlJumpPos"] -texture = ExtResource( 5 ) +[node name="RetrieveJump" type="TextureButton" parent="ScreenPos/ControlJumpPos"] +margin_left = -32.0 +margin_top = -8.0 +margin_right = 32.0 +margin_bottom = 8.0 +focus_mode = 0 +enabled_focus_mode = 0 +texture_normal = ExtResource( 5 ) +__meta__ = { +"_edit_use_anchors_": false +} [node name="ControlLeftPos" type="Position2D" parent="ScreenPos"] position = Vector2( 112, 168 ) -[node name="Sprite" type="Sprite" parent="ScreenPos/ControlLeftPos"] -texture = ExtResource( 6 ) +[node name="RetrieveLeft" type="TextureButton" parent="ScreenPos/ControlLeftPos"] +margin_left = -8.0 +margin_top = -8.0 +margin_right = 8.0 +margin_bottom = 8.0 +focus_mode = 0 +enabled_focus_mode = 0 +texture_normal = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": false +} [node name="ControlRightPos" type="Position2D" parent="ScreenPos"] position = Vector2( 136, 168 ) -[node name="Sprite" type="Sprite" parent="ScreenPos/ControlRightPos"] -texture = ExtResource( 6 ) +[node name="RetrieveRight" type="TextureButton" parent="ScreenPos/ControlRightPos"] +margin_left = -8.0 +margin_top = -8.0 +margin_right = 8.0 +margin_bottom = 8.0 +focus_mode = 0 +enabled_focus_mode = 0 +texture_normal = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": false +} [node name="ControlJump" parent="ScreenPos" instance=ExtResource( 3 )] position = Vector2( 184, 168 ) @@ -71,11 +115,12 @@ position = Vector2( 112, 168 ) position = Vector2( 136, 168 ) [node name="Player" parent="." instance=ExtResource( 2 )] -position = Vector2( 77, 149 ) -max_speed = 100.0 -jump_force = 125.0 +position = Vector2( 72, 152 ) +max_speed = 120.0 +jump_force = 128.0 gravity = 4.0 -accel = 0.2 +gravity_strong = 8.0 +accel = 0.3 [node name="Camera2D" type="Camera2D" parent="Player"] current = true @@ -86,9 +131,27 @@ drag_margin_bottom = 0.0 editor_draw_limits = true editor_draw_drag_margin = true script = ExtResource( 9 ) + +[node name="HUD" type="CanvasLayer" parent="."] +layer = 2 + +[node name="Control" type="Control" parent="HUD"] +visible = false +margin_right = 320.0 +margin_bottom = 196.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Tween" type="Tween" parent="."] +[connection signal="pressed" from="ScreenPos/ControlJumpPos/RetrieveJump" to="." method="_on_RetrieveJump_pressed"] +[connection signal="pressed" from="ScreenPos/ControlLeftPos/RetrieveLeft" to="." method="_on_RetrieveLeft_pressed"] +[connection signal="pressed" from="ScreenPos/ControlRightPos/RetrieveRight" to="." method="_on_RetrieveRight_pressed"] [connection signal="place_in_world" from="ScreenPos/ControlJump" to="." method="_on_Control_place_in_world"] [connection signal="retrieve_from_world" from="ScreenPos/ControlJump" to="." method="_on_Control_retrieve_from_world"] [connection signal="place_in_world" from="ScreenPos/ControlLeft" to="." method="_on_Control_place_in_world"] [connection signal="retrieve_from_world" from="ScreenPos/ControlLeft" to="." method="_on_Control_retrieve_from_world"] [connection signal="place_in_world" from="ScreenPos/ControlRight" to="." method="_on_Control_place_in_world"] [connection signal="retrieve_from_world" from="ScreenPos/ControlRight" to="." method="_on_Control_retrieve_from_world"] +[connection signal="checkpoint" from="Player" to="." method="_on_Player_checkpoint"] +[connection signal="respawn" from="Player" to="." method="_on_Player_respawn"] diff --git a/Scripts/ControlBlock.gd b/Scripts/ControlBlock.gd index fa06866..3a6a881 100644 --- a/Scripts/ControlBlock.gd +++ b/Scripts/ControlBlock.gd @@ -12,6 +12,8 @@ enum {NORMAL, HOVER, PRESSED, PRESSED_HOVER} var hover = false var dragged = false +var drag_time = 0.0 +var limit_drag_time = 0.2 var valid_pos = true var in_world = false @@ -31,11 +33,11 @@ func _ready(): match control_type: Controls.JUMP: - control_action = "ui_select" + control_action = "jump" Controls.LEFT: - control_action = "ui_left" + control_action = "left" Controls.RIGHT: - control_action = "ui_right" + control_action = "right" func _process(delta): if Input.is_action_pressed(control_action) or dragged or in_world: @@ -49,40 +51,52 @@ func _process(delta): else: ControlSprite.frame = NORMAL + if Input.is_action_just_pressed(control_action) and in_world: + var tween = $Tween + tween.interpolate_property(ControlSprite, "modulate", + Color(1.0, 0.0, 0.0), + Color(1.0, 1.0, 1.0), + 0.5, Tween.TRANS_LINEAR, Tween.EASE_OUT) + tween.start() + + if not valid_pos: - ControlSprite.modulate = Color(1.0,1.0,1.0,0.5) + ControlSprite.modulate.a = 0.5 else: - ControlSprite.modulate = Color.white + ControlSprite.modulate.a = 1.0 func _physics_process(delta): valid_pos = true if dragged: + drag_time += delta position = get_global_mouse_position().round() if $Area2D.get_overlapping_bodies().size() > 0: valid_pos = false func _on_start_drag(): + drag_time = 0.0 + dragged = true if not in_world: - dragged = true Collider.disabled = true emit_signal("place_in_world", self) position = get_global_mouse_position().round() else: - in_world = false - Collider.disabled = true emit_signal("retrieve_from_world", self) - hover = false func _on_stop_drag(): - if dragged: - dragged = false - if valid_pos: - in_world = true - Collider.disabled = false - else: - in_world = false - Collider.disabled = true - emit_signal("retrieve_from_world", self) + dragged = false + if valid_pos and drag_time > limit_drag_time: + in_world = true + Collider.disabled = false + else: + emit_signal("retrieve_from_world", self) + +func retrieve(): + in_world = false + Collider.disabled = true + hover = false + ControlSprite.modulate = Color(1.0, 1.0, 1.0) + func _on_Control_mouse_entered(): hover = true @@ -100,9 +114,3 @@ func _input(event): if event.button_index == BUTTON_LEFT and !event.pressed: emit_signal("stop_drag") -func _on_VisibilityNotifier2D_screen_exited(): - if in_world: - in_world = false - Collider.disabled = true - hover = false - emit_signal("retrieve_from_world", self) diff --git a/Scripts/Fireball.gd b/Scripts/Fireball.gd new file mode 100644 index 0000000..1d18bc9 --- /dev/null +++ b/Scripts/Fireball.gd @@ -0,0 +1,25 @@ +extends KinematicBody2D + +var dir = Vector2.ZERO +var speed = 1.0 +var alive = true + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + if !alive and !$CPUParticles2D.emitting: + queue_free() + +func _physics_process(delta): + var collision + if alive: + collision = move_and_collide((dir*speed)*delta) + if collision: + alive = false + $CollisionShape2D.disabled = true + $Sprite.visible = false + $CPUParticles2D.emitting = true + +func init(dir: Vector2, speed: float): + self.dir = dir + self.speed = speed + self.rotation_degrees = rad2deg(dir.angle())-90 diff --git a/Scripts/Main.gd b/Scripts/Main.gd index 48cbea2..263562f 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -8,13 +8,18 @@ extends Node2D # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + $Credits.hide() -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass +func _on_Back_pressed(): + $Credits.hide() -func _on_Button_pressed(): +func _on_Credits_pressed(): + $Credits.show() + +func _on_Start_pressed(): get_tree().change_scene("res://Scenes/World.tscn") + +func _on_Quit_pressed(): + get_tree().quit() diff --git a/Scripts/Player.gd b/Scripts/Player.gd index 403add3..2c3318b 100644 --- a/Scripts/Player.gd +++ b/Scripts/Player.gd @@ -1,7 +1,8 @@ extends KinematicBody2D -signal checkpoint -signal death +signal checkpoint(node) +signal respawn +signal win enum {IDLE, RUNNING, JUMPING, FALLING} var state = IDLE @@ -9,29 +10,41 @@ var state = IDLE export var max_speed = 75.0 export var jump_force = 75.0 export var gravity = 2.0 +export var gravity_strong = 4.0 export var accel = 0.1 +export var coyote_time = 0.1 var left_control = true var right_control = true var jump_control = true var on_ground = false +var alive = true var velocity = Vector2() var target_speed = 0.0 +var target_gravity: float +var air_time = 0.0 var Animator: AnimationPlayer func _ready(): Animator = $AnimationPlayer + target_gravity = gravity_strong func _process(delta): var direction = 0.0 - if left_control and Input.is_action_pressed("ui_left"): - direction -= 1.0 - if right_control and Input.is_action_pressed("ui_right"): - direction += 1.0 - if jump_control and Input.is_action_just_pressed("ui_select") and on_ground: - velocity.y -= jump_force + if alive: + if left_control and Input.is_action_pressed("left"): + direction -= 1.0 + if right_control and Input.is_action_pressed("right"): + direction += 1.0 + if jump_control and Input.is_action_just_pressed("jump") and air_time < coyote_time: + velocity.y -= jump_force + target_gravity = gravity + if Input.is_action_just_released("jump") or velocity.y >= 0: + target_gravity = gravity_strong + else: + target_gravity = gravity_strong target_speed = direction * max_speed @@ -56,16 +69,49 @@ func _process(delta): state = JUMPING func _physics_process(delta): - velocity.y += gravity + velocity.y += target_gravity velocity.x = lerp(velocity.x, target_speed, accel) - velocity = move_and_slide(velocity, Vector2.UP) - on_ground = ($RayCastLeft.is_colliding() or $RayCastRight.is_colliding()) + if alive: + velocity = move_and_slide(velocity, Vector2.UP) + on_ground = ($RayCastLeft.is_colliding() or $RayCastRight.is_colliding() or is_on_floor()) + + if on_ground: + air_time = 0.0 + elif air_time < coyote_time: + air_time += delta + +func death(): + alive = false + $Sprite.visible = false + $Effector/EffectorCollider.disabled = true + $DeathParticles.emitting = true + $DeathTimer.start() + +func respawn(): + alive = true + $Sprite.visible = true + $Effector/EffectorCollider.disabled = false + + velocity = Vector2(0.0, -100.0) + emit_signal("respawn") func _on_AnimationPlayer_animation_finished(anim_name): if anim_name == "jump" or anim_name == "fall": Animator.stop() - func _on_Effector_body_entered(body): - pass # Replace with function body. + if body.get_collision_layer_bit(1): + print("death") + call_deferred("death") + elif body.get_collision_layer_bit(2): + print("checkpoint") + emit_signal("checkpoint", body) + elif body.get_collision_layer_bit(3): + print("win") + else: + print("death") + call_deferred("death") + +func _on_DeathTimer_timeout(): + respawn() diff --git a/Scripts/Shooter.gd b/Scripts/Shooter.gd new file mode 100644 index 0000000..acd1a39 --- /dev/null +++ b/Scripts/Shooter.gd @@ -0,0 +1,36 @@ +extends Node2D + +enum Directions {UP, RIGHT, DOWN, LEFT} +export(Directions) var direction +export(float, 0.0, 10.0) var delay = 1.0 +export(float) var speed = 1.0 + +var vec_dirs = [Vector2.UP, Vector2.RIGHT, Vector2.DOWN, Vector2.LEFT] +var Animations = ["glint_up", "glint_right", "glint_down", "glint_left"] + +var shooting = true +var fireball = preload("res://Scenes/Objects/Fireball.tscn") + + +# Called when the node enters the scene tree for the first time. +func _ready(): + $AnimationPlayer.play(Animations[direction]) + $Timer.wait_time = delay + $Effect.rotation_degrees = direction*90 + +func _on_Timer_timeout(): + if shooting: + $Effect/Player.stop() + $Effect/Player.play("shoot_effect") + + var new_fireball = fireball.instance() + new_fireball.init(vec_dirs[direction], speed) + new_fireball.position = self.position + get_parent().add_child(new_fireball) + + +func _on_VisibilityNotifier2D_screen_entered(): + shooting = true + +func _on_VisibilityNotifier2D_screen_exited(): + shooting = false diff --git a/Scripts/World.gd b/Scripts/World.gd index 289ee4f..d800656 100644 --- a/Scripts/World.gd +++ b/Scripts/World.gd @@ -2,8 +2,15 @@ extends Node2D enum Controls {JUMP, LEFT, RIGHT} +var current_checkpoint: Vector2 + var Player: KinematicBody2D var WorldCamera: Camera2D +var Checkpoints: Array + +var ControlJump +var ControlLeft +var ControlRight # Called when the node enters the scene tree for the first time. func _ready(): @@ -11,6 +18,13 @@ func _ready(): WorldCamera = $Player/Camera2D set_camera_limits() + Checkpoints = $Checkpoints.get_children() + current_checkpoint = Player.position + + ControlJump = $ScreenPos/ControlJump + ControlLeft = $ScreenPos/ControlLeft + ControlRight = $ScreenPos/ControlRight + func _process(delta): pass @@ -28,9 +42,6 @@ func reparent(child: Node, new_parent: Node): new_parent.add_child(child) func _on_Control_place_in_world(node): - print("place") - print(node) - print(node.get_parent()) reparent(node, self) match node.control_type: Controls.JUMP: @@ -41,17 +52,45 @@ func _on_Control_place_in_world(node): Player.right_control = false func _on_Control_retrieve_from_world(node): - print("retrieve") - print(node) - print(node.get_parent()) reparent(node, $ScreenPos) + node.retrieve() + + var tween = $Tween + var target_pos match node.control_type: Controls.JUMP: Player.jump_control = true - node.position = $ScreenPos/ControlJumpPos.position + target_pos = $ScreenPos/ControlJumpPos.position Controls.LEFT: Player.left_control = true - node.position = $ScreenPos/ControlLeftPos.position + target_pos = $ScreenPos/ControlLeftPos.position Controls.RIGHT: Player.right_control = true - node.position = $ScreenPos/ControlRightPos.position + target_pos = $ScreenPos/ControlRightPos.position + tween.interpolate_property(node, "position", + node.global_position, + target_pos, + 0.2,Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) + tween.start() + +func _on_Player_checkpoint(node): + var index = Checkpoints.find(node) + if index >= 0: + current_checkpoint = node.position + for i in range(Checkpoints.size()): + if i != index: + Checkpoints[i].get_node("Player").play("flag_down") + node.get_node("Player").play("flag_up") + node.get_node("Particle").emitting = true + +func _on_Player_respawn(): + Player.position = current_checkpoint + +func _on_RetrieveJump_pressed(): + _on_Control_retrieve_from_world(ControlJump) + +func _on_RetrieveLeft_pressed(): + _on_Control_retrieve_from_world(ControlLeft) + +func _on_RetrieveRight_pressed(): + _on_Control_retrieve_from_world(ControlRight) diff --git a/project.godot b/project.godot index e1ab8ef..30d3be0 100644 --- a/project.godot +++ b/project.godot @@ -39,6 +39,25 @@ fullscreen={ "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":16777254,"unicode":0,"echo":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) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null) + ] +} +left={ +"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":16777231,"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,"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":81,"unicode":0,"echo":false,"script":null) + ] +} +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":16777233,"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":68,"unicode":0,"echo":false,"script":null) + ] +} [rendering]