From bb086d25d1bc0f4d54a9e58c430d1af7a201a276 Mon Sep 17 00:00:00 2001 From: Zicklag Date: Fri, 2 Dec 2022 18:03:41 -0600 Subject: [PATCH] Implement Mine Item --- .../elements/item/crate/crate.element.yaml | 2 +- assets/map/elements/item/mine/arm.ogg | Bin 0 -> 4617 bytes .../elements/item/mine/explosion.atlas.yaml | 4 + assets/map/elements/item/mine/explosion.ogg | Bin 0 -> 11528 bytes assets/map/elements/item/mine/explosion.png | Bin 0 -> 17898 bytes assets/map/elements/item/mine/mine.atlas.yaml | 4 + .../map/elements/item/mine/mine.element.yaml | 24 + assets/map/elements/item/mine/mine.png | Bin 0 -> 2714 bytes .../elements/item/mines/mines.element.yaml | 2 - assets/map/levels/lev01.map.json | 2986 ++++++----------- assets/map/levels/lev02.map.json | 2 +- assets/map/levels/lev04.map.json | 2975 ++++++---------- assets/map/levels/lev05.map.json | 2 +- assets/map/levels/lev06.map.json | 2748 ++++++--------- assets/map/levels/level1.map.yaml | 6 +- assets/map/levels/level4.map.yaml | 2 +- assets/map/levels/test_level.map.json | 2 +- assets/map/levels/zyrafa01.map.json | 4 +- src/assets.rs | 29 + src/map/elements.rs | 2 + src/map/elements/crate_item.rs | 6 +- src/map/elements/mine.rs | 350 ++ src/metadata/map.rs | 36 +- 23 files changed, 3678 insertions(+), 5508 deletions(-) create mode 100755 assets/map/elements/item/mine/arm.ogg create mode 100644 assets/map/elements/item/mine/explosion.atlas.yaml create mode 100755 assets/map/elements/item/mine/explosion.ogg create mode 100644 assets/map/elements/item/mine/explosion.png create mode 100644 assets/map/elements/item/mine/mine.atlas.yaml create mode 100644 assets/map/elements/item/mine/mine.element.yaml create mode 100644 assets/map/elements/item/mine/mine.png delete mode 100644 assets/map/elements/item/mines/mines.element.yaml create mode 100644 src/map/elements/mine.rs diff --git a/assets/map/elements/item/crate/crate.element.yaml b/assets/map/elements/item/crate/crate.element.yaml index ad1891a365..2cd0a22d81 100644 --- a/assets/map/elements/item/crate/crate.element.yaml +++ b/assets/map/elements/item/crate/crate.element.yaml @@ -6,7 +6,7 @@ builtin: !Crate atlas: ./crate.atlas.yaml breaking_atlas: ./crate_breaking.atlas.yaml - breaking_anim_length: 25 + breaking_anim_frames: 25 breaking_anim_fps: 30 # TODO: Better break sound diff --git a/assets/map/elements/item/mine/arm.ogg b/assets/map/elements/item/mine/arm.ogg new file mode 100755 index 0000000000000000000000000000000000000000..6e80dfd4611720edc770d9e4d7046e79024a7206 GIT binary patch literal 4617 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 literal 0 HcmV?d00001 diff --git a/assets/map/elements/item/mine/explosion.atlas.yaml b/assets/map/elements/item/mine/explosion.atlas.yaml new file mode 100644 index 0000000000..87686e3634 --- /dev/null +++ b/assets/map/elements/item/mine/explosion.atlas.yaml @@ -0,0 +1,4 @@ +image: ./explosion.png +tile_size: [144, 112] +rows: 1 +columns: 13 diff --git a/assets/map/elements/item/mine/explosion.ogg b/assets/map/elements/item/mine/explosion.ogg new file mode 100755 index 0000000000000000000000000000000000000000..95bc9aeb74cc8e3e1e50d0309995416767affbcf GIT binary patch literal 11528 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%0A@Opai@-NimD}Hdw^9i%ttU2`a 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 Oq{P$J&t;ucLK6V^plqA~ literal 0 HcmV?d00001 diff --git a/assets/map/elements/item/mine/mine.atlas.yaml b/assets/map/elements/item/mine/mine.atlas.yaml new file mode 100644 index 0000000000..bbdb2a6f8d --- /dev/null +++ b/assets/map/elements/item/mine/mine.atlas.yaml @@ -0,0 +1,4 @@ +image: ./mine.png +tile_size: [33, 35] +rows: 1 +columns: 13 diff --git a/assets/map/elements/item/mine/mine.element.yaml b/assets/map/elements/item/mine/mine.element.yaml new file mode 100644 index 0000000000..c29be16bb4 --- /dev/null +++ b/assets/map/elements/item/mine/mine.element.yaml @@ -0,0 +1,24 @@ +name: Mine +category: Weapons +builtin: !Mine + throw_velocity: [7, 5] + + atlas: ./mine.atlas.yaml + + explosion_atlas: ./explosion.atlas.yaml + explosion_anim_frames: 12 + explosion_anim_fps: 8 + explosion_sound: ./explosion.ogg + + arm_sound: ./arm.ogg + armed_anim_start: 1 + armed_anim_end: 13 + armed_anim_fps: 15 + + damage_region_size: [60, 60] + damage_region_lifetime: 0.6 + + arm_delay: 0.5 + body_size: [34, 36] + body_offset: [0, 0] + grab_offset: [14, -2] diff --git a/assets/map/elements/item/mine/mine.png b/assets/map/elements/item/mine/mine.png new file mode 100644 index 0000000000000000000000000000000000000000..ab498a52cc853c0521efe041ab7262c910ed5b1b GIT binary patch literal 2714 zcmV;L3T5?)P)Px(6s1b{5b4sS zG7Sx#CCddOWh~Or(vX5@+=2uWh5rGhOX2suH#awXzO(Pgf@dW3?0b8ApPQY%xt*O| z6U`_qtF>U(I*h>>J{rT?){ZfdA8la_#t;Drf*`08#2AdhH-@#XogfH;ph~CV1A`B3 zVGMK3u(DbU@Q3eTzWx(H_;Fs&7>uDPhPADo0DrzPz*#`}@uJ(p#US-igd@vp4?Zw_ z)PC{N8GgtDa@=o+Ktx2B7dLb==+nudA32V4MTjvN1DE^jD;f<4l`{~1569u!khQIy zU^E;Q%JBU75M$8vfO17hT6^$;;iLD9kIb;39pql`KntL zQU)TT_3hn&Xl(FRGY}E&pS2=oE-!8(-xoJN7iJH5AaDll`g=#4;rCv%9Xcy^KT|W{ z*rc}57%&2Tul>Rp%4cwf2S5G(g;0S8fD7YK3d-Yr)R#q!!5Fw8tbmYU)eJ;&hebrR zceELKKrgLX}q^W^9C zn(fq~LCye~)D{}U<;Bgr?-#~U4MTWP#u4#-saB7~9f@==$}c8Ca6YdW-+5VM@P`56 zqtS3sIRnwyVIZ7TH3QN3p)co+FoMyXN1pbeF`zE42k9)h!7fjpbd4B%=$rG*5OG?(!{J2UIgqaCx{>34JCf4K z&*wLk6gn{mKNv>CLFEj%26(Dw;OA-~FKvD+FNVvDoA8>P0S<=iL1WV#fvk@xc`hM~ zJ-GBE^#Gm8dh%e~%_7>t3-cn*mI{^nm513$(e_UqfbPG^-D!^_ifVd?fR=&^9*-qB__FU0k5T5lvi z^iKwT>NVRc^Le9{$dJ|^GzRW;p$F|@h7hJU$5xh2zTMtY@Aj@z2H*Q;l?*YMmDO6n zy(W*_yWVyoJieY($D~O#iO~lYHq~+LaqLq^nkfg~yV=x9E7_^1E za=lU64BYXco}{oPggXa5>XFGD8bg}4&=_QBM=K|t79=SVqX>JzXFdnxqfO2`!w&$! zq#6p2h68%-bi)Q*-1rG#1J2`m*gtE9Y)OJLa2CC0JHp{&NYfS?gKIuSGT=O%i)0M$tc$h>aN)C0Hd&?~ z-b3G9SXr$FY&El*u8K7wh*RUcCbA5^%W#TZ^=u5r;1k1AtsdDeg3keA&ZcYz{>Ccx zFpcEh7PAPS14EV}5tU*O5T1m>^{~FZOQYeS5}U*Va$ov|4-Da6Ps@h~&eX&r1lQyH zO&NnR_{4w|Y`MN^(%WMZ3`mmTk~Z5-lcamd(iR$nR(Dob+;h?P04|OBxZjQ}ye``& zmuhu7`t29`>z7}>>K9crB+h9SAz9<3#$XIpGHCNjWiw2gKgcSsd&q-9t2+xTpIE7B}L1 z`K1*(YRr=Xb9`KqG8tXs%G}G-9w1tqEY<3zFu3etQU;?B{h~^SMDNKV!E9&mk`!N?a6YwNW5+NmNK&Ks?m9;CzKa~pDwjwt#QE=Ae{ zI52PM5|`5`(k9`s%Fu(0fynQ^8SaRII3=H0g9pTfVA=`S(|UuRA0N~>F|NUH*cgn# zR|c$&@<9*ULqIw#m+%Siycy0Lt(YDrjRfznuhg(y(e}XqU+Mu5-TkvxWZSO188{1P z!1c?}gNuQSmc3X7gVaN08z*jPvI1|yU{lh(I)>C^9D)a`?~ zUXvcUMc9M3Mr`kB(>W3>!zM8*btUbT*)O;rrrPCQ4h126Sj)@up{~3RFKZ0OU<|YE zG%v$;a>t828IZ8R>(xSsoJHg1TlEyx7JOZpEW3Po5OU?Y(|lTcKsl+0G|3=E+9VH) zSJ^M59%6|YTo4MFG5eLzi*N_aOA}x1;=?vkn5pL1_nkt%g-Z{M+CeTDvhuYHY1XO$ z{I%01nle4t7>vOf+=4e+zHgouf-8~%n*~dTH0R~XKooC_#f{HSeelp~ui2*4>)Ceo z$Z8LA4$B9d%wr8=8U12nDx;QL8djKLU;VZIrrc3N@)VVVVnd5bX^gE1I`G0Ydk{{+PQ U7GCZ4r2qf`07*qoM6N<$f=q@Y*8l(j literal 0 HcmV?d00001 diff --git a/assets/map/elements/item/mines/mines.element.yaml b/assets/map/elements/item/mines/mines.element.yaml deleted file mode 100644 index 529141d8ee..0000000000 --- a/assets/map/elements/item/mines/mines.element.yaml +++ /dev/null @@ -1,2 +0,0 @@ -name: Mines -category: Weapons diff --git a/assets/map/levels/lev01.map.json b/assets/map/levels/lev01.map.json index 8cf69f993f..d0aeb7f69d 100644 --- a/assets/map/levels/lev01.map.json +++ b/assets/map/levels/lev01.map.json @@ -1,1889 +1,1109 @@ { - "name": "lev01", - "background_color": "7EA8A6", - "grid_size": [ - 27, - 21 - ], - "tile_size": [ - 32, - 32 - ], - "layers": [ - { - "id": "main layer", - "kind": { - "tile": { - "has_collision": true, - "tiles": [ - { - "pos": [ - 0, - 20 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 20 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 20 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 20 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 19 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 19 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 19 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 19 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 18 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 18 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 18 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 18 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 17 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 17 - ], - "idx": 9 - }, - { - "pos": [ - 8, - 17 - ], - "idx": 32 - }, - { - "pos": [ - 9, - 17 - ], - "idx": 34 - }, - { - "pos": [ - 17, - 17 - ], - "idx": 32 - }, - { - "pos": [ - 18, - 17 - ], - "idx": 34 - }, - { - "pos": [ - 25, - 17 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 17 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 16 - ], - "idx": 9 - }, - { - "pos": [ - 8, - 16 - ], - "idx": 39 - }, - { - "pos": [ - 9, - 16 - ], - "idx": 40 - }, - { - "pos": [ - 10, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 11, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 12, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 13, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 14, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 15, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 16, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 17, - 16 - ], - "idx": 39 - }, - { - "pos": [ - 18, - 16 - ], - "idx": 41 - }, - { - "pos": [ - 25, - 16 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 15 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 15 - ], - "idx": 9 - }, - { - "pos": [ - 6, - 15 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 7, - 15 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 8, - 15 - ], - "idx": 46 - }, - { - "pos": [ - 9, - 15 - ], - "idx": 48 - }, - { - "pos": [ - 17, - 15 - ], - "idx": 46 - }, - { - "pos": [ - 18, - 15 - ], - "idx": 48 - }, - { - "pos": [ - 19, - 15 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 20, - 15 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 25, - 15 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 15 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 14 - ], - "idx": 9 - }, - { - "pos": [ - 2, - 14 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 24, - 14 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 25, - 14 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 13 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 13 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 12 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 12 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 11 - ], - "idx": 9 - }, - { - "pos": [ - 2, - 11 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 3, - 11 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 4, - 11 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 5, - 11 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 21, - 11 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 22, - 11 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 23, - 11 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 24, - 11 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 25, - 11 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 10 - ], - "idx": 9 - }, - { - "pos": [ - 11, - 10 - ], - "idx": 0 - }, - { - "pos": [ - 12, - 10 - ], - "idx": 1 - }, - { - "pos": [ - 13, - 10 - ], - "idx": 1 - }, - { - "pos": [ - 14, - 10 - ], - "idx": 1 - }, - { - "pos": [ - 15, - 10 - ], - "idx": 2 - }, - { - "pos": [ - 25, - 10 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 9 - ], - "idx": 9 - }, - { - "pos": [ - 11, - 9 - ], - "idx": 7 - }, - { - "pos": [ - 12, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 13, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 14, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 15, - 9 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 9 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 8 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 8 - ], - "idx": 9 - }, - { - "pos": [ - 7, - 8 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 8, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 9, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 10, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 11, - 8 - ], - "idx": 14 - }, - { - "pos": [ - 12, - 8 - ], - "idx": 15 - }, - { - "pos": [ - 13, - 8 - ], - "idx": 15 - }, - { - "pos": [ - 14, - 8 - ], - "idx": 15 - }, - { - "pos": [ - 15, - 8 - ], - "idx": 16 - }, - { - "pos": [ - 16, - 8 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 17, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 18, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 19, - 8 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 25, - 8 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 8 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 7 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 7 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 7 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 7 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 6 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 6 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 6 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 6 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 5 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 5 - ], - "idx": 20 - }, - { - "pos": [ - 2, - 5 - ], - "idx": 40 - }, - { - "pos": [ - 3, - 5 - ], - "idx": 40 - }, - { - "pos": [ - 4, - 5 - ], - "idx": 23 - }, - { - "pos": [ - 22, - 5 - ], - "idx": 21 - }, - { - "pos": [ - 23, - 5 - ], - "idx": 40 - }, - { - "pos": [ - 24, - 5 - ], - "idx": 40 - }, - { - "pos": [ - 25, - 5 - ], - "idx": 13 - }, - { - "pos": [ - 26, - 5 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 4 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 4 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 4 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 4 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 3 - ], - "idx": 9 - }, - { - "pos": [ - 25, - 3 - ], - "idx": 7 - }, - { - "pos": [ - 26, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 2 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 2 - ], - "idx": 11 - }, - { - "pos": [ - 2, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 3, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 4, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 5, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 6, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 7, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 8, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 9, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 10, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 11, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 12, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 13, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 14, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 15, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 16, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 17, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 18, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 19, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 20, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 21, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 22, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 23, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 24, - 2 - ], - "idx": 1 - }, - { - "pos": [ - 25, - 2 - ], - "idx": 12 - }, - { - "pos": [ - 26, - 2 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 2, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 5, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 6, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 7, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 8, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 9, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 10, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 11, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 12, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 13, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 14, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 15, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 16, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 17, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 18, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 19, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 20, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 21, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 24, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 25, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 26, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 1, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 2, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 3, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 4, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 5, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 6, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 7, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 8, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 9, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 10, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 11, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 12, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 13, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 14, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 15, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 16, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 17, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 18, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 19, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 20, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 21, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 22, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 23, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 24, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 25, - 0 - ], - "idx": 15 - }, - { - "pos": [ - 26, - 0 - ], - "idx": 15 + "name": "lev01", + "background_color": "7EA8A6", + "grid_size": [27, 21], + "tile_size": [32, 32], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [0, 20], + "idx": 8 + }, + { + "pos": [1, 20], + "idx": 9 + }, + { + "pos": [25, 20], + "idx": 7 + }, + { + "pos": [26, 20], + "idx": 8 + }, + { + "pos": [0, 19], + "idx": 8 + }, + { + "pos": [1, 19], + "idx": 9 + }, + { + "pos": [25, 19], + "idx": 7 + }, + { + "pos": [26, 19], + "idx": 8 + }, + { + "pos": [0, 18], + "idx": 8 + }, + { + "pos": [1, 18], + "idx": 9 + }, + { + "pos": [25, 18], + "idx": 7 + }, + { + "pos": [26, 18], + "idx": 8 + }, + { + "pos": [0, 17], + "idx": 8 + }, + { + "pos": [1, 17], + "idx": 9 + }, + { + "pos": [8, 17], + "idx": 32 + }, + { + "pos": [9, 17], + "idx": 34 + }, + { + "pos": [17, 17], + "idx": 32 + }, + { + "pos": [18, 17], + "idx": 34 + }, + { + "pos": [25, 17], + "idx": 7 + }, + { + "pos": [26, 17], + "idx": 8 + }, + { + "pos": [0, 16], + "idx": 8 + }, + { + "pos": [1, 16], + "idx": 9 + }, + { + "pos": [8, 16], + "idx": 39 + }, + { + "pos": [9, 16], + "idx": 40 + }, + { + "pos": [10, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [11, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [12, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [13, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [14, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [15, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [16, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [17, 16], + "idx": 39 + }, + { + "pos": [18, 16], + "idx": 41 + }, + { + "pos": [25, 16], + "idx": 7 + }, + { + "pos": [26, 16], + "idx": 8 + }, + { + "pos": [0, 15], + "idx": 8 + }, + { + "pos": [1, 15], + "idx": 9 + }, + { + "pos": [6, 15], + "idx": 56, + "jump_through": true + }, + { + "pos": [7, 15], + "idx": 58, + "jump_through": true + }, + { + "pos": [8, 15], + "idx": 46 + }, + { + "pos": [9, 15], + "idx": 48 + }, + { + "pos": [17, 15], + "idx": 46 + }, + { + "pos": [18, 15], + "idx": 48 + }, + { + "pos": [19, 15], + "idx": 58, + "jump_through": true + }, + { + "pos": [20, 15], + "idx": 60, + "jump_through": true + }, + { + "pos": [25, 15], + "idx": 7 + }, + { + "pos": [26, 15], + "idx": 8 + }, + { + "pos": [0, 14], + "idx": 8 + }, + { + "pos": [1, 14], + "idx": 9 + }, + { + "pos": [2, 14], + "idx": 60, + "jump_through": true + }, + { + "pos": [24, 14], + "idx": 56, + "jump_through": true + }, + { + "pos": [25, 14], + "idx": 7 + }, + { + "pos": [26, 14], + "idx": 8 + }, + { + "pos": [0, 13], + "idx": 8 + }, + { + "pos": [1, 13], + "idx": 9 + }, + { + "pos": [25, 13], + "idx": 7 + }, + { + "pos": [26, 13], + "idx": 8 + }, + { + "pos": [0, 12], + "idx": 8 + }, + { + "pos": [1, 12], + "idx": 9 + }, + { + "pos": [25, 12], + "idx": 7 + }, + { + "pos": [26, 12], + "idx": 8 + }, + { + "pos": [0, 11], + "idx": 8 + }, + { + "pos": [1, 11], + "idx": 9 + }, + { + "pos": [2, 11], + "idx": 58, + "jump_through": true + }, + { + "pos": [3, 11], + "idx": 58, + "jump_through": true + }, + { + "pos": [4, 11], + "idx": 58, + "jump_through": true + }, + { + "pos": [5, 11], + "idx": 60, + "jump_through": true + }, + { + "pos": [21, 11], + "idx": 56, + "jump_through": true + }, + { + "pos": [22, 11], + "idx": 58, + "jump_through": true + }, + { + "pos": [23, 11], + "idx": 58, + "jump_through": true + }, + { + "pos": [24, 11], + "idx": 58, + "jump_through": true + }, + { + "pos": [25, 11], + "idx": 7 + }, + { + "pos": [26, 11], + "idx": 8 + }, + { + "pos": [0, 10], + "idx": 8 + }, + { + "pos": [1, 10], + "idx": 9 + }, + { + "pos": [11, 10], + "idx": 0 + }, + { + "pos": [12, 10], + "idx": 1 + }, + { + "pos": [13, 10], + "idx": 1 + }, + { + "pos": [14, 10], + "idx": 1 + }, + { + "pos": [15, 10], + "idx": 2 + }, + { + "pos": [25, 10], + "idx": 7 + }, + { + "pos": [26, 10], + "idx": 8 + }, + { + "pos": [0, 9], + "idx": 8 + }, + { + "pos": [1, 9], + "idx": 9 + }, + { + "pos": [11, 9], + "idx": 7 + }, + { + "pos": [12, 9], + "idx": 8 + }, + { + "pos": [13, 9], + "idx": 8 + }, + { + "pos": [14, 9], + "idx": 8 + }, + { + "pos": [15, 9], + "idx": 9 + }, + { + "pos": [25, 9], + "idx": 7 + }, + { + "pos": [26, 9], + "idx": 8 + }, + { + "pos": [0, 8], + "idx": 8 + }, + { + "pos": [1, 8], + "idx": 9 + }, + { + "pos": [7, 8], + "idx": 56, + "jump_through": true + }, + { + "pos": [8, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [9, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [10, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [11, 8], + "idx": 14 + }, + { + "pos": [12, 8], + "idx": 15 + }, + { + "pos": [13, 8], + "idx": 15 + }, + { + "pos": [14, 8], + "idx": 15 + }, + { + "pos": [15, 8], + "idx": 16 + }, + { + "pos": [16, 8], + "idx": 56, + "jump_through": true + }, + { + "pos": [17, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [18, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [19, 8], + "idx": 60, + "jump_through": true + }, + { + "pos": [25, 8], + "idx": 7 + }, + { + "pos": [26, 8], + "idx": 8 + }, + { + "pos": [0, 7], + "idx": 8 + }, + { + "pos": [1, 7], + "idx": 9 + }, + { + "pos": [25, 7], + "idx": 7 + }, + { + "pos": [26, 7], + "idx": 8 + }, + { + "pos": [0, 6], + "idx": 8 + }, + { + "pos": [1, 6], + "idx": 9 + }, + { + "pos": [25, 6], + "idx": 7 + }, + { + "pos": [26, 6], + "idx": 8 + }, + { + "pos": [0, 5], + "idx": 8 + }, + { + "pos": [1, 5], + "idx": 20 + }, + { + "pos": [2, 5], + "idx": 40 + }, + { + "pos": [3, 5], + "idx": 40 + }, + { + "pos": [4, 5], + "idx": 23 + }, + { + "pos": [22, 5], + "idx": 21 + }, + { + "pos": [23, 5], + "idx": 40 + }, + { + "pos": [24, 5], + "idx": 40 + }, + { + "pos": [25, 5], + "idx": 13 + }, + { + "pos": [26, 5], + "idx": 8 + }, + { + "pos": [0, 4], + "idx": 8 + }, + { + "pos": [1, 4], + "idx": 9 + }, + { + "pos": [25, 4], + "idx": 7 + }, + { + "pos": [26, 4], + "idx": 8 + }, + { + "pos": [0, 3], + "idx": 8 + }, + { + "pos": [1, 3], + "idx": 9 + }, + { + "pos": [25, 3], + "idx": 7 + }, + { + "pos": [26, 3], + "idx": 8 + }, + { + "pos": [0, 2], + "idx": 8 + }, + { + "pos": [1, 2], + "idx": 11 + }, + { + "pos": [2, 2], + "idx": 1 + }, + { + "pos": [3, 2], + "idx": 1 + }, + { + "pos": [4, 2], + "idx": 1 + }, + { + "pos": [5, 2], + "idx": 1 + }, + { + "pos": [6, 2], + "idx": 1 + }, + { + "pos": [7, 2], + "idx": 1 + }, + { + "pos": [8, 2], + "idx": 1 + }, + { + "pos": [9, 2], + "idx": 1 + }, + { + "pos": [10, 2], + "idx": 1 + }, + { + "pos": [11, 2], + "idx": 1 + }, + { + "pos": [12, 2], + "idx": 1 + }, + { + "pos": [13, 2], + "idx": 1 + }, + { + "pos": [14, 2], + "idx": 1 + }, + { + "pos": [15, 2], + "idx": 1 + }, + { + "pos": [16, 2], + "idx": 1 + }, + { + "pos": [17, 2], + "idx": 1 + }, + { + "pos": [18, 2], + "idx": 1 + }, + { + "pos": [19, 2], + "idx": 1 + }, + { + "pos": [20, 2], + "idx": 1 + }, + { + "pos": [21, 2], + "idx": 1 + }, + { + "pos": [22, 2], + "idx": 1 + }, + { + "pos": [23, 2], + "idx": 1 + }, + { + "pos": [24, 2], + "idx": 1 + }, + { + "pos": [25, 2], + "idx": 12 + }, + { + "pos": [26, 2], + "idx": 8 + }, + { + "pos": [0, 1], + "idx": 8 + }, + { + "pos": [1, 1], + "idx": 8 + }, + { + "pos": [2, 1], + "idx": 8 + }, + { + "pos": [3, 1], + "idx": 8 + }, + { + "pos": [4, 1], + "idx": 8 + }, + { + "pos": [5, 1], + "idx": 8 + }, + { + "pos": [6, 1], + "idx": 8 + }, + { + "pos": [7, 1], + "idx": 8 + }, + { + "pos": [8, 1], + "idx": 8 + }, + { + "pos": [9, 1], + "idx": 8 + }, + { + "pos": [10, 1], + "idx": 8 + }, + { + "pos": [11, 1], + "idx": 8 + }, + { + "pos": [12, 1], + "idx": 8 + }, + { + "pos": [13, 1], + "idx": 8 + }, + { + "pos": [14, 1], + "idx": 8 + }, + { + "pos": [15, 1], + "idx": 8 + }, + { + "pos": [16, 1], + "idx": 8 + }, + { + "pos": [17, 1], + "idx": 8 + }, + { + "pos": [18, 1], + "idx": 8 + }, + { + "pos": [19, 1], + "idx": 8 + }, + { + "pos": [20, 1], + "idx": 8 + }, + { + "pos": [21, 1], + "idx": 8 + }, + { + "pos": [22, 1], + "idx": 8 + }, + { + "pos": [23, 1], + "idx": 8 + }, + { + "pos": [24, 1], + "idx": 8 + }, + { + "pos": [25, 1], + "idx": 8 + }, + { + "pos": [26, 1], + "idx": 8 + }, + { + "pos": [0, 0], + "idx": 15 + }, + { + "pos": [1, 0], + "idx": 15 + }, + { + "pos": [2, 0], + "idx": 15 + }, + { + "pos": [3, 0], + "idx": 15 + }, + { + "pos": [4, 0], + "idx": 15 + }, + { + "pos": [5, 0], + "idx": 15 + }, + { + "pos": [6, 0], + "idx": 15 + }, + { + "pos": [7, 0], + "idx": 15 + }, + { + "pos": [8, 0], + "idx": 15 + }, + { + "pos": [9, 0], + "idx": 15 + }, + { + "pos": [10, 0], + "idx": 15 + }, + { + "pos": [11, 0], + "idx": 15 + }, + { + "pos": [12, 0], + "idx": 15 + }, + { + "pos": [13, 0], + "idx": 15 + }, + { + "pos": [14, 0], + "idx": 15 + }, + { + "pos": [15, 0], + "idx": 15 + }, + { + "pos": [16, 0], + "idx": 15 + }, + { + "pos": [17, 0], + "idx": 15 + }, + { + "pos": [18, 0], + "idx": 15 + }, + { + "pos": [19, 0], + "idx": 15 + }, + { + "pos": [20, 0], + "idx": 15 + }, + { + "pos": [21, 0], + "idx": 15 + }, + { + "pos": [22, 0], + "idx": 15 + }, + { + "pos": [23, 0], + "idx": 15 + }, + { + "pos": [24, 0], + "idx": 15 + }, + { + "pos": [25, 0], + "idx": 15 + }, + { + "pos": [26, 0], + "idx": 15 + } + ], + "tilemap": "../resources/default_tileset.png" + } } - ], - "tilemap": "../resources/default_tileset.png" - } - } - }, - { - "id": "decorations", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 434.74872000000005, - 361.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" - }, - { - "pos": [ - 84.00005999999999, - 201.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" - }, - { - "pos": [ - 787.7431999999999, - 201.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" - }, - { - "pos": [ - 90.666664, - 121.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 776, - 121.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 672, - 121.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 192, - 121.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 448, - 121.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 437.2876, - 377.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 608, - 313.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 441.66668000000004, - 569.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 256, - 313.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 291.83331999999996, - 601.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 777.6371999999999, - 409.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 576, - 601.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 88, - 409.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [434.74872000000005, 361.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [84.00005999999999, 201.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [787.7431999999999, 201.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [90.666664, 121.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [776, 121.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [672, 121.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [192, 121.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [448, 121.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [437.2876, 377.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [608, 313.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [441.66668000000004, 569.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [256, 313.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [291.83331999999996, 601.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [777.6371999999999, 409.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [576, 601.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [88, 409.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + } + ] + } } - ] - } - } - }, - { - "id": "items", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 536, - 309.5 - ], - "element": "../elements/item/musket/musket.element.yaml" - }, - { - "pos": [ - 292.22720000000004, - 609.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 552, - 289.5 - ], - "element": "../elements/environment/crab/crab.element.yaml" - }, - { - "pos": [ - 496, - 545.5 - ], - "element": "../elements/environment/crab/crab.element.yaml" - }, - { - "pos": [ - 184, - 155.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 772.4570000000001, - 425.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 312.0556, - 311.5 - ], - "element": "../elements/item/musket/musket.element.yaml" - }, - { - "pos": [ - 132.024688, - 121.5 - ], - "element": "../elements/item/machine_gun/machine_gun.element.yaml" - }, - { - "pos": [ - 561, - 599.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 272, - 593.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 171.57139999999998, - 409.5 - ], - "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" - }, - { - "pos": [ - 712, - 393.5 - ], - "element": "../elements/item/mines/mines.element.yaml" - }, - { - "pos": [ - 720.9998, - 121.5 - ], - "element": "../elements/item/cannon/cannon.element.yaml" - }, - { - "pos": [ - 312, - 105.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" - }, - { - "pos": [ - 576, - 105.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [536, 309.5], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [292.22720000000004, 609.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [552, 289.5], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [496, 545.5], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [184, 155.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [772.4570000000001, 425.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [312.0556, 311.5], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [132.024688, 121.5], + "element": "../elements/item/machine_gun/machine_gun.element.yaml" + }, + { + "pos": [561, 599.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [272, 593.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [171.57139999999998, 409.5], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [712, 393.5], + "element": "../elements/item/mine/mine.element.yaml" + }, + { + "pos": [720.9998, 121.5], + "element": "../elements/item/cannon/cannon.element.yaml" + }, + { + "pos": [312, 105.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [576, 105.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + } + ] + } } - ] - } - } - }, - { - "id": "spawners", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 268.33334, - 640 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 124.16667, - 224.50002999999998 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 701.74677, - 225.11905000000002 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 559.6667, - 640 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [268.33334, 640], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [124.16667, 224.50002999999998], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [701.74677, 225.11905000000002], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [559.6667, 640], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } } - ] } - } - } - ], - "background_layers": [ - { - "image": "../resources/background_04.png", - "speed": 0, - "tile_size": [ - 896, - 480 - ], - "z": -110, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_03.png", - "speed": 0.74, - "tile_size": [ - 896, - 480 - ], - "z": -109, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_02.png", - "speed": 0.82, - "tile_size": [ - 896, - 480 - ], - "z": -108, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_01.png", - "speed": 100, - "tile_size": [ - 896, - 480 - ], - "z": -107, - "position": [ - 0, - 360 - ], - "scale": 2 - } - ] -} \ No newline at end of file + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [896, 480], + "z": -110, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [896, 480], + "z": -109, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [896, 480], + "z": -108, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [896, 480], + "z": -107, + "position": [0, 360], + "scale": 2 + } + ] +} diff --git a/assets/map/levels/lev02.map.json b/assets/map/levels/lev02.map.json index fd6533d3bc..3a93773796 100644 --- a/assets/map/levels/lev02.map.json +++ b/assets/map/levels/lev02.map.json @@ -800,7 +800,7 @@ }, { "pos": [64, 425.5], - "element": "../elements/item/mines/mines.element.yaml" + "element": "../elements/item/mine/mine.element.yaml" }, { "pos": [592, 349.5], diff --git a/assets/map/levels/lev04.map.json b/assets/map/levels/lev04.map.json index 34a5cc6e45..2aefe62081 100644 --- a/assets/map/levels/lev04.map.json +++ b/assets/map/levels/lev04.map.json @@ -1,1885 +1,1102 @@ { - "name": "lev04", - "background_color": "7EA8A6", - "grid_size": [ - 35, - 15 - ], - "tile_size": [ - 32, - 32 - ], - "layers": [ - { - "id": "main layer", - "kind": { - "tile": { - "has_collision": true, - "tiles": [ - { - "pos": [ - 0, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 14 - ], - "idx": 9 - }, - { - "pos": [ - 33, - 14 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 13 - ], - "idx": 9 - }, - { - "pos": [ - 33, - 13 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 12 - ], - "idx": 9 - }, - { - "pos": [ - 9, - 12 - ], - "idx": 32 - }, - { - "pos": [ - 10, - 12 - ], - "idx": 22 - }, - { - "pos": [ - 11, - 12 - ], - "idx": 22 - }, - { - "pos": [ - 12, - 12 - ], - "idx": 23 - }, - { - "pos": [ - 13, - 12 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 14, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 15, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 16, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 17, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 18, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 19, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 20, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 21, - 12 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 22, - 12 - ], - "idx": 21 - }, - { - "pos": [ - 23, - 12 - ], - "idx": 22 - }, - { - "pos": [ - 24, - 12 - ], - "idx": 22 - }, - { - "pos": [ - 25, - 12 - ], - "idx": 34 - }, - { - "pos": [ - 33, - 12 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 11 - ], - "idx": 9 - }, - { - "pos": [ - 9, - 11 - ], - "idx": 17 - }, - { - "pos": [ - 25, - 11 - ], - "idx": 17 - }, - { - "pos": [ - 33, - 11 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 10 - ], - "idx": 20 - }, - { - "pos": [ - 33, - 10 - ], - "idx": 13 - }, - { - "pos": [ - 34, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 9 - ], - "idx": 9 - }, - { - "pos": [ - 2, - 9 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 3, - 9 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 4, - 9 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 30, - 9 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 31, - 9 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 32, - 9 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 33, - 9 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 8 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 8 - ], - "idx": 9 - }, - { - "pos": [ - 33, - 8 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 8 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 7 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 7 - ], - "idx": 9 - }, - { - "pos": [ - 14, - 7 - ], - "idx": 0 - }, - { - "pos": [ - 15, - 7 - ], - "idx": 45 - }, - { - "pos": [ - 16, - 7 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 17, - 7 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 18, - 7 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 19, - 7 - ], - "idx": 44 - }, - { - "pos": [ - 20, - 7 - ], - "idx": 2 - }, - { - "pos": [ - 33, - 7 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 7 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 6 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 6 - ], - "idx": 20 - }, - { - "pos": [ - 2, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 3, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 4, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 5, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 6, - 6 - ], - "idx": 23 - }, - { - "pos": [ - 13, - 6 - ], - "idx": 0 - }, - { - "pos": [ - 14, - 6 - ], - "idx": 45 - }, - { - "pos": [ - 15, - 6 - ], - "idx": 16 - }, - { - "pos": [ - 19, - 6 - ], - "idx": 14 - }, - { - "pos": [ - 20, - 6 - ], - "idx": 44 - }, - { - "pos": [ - 21, - 6 - ], - "idx": 2 - }, - { - "pos": [ - 28, - 6 - ], - "idx": 21 - }, - { - "pos": [ - 29, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 30, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 31, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 32, - 6 - ], - "idx": 22 - }, - { - "pos": [ - 33, - 6 - ], - "idx": 13 - }, - { - "pos": [ - 34, - 6 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 5 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 5 - ], - "idx": 9 - }, - { - "pos": [ - 12, - 5 - ], - "idx": 0 - }, - { - "pos": [ - 13, - 5 - ], - "idx": 45 - }, - { - "pos": [ - 14, - 5 - ], - "idx": 16 - }, - { - "pos": [ - 20, - 5 - ], - "idx": 14 - }, - { - "pos": [ - 21, - 5 - ], - "idx": 44 - }, - { - "pos": [ - 22, - 5 - ], - "idx": 2 - }, - { - "pos": [ - 33, - 5 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 5 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 4 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 4 - ], - "idx": 9 - }, - { - "pos": [ - 11, - 4 - ], - "idx": 0 - }, - { - "pos": [ - 12, - 4 - ], - "idx": 45 - }, - { - "pos": [ - 13, - 4 - ], - "idx": 16 - }, - { - "pos": [ - 21, - 4 - ], - "idx": 14 - }, - { - "pos": [ - 22, - 4 - ], - "idx": 44 - }, - { - "pos": [ - 23, - 4 - ], - "idx": 2 - }, - { - "pos": [ - 33, - 4 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 4 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 3 - ], - "idx": 9 - }, - { - "pos": [ - 11, - 3 - ], - "idx": 14 - }, - { - "pos": [ - 12, - 3 - ], - "idx": 16 - }, - { - "pos": [ - 13, - 3 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 3 - ], - "idx": 10 - }, - { - "pos": [ - 22, - 3 - ], - "idx": 14 - }, - { - "pos": [ - 23, - 3 - ], - "idx": 16 - }, - { - "pos": [ - 33, - 3 - ], - "idx": 7 - }, - { - "pos": [ - 34, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 2 - ], - "idx": 4 - }, - { - "pos": [ - 1, - 2 - ], - "idx": 37 - }, - { - "pos": [ - 2, - 2 - ], - "idx": 33 - }, - { - "pos": [ - 3, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 4, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 5, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 6, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 7, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 8, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 9, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 10, - 2 - ], - "idx": 33 - }, - { - "pos": [ - 11, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 12, - 2 - ], - "idx": 33 - }, - { - "pos": [ - 13, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 14, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 15, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 16, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 17, - 2 - ], - "idx": 33 - }, - { - "pos": [ - 18, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 19, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 20, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 21, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 22, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 23, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 24, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 25, - 2 - ], - "idx": 33 - }, - { - "pos": [ - 26, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 27, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 28, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 29, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 30, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 31, - 2 - ], - "idx": 22 - }, - { - "pos": [ - 32, - 2 - ], - "idx": 33 - }, - { - "pos": [ - 33, - 2 - ], - "idx": 38 - }, - { - "pos": [ - 34, - 2 - ], - "idx": 5 - }, - { - "pos": [ - 0, - 1 - ], - "idx": 11 - }, - { - "pos": [ - 1, - 1 - ], - "idx": 12 - }, - { - "pos": [ - 2, - 1 - ], - "idx": 3 - }, - { - "pos": [ - 3, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 5, - 1 - ], - "idx": 20 - }, - { - "pos": [ - 6, - 1 - ], - "idx": 13 - }, - { - "pos": [ - 7, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 8, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 9, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 10, - 1 - ], - "idx": 3 - }, - { - "pos": [ - 11, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 12, - 1 - ], - "idx": 27 - }, - { - "pos": [ - 13, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 14, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 15, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 16, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 17, - 1 - ], - "idx": 3 - }, - { - "pos": [ - 18, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 19, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 20, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 21, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 24, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 25, - 1 - ], - "idx": 3 - }, - { - "pos": [ - 26, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 27, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 28, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 29, - 1 - ], - "idx": 27 - }, - { - "pos": [ - 30, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 31, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 32, - 1 - ], - "idx": 3 - }, - { - "pos": [ - 33, - 1 - ], - "idx": 11 - }, - { - "pos": [ - 34, - 1 - ], - "idx": 12 - }, - { - "pos": [ - 0, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 2, - 0 - ], - "idx": 10 - }, - { - "pos": [ - 3, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 5, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 6, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 7, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 8, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 9, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 10, - 0 - ], - "idx": 10 - }, - { - "pos": [ - 11, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 12, - 0 - ], - "idx": 6 - }, - { - "pos": [ - 13, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 14, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 15, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 16, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 17, - 0 - ], - "idx": 10 - }, - { - "pos": [ - 18, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 19, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 20, - 0 - ], - "idx": 20 - }, - { - "pos": [ - 21, - 0 - ], - "idx": 13 - }, - { - "pos": [ - 22, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 24, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 25, - 0 - ], - "idx": 10 - }, - { - "pos": [ - 26, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 27, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 28, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 29, - 0 - ], - "idx": 6 - }, - { - "pos": [ - 30, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 31, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 32, - 0 - ], - "idx": 10 - }, - { - "pos": [ - 33, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 34, - 0 - ], - "idx": 8 + "name": "lev04", + "background_color": "7EA8A6", + "grid_size": [35, 15], + "tile_size": [32, 32], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [0, 14], + "idx": 8 + }, + { + "pos": [1, 14], + "idx": 9 + }, + { + "pos": [33, 14], + "idx": 7 + }, + { + "pos": [34, 14], + "idx": 8 + }, + { + "pos": [0, 13], + "idx": 8 + }, + { + "pos": [1, 13], + "idx": 9 + }, + { + "pos": [33, 13], + "idx": 7 + }, + { + "pos": [34, 13], + "idx": 8 + }, + { + "pos": [0, 12], + "idx": 8 + }, + { + "pos": [1, 12], + "idx": 9 + }, + { + "pos": [9, 12], + "idx": 32 + }, + { + "pos": [10, 12], + "idx": 22 + }, + { + "pos": [11, 12], + "idx": 22 + }, + { + "pos": [12, 12], + "idx": 23 + }, + { + "pos": [13, 12], + "idx": 56, + "jump_through": true + }, + { + "pos": [14, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [15, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [16, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [17, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [18, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [19, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [20, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [21, 12], + "idx": 60, + "jump_through": true + }, + { + "pos": [22, 12], + "idx": 21 + }, + { + "pos": [23, 12], + "idx": 22 + }, + { + "pos": [24, 12], + "idx": 22 + }, + { + "pos": [25, 12], + "idx": 34 + }, + { + "pos": [33, 12], + "idx": 7 + }, + { + "pos": [34, 12], + "idx": 8 + }, + { + "pos": [0, 11], + "idx": 8 + }, + { + "pos": [1, 11], + "idx": 9 + }, + { + "pos": [9, 11], + "idx": 17 + }, + { + "pos": [25, 11], + "idx": 17 + }, + { + "pos": [33, 11], + "idx": 7 + }, + { + "pos": [34, 11], + "idx": 8 + }, + { + "pos": [0, 10], + "idx": 8 + }, + { + "pos": [1, 10], + "idx": 20 + }, + { + "pos": [33, 10], + "idx": 13 + }, + { + "pos": [34, 10], + "idx": 8 + }, + { + "pos": [0, 9], + "idx": 8 + }, + { + "pos": [1, 9], + "idx": 9 + }, + { + "pos": [2, 9], + "idx": 58, + "jump_through": true + }, + { + "pos": [3, 9], + "idx": 58, + "jump_through": true + }, + { + "pos": [4, 9], + "idx": 60, + "jump_through": true + }, + { + "pos": [30, 9], + "idx": 56, + "jump_through": true + }, + { + "pos": [31, 9], + "idx": 58, + "jump_through": true + }, + { + "pos": [32, 9], + "idx": 58, + "jump_through": true + }, + { + "pos": [33, 9], + "idx": 7 + }, + { + "pos": [34, 9], + "idx": 8 + }, + { + "pos": [0, 8], + "idx": 8 + }, + { + "pos": [1, 8], + "idx": 9 + }, + { + "pos": [33, 8], + "idx": 7 + }, + { + "pos": [34, 8], + "idx": 8 + }, + { + "pos": [0, 7], + "idx": 8 + }, + { + "pos": [1, 7], + "idx": 9 + }, + { + "pos": [14, 7], + "idx": 0 + }, + { + "pos": [15, 7], + "idx": 45 + }, + { + "pos": [16, 7], + "idx": 58, + "jump_through": true + }, + { + "pos": [17, 7], + "idx": 58, + "jump_through": true + }, + { + "pos": [18, 7], + "idx": 58, + "jump_through": true + }, + { + "pos": [19, 7], + "idx": 44 + }, + { + "pos": [20, 7], + "idx": 2 + }, + { + "pos": [33, 7], + "idx": 7 + }, + { + "pos": [34, 7], + "idx": 8 + }, + { + "pos": [0, 6], + "idx": 8 + }, + { + "pos": [1, 6], + "idx": 20 + }, + { + "pos": [2, 6], + "idx": 22 + }, + { + "pos": [3, 6], + "idx": 22 + }, + { + "pos": [4, 6], + "idx": 22 + }, + { + "pos": [5, 6], + "idx": 22 + }, + { + "pos": [6, 6], + "idx": 23 + }, + { + "pos": [13, 6], + "idx": 0 + }, + { + "pos": [14, 6], + "idx": 45 + }, + { + "pos": [15, 6], + "idx": 16 + }, + { + "pos": [19, 6], + "idx": 14 + }, + { + "pos": [20, 6], + "idx": 44 + }, + { + "pos": [21, 6], + "idx": 2 + }, + { + "pos": [28, 6], + "idx": 21 + }, + { + "pos": [29, 6], + "idx": 22 + }, + { + "pos": [30, 6], + "idx": 22 + }, + { + "pos": [31, 6], + "idx": 22 + }, + { + "pos": [32, 6], + "idx": 22 + }, + { + "pos": [33, 6], + "idx": 13 + }, + { + "pos": [34, 6], + "idx": 8 + }, + { + "pos": [0, 5], + "idx": 8 + }, + { + "pos": [1, 5], + "idx": 9 + }, + { + "pos": [12, 5], + "idx": 0 + }, + { + "pos": [13, 5], + "idx": 45 + }, + { + "pos": [14, 5], + "idx": 16 + }, + { + "pos": [20, 5], + "idx": 14 + }, + { + "pos": [21, 5], + "idx": 44 + }, + { + "pos": [22, 5], + "idx": 2 + }, + { + "pos": [33, 5], + "idx": 7 + }, + { + "pos": [34, 5], + "idx": 8 + }, + { + "pos": [0, 4], + "idx": 8 + }, + { + "pos": [1, 4], + "idx": 9 + }, + { + "pos": [11, 4], + "idx": 0 + }, + { + "pos": [12, 4], + "idx": 45 + }, + { + "pos": [13, 4], + "idx": 16 + }, + { + "pos": [21, 4], + "idx": 14 + }, + { + "pos": [22, 4], + "idx": 44 + }, + { + "pos": [23, 4], + "idx": 2 + }, + { + "pos": [33, 4], + "idx": 7 + }, + { + "pos": [34, 4], + "idx": 8 + }, + { + "pos": [0, 3], + "idx": 8 + }, + { + "pos": [1, 3], + "idx": 9 + }, + { + "pos": [11, 3], + "idx": 14 + }, + { + "pos": [12, 3], + "idx": 16 + }, + { + "pos": [13, 3], + "idx": 10 + }, + { + "pos": [21, 3], + "idx": 10 + }, + { + "pos": [22, 3], + "idx": 14 + }, + { + "pos": [23, 3], + "idx": 16 + }, + { + "pos": [33, 3], + "idx": 7 + }, + { + "pos": [34, 3], + "idx": 8 + }, + { + "pos": [0, 2], + "idx": 4 + }, + { + "pos": [1, 2], + "idx": 37 + }, + { + "pos": [2, 2], + "idx": 33 + }, + { + "pos": [3, 2], + "idx": 22 + }, + { + "pos": [4, 2], + "idx": 22 + }, + { + "pos": [5, 2], + "idx": 22 + }, + { + "pos": [6, 2], + "idx": 22 + }, + { + "pos": [7, 2], + "idx": 22 + }, + { + "pos": [8, 2], + "idx": 22 + }, + { + "pos": [9, 2], + "idx": 22 + }, + { + "pos": [10, 2], + "idx": 33 + }, + { + "pos": [11, 2], + "idx": 22 + }, + { + "pos": [12, 2], + "idx": 33 + }, + { + "pos": [13, 2], + "idx": 22 + }, + { + "pos": [14, 2], + "idx": 22 + }, + { + "pos": [15, 2], + "idx": 22 + }, + { + "pos": [16, 2], + "idx": 22 + }, + { + "pos": [17, 2], + "idx": 33 + }, + { + "pos": [18, 2], + "idx": 22 + }, + { + "pos": [19, 2], + "idx": 22 + }, + { + "pos": [20, 2], + "idx": 22 + }, + { + "pos": [21, 2], + "idx": 22 + }, + { + "pos": [22, 2], + "idx": 22 + }, + { + "pos": [23, 2], + "idx": 22 + }, + { + "pos": [24, 2], + "idx": 22 + }, + { + "pos": [25, 2], + "idx": 33 + }, + { + "pos": [26, 2], + "idx": 22 + }, + { + "pos": [27, 2], + "idx": 22 + }, + { + "pos": [28, 2], + "idx": 22 + }, + { + "pos": [29, 2], + "idx": 22 + }, + { + "pos": [30, 2], + "idx": 22 + }, + { + "pos": [31, 2], + "idx": 22 + }, + { + "pos": [32, 2], + "idx": 33 + }, + { + "pos": [33, 2], + "idx": 38 + }, + { + "pos": [34, 2], + "idx": 5 + }, + { + "pos": [0, 1], + "idx": 11 + }, + { + "pos": [1, 1], + "idx": 12 + }, + { + "pos": [2, 1], + "idx": 3 + }, + { + "pos": [3, 1], + "idx": 8 + }, + { + "pos": [4, 1], + "idx": 8 + }, + { + "pos": [5, 1], + "idx": 20 + }, + { + "pos": [6, 1], + "idx": 13 + }, + { + "pos": [7, 1], + "idx": 8 + }, + { + "pos": [8, 1], + "idx": 8 + }, + { + "pos": [9, 1], + "idx": 8 + }, + { + "pos": [10, 1], + "idx": 3 + }, + { + "pos": [11, 1], + "idx": 8 + }, + { + "pos": [12, 1], + "idx": 27 + }, + { + "pos": [13, 1], + "idx": 8 + }, + { + "pos": [14, 1], + "idx": 8 + }, + { + "pos": [15, 1], + "idx": 8 + }, + { + "pos": [16, 1], + "idx": 8 + }, + { + "pos": [17, 1], + "idx": 3 + }, + { + "pos": [18, 1], + "idx": 8 + }, + { + "pos": [19, 1], + "idx": 8 + }, + { + "pos": [20, 1], + "idx": 8 + }, + { + "pos": [21, 1], + "idx": 8 + }, + { + "pos": [22, 1], + "idx": 8 + }, + { + "pos": [23, 1], + "idx": 8 + }, + { + "pos": [24, 1], + "idx": 8 + }, + { + "pos": [25, 1], + "idx": 3 + }, + { + "pos": [26, 1], + "idx": 8 + }, + { + "pos": [27, 1], + "idx": 8 + }, + { + "pos": [28, 1], + "idx": 8 + }, + { + "pos": [29, 1], + "idx": 27 + }, + { + "pos": [30, 1], + "idx": 8 + }, + { + "pos": [31, 1], + "idx": 8 + }, + { + "pos": [32, 1], + "idx": 3 + }, + { + "pos": [33, 1], + "idx": 11 + }, + { + "pos": [34, 1], + "idx": 12 + }, + { + "pos": [0, 0], + "idx": 8 + }, + { + "pos": [1, 0], + "idx": 8 + }, + { + "pos": [2, 0], + "idx": 10 + }, + { + "pos": [3, 0], + "idx": 8 + }, + { + "pos": [4, 0], + "idx": 8 + }, + { + "pos": [5, 0], + "idx": 8 + }, + { + "pos": [6, 0], + "idx": 8 + }, + { + "pos": [7, 0], + "idx": 8 + }, + { + "pos": [8, 0], + "idx": 8 + }, + { + "pos": [9, 0], + "idx": 8 + }, + { + "pos": [10, 0], + "idx": 10 + }, + { + "pos": [11, 0], + "idx": 8 + }, + { + "pos": [12, 0], + "idx": 6 + }, + { + "pos": [13, 0], + "idx": 8 + }, + { + "pos": [14, 0], + "idx": 8 + }, + { + "pos": [15, 0], + "idx": 8 + }, + { + "pos": [16, 0], + "idx": 8 + }, + { + "pos": [17, 0], + "idx": 10 + }, + { + "pos": [18, 0], + "idx": 8 + }, + { + "pos": [19, 0], + "idx": 8 + }, + { + "pos": [20, 0], + "idx": 20 + }, + { + "pos": [21, 0], + "idx": 13 + }, + { + "pos": [22, 0], + "idx": 8 + }, + { + "pos": [23, 0], + "idx": 8 + }, + { + "pos": [24, 0], + "idx": 8 + }, + { + "pos": [25, 0], + "idx": 10 + }, + { + "pos": [26, 0], + "idx": 8 + }, + { + "pos": [27, 0], + "idx": 8 + }, + { + "pos": [28, 0], + "idx": 8 + }, + { + "pos": [29, 0], + "idx": 6 + }, + { + "pos": [30, 0], + "idx": 8 + }, + { + "pos": [31, 0], + "idx": 8 + }, + { + "pos": [32, 0], + "idx": 10 + }, + { + "pos": [33, 0], + "idx": 8 + }, + { + "pos": [34, 0], + "idx": 8 + } + ], + "tilemap": "../resources/default_tileset.png" + } } - ], - "tilemap": "../resources/default_tileset.png" - } - } - }, - { - "id": "decorations", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 984.5712799999999, - 247.5 - ], - "element": "../elements/item/sniper_rifle/sniper_rifle.element.yaml" - }, - { - "pos": [ - 107.42859999999999, - 225.5 - ], - "element": "../elements/item/blunderbass/blunderbass.element.yaml" - }, - { - "pos": [ - 560, - 271.5 - ], - "element": "../elements/environment/crab/crab.element.yaml" - }, - { - "pos": [ - 480, - 427.5 - ], - "element": "../elements/environment/crab/crab.element.yaml" - }, - { - "pos": [ - 888, - 139.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 88, - 353.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 896, - 121.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 496, - 121.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 1000, - 121.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 288, - 121.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 112, - 121.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 736.3635999999999, - 441.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 96, - 345.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 328, - 441.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 968, - 257.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [984.5712799999999, 247.5], + "element": "../elements/item/sniper_rifle/sniper_rifle.element.yaml" + }, + { + "pos": [107.42859999999999, 225.5], + "element": "../elements/item/blunderbass/blunderbass.element.yaml" + }, + { + "pos": [560, 271.5], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [480, 427.5], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [888, 139.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [88, 353.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [896, 121.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [496, 121.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [1000, 121.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [288, 121.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [112, 121.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [736.3635999999999, 441.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [96, 345.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [328, 441.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [968, 257.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } } - ] - } - } - }, - { - "id": "items", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 120.40002000000001, - 129.5 - ], - "element": "../elements/item/crate/crate.element.yaml" - }, - { - "pos": [ - 1024, - 137.5 - ], - "element": "../elements/item/crate/crate.element.yaml" - }, - { - "pos": [ - 111.40014, - 337.5 - ], - "element": "../elements/item/crate/crate.element.yaml" - }, - { - "pos": [ - 1043.9714, - 329.5 - ], - "element": "../elements/item/crate/crate.element.yaml" - }, - { - "pos": [ - 392, - 433.5 - ], - "element": "../elements/item/crate/crate.element.yaml" - }, - { - "pos": [ - 677.2236, - 433.5 - ], - "element": "../elements/item/crate/crate.element.yaml" - }, - { - "pos": [ - 616, - 111.5 - ], - "element": "../elements/item/musket/musket.element.yaml" - }, - { - "pos": [ - 808, - 463.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 536.1025999999999, - 441.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 884, - 145.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 277.7143, - 121.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 800, - 425.5 - ], - "element": "../elements/item/mines/mines.element.yaml" - }, - { - "pos": [ - 564.9702, - 105.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [120.40002000000001, 129.5], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [1024, 137.5], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [111.40014, 337.5], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [1043.9714, 329.5], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [392, 433.5], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [677.2236, 433.5], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [616, 111.5], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [808, 463.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [536.1025999999999, 441.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [884, 145.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [277.7143, 121.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [800, 425.5], + "element": "../elements/item/mine/mine.element.yaml" + }, + { + "pos": [564.9702, 105.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + } + ] + } } - ] - } - } - }, - { - "id": "spawners", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 176.83333, - 120.83334000000002 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 947, - 119.33334000000002 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 137.42857, - 346.71428000000003 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 973.857, - 347.85715 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [176.83333, 120.83334000000002], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [947, 119.33334000000002], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [137.42857, 346.71428000000003], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [973.857, 347.85715], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } } - ] } - } - } - ], - "background_layers": [ - { - "image": "../resources/background_04.png", - "speed": 0, - "tile_size": [ - 896, - 480 - ], - "z": -110, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_03.png", - "speed": 0.74, - "tile_size": [ - 896, - 480 - ], - "z": -109, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_02.png", - "speed": 0.82, - "tile_size": [ - 896, - 480 - ], - "z": -108, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_01.png", - "speed": 100, - "tile_size": [ - 896, - 480 - ], - "z": -107, - "position": [ - 0, - 360 - ], - "scale": 2 - } - ] -} \ No newline at end of file + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [896, 480], + "z": -110, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [896, 480], + "z": -109, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [896, 480], + "z": -108, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [896, 480], + "z": -107, + "position": [0, 360], + "scale": 2 + } + ] +} diff --git a/assets/map/levels/lev05.map.json b/assets/map/levels/lev05.map.json index f9d02e4f59..6bba00f467 100644 --- a/assets/map/levels/lev05.map.json +++ b/assets/map/levels/lev05.map.json @@ -935,7 +935,7 @@ }, { "pos": [480.72724000000005, 169.5], - "element": "../elements/item/mines/mines.element.yaml" + "element": "../elements/item/mine/mine.element.yaml" }, { "pos": [686.0571199999999, 329.5], diff --git a/assets/map/levels/lev06.map.json b/assets/map/levels/lev06.map.json index 5d1439b354..5fe66e1dc7 100644 --- a/assets/map/levels/lev06.map.json +++ b/assets/map/levels/lev06.map.json @@ -1,1737 +1,1023 @@ { - "name": "lev06", - "background_color": "7EA8A6", - "grid_size": [ - 25, - 20 - ], - "tile_size": [ - 32, - 32 - ], - "layers": [ - { - "id": "main layer", - "kind": { - "tile": { - "has_collision": true, - "tiles": [ - { - "pos": [ - 0, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 1, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 2, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 3, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 4, - 17 - ], - "idx": 34 - }, - { - "pos": [ - 10, - 17 - ], - "idx": 32 - }, - { - "pos": [ - 11, - 17 - ], - "idx": 34 - }, - { - "pos": [ - 12, - 17 - ], - "idx": 1 - }, - { - "pos": [ - 13, - 17 - ], - "idx": 32 - }, - { - "pos": [ - 14, - 17 - ], - "idx": 34 - }, - { - "pos": [ - 20, - 17 - ], - "idx": 32 - }, - { - "pos": [ - 21, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 22, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 23, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 24, - 17 - ], - "idx": 22 - }, - { - "pos": [ - 0, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 2, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 16 - ], - "idx": 10 - }, - { - "pos": [ - 5, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 6, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 7, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 8, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 9, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 10, - 16 - ], - "idx": 46 - }, - { - "pos": [ - 11, - 16 - ], - "idx": 48 - }, - { - "pos": [ - 12, - 16 - ], - "idx": 15 - }, - { - "pos": [ - 13, - 16 - ], - "idx": 46 - }, - { - "pos": [ - 14, - 16 - ], - "idx": 48 - }, - { - "pos": [ - 15, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 16, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 17, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 18, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 19, - 16 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 20, - 16 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 24, - 16 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 15 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 15 - ], - "idx": 0 - }, - { - "pos": [ - 2, - 15 - ], - "idx": 2 - }, - { - "pos": [ - 3, - 15 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 15 - ], - "idx": 10 - }, - { - "pos": [ - 20, - 15 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 15 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 15 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 15 - ], - "idx": 0 - }, - { - "pos": [ - 24, - 15 - ], - "idx": 2 - }, - { - "pos": [ - 0, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 14 - ], - "idx": 14 - }, - { - "pos": [ - 2, - 14 - ], - "idx": 16 - }, - { - "pos": [ - 3, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 14 - ], - "idx": 10 - }, - { - "pos": [ - 20, - 14 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 14 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 14 - ], - "idx": 14 - }, - { - "pos": [ - 24, - 14 - ], - "idx": 16 - }, - { - "pos": [ - 0, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 2, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 13 - ], - "idx": 10 - }, - { - "pos": [ - 20, - 13 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 13 - ], - "idx": 0 - }, - { - "pos": [ - 22, - 13 - ], - "idx": 2 - }, - { - "pos": [ - 23, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 24, - 13 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 12 - ], - "idx": 0 - }, - { - "pos": [ - 1, - 12 - ], - "idx": 2 - }, - { - "pos": [ - 2, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 12 - ], - "idx": 10 - }, - { - "pos": [ - 5, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 6, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 7, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 8, - 12 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 16, - 12 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 17, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 18, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 19, - 12 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 20, - 12 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 12 - ], - "idx": 14 - }, - { - "pos": [ - 22, - 12 - ], - "idx": 16 - }, - { - "pos": [ - 23, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 24, - 12 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 11 - ], - "idx": 14 - }, - { - "pos": [ - 1, - 11 - ], - "idx": 16 - }, - { - "pos": [ - 2, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 11 - ], - "idx": 10 - }, - { - "pos": [ - 20, - 11 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 24, - 11 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 2, - 10 - ], - "idx": 0 - }, - { - "pos": [ - 3, - 10 - ], - "idx": 2 - }, - { - "pos": [ - 4, - 10 - ], - "idx": 10 - }, - { - "pos": [ - 11, - 10 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 12, - 10 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 13, - 10 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 20, - 10 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 10 - ], - "idx": 0 - }, - { - "pos": [ - 23, - 10 - ], - "idx": 2 - }, - { - "pos": [ - 24, - 10 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 1, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 2, - 9 - ], - "idx": 14 - }, - { - "pos": [ - 3, - 9 - ], - "idx": 16 - }, - { - "pos": [ - 4, - 9 - ], - "idx": 10 - }, - { - "pos": [ - 20, - 9 - ], - "idx": 10 - }, - { - "pos": [ - 21, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 9 - ], - "idx": 14 - }, - { - "pos": [ - 23, - 9 - ], - "idx": 16 - }, - { - "pos": [ - 24, - 9 - ], - "idx": 8 - }, - { - "pos": [ - 0, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 1, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 2, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 3, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 4, - 8 - ], - "idx": 48 - }, - { - "pos": [ - 5, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 6, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 7, - 8 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 17, - 8 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 18, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 19, - 8 - ], - "idx": 58, - "jump_through": true - }, - { - "pos": [ - 20, - 8 - ], - "idx": 46 - }, - { - "pos": [ - 21, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 22, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 23, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 24, - 8 - ], - "idx": 22 - }, - { - "pos": [ - 9, - 6 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 10, - 6 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 14, - 6 - ], - "idx": 56, - "jump_through": true - }, - { - "pos": [ - 15, - 6 - ], - "idx": 60, - "jump_through": true - }, - { - "pos": [ - 1, - 4 - ], - "idx": 0 - }, - { - "pos": [ - 2, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 3, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 4, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 5, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 6, - 4 - ], - "idx": 2 - }, - { - "pos": [ - 18, - 4 - ], - "idx": 0 - }, - { - "pos": [ - 19, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 20, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 21, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 22, - 4 - ], - "idx": 1 - }, - { - "pos": [ - 23, - 4 - ], - "idx": 2 - }, - { - "pos": [ - 1, - 3 - ], - "idx": 7 - }, - { - "pos": [ - 2, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 4, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 5, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 6, - 3 - ], - "idx": 9 - }, - { - "pos": [ - 18, - 3 - ], - "idx": 7 - }, - { - "pos": [ - 19, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 20, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 21, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 22, - 3 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 3 - ], - "idx": 9 - }, - { - "pos": [ - 1, - 2 - ], - "idx": 7 - }, - { - "pos": [ - 2, - 2 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 2 - ], - "idx": 4 - }, - { - "pos": [ - 4, - 2 - ], - "idx": 15 - }, - { - "pos": [ - 5, - 2 - ], - "idx": 5 - }, - { - "pos": [ - 6, - 2 - ], - "idx": 9 - }, - { - "pos": [ - 18, - 2 - ], - "idx": 7 - }, - { - "pos": [ - 19, - 2 - ], - "idx": 4 - }, - { - "pos": [ - 20, - 2 - ], - "idx": 15 - }, - { - "pos": [ - 21, - 2 - ], - "idx": 5 - }, - { - "pos": [ - 22, - 2 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 2 - ], - "idx": 9 - }, - { - "pos": [ - 1, - 1 - ], - "idx": 7 - }, - { - "pos": [ - 2, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 1 - ], - "idx": 9 - }, - { - "pos": [ - 5, - 1 - ], - "idx": 7 - }, - { - "pos": [ - 6, - 1 - ], - "idx": 9 - }, - { - "pos": [ - 18, - 1 - ], - "idx": 7 - }, - { - "pos": [ - 19, - 1 - ], - "idx": 9 - }, - { - "pos": [ - 21, - 1 - ], - "idx": 7 - }, - { - "pos": [ - 22, - 1 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 1 - ], - "idx": 9 - }, - { - "pos": [ - 1, - 0 - ], - "idx": 7 - }, - { - "pos": [ - 2, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 3, - 0 - ], - "idx": 9 - }, - { - "pos": [ - 5, - 0 - ], - "idx": 7 - }, - { - "pos": [ - 6, - 0 - ], - "idx": 9 - }, - { - "pos": [ - 11, - 0 - ], - "idx": 0 - }, - { - "pos": [ - 12, - 0 - ], - "idx": 1 - }, - { - "pos": [ - 13, - 0 - ], - "idx": 2 - }, - { - "pos": [ - 18, - 0 - ], - "idx": 7 - }, - { - "pos": [ - 19, - 0 - ], - "idx": 9 - }, - { - "pos": [ - 21, - 0 - ], - "idx": 7 - }, - { - "pos": [ - 22, - 0 - ], - "idx": 8 - }, - { - "pos": [ - 23, - 0 - ], - "idx": 9 + "name": "lev06", + "background_color": "7EA8A6", + "grid_size": [25, 20], + "tile_size": [32, 32], + "layers": [ + { + "id": "main layer", + "kind": { + "tile": { + "has_collision": true, + "tiles": [ + { + "pos": [0, 17], + "idx": 22 + }, + { + "pos": [1, 17], + "idx": 22 + }, + { + "pos": [2, 17], + "idx": 22 + }, + { + "pos": [3, 17], + "idx": 22 + }, + { + "pos": [4, 17], + "idx": 34 + }, + { + "pos": [10, 17], + "idx": 32 + }, + { + "pos": [11, 17], + "idx": 34 + }, + { + "pos": [12, 17], + "idx": 1 + }, + { + "pos": [13, 17], + "idx": 32 + }, + { + "pos": [14, 17], + "idx": 34 + }, + { + "pos": [20, 17], + "idx": 32 + }, + { + "pos": [21, 17], + "idx": 22 + }, + { + "pos": [22, 17], + "idx": 22 + }, + { + "pos": [23, 17], + "idx": 22 + }, + { + "pos": [24, 17], + "idx": 22 + }, + { + "pos": [0, 16], + "idx": 8 + }, + { + "pos": [1, 16], + "idx": 8 + }, + { + "pos": [2, 16], + "idx": 8 + }, + { + "pos": [3, 16], + "idx": 8 + }, + { + "pos": [4, 16], + "idx": 10 + }, + { + "pos": [5, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [6, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [7, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [8, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [9, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [10, 16], + "idx": 46 + }, + { + "pos": [11, 16], + "idx": 48 + }, + { + "pos": [12, 16], + "idx": 15 + }, + { + "pos": [13, 16], + "idx": 46 + }, + { + "pos": [14, 16], + "idx": 48 + }, + { + "pos": [15, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [16, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [17, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [18, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [19, 16], + "idx": 58, + "jump_through": true + }, + { + "pos": [20, 16], + "idx": 10 + }, + { + "pos": [21, 16], + "idx": 8 + }, + { + "pos": [22, 16], + "idx": 8 + }, + { + "pos": [23, 16], + "idx": 8 + }, + { + "pos": [24, 16], + "idx": 8 + }, + { + "pos": [0, 15], + "idx": 8 + }, + { + "pos": [1, 15], + "idx": 0 + }, + { + "pos": [2, 15], + "idx": 2 + }, + { + "pos": [3, 15], + "idx": 8 + }, + { + "pos": [4, 15], + "idx": 10 + }, + { + "pos": [20, 15], + "idx": 10 + }, + { + "pos": [21, 15], + "idx": 8 + }, + { + "pos": [22, 15], + "idx": 8 + }, + { + "pos": [23, 15], + "idx": 0 + }, + { + "pos": [24, 15], + "idx": 2 + }, + { + "pos": [0, 14], + "idx": 8 + }, + { + "pos": [1, 14], + "idx": 14 + }, + { + "pos": [2, 14], + "idx": 16 + }, + { + "pos": [3, 14], + "idx": 8 + }, + { + "pos": [4, 14], + "idx": 10 + }, + { + "pos": [20, 14], + "idx": 10 + }, + { + "pos": [21, 14], + "idx": 8 + }, + { + "pos": [22, 14], + "idx": 8 + }, + { + "pos": [23, 14], + "idx": 14 + }, + { + "pos": [24, 14], + "idx": 16 + }, + { + "pos": [0, 13], + "idx": 8 + }, + { + "pos": [1, 13], + "idx": 8 + }, + { + "pos": [2, 13], + "idx": 8 + }, + { + "pos": [3, 13], + "idx": 8 + }, + { + "pos": [4, 13], + "idx": 10 + }, + { + "pos": [20, 13], + "idx": 10 + }, + { + "pos": [21, 13], + "idx": 0 + }, + { + "pos": [22, 13], + "idx": 2 + }, + { + "pos": [23, 13], + "idx": 8 + }, + { + "pos": [24, 13], + "idx": 8 + }, + { + "pos": [0, 12], + "idx": 0 + }, + { + "pos": [1, 12], + "idx": 2 + }, + { + "pos": [2, 12], + "idx": 8 + }, + { + "pos": [3, 12], + "idx": 8 + }, + { + "pos": [4, 12], + "idx": 10 + }, + { + "pos": [5, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [6, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [7, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [8, 12], + "idx": 60, + "jump_through": true + }, + { + "pos": [16, 12], + "idx": 56, + "jump_through": true + }, + { + "pos": [17, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [18, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [19, 12], + "idx": 58, + "jump_through": true + }, + { + "pos": [20, 12], + "idx": 10 + }, + { + "pos": [21, 12], + "idx": 14 + }, + { + "pos": [22, 12], + "idx": 16 + }, + { + "pos": [23, 12], + "idx": 8 + }, + { + "pos": [24, 12], + "idx": 8 + }, + { + "pos": [0, 11], + "idx": 14 + }, + { + "pos": [1, 11], + "idx": 16 + }, + { + "pos": [2, 11], + "idx": 8 + }, + { + "pos": [3, 11], + "idx": 8 + }, + { + "pos": [4, 11], + "idx": 10 + }, + { + "pos": [20, 11], + "idx": 10 + }, + { + "pos": [21, 11], + "idx": 8 + }, + { + "pos": [22, 11], + "idx": 8 + }, + { + "pos": [23, 11], + "idx": 8 + }, + { + "pos": [24, 11], + "idx": 8 + }, + { + "pos": [0, 10], + "idx": 8 + }, + { + "pos": [1, 10], + "idx": 8 + }, + { + "pos": [2, 10], + "idx": 0 + }, + { + "pos": [3, 10], + "idx": 2 + }, + { + "pos": [4, 10], + "idx": 10 + }, + { + "pos": [11, 10], + "idx": 56, + "jump_through": true + }, + { + "pos": [12, 10], + "idx": 58, + "jump_through": true + }, + { + "pos": [13, 10], + "idx": 60, + "jump_through": true + }, + { + "pos": [20, 10], + "idx": 10 + }, + { + "pos": [21, 10], + "idx": 8 + }, + { + "pos": [22, 10], + "idx": 0 + }, + { + "pos": [23, 10], + "idx": 2 + }, + { + "pos": [24, 10], + "idx": 8 + }, + { + "pos": [0, 9], + "idx": 8 + }, + { + "pos": [1, 9], + "idx": 8 + }, + { + "pos": [2, 9], + "idx": 14 + }, + { + "pos": [3, 9], + "idx": 16 + }, + { + "pos": [4, 9], + "idx": 10 + }, + { + "pos": [20, 9], + "idx": 10 + }, + { + "pos": [21, 9], + "idx": 8 + }, + { + "pos": [22, 9], + "idx": 14 + }, + { + "pos": [23, 9], + "idx": 16 + }, + { + "pos": [24, 9], + "idx": 8 + }, + { + "pos": [0, 8], + "idx": 22 + }, + { + "pos": [1, 8], + "idx": 22 + }, + { + "pos": [2, 8], + "idx": 22 + }, + { + "pos": [3, 8], + "idx": 22 + }, + { + "pos": [4, 8], + "idx": 48 + }, + { + "pos": [5, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [6, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [7, 8], + "idx": 60, + "jump_through": true + }, + { + "pos": [17, 8], + "idx": 56, + "jump_through": true + }, + { + "pos": [18, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [19, 8], + "idx": 58, + "jump_through": true + }, + { + "pos": [20, 8], + "idx": 46 + }, + { + "pos": [21, 8], + "idx": 22 + }, + { + "pos": [22, 8], + "idx": 22 + }, + { + "pos": [23, 8], + "idx": 22 + }, + { + "pos": [24, 8], + "idx": 22 + }, + { + "pos": [9, 6], + "idx": 56, + "jump_through": true + }, + { + "pos": [10, 6], + "idx": 60, + "jump_through": true + }, + { + "pos": [14, 6], + "idx": 56, + "jump_through": true + }, + { + "pos": [15, 6], + "idx": 60, + "jump_through": true + }, + { + "pos": [1, 4], + "idx": 0 + }, + { + "pos": [2, 4], + "idx": 1 + }, + { + "pos": [3, 4], + "idx": 1 + }, + { + "pos": [4, 4], + "idx": 1 + }, + { + "pos": [5, 4], + "idx": 1 + }, + { + "pos": [6, 4], + "idx": 2 + }, + { + "pos": [18, 4], + "idx": 0 + }, + { + "pos": [19, 4], + "idx": 1 + }, + { + "pos": [20, 4], + "idx": 1 + }, + { + "pos": [21, 4], + "idx": 1 + }, + { + "pos": [22, 4], + "idx": 1 + }, + { + "pos": [23, 4], + "idx": 2 + }, + { + "pos": [1, 3], + "idx": 7 + }, + { + "pos": [2, 3], + "idx": 8 + }, + { + "pos": [3, 3], + "idx": 8 + }, + { + "pos": [4, 3], + "idx": 8 + }, + { + "pos": [5, 3], + "idx": 8 + }, + { + "pos": [6, 3], + "idx": 9 + }, + { + "pos": [18, 3], + "idx": 7 + }, + { + "pos": [19, 3], + "idx": 8 + }, + { + "pos": [20, 3], + "idx": 8 + }, + { + "pos": [21, 3], + "idx": 8 + }, + { + "pos": [22, 3], + "idx": 8 + }, + { + "pos": [23, 3], + "idx": 9 + }, + { + "pos": [1, 2], + "idx": 7 + }, + { + "pos": [2, 2], + "idx": 8 + }, + { + "pos": [3, 2], + "idx": 4 + }, + { + "pos": [4, 2], + "idx": 15 + }, + { + "pos": [5, 2], + "idx": 5 + }, + { + "pos": [6, 2], + "idx": 9 + }, + { + "pos": [18, 2], + "idx": 7 + }, + { + "pos": [19, 2], + "idx": 4 + }, + { + "pos": [20, 2], + "idx": 15 + }, + { + "pos": [21, 2], + "idx": 5 + }, + { + "pos": [22, 2], + "idx": 8 + }, + { + "pos": [23, 2], + "idx": 9 + }, + { + "pos": [1, 1], + "idx": 7 + }, + { + "pos": [2, 1], + "idx": 8 + }, + { + "pos": [3, 1], + "idx": 9 + }, + { + "pos": [5, 1], + "idx": 7 + }, + { + "pos": [6, 1], + "idx": 9 + }, + { + "pos": [18, 1], + "idx": 7 + }, + { + "pos": [19, 1], + "idx": 9 + }, + { + "pos": [21, 1], + "idx": 7 + }, + { + "pos": [22, 1], + "idx": 8 + }, + { + "pos": [23, 1], + "idx": 9 + }, + { + "pos": [1, 0], + "idx": 7 + }, + { + "pos": [2, 0], + "idx": 8 + }, + { + "pos": [3, 0], + "idx": 9 + }, + { + "pos": [5, 0], + "idx": 7 + }, + { + "pos": [6, 0], + "idx": 9 + }, + { + "pos": [11, 0], + "idx": 0 + }, + { + "pos": [12, 0], + "idx": 1 + }, + { + "pos": [13, 0], + "idx": 2 + }, + { + "pos": [18, 0], + "idx": 7 + }, + { + "pos": [19, 0], + "idx": 9 + }, + { + "pos": [21, 0], + "idx": 7 + }, + { + "pos": [22, 0], + "idx": 8 + }, + { + "pos": [23, 0], + "idx": 9 + } + ], + "tilemap": "../resources/default_tileset.png" + } } - ], - "tilemap": "../resources/default_tileset.png" - } - } - }, - { - "id": "decorations", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 743.6666, - 377.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 585.2456, - 441.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 400, - 377.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 96, - 377.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 396, - 601.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" - }, - { - "pos": [ - 200, - 569.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 677.3334, - 185.5 - ], - "element": "../elements/decoration/seaweed/seaweed.element.yaml" - }, - { - "pos": [ - 97.333328, - 185.5 - ], - "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "id": "decorations", + "kind": { + "element": { + "elements": [ + { + "pos": [743.6666, 377.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [585.2456, 441.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [400, 377.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [96, 377.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [396, 601.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + }, + { + "pos": [200, 569.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [677.3334, 185.5], + "element": "../elements/decoration/seaweed/seaweed.element.yaml" + }, + { + "pos": [97.333328, 185.5], + "element": "../elements/decoration/anemones/anemones.element.yaml" + } + ] + } } - ] - } - } - }, - { - "id": "items", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 760, - 585.5 - ], - "element": "../elements/item/crate/crate.element.yaml" - }, - { - "pos": [ - 221.48572000000001, - 319.5 - ], - "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" - }, - { - "pos": [ - 179.0589, - 425.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" - }, - { - "pos": [ - 630.4404, - 425.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" - }, - { - "pos": [ - 599.3334, - 297.5 - ], - "element": "../elements/item/musket/musket.element.yaml" - }, - { - "pos": [ - 403, - 395.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 192, - 587.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 664, - 203.5 - ], - "element": "../elements/environment/fish_school/fish_school.element.yaml" - }, - { - "pos": [ - 282.00012000000004, - 559.5 - ], - "element": "../elements/environment/crab/crab.element.yaml" - }, - { - "pos": [ - 562.7273, - 553.5 - ], - "element": "../elements/environment/crab/crab.element.yaml" - }, - { - "pos": [ - 251.57886000000002, - 431.5 - ], - "element": "../elements/item/musket/musket.element.yaml" - }, - { - "pos": [ - 56, - 593.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 708, - 177.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 152.00006000000002, - 177.5 - ], - "element": "../elements/item/sword/sword.element.yaml" - }, - { - "pos": [ - 477.3334, - 585.5 - ], - "element": "../elements/item/mines/mines.element.yaml" - }, - { - "pos": [ - 401.64703999999995, - 41.5 - ], - "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "id": "items", + "kind": { + "element": { + "elements": [ + { + "pos": [760, 585.5], + "element": "../elements/item/crate/crate.element.yaml" + }, + { + "pos": [221.48572000000001, 319.5], + "element": "../elements/item/kick_bomb/kick_bomb.element.yaml" + }, + { + "pos": [179.0589, 425.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [630.4404, 425.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + }, + { + "pos": [599.3334, 297.5], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [403, 395.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [192, 587.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [664, 203.5], + "element": "../elements/environment/fish_school/fish_school.element.yaml" + }, + { + "pos": [282.00012000000004, 559.5], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [562.7273, 553.5], + "element": "../elements/environment/crab/crab.element.yaml" + }, + { + "pos": [251.57886000000002, 431.5], + "element": "../elements/item/musket/musket.element.yaml" + }, + { + "pos": [56, 593.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [708, 177.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [152.00006000000002, 177.5], + "element": "../elements/item/sword/sword.element.yaml" + }, + { + "pos": [477.3334, 585.5], + "element": "../elements/item/mine/mine.element.yaml" + }, + { + "pos": [401.64703999999995, 41.5], + "element": "../elements/environment/sproinger/sproinger.element.yaml" + } + ] + } } - ] - } - } - }, - { - "id": "spawners", - "kind": { - "element": { - "elements": [ - { - "pos": [ - 161.33333, - 186 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 641.3333, - 184 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 671.6667, - 604.3333333 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" - }, - { - "pos": [ - 129.33333, - 606 - ], - "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "id": "spawners", + "kind": { + "element": { + "elements": [ + { + "pos": [161.33333, 186], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [641.3333, 184], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [671.6667, 604.3333333], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + }, + { + "pos": [129.33333, 606], + "element": "../elements/environment/player_spawner/player_spawner.element.yaml" + } + ] + } } - ] } - } - } - ], - "background_layers": [ - { - "image": "../resources/background_04.png", - "speed": 0, - "tile_size": [ - 896, - 480 - ], - "z": -110, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_03.png", - "speed": 0.74, - "tile_size": [ - 896, - 480 - ], - "z": -109, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_02.png", - "speed": 0.82, - "tile_size": [ - 896, - 480 - ], - "z": -108, - "position": [ - 0, - 360 - ], - "scale": 2 - }, - { - "image": "../resources/background_01.png", - "speed": 100, - "tile_size": [ - 896, - 480 - ], - "z": -107, - "position": [ - 0, - 360 - ], - "scale": 2 - } - ] -} \ No newline at end of file + ], + "background_layers": [ + { + "image": "../resources/background_04.png", + "speed": 0, + "tile_size": [896, 480], + "z": -110, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_03.png", + "speed": 0.74, + "tile_size": [896, 480], + "z": -109, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_02.png", + "speed": 0.82, + "tile_size": [896, 480], + "z": -108, + "position": [0, 360], + "scale": 2 + }, + { + "image": "../resources/background_01.png", + "speed": 100, + "tile_size": [896, 480], + "z": -107, + "position": [0, 360], + "scale": 2 + } + ] +} diff --git a/assets/map/levels/level1.map.yaml b/assets/map/levels/level1.map.yaml index 1ce89af3d1..0f8dc36eaa 100644 --- a/assets/map/levels/level1.map.yaml +++ b/assets/map/levels/level1.map.yaml @@ -1226,6 +1226,10 @@ layers: - 719.0 - 400.5 element: ../elements/item/crate/crate.element.yaml + - pos: + - 143 + - 410 + element: ../elements/item/mine/mine.element.yaml - pos: - 292.2272 - 609.5 @@ -1269,7 +1273,7 @@ layers: - pos: - 712.0 - 393.5 - element: ../elements/item/mines/mines.element.yaml + element: ../elements/item/mine/mine.element.yaml - pos: - 720.9998 - 121.5 diff --git a/assets/map/levels/level4.map.yaml b/assets/map/levels/level4.map.yaml index 483cd78e0b..0e855c6e9f 100644 --- a/assets/map/levels/level4.map.yaml +++ b/assets/map/levels/level4.map.yaml @@ -1277,7 +1277,7 @@ layers: - pos: - 800.0 - 425.5 - element: ../elements/item/mines/mines.element.yaml + element: ../elements/item/mine/mine.element.yaml - id: spawners kind: !element elements: diff --git a/assets/map/levels/test_level.map.json b/assets/map/levels/test_level.map.json index b7eba37bf6..8950140e84 100644 --- a/assets/map/levels/test_level.map.json +++ b/assets/map/levels/test_level.map.json @@ -999,7 +999,7 @@ }, { "pos": [804, 315.5], - "element": "../elements/item/mines/mines.element.yaml" + "element": "../elements/item/mine/mine.element.yaml" }, { "pos": [445.77790000000005, 51.5], diff --git a/assets/map/levels/zyrafa01.map.json b/assets/map/levels/zyrafa01.map.json index 9f7c694e2c..2e166daea3 100644 --- a/assets/map/levels/zyrafa01.map.json +++ b/assets/map/levels/zyrafa01.map.json @@ -630,7 +630,7 @@ }, { "pos": [271.76469999999995, 393.5], - "element": "../elements/item/mines/mines.element.yaml" + "element": "../elements/item/mine/mine.element.yaml" }, { "pos": [95.42862, 337.5], @@ -642,7 +642,7 @@ }, { "pos": [616, 393.5], - "element": "../elements/item/mines/mines.element.yaml" + "element": "../elements/item/mine/mine.element.yaml" }, { "pos": [439.05884000000003, 361.5], diff --git a/src/assets.rs b/src/assets.rs index e4690f53da..362fb47325 100644 --- a/src/assets.rs +++ b/src/assets.rs @@ -469,6 +469,35 @@ impl AssetLoader for MapElementMetaLoader { dependencies.push(sound_path); *handle = sound_handle.typed(); } + BuiltinElementKind::Mine { + atlas, + atlas_handle, + explosion_atlas, + explosion_atlas_handle, + arm_sound, + arm_sound_handle, + explosion_sound, + explosion_sound_handle, + .. + } => { + for (atlas, atlas_handle) in [ + (atlas, atlas_handle), + (explosion_atlas, explosion_atlas_handle), + ] { + let (path, handle) = get_relative_asset(load_context, self_path, atlas); + *atlas_handle = AssetHandle::new(path.clone(), handle.typed()); + dependencies.push(path); + } + for (sound, handle) in [ + (explosion_sound, explosion_sound_handle), + (arm_sound, arm_sound_handle), + ] { + let (sound_path, sound_handle) = + get_relative_asset(load_context, self_path, sound); + dependencies.push(sound_path); + *handle = sound_handle.typed(); + } + } } // Load preloaded assets diff --git a/src/map/elements.rs b/src/map/elements.rs index 39d64048dc..6b1aa1a4c3 100644 --- a/src/map/elements.rs +++ b/src/map/elements.rs @@ -20,6 +20,7 @@ pub mod sproinger; // Items pub mod crate_item; pub mod grenade; +pub mod mine; pub mod sword; pub struct MapElementsPlugin; @@ -31,6 +32,7 @@ impl Plugin for MapElementsPlugin { .add_plugin(crate_item::CrateItemPlugin) .add_plugin(player_spawner::PlayerSpawnerPlugin) .add_plugin(sproinger::SproingerPlugin) + .add_plugin(mine::MinePlugin) .add_plugin(sword::SwordPlugin); } } diff --git a/src/map/elements/crate_item.rs b/src/map/elements/crate_item.rs index 2a30f5c4ed..210fe40061 100644 --- a/src/map/elements/crate_item.rs +++ b/src/map/elements/crate_item.rs @@ -245,7 +245,7 @@ fn update_idle_crates( fn update_thrown_crates( mut commands: Commands, players: Query>, - mut grenades: Query< + mut crates: Query< ( &Rollback, Entity, @@ -261,14 +261,14 @@ fn update_thrown_crates( effects: Res>, collision_world: CollisionWorld, ) { - let mut items = grenades.iter_mut().collect::>(); + let mut items = crates.iter_mut().collect::>(); items.sort_by_key(|x| x.0.id()); for (_, item_ent, mut crate_item, transform, meta_handle) in items { let meta = element_assets.get(meta_handle).unwrap(); let BuiltinElementKind::Crate { breaking_atlas_handle, breaking_anim_fps, - breaking_anim_length, + breaking_anim_frames: breaking_anim_length, break_sound_handle, break_timeout, .. diff --git a/src/map/elements/mine.rs b/src/map/elements/mine.rs new file mode 100644 index 0000000000..bdc6da2861 --- /dev/null +++ b/src/map/elements/mine.rs @@ -0,0 +1,350 @@ +//! The crate item. +//! +//! This module is inconsistently named with the rest of the modules ( i.e. has an `_item` suffix ) +//! because `crate` is a Rust keyword. + +use crate::player::PlayerKillCommand; + +use super::*; + +pub struct MinePlugin; + +#[derive(Reflect, Component, Clone, Debug)] +#[reflect(Component)] +pub struct IdleMine { + /// The entity ID of the map element that spawned the crate + spawner: Entity, +} + +impl Default for IdleMine { + fn default() -> Self { + Self { + spawner: crate::utils::invalid_entity(), + } + } +} + +#[derive(Reflect, Component, Clone, Debug)] +#[reflect(Component, Default)] +pub struct ThrownMine { + /// The entity ID of the map element that spawned the crate + spawner: Entity, + age: f32, +} + +impl Default for ThrownMine { + fn default() -> Self { + Self { + spawner: crate::utils::invalid_entity(), + age: 0.0, + } + } +} + +impl Plugin for MinePlugin { + fn build(&self, app: &mut App) { + app.add_rollback_system(RollbackStage::PreUpdate, pre_update_in_game) + .add_rollback_system(RollbackStage::Update, update_thrown_mines) + .add_rollback_system(RollbackStage::Update, update_idle_mines) + .extend_rollback_plugin(|plugin| { + plugin + .register_rollback_type::() + .register_rollback_type::() + }); + } +} + +fn pre_update_in_game( + mut commands: Commands, + non_hydrated_map_elements: Query< + (Entity, &Sort, &Handle, &Transform), + Without, + >, + mut ridp: ResMut, + element_assets: ResMut>, +) { + // Hydrate any newly-spawned crates + let mut elements = non_hydrated_map_elements.iter().collect::>(); + elements.sort_by_key(|x| x.1); + for (entity, _sort, map_element_handle, transform) in elements { + let map_element = element_assets.get(map_element_handle).unwrap(); + if let BuiltinElementKind::Mine { + body_size, + body_offset, + atlas_handle, + .. + } = &map_element.builtin + { + commands.entity(entity).insert(MapElementHydrated); + + commands + .spawn() + .insert(Rollback::new(ridp.next_id())) + .insert(Item { + script: "core:mine".into(), + }) + .insert(IdleMine { spawner: entity }) + .insert(EntityName("Item: Mine".into())) + .insert(AnimatedSprite { + start: 0, + end: 0, + atlas: atlas_handle.inner.clone(), + repeat: false, + ..default() + }) + .insert(map_element_handle.clone_weak()) + .insert_bundle(VisibilityBundle::default()) + .insert(MapRespawnPoint(transform.translation)) + .insert_bundle(TransformBundle { + local: *transform, + ..default() + }) + .insert(KinematicBody { + size: *body_size, + offset: *body_offset, + gravity: 1.0, + has_mass: true, + has_friction: true, + ..default() + }); + } + } +} + +fn update_idle_mines( + mut commands: Commands, + players: Query<(&AnimatedSprite, &Transform, &KinematicBody), With>, + mut grenades: Query< + ( + &Rollback, + Entity, + &IdleMine, + &mut Transform, + &mut AnimatedSprite, + &mut KinematicBody, + &Handle, + Option<&Parent>, + Option<&ItemUsed>, + Option<&ItemDropped>, + ), + Without, + >, + mut ridp: ResMut, + element_assets: ResMut>, +) { + let mut items = grenades.iter_mut().collect::>(); + items.sort_by_key(|x| x.0.id()); + for ( + _, + item_ent, + crate_item, + mut transform, + mut sprite, + mut body, + meta_handle, + parent, + used, + dropped, + ) in items + { + let meta = element_assets.get(meta_handle).unwrap(); + let BuiltinElementKind::Mine { + grab_offset, + atlas_handle, + throw_velocity, + .. + } = &meta.builtin else { + unreachable!(); + }; + + // If the item is being held + if let Some(parent) = parent { + let (player_sprite, player_transform, player_body) = + players.get(parent.get()).expect("Parent is not player"); + + // Deactivate items while held + body.is_deactivated = true; + + // Flip the sprite to match the player orientation + let flip = player_sprite.flip_x; + sprite.flip_x = flip; + let flip_factor = if flip { -1.0 } else { 1.0 }; + let horizontal_flip_factor = Vec2::new(flip_factor, 1.0); + transform.translation.x = grab_offset.x * flip_factor; + transform.translation.y = grab_offset.y; + transform.translation.z = 0.0; + + // If the item is being used + if used.is_some() { + // Despawn the item from the player's hand + commands.entity(item_ent).despawn(); + + // Spawn a new, thrown mine + let pos = player_transform.translation + + (*grab_offset * horizontal_flip_factor).extend(0.0); + commands + .spawn() + .insert(Rollback::new(ridp.next_id())) + .insert(Name::new("Mine ( Thrown )")) + .insert(MapRespawnPoint(pos)) + .insert(Transform::from_translation(pos)) + .insert(GlobalTransform::default()) + .insert(Visibility::default()) + .insert(ComputedVisibility::default()) + .insert(AnimatedSprite { + atlas: atlas_handle.inner.clone(), + ..default() + }) + .insert(meta_handle.clone_weak()) + .insert(body.clone()) + .insert(ThrownMine { + spawner: crate_item.spawner, + ..default() + }) + .insert(KinematicBody { + velocity: *throw_velocity * horizontal_flip_factor + player_body.velocity, + is_deactivated: false, + ..body.clone() + }); + } + } + + // If the item is dropped + if let Some(dropped) = dropped { + commands.entity(item_ent).remove::(); + let (player_sprite, player_transform, player_body) = + players.get(dropped.player).expect("Parent is not a player"); + + // Re-activate physics + body.is_deactivated = false; + + // Put sword in rest position + sprite.start = 0; + sprite.end = 0; + body.velocity = player_body.velocity; + body.is_spawning = true; + + let horizontal_flip_factor = if player_sprite.flip_x { + Vec2::new(-1.0, 1.0) + } else { + Vec2::ONE + }; + + // Drop item at player position + transform.translation = + player_transform.translation + (*grab_offset * horizontal_flip_factor).extend(0.0); + } + } +} + +fn update_thrown_mines( + mut commands: Commands, + players: Query>, + mut mines: Query< + ( + &Rollback, + Entity, + &mut ThrownMine, + &Transform, + &mut AnimatedSprite, + &Handle, + ), + Without, + >, + mut ridp: ResMut, + element_assets: ResMut>, + player_inputs: Res, + effects: Res>, + collision_world: CollisionWorld, +) { + let mut items = mines.iter_mut().collect::>(); + items.sort_by_key(|x| x.0.id()); + for (_, item_ent, mut crate_item, transform, mut sprite, meta_handle) in items { + let meta = element_assets.get(meta_handle).unwrap(); + let BuiltinElementKind::Mine { + explosion_atlas_handle, + explosion_anim_fps, + explosion_anim_frames, + explosion_sound_handle, + arm_delay, + arm_sound_handle, + armed_anim_start, + armed_anim_end, + armed_anim_fps, + damage_region_size, + damage_region_lifetime, + .. + } = &meta.builtin else { + unreachable!(); + }; + let frame_time = 1.0 / crate::FPS as f32; + + crate_item.age += frame_time; + + if crate_item.age >= *arm_delay && crate_item.age - *arm_delay < frame_time { + if player_inputs.is_confirmed { + effects.play(arm_sound_handle.clone_weak()); + } + + sprite.start = *armed_anim_start; + sprite.end = *armed_anim_end; + sprite.fps = *armed_anim_fps; + sprite.repeat = true; + } + + let colliding_with_players = collision_world + .actor_collisions(item_ent) + .into_iter() + .filter(|&x| players.contains(x)) + .collect::>(); + + if !colliding_with_players.is_empty() && crate_item.age >= *arm_delay { + for &player in &colliding_with_players { + commands.add(PlayerKillCommand::new(player)); + } + + if player_inputs.is_confirmed { + effects.play(explosion_sound_handle.clone_weak()); + } + + // Despawn the grenade + commands.entity(item_ent).despawn(); + // Cause the item to re-spawn by re-triggering spawner hydration + commands + .entity(crate_item.spawner) + .remove::(); + + // Spawn the damage region entity + commands + .spawn() + .insert(Rollback::new(ridp.next_id())) + .insert(*transform) + .insert(GlobalTransform::default()) + .insert(Visibility::default()) + .insert(ComputedVisibility::default()) + .insert(DamageRegion { + size: *damage_region_size, + }) + .insert(Lifetime::new(*damage_region_lifetime)); + // Spawn the explosion sprite entity + commands + .spawn() + .insert(Rollback::new(ridp.next_id())) + .insert(*transform) + .insert(GlobalTransform::default()) + .insert(Visibility::default()) + .insert(ComputedVisibility::default()) + .insert(AnimatedSprite { + start: 0, + end: *explosion_anim_frames, + atlas: explosion_atlas_handle.inner.clone(), + repeat: false, + fps: *explosion_anim_fps, + ..default() + }) + .insert(Lifetime::new( + *explosion_anim_fps * *explosion_anim_frames as f32, + )); + } + } +} diff --git a/src/metadata/map.rs b/src/metadata/map.rs index a256dff6ee..1b709403a5 100644 --- a/src/metadata/map.rs +++ b/src/metadata/map.rs @@ -263,7 +263,7 @@ pub enum BuiltinElementKind { #[serde(skip)] sound_handle: Handle, }, - /// + /// The throwable crate item Crate { atlas: String, #[serde(skip)] @@ -272,7 +272,7 @@ pub enum BuiltinElementKind { breaking_atlas: String, #[serde(skip)] breaking_atlas_handle: AssetHandle, - breaking_anim_length: usize, + breaking_anim_frames: usize, breaking_anim_fps: f32, break_sound: String, @@ -287,4 +287,36 @@ pub enum BuiltinElementKind { // How long to wait before despawning a thrown crate, if it hans't it anything yet. break_timeout: f32, }, + /// The mine item + Mine { + atlas: String, + #[serde(skip)] + atlas_handle: AssetHandle, + + damage_region_size: Vec2, + damage_region_lifetime: f32, + explosion_atlas: String, + #[serde(skip)] + explosion_atlas_handle: AssetHandle, + explosion_anim_frames: usize, + explosion_anim_fps: f32, + + arm_sound: String, + armed_anim_start: usize, + armed_anim_end: usize, + armed_anim_fps: f32, + #[serde(skip)] + arm_sound_handle: Handle, + explosion_sound: String, + #[serde(skip)] + explosion_sound_handle: Handle, + + throw_velocity: Vec2, + /// The delay after throwing the mine, before it becomes armed and will blow up on contact. + arm_delay: f32, + + body_size: Vec2, + body_offset: Vec2, + grab_offset: Vec2, + }, }