From be48e0a772ff86473c50751a49bd9f949a9798f3 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Sat, 6 Jul 2019 18:30:03 -0700 Subject: [PATCH] Add Switches, Fire/Water Collision and Play Menu * New doodads: Switches. * They come in four varieties: wall switch (background element, with "ON/OFF" text) and three side-profile switches for the floor, left or right walls. * On collision with the player, they flip their state from "OFF" to "ON" or vice versa. If the player walks away and then collides again, the switch flips again. * Can be used to open/close Electric Doors when turned on/off. Their default state is "off" * If a switch receives a power signal from another linked switch, it sets its own state to match. So, two "on/off" switches that are connected to a door AND to each other will both flip on/off when one of them flips. * Update the Level Collision logic to support Decoration, Fire and Water pixel collisions. * Previously, ALL pixels in the level were acting as though solid. * Non-solid pixels don't count for collision detection, but their attributes (fire and water) are collected and returned. * Updated the MenuScene to support loading a map file in Play Mode instead of Edit Mode. Updated the title screen menu to add a button for playing levels instead of editing them. * Wrote some documentation. --- dev-assets/doodads/build.sh | 18 ++++++++++ dev-assets/doodads/doors/electric-door.js | 2 +- dev-assets/doodads/switches/down-off.png | Bin 0 -> 678 bytes dev-assets/doodads/switches/down-on.png | Bin 0 -> 674 bytes dev-assets/doodads/switches/left-off.png | Bin 0 -> 702 bytes dev-assets/doodads/switches/left-on.png | Bin 0 -> 696 bytes dev-assets/doodads/switches/right-off.png | Bin 0 -> 695 bytes dev-assets/doodads/switches/right-on.png | Bin 0 -> 702 bytes dev-assets/doodads/switches/switch-off.png | Bin 0 -> 687 bytes dev-assets/doodads/switches/switch-on.png | Bin 0 -> 699 bytes dev-assets/doodads/switches/switch.js | 38 +++++++++++++++++++++ 11 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 dev-assets/doodads/switches/down-off.png create mode 100644 dev-assets/doodads/switches/down-on.png create mode 100644 dev-assets/doodads/switches/left-off.png create mode 100644 dev-assets/doodads/switches/left-on.png create mode 100644 dev-assets/doodads/switches/right-off.png create mode 100644 dev-assets/doodads/switches/right-on.png create mode 100644 dev-assets/doodads/switches/switch-off.png create mode 100644 dev-assets/doodads/switches/switch-on.png create mode 100644 dev-assets/doodads/switches/switch.js diff --git a/dev-assets/doodads/build.sh b/dev-assets/doodads/build.sh index e06763e..97ce263 100755 --- a/dev-assets/doodads/build.sh +++ b/dev-assets/doodads/build.sh @@ -24,6 +24,23 @@ buttons() { cd .. } +switches() { + cd switches/ + + doodad convert -t "Switch" switch-off.png switch-on.png switch.doodad + doodad convert -t "Floor Switch" down-off.png down-on.png switch-down.doodad + doodad convert -t "Left Switch" left-off.png left-on.png switch-left.doodad + doodad convert -t "Right Switch" right-off.png right-on.png switch-right.doodad + + doodad install-script switch.js switch.doodad + doodad install-script switch.js switch-down.doodad + doodad install-script switch.js switch-left.doodad + doodad install-script switch.js switch-right.doodad + + cp *.doodad ../../../assets/doodads/ + cd .. +} + doors() { cd doors/ @@ -104,6 +121,7 @@ objects() { } buttons +switches doors trapdoors azulians diff --git a/dev-assets/doodads/doors/electric-door.js b/dev-assets/doodads/doors/electric-door.js index cd028b7..7ecdbdb 100644 --- a/dev-assets/doodads/doors/electric-door.js +++ b/dev-assets/doodads/doors/electric-door.js @@ -23,8 +23,8 @@ function main() { }); } else { animating = true; + opened = false; Self.PlayAnimation("close", function() { - opened = false; animating = false; }) } diff --git a/dev-assets/doodads/switches/down-off.png b/dev-assets/doodads/switches/down-off.png new file mode 100644 index 0000000000000000000000000000000000000000..2b08ca01119caaae2027d970bb24ae49a1c08094 GIT binary patch literal 678 zcmV;X0$KfuP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6C@&{2vM2xm02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004eTL_t(o!|jzp4uBvG1P9}f_!E5-uf?kuDi~V{>740y zLI?{%5ClOGY)tc5a%cjzRu_?;L@T8L;31MU0f3w{03y;mZzAC?q6NB%JcYT4j0BmB zjE0zs%mkQ;%nqA~yczslBzg6N#(Ddie?dgl0^6^ywf#%n#1aql0x9n_*U3pNr2qf` M07*qoM6N<$f}Wol`v3p{ literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/switches/down-on.png b/dev-assets/doodads/switches/down-on.png new file mode 100644 index 0000000000000000000000000000000000000000..527b2a00edb260164d719c543b81282f1483b4d1 GIT binary patch literal 674 zcmV;T0$u%yP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DH3K~&v*a;02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004SPL_t(o!|l~U4ge7lMA0I1R?ftooXM=rPDXTfSkzw% z@rVSVlu}A5HLb5qik^T{$`T|x1CUbsg#=GPYwa7XwNCd7rvYrl7J!M^2Cxt&00UtL zSP>L}1wjMsBB+3|sN--C0F0BJDCg|@f$_gv&;75si7OuF3t1db*JnOlY5)KL07*qo IM6N<$g3E~+AOHXW literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/switches/left-off.png b/dev-assets/doodads/switches/left-off.png new file mode 100644 index 0000000000000000000000000000000000000000..33accebce394ec550b9d0ace9d95e9626485f569 GIT binary patch literal 702 zcmV;v0zv(WP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DlCieSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005RrL_t(o!|m8h3cw%?1kj0>^-S?jp2=>c2(^A%97{>A%25M+Yz~&rtRfmL2eN-MjE7<2^OTg zI~b5#LY&WYirQ81}4%Bo|*#%1FV*mgE07*qoM6N<$f)rCD>Hq)$ literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/switches/left-on.png b/dev-assets/doodads/switches/left-on.png new file mode 100644 index 0000000000000000000000000000000000000000..36d5c45d3f28fc5c43108895285f6c5f075f7599 GIT binary patch literal 696 zcmV;p0!RIcP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DjC|MMKb^Z02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0059lL_t(o!|mA73Bxc9MbT@maWdIGyJ>U)0000EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6Dh5}oNX7sF02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0056kL_t(o!|m2l3cw%;24LM~JCoh1Gr5Atzn26fFlql01{yapb#zq0^tTA5L`-e0Z`w;Py1N_$iieR0NtW&4b08T dokHYxbpwNlP}l1=S?mA+002ovPDHLkV1l4T9+Ln7 literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/switches/right-on.png b/dev-assets/doodads/switches/right-on.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a196edf6077eace0e972599517ee7b5b0984cc GIT binary patch literal 702 zcmV;v0zv(WP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DJ-Wv($fF{02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005RrL_t(o!|m9+4Zt7_1kfWZu@lU6(>hH=g%GlhNns=! zS5JI=h=SN5v*Hts07;Mpfbz|F#4lDN5m5-ajgZ!w8uB;-poLfwLK3ysQP4oFh|+rp z029PxJIoNTgK2_zUQso~yIH9qCpzW|656(>kQ>>t4LKcPTabtp9gy2mzJx@+CrZAo k5|M~RB;r^rjr^Z@0SVAD*A>LBApigX07*qoM6N<$g0Yb$1poj5 literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/switches/switch-off.png b/dev-assets/doodads/switches/switch-off.png new file mode 100644 index 0000000000000000000000000000000000000000..4e7c006f6bf976cc9edc593b478758e238607d93 GIT binary patch literal 687 zcmV;g0#N;lP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6Co;pZ!ae{102y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004(cL_t(Y$L*Iv3IHJpMRn+`b*8+mvzZ`TSc*|F{#AnY z>PKY=6Xl#43?d=~tE|vZd;)5NJ3&SG1BVpg0AC4a^Cb~h2ROi6@rTB@-)tpdh9zWqoY`Avv@aoemXW54I$ VMHARk@{9lg002ovPDHLkV1fZDAr=4t literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/switches/switch-on.png b/dev-assets/doodads/switches/switch-on.png new file mode 100644 index 0000000000000000000000000000000000000000..bb191ceb34088939814073122478456f4fe8a97c GIT binary patch literal 699 zcmV;s0!00ZP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6Cm!)=uH66t02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005IoL_t(Y$L*I<4uBvGLp$PG;Y@JZ`lE?4h;Axqvi<>K zZ);!y!HHswgh8bgfmK%MB94IC;73pb