From c3e57514d1c70d3b53db83a153d0d887e340d519 Mon Sep 17 00:00:00 2001 From: Bye <bye@byecorps.com> Date: Fri, 2 Sep 2022 15:29:34 +0100 Subject: [PATCH] that's a lot of shit --- #foo.bar# | 1 - .DS_Store | Bin 0 -> 6148 bytes .swp | Bin 12288 -> 0 bytes assets/aimerthing.png => aimerthing.png | Bin assets/arrow.png => arrow.png | Bin assets/Sprite-0002.aseprite | Bin 0 -> 836 bytes assets/Sprite-0003.aseprite | Bin 0 -> 575 bytes assets/Sprite-0004.aseprite | Bin 0 -> 806 bytes assets/Sprite-0005.aseprite | Bin 0 -> 801 bytes assets/Sprite-0006.aseprite | Bin 0 -> 594 bytes assets/hamsterx2.aseprite | Bin 0 -> 3826 bytes build.zip | Bin 0 -> 9207 bytes build/aimerthing.png | Bin 0 -> 130 bytes build/arw.png | Bin 0 -> 109 bytes build/cursor.png | Bin 0 -> 124 bytes build/gun.png | Bin 0 -> 111 bytes build/hamster.png | Bin 0 -> 389 bytes build/index.html | 66 ++++++ build/t.png | Bin 0 -> 789 bytes assets/byemclogo.png => byemclogo.png | Bin ...background_a.png => crazyabackground_a.png | Bin ...nd_a_big.png => crazyabackground_a_big.png | Bin editor.html | 0 assets/flor.png => flor.png | Bin game.js | 219 ++++++++++++------ human.aseprite | Bin 1360 -> 1282 bytes human.png | Bin 311 -> 248 bytes index.html | 3 +- l.js | 1 - 29 files changed, 212 insertions(+), 78 deletions(-) delete mode 100644 #foo.bar# create mode 100644 .DS_Store delete mode 100644 .swp rename assets/aimerthing.png => aimerthing.png (100%) rename assets/arrow.png => arrow.png (100%) create mode 100644 assets/Sprite-0002.aseprite create mode 100644 assets/Sprite-0003.aseprite create mode 100644 assets/Sprite-0004.aseprite create mode 100644 assets/Sprite-0005.aseprite create mode 100644 assets/Sprite-0006.aseprite create mode 100644 assets/hamsterx2.aseprite create mode 100644 build.zip create mode 100644 build/aimerthing.png create mode 100644 build/arw.png create mode 100644 build/cursor.png create mode 100644 build/gun.png create mode 100644 build/hamster.png create mode 100644 build/index.html create mode 100644 build/t.png rename assets/byemclogo.png => byemclogo.png (100%) rename assets/crazyabackground_a.png => crazyabackground_a.png (100%) rename assets/crazyabackground_a_big.png => crazyabackground_a_big.png (100%) delete mode 100644 editor.html rename assets/flor.png => flor.png (100%) delete mode 100644 l.js diff --git a/#foo.bar# b/#foo.bar# deleted file mode 100644 index ce7c795..0000000 --- a/#foo.bar# +++ /dev/null @@ -1 +0,0 @@ -ByeMC is awesome \ No newline at end of file diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ae44452a1c2fb6e80a261756a0b5b9345006e4fc GIT binary patch literal 6148 zcmZQzU|@7AO)+F(5MW?n;9!8zEL;p&0Z1N%F(jFwBHSSJz-E*%6z8NH1}Ep|7C_}j zsnHM^4S~TM0-(Ih#*oNR%uvjb%7Br74gWDPFrdii=DWBg<>V)U3XZ3_XAWJ6KjMg~ zCWWAyf(+zxVgV?GSQ(NSN*OX4au`yQ%8Lu2w(LkM$jK}&F)+Bs$i&RT%Er#Y&cV$Q z8=R3}9$b=GQd;bkSQHK7h2-bwB*EB;Nnx3(<?#X{&iQ#IiJ5t+MIa@?nJKABiA6Et znRzMs<xcsfc`3zUy-*1bP7cm^0g38rBO?<X1w#vyS{;RIOCtjv1v4{)+FDKyQDuGW zp!n>Z+`RlQkdql07#Sfn122?@QQZs-3`jmoDNfEw%FoXMDMu1UEiR*lP&FY3_V4hi z7FQvGjif&}9}(2pRiFm+0g&^M^p^z}<>ln(r9+BvkmM*HDIow#ilA%^Dg#D}pGW;U z8UmvsKwJob$_E8##oz#?8z3}Dih+@V0o(;(WME){naBw42QYx-Kw3dGNGpg2X=Pvp zvA|}4wK6b5wK9UcAs~IAE(wSRYiD3&0BdJpWB_Z2SGSB1?F@`in;D@!6h?@421bZ> z21bZ>nDa*I(GVC70cZ#?Ludg|{qM@afUExxQ8h}AhQMeD49gH;WN`_0aROJ$*!>5p zYeDsC0#q7Q`-7@uMo>Ks(FaljmSutrC`y1i5IK-mP_+-PiWwOoHTh^m02V@{^k@js GKLh|Jfsv5_ literal 0 HcmV?d00001 diff --git a/.swp b/.swp deleted file mode 100644 index 3bffb92fcf05120f22984d74137996aeb902964e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmYc?2=nw+u+TGNU|?Vn01*)Uy^Vn(sWKJ9AwXv2mlmh$7UUNYP&X<)8UmvsFpwd@ z8ER}~XaI77vXY{Luuv$7If_R^U^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qNC=b^Ff!CL zFfcGd{mY1hh6;~TqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd70wFa#1) z7#Pm;Gcdg8hs^)O`u|}55cJQelSe~fGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q ZLtr!nKuh{_lNB<H6%xx+i}Q0+82|<d75)GK diff --git a/assets/aimerthing.png b/aimerthing.png similarity index 100% rename from assets/aimerthing.png rename to aimerthing.png diff --git a/assets/arrow.png b/arrow.png similarity index 100% rename from assets/arrow.png rename to arrow.png diff --git a/assets/Sprite-0002.aseprite b/assets/Sprite-0002.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..93fd6ecdd02a30c2a3f0d3841aa8706cbc523340 GIT binary patch literal 836 zcmZ=^W?*=*l$n8(frmkXfsuiMA%y`MC@?UB1R0nZn2?33#%5+>VEFZs4QwkL0|SE? z0|NuQ0@z9<J8m&BFi0vWKt<%CG=$pcrT?FS;YOLue+GtES62OJV0f~u=syF)j{JcC z3=Adqmj4+T>@|%3Gce54Fa^n4gH(PmQ~J-q@Nb<7h<u*-pMfFyxbJ@k2D?s={|pRj zF;4#(7$j}%{xdKL`E~whU|^W~@;?KE&Wo@A85sWm|NozX;lSxT{}~v%XK(q>zz~($ z@t=Xg$|Vh?R~uyhe+CdKA)@-9fg!^p=RX6()&P*2Z>3fL85mw{pZ1@D;ZSSl|11Uu z1{P4bE9~>qzftD$>dLAo%Zhg72b9=b+G`li(=dHv?ee`$>EAk&f6o(>kNetndZ@)X zN!r*6`E@c(eF<{W|NjS0-|3#cB`UMS$|X$=WWS4qh-!vK&enjAZ>3c)wog0MnkfUa zNr4#>XkZfLEfxl+{FF*ua&C#qsfi2>46M+g{|`?Dp!8BP$2vyw&wm3EV}-`U9*-3M z)HmO*FEOln)M9XfOGHZAF0j|@@uB^nKAk9Hwl&;lP%9?QU1rU3_>k-|_LGeU%u);t zN_!sPE@S{D0Y-2V07X2tEY$FEd{-kT&3){~lZ%W#x*qZz%|{rPeR#Yy0L?-N96sb^ ssF;(S;J~WBs`Y=f0W)8NPP?zHVbYE>?VXdg{d;7$1TZsXv?weG03Ki9+yDRo literal 0 HcmV?d00001 diff --git a/assets/Sprite-0003.aseprite b/assets/Sprite-0003.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..b65de37d3b9d813d56ef935f98a6336788bdd8bd GIT binary patch literal 575 zcmcC#Vqkc%l#zjlfrmkXfsuiMA%y`Ms4*~t1Q`Sv1dxTP#@^4!!0_uM3)of`1_lN( z1_lOp1+bM!cKl;tV31T$gNmp^X*l&C%=*v3@PBRce+GtTLk1B0|Ns9C4Bw9|{m;Nq z{oeqjrWqujx@0zp&F~MTrnTii1H%+6tN#oP&lo_m|DPZI&%khQPV0XLhL&v2{|pS# zhSC2S7?x%m{%2rFSqd_<yXW4228Q6E9+3D_koiGDK_GLcO!?2i@DEH*o&q-iKS=gJ z#IFA!^Z$Wusr3Z0|NjTsYo)>TpMfC|Ec@RHB+i(84CKO=HjoSNG5oJ#U|?VY#SJt7 z{;y32dGY`M??;wa|2JT0W=LH!n}Olq|JIf%R#qT?JU@DFPHRiHX0&1S(rm+&rT@Eo z?ga<+EM2-ZC@5&klqvtFOaVC%<hp<V|1<n!U;w%3zm=5+6UZS>42;Rg7+Tu?-(!#m X*{#3~4qylYavD2>Phw?ik%A!r6g8re literal 0 HcmV?d00001 diff --git a/assets/Sprite-0004.aseprite b/assets/Sprite-0004.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..0e43844fc4a8e88e78d92f2405987ffeef5dba94 GIT binary patch literal 806 zcmY#mW?*=*l#zj*fs;XjfsuiMA%y`MSTHbx1Q`Sv1dxTP#$Lw6!0_uME7(?61_lN( z1_lOp1+bM!c4RR!Fi0v`Kt;@<G@SYmX8mVisI08~&%m%~(W3th3<iNs{}~t@CmsIJ zz>s+PF-ZLXXOMWJ<9`MQ&qbO485jy5PXddd{?EW*k;?!QUnKw%{|r*I=rhP1i%gJs z;35z?>otfx{TXDkXC#Q-)deD7Usm|f!0`Vw$h1mFkjUXe5cwah>;G+#Ig1QHB98+> z<o`+okowcR{xdLa5&*GpJ0^le5;uX!U9bN$Fw9Z_`Q^4F$o-!a|Nm!Tc)STjCJKN| zo8$=c%c4S%$YHR!1_Q`6M@NuIU=xU3v<pNkFo4W-O#BTBheaTfNtZz+B&;@V0?EF9 z4YKk7|Ns9tF)%Q&fYJdpuq!Jo7cE+35ZL56>2TuZ$BX`dHb`{zT$EY(c+#T(r!8_B zJXZ-6es)~+d67jXL*OEYS+5yRe{S-OWa#Q*0ENouNtKQapukwf@c;IrMFtF@0H`$h ze|py@0Rxby6F2?e^?H^<<!#5qpA-K--t<3FV9_MU&x;EGAKvs|gJGAW<Nv^>|BH70 zS76xWnD{$!(f>)8|5sL4ZrZd7<m&(b<v}i1U<M}v2mwkC><m7Mm8nGvhOP_@46F)J z2_^{508Z`|bCMGp8vbt=|J$C(rqZC(r^lcA-+eLXtHbH{A3L=De<3m5VyOf}WnHZw E0OzO=_5c6? literal 0 HcmV?d00001 diff --git a/assets/Sprite-0005.aseprite b/assets/Sprite-0005.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..5cb09cbc05f461edfa2ab95d399534edb62462c7 GIT binary patch literal 801 zcmY#nW?*=*l#xLJ3>g_17*ZIJfdvC2NRUB*K>%5pYV3tf3=F?MvVv`8Wnf?sV_;xl zR{&dyWJeYw1B0Z31ysZwO2euDVAg*IhRVvy{|pR^7A^YEz+e#A^q+yjanj-c3=D~v zAA`jIe+G#sI{s&1@LZJnpMjz9@g%VL>HiE27P$-{@l^sK@y{SNi#~(QvB(682QC7U zvtEP9)1N^mdq#rTU0opZ^<{<s3=IE2gG{S*1c@9j1d;#2y8hn=nX||MB=R^AME<Wd z0I5H{>pug-CIJxpwqqhlBykgn-1YiD1H&u@kY8>)g53W(@&A7YhR2&gWTF7bv`LO2 zzbq;Qi5v!tYcPOJb94lW1U7-lMY}+x0t3iQ$Hd>Da99KqnRFRMLc(g(CXnpw*B~4J z|NsAg69WSS3j-qq12nKJD=QZ*T4WH|<T&YY;^oJS{(m+|bo5-5S@?L;qW`BYav3~V z2^4;IT=aR7MJ7YwB8FM78BTw0@{DBY>S6$e%I8Uyjtro{Sj6!E_M$}w44?q0H28md z*Cqi2kf#$j{onO^mO|xi$HSi!|3BXJKT%-OB*)K-3jZJ8^k0Kvm!sqVz^4C;cKugi z*yNb_J8{wfNtgduR#tA>v<c+u|NrGdE>>U$CjkfnN)GG{K8cm7MGA%v3=9mc3JeU4 z42%r_nIH-n7~~k_7%JwxJ<G_;z`((*@O%0`-8**{GI%bxeDt+yZ`}Ipw?8rc*ZKP3 GRSW<KgAeEc literal 0 HcmV?d00001 diff --git a/assets/Sprite-0006.aseprite b/assets/Sprite-0006.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..2ef4231749dbc96b4de014745a931b1e2ed27292 GIT binary patch literal 594 zcmWGyVqkc%l#xMzL4ZMlfsuiMA%y`MC@?UB1i|vi;?!baVq{?W^^p~9D=Py7gBSw? z1G@s)N+c_8F)%PlDkwlj<e@Z#+UKSJpMl{<nah6$hF4cs{byi!vaIMo1H+E|fd32( zCH9v885ry}jQ%q)%+oLh$y$R{elJt{&%p3+oe7A1p7@`EA^EuPe+CA-PLKZ#3~Dh> z{}~u0ZS4LtFbMf|{%2rdnELWR1B1?sum2es{{R2~pMl}P={x@!7`kU~`Om-*mD%y1 zfx*fp4Ww5aWd45!5Gf&|`k#Rz!y@ND1H;w;keY9$RsR_nUTmNCpMl{}Yv%tf1_lNe zP`E4X^U}Xj=JM*wswc~ecH{??*jw6b7|qi#ePZqMy-exfI+K6T6O)ho+I4!U#W+dY z*a`V{GE995a?$_)2TtGVp1mb1v%|_IO$}tfi-d@3hDFZSfR1maRWG(rJJgy93N;o5 zW=NocNszbL8GI5eQ;QS~JsB7nSfL^Op9w6_zyOZ+iaFh<-u#enWslyu<l$8Hmdv&C iD*l{uU3JU0{%61CzvRX8ssGtm*ROnA&!85d-3<U6Nuh-R literal 0 HcmV?d00001 diff --git a/assets/hamsterx2.aseprite b/assets/hamsterx2.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..ac661480b21bbeedb42f3ef66ca228d5eee98e71 GIT binary patch literal 3826 zcmeyw$H4GlDGP%Fg8+j910w?iLka^juw!5Z2{H&U2p|hnjort_!0_v%6xdcN1_lN( z1_lOp1+bM!cJwhaFi0xcK}Bq#G@SYmX8mVisI08~&%m%~(W3th3<iNs{}~t@CmsIJ zz>s+PF-ZLXXOMWJ<9`MQ&qbO485jy5PXddd{?EW*k;?!QUnKw%{|r*I=rhP1i%gJs z;35z?>otfx{TXDkXC#Q-)deD7Usm|f!0`Vw$h1mFkjUXe5cwah>;G+#Ig1QHB98+> z<o`+okowcR{xdLa5&*GpJ0^le5;uX!U9bN$Fw9Z_`Q^4F$o-!a|Nm!Tc)STjCJKN| zo8$=c%c4S%$YHR!1_Q`6M@NuIU=xU3v<pNkFo4W-O#BTBheaTfNtZz+B&;@V0?EF9 z4YKk7e~`FMK-7N*hS1Q^{|pSJrKSHF7!>5?|1&U1OH2P}VDR$t`hSFhfq?~-R-h45 zSy{Pg(ISJuCdWyK6E8nr^#8L#qNC@c%)-Z$7X3eMk;~w@N}%ww<D$=tEHW7a7ctCw z&2aj2lV>DDR~G{)<UUWTbYuVp*dm7iw-+rkU;qVDrNRHxyEX|JfC46Q)BjzsXDL+P zc0Bw!@&DsZ{}TlkO>+FasPO;cP5(6*b~!r!4{Z9sXxD!QhE0x%zY`bzpLF?uWo6~2 zO`AYI`~Tl2ASyI8w6wHTL0(>3TH4FYOB&<{1!a&gz=;P!Ff%wO7Ri96m>C%0lA!d( z!r+vjQYnX3j*Y=5Gd-iESQe`+D?@N<Vo5PBV_ov|i{!CtWM}ZnOis-!PK8M`!d(P% zE<1xqVs3FsDw1v{kT?SaD2Xw!Gx#J{rWPp};&O9HX;D#Xi4xRmRI|Al!ZY(yij#{{ zQ}YnMf*8*XHlCHiJtwia80Itv24qQg29Nxll++@7T%PvHPtUh!U|?VcXLUw~{}9~_ z3=9ekd<+$Hk`odVZm1-Ds8=vJ%y7%L%l)H<+|k7q2_GG<F)Hk4EIAaXl?c|(!~k+Q zLc2Uv`vU!nzrViL3$Sg>w^sYdo>+DBuRKS>x8^r@w`2;(zHPhd?{9yYp=d{cQ=q|} zgAUI&HtI#Qt@2qqeXc=6jy}UZzqDd!um#Kvf(%SZ?qg%%fx3@_m-lZ!@APTYk`iWA zq^7EJsj2k!NfzAb_O4lQhnZo^oavT%U?W(-VS{j^G=l)xhy{Er)~xx%f5_n9BG>MJ zkAwZScD$YOLtgq=+V%ggJpU(VW-(RWYUOh%J7BQ(trY9xgbfT;%PXs%rbgXtUEQO^ z{y?jobL!qJ3`eeLGDwLh2%CXzV+D~&4rXRxW2l((`@g)Xfq}t+n+q2%EZEkx$0p3w zfPrCKfvu7QNWB6(gAfBVk}eho7KVyB(J2Q$)C&sO^QHVa&%p9uo7dq>y})1l!prp~ z|CCI=GCZi4OLqk8=U`xCU`5i;2DTLxjT*YTfBSnRCmh+cXU_qNNIA7Oy>@Sz*_J#O zZ&(=?Il68&02{!?Acp1uE{2LZvrB&d|L<vXtgmyw=Og801}TkJ6@9RJZU#}5cwq&{ z%Vy4wU-`|f#tRx3YPIz-MkuL1)d4H#VUT5DM{*w%0~15VoYiaA{E6p0!sEcOh|xiU z-F^`hs5asP*G60n3=9+|(FCy7gp=rh^}JvFhrVq3Z7*=(4g1aAnZmUMQ|P{@+0vsa zbi}35h15-<@nogY+q^7awn(Sh+y3QYKJn0w%k5wRJM+xrY`bzKR~Su=D?7xnX)lAz zlAM>L33N1pf>Ri%K~GjKPiz83tL0f4t8Vdbo<Fayjqyo=JnQ0w9nFnrl9^+-@r2Cu W(zi}zxEaTg!kghZnm|Wf0tEmYaYN() literal 0 HcmV?d00001 diff --git a/build.zip b/build.zip new file mode 100644 index 0000000000000000000000000000000000000000..2a7a7b5d89faed7f6d97cf90b13c4f8fba7d6f13 GIT binary patch literal 9207 zcmWIWW@Zs#00D_w`A`rI!)y!+3`wP#IVt*~A-oLiAB*^tH<t1zgXq!<ZU#n{uZ#=~ zV7(ACI2bq>z7-?Ps9|7W5P+MJTv}9|U!+%%mku`VKoWm)NHKr%s{;OHG}B)5d?<eY zbkd`wgoFoQzZ7sXU7DkC<_M3<^MCc%c^<L+XxYK^vi|@7+c$2^(fQuPP$c2q^ruNu zX5L*7<{}Z>SQ%%Fb?U`a)KuooI9i}`Kx_Ksoj)7JrK4x}H$^BhD?67;W@mn8I(OXR zD9^lgb$YMo2+d*$@Mh=O7Zs~h%)r0^ayG(4Uy(f2#K6EH0{2j2W^QUxNk(Q~I^0wH zlK7KDiS-l{*i)0Ab=5Nk&0(}tT<7pBt>TlE@?!R9b^Z-9$0jN4Phe|LH^0;%Q|d2% zT%hmuNls2xPQI+9&^9)<wlFn588(?coO{+Xaq$XAY`xnfDN(~$xTJnZ#v#rthaS9q z^?cJg&4rv`zqwf7`dG!lzyR_A!f&N@h{&23f*e_yc`2zCdKo3TIpD~uFXc~$VYJA4 zYjeBo_O?y$e`|}Fofg&YSeA0rQ{{5xPK(ZHb>GKJGFLBUpU|R`7rewPXj*B`-`_JC z9fbD0c=YaFX`J62i6;y*B+oDyH#5#KZfDzWl2@^Asqc%Py${z%CBNKx^2#MY-{5SY zndURqrd?~E{#haCgx<#_JO0HjCX+I*F6eF0jl8m9ae?IK7jHaFto~n*oU^8;?4NVr zp2Gj@+5Qynt$24ibbsRSg~i4XHc0lW#a+n1;3~w$@qF?97bU*Mb?OdHbL$>g@_kAx zIdn^qJ4USX;F9|p=MVkQv=*F@VO)Obk?+}QXZC%ZWE*vEul2LbEjt(8i*zZJ_$uuv zVZa#q`M!HQZ~h&RWjdllBKB&%8>bf}ym9GaT_Whu_}cd{^TV?%#8p1<ulS&5GS65& z)5YZDp<@pPkDsc4C@)p5H~EwI|DL}S)N1GVPIhFApD)X~@jv$y{^r^0&$pXo+59bk z)3SM|>go3O-(MZ<q(4-j(_v*;bEsnfrkgUy|4#M0R~a~GPnX)Y3PFnlu@{#7sy#Bv zRm5b4;Kik`-(UQ_>%A;~L2h5mjbD3T<nsrWSSm@mmXyvk5b%(QW!lA5DKj;9X6F7i zTFGbZ7Pp;m@-(WgeBZR`m%r7MX}`FyEqC61Rch^Tp`3Nsr8}<me78#|_pDd$z7XJO zw%B})*z|<B=mRR!)r`ek)x$Q;+FWpFN8H&r7wjzrmOearkDa|Ff~oh?!rS_}hZovi zT9?i<Q^=U*Wnc4?sirbQmjvyVjh^tQ?4N#juN#ZU9yg)iTh!_oOD_MAc3mN>dylK& z?c463eoJI>a*1p0pZz3Ky>HgE)I0CDJ$yFnezQYVLC^d0f@q;vX)CW5=xWq>sQ&Bs z-SbLkk4{Et(Z?C=TlJ6s2oBYAdAt2_;c1>fmHd?=J6AD_$L)9~S{UOgbX)8MTcLQw z-x-@%ZPWO;#Axet<KzD_w<~BZ(&$e9e&xqg`wfl1SA70lpTO{1?8*B6$Kip0%QmJQ z33iJAXFV-i@b6c<Y0+!%=QGx>jeN88`rqqz$A7$?sFtPwI5g$g_FYTA%y=GB&h<Rz zd&BSFiwnxj_6ej;`=eJd{le8(>)0YD^>6y|zoO;D>0NizC;f?hEf^9Ud;GiFZ4Zlc zeDlw{R@L7=Sh8KOPj(Gg_<qLEAMYRB)9+KA^k-?K_^rH<XKtoXUiiPdUOLxrn{{04 z)62Ha$ItSbaX!9j7nU)bubW@y`RBXa;&1#ma_@ie`{=)asq&TLCK+~@u1{mx&i?(n zUGH)SRn@fy6Hi5+3i<N%#S=TFFNYThNu<_?Zn&Y@(y6dz>s58L!04&V8vbY}UGdM? zuiO4E{%c{fTU_$TS$hsX;;rmH8eP<Ql(n+`sP!kg?(a{S#pF+@icNR=Z~ySK|C4l` zI<@eKn2G%nH7fHr{BWr|_(=SdWcT?e;W~Ay@f&_Pt=qUmEq>z<uYHLhd;hc@&3|Go zcK_u2h(CV+4m{%jq%KxJiBC-S($PiUeH$&*Y;~%huyhL-bsg2LY&&ZFNv8Yx6IL<( zj?PxkEy`=>XHCke{dcI;*`#@Y!-LLi&-xYaeq}J<TxX&ARCta-hx2^NfXi3fqPn+j z33SfB`D<2>v%~y==f{2pRtulASzhSdyyN4?sNWMS)}>C`nO?i(<dq*amNROWmEQiJ zc3@g>e*C(1lD%^@w=CSeW9Jtp^B5*q_F(fy!Ovc?=4v_*tMi{+i9F(Iv3u86f#TrL z`KEI_)<iV=7=2ATyz$P3$TJZW6uP+QKYaZ9>QZi9wneT*>7DF3AKBQBy_>Y`TB+&H zgqdNVO=dOt2G2OLm{Y-pQ%I`sxS{vH=Wi3c!&dxSP|_{?%Gf)}LP$k5yX2Ts*4_JG zeK)<Doy|D6wR=V_-(w@2q$~d;R!)A&r6`{)*Xr5vQ!x3>&$`|nldR*4dpq^J`M3_~ zpYfcfX4v^4P$W3Oi`A0D=<$+SYfdixYZb$?PTc3-54jbskFRrTpZI-3Otr9EiG7FG z?+}e+bFVIGJN)tQy=}ZcFJHE=S$g8~4(-y&r?LMU^gJ!D^WSyqpXwvf81i~U^MY)H zHQ6kaT{id_%nXmpnmK1Pn@n6Yqg>bBspl5yoevDP+ASCxcdqO89D_%b3};T_+<Ec+ z@@u&-cJf}{wC1JvW_wwmq61Hs-Yx3i_4nihHTHXZQq~$W<bT>JbUFIknegdG%RF~4 zU@r=;h}W!r60oej`2C8{cS5p`NW5TCy~0-JA${Vpz?FMEIxZ|eS2zs5*|rz5NFQ}z zGP?Xe{ii~@Lf1_@<|j;Aypv9+Uw25q%|2_>*5eJ^GwUudcq%jLvhzw!zc#DFB>9*f zrWM(_UTuYcf};KQwls>bGBn<z;<8)AK_y`I9Tl$p8+mmu)(0m#*}dPV&OE#IFQ3fG zeMW^-SF)UYKJ~qCQ`3S+EpDE!0r3|DFAAj_-1jQZRh}NdU5DZCz6~FO`MkX2nZ1`E zycE8JH}2m0-v=9_M9w_e{&S9Nen!t~*4+O*3qIcYeqeu7`O>h@Hy`@U)7fJE>tO_o z(zVUb<pTP9kIXbv7ie?%-}bB_H+AAQ@qFX+rL{Ax%5E=mzuU;W?|quWs)z^6)+&AB zUvx3*(QeO=OC`E)MBe`7{o{>6V}^6cTJ>osE9WrxCr>y!`CLNU)wzKt>Aw<qTJz8H z*gR)owE4(uqbm7C;qSfeHO=#v@MJAJI%RT~!Yr>fKOa1MuwdpE-N#P~d?swLYxs~M z<#uv6YZ=FLc6Ncgk<<9!E|AmV{PF$tLi<VWg^!nAxF~%3`b6U+wYNVswXMH@J~2Ww zC(vH5zQX#_$@ptZ(&yrnEG#|VM_h|fvS4Sws+zm~S^MK_PYhPxIR4^-?%H*RYxIor zx3UGU-a60WB<sFuaTPb0m!1=SwCdEV;Oo-YOgDFC?Z0BB=EJvl>Dl)RYnDp)+@30a zMe^+3V@J}2^?&d<Zg{1Y_E7h?)Voc3UhMKGoY_sxQ?0k&ymdbBe#eE4ej=07w7K7_ zT%4AAoqH>rc%o`fYDx!p`eoM%6(?6I+26EoxR!a|`m`9ow)eWW3c1Gm4R^jeBxv5K zG}}I<*{gK*q{O^TUj4j;%a%uGBou7hvWU}%@u0i6@=If>^IW-eM6}+{Qj?3CETL8# zQ+`hS#GHkED>hE?e(DzxGmkl<DJ*@3XqM0A@{1{4zG0^{pG-HH6Z+WkMr-A}1I5u{ z=>Zc<GycyuHkUd1wrBc{hq9*`&2rwV3A#O(%*eESxi5vQ|MFJ`&ec{kFQ*2ix?D1P z)?IPR`Et?rNm{|yF0bEC=n7UhvzT&4?&cx6rwVt)j&)4V2-BP{`ZIn(kBV79-T$|n zEV{jN^KQJ#jSyOKrE2R__Gi17PFw1>!MgEo)kV1wsk2@cS<)W^7M!rM=V^a<LWHMK z=guAO=u08%j~tM4VgB}kA^IN2q6Ygzu4Q+ZK5Wy;V@aG8*A=+F!C+%CJBy6;o12zO z4(<PzuKatU@I$-sgt`SYRW)5cG|H~Gd@s~`P=7_t`9lIB(mr}jS-;P?&VT1naOKK9 zBZGUr*H<57x9T>uQP{ww@TKh}KV$8AmDnE>9d$gJxoqQS$k^r_{pq&3o?oRQFW$Is z1-sj%%O=kfW_0Y~U^ac!>3sc2`t~#L@2k%{pWqQO_k`4*&xaS;wHWQW9`Zqbg0C3k zp#>9q#pC|ZE8281sDYu>BUY?XcVXG=SqvFg>lu$3Y}>L$`(u(s+qAG4mp~51lMW>- zW}l3y;F1c>l6G14$j%}_upmIvdv*4wKl8;5!yT2MC9*trbXGg|B92SdfrnLE*S@;h z^z)X>4;}j}j(B)z=ydlzYCZdUSLNLR6S<dMW*vSzPMLe=1%xYpG@TXY{Zx3)ML{ch z*4@jpnd(o8ZP+mJrqXidiG@4={Fs+LOIhZ?Y{%H|kHn^3p344NEn(t?{ca+<Vmq?_ zGAC=SI2@Fv7&mqD%12jsW<TbVEpvPQ>Q2hL$;Z;?C(hZoB(CYwwd=py6piM1osw87 zkz%&oy7|+b%_je5WQFyJJG(NUInko(CSy5C#wN1sLA#UeVn^OHP2c(_sb8;K8*sg5 ze@hxu+Mm7N!V%98E9&*W>-g|V;*_vP^(WcjXR%2|7Sm!QmG-bN)x6!kN&9qi<hPVc zt<%Dhc8{NGR-W^oyk|nHyTThMS9g#y=JN~Rc(T}bZcyj^qH=Iv$`W<SgF+`xGL~A- z6VC{HQr$lNc;wBgPYv~}BX3S!no&M!YHVaz+44mu4;N}PE_%3m&6`u7DomJ?tK|!% z&+ET3z4ue`%#N*h8a=iDw)U>AE{IyAe<hbAnQvmT3zNb3^1pnM2luD`-{HON@41(= zZgAMzt!!Al#q@?Vt6b_??hmCGdp=|aC$>5BzAWl^w#hK|$A)&l&nGqQezYERh~Hc* zb?3l=%IW_;$hj0uzuwo%B2ac~@&?tfwTxATQH-U#&ad7OyqT-|;@Shd?rL?u^PK7? zTb?QrAuY*bcQm@mzgoKNXi$e!Qq?u~yDUv>lqTsU>1-Efd{Vc!HBkRbdPc<+%{jLV z-`(l^X%@f9>dX|bIG$e|)5~nCDjr;3yz<bRS$>&w_xWuP*4r#TdD$2DJM4=qYrg-y z#dNe+`A+!^mPOlJh4LS0Th!_Bd^r9{kwuxU@LYO?fYid;t3iizp2${Px#-_`ap<d% z$@8yg`xefODU<oU%)s?n#kV$z^`~_MR1*S~#2cUfzPP=TS?1_h!L~QODmh04HduKw z&gO_z6XeTNUiR9uRASMtA78#c;!aw0;DfH~r!1B)HSF7R^qW_SAM)*wXHi_My1?1W zsO#X>PR@^46-5``;(z=xLbZX@zV<=y?4aUlHdhlb{g&iDzu?GLi$l}S)*BZ#U4Hja zBDHHK=cL?wi{@_C*j%8I{bRDl`-|KWcY1AieEOWnGWm6dt>n(5ts!^J4nLE*r*HVU z<>}52tCTz;B@w=@J__rOsK{6dDQwhj+ABBH{mnM9%H6gG=YIyb1uVVv?oD&-xetfZ z{NK8swmoub)otG<v8~|(4|MjQH4S)jxcQrLbnS8Xy?4casXp6T!O*w#*wHP473VG} zG|F5wbyu<4x`t2C|M}8)mT?o-&iH#vxLZypL)=FBH_OG7Gqt4pcy3KuX!maUj|;`S zKgl_~l+#%&=I483Q$<Ff3)}SS*n7cC@@L(7w}7=_fvdd7dYSW*Ih<#|l)AlNXZb{> zbw}Kh9WI~Ut`s)JsJkD$93h%-uW{?V)9apn!mY*H{W3iV{IlN`HLd<rm|4m{b=@(e zwKJw^Epu|yyc+am?xl>#RWf`(C+-tIcJ|YQ&6ihCS-h)nqxhRQ8ndF?GWSWmIdNR% z>TYA@<dbuFJdc-^+_K(ocyk%UIfjNXZRT|@t3w$X)`nf+dh1j;>%^O8j~UBK%X1TB zgIRL(HYRYbe(4doQhZ9#Ie*JjH&Y9Dr6ix~Si*n$OQKiE+xw#T!dkbdKGc0ZeWlNi zil|u^Cc837op|Q!CD&8^yyE+w%-Oq_b0mhD?Y`uw`C@x%?#$o*cRAG-T~0sax_tGm z*^w9g6q@FSUC6aMCEH|HwdIeP)9q{h&*nW^<??8EwTE%LTk!cQ!UBHWn_s`qar8O7 zVM4C(q42lYUbntC?l9fNnBuQp>+tl>n^_-bNUxrww(Z7*rlb8$Z;T)MT{2l`aEE#K zRWI54g>@PI7ZeTh4qtV#u#ovHcc95&%^amD8_|-8%WAT7uUr#pjC-(Ycl@yi5vv!U z%8pg(_L-hK)^$x|_Wbe-n@U$@?sVH2Dwb6B>h6)l(l#4{K1J==)XILW#lpWbeVJDS zSGVoz)x{TAbuQ>yy|yans=(Hw=<~ILf!gQ2*R9Dp;&s*f&+c1Wb4z<BpKUpR%UWal zYtc*LIdh&YiC?+IxOeN?b%jif-jeespIrX`<I0r@{|}w-H2#vGeQ~=*)r*R4{EarV zHWsL^=(e=p7Hk^t`QZK9SA8EJ{r9<f{QvsgmAR?C)BU41Wn?vf(|)e`@~_*15U#|_ zQndlAe!ToO-T&B}rj@$wu3jRg``P&ShHD&Ei12dOoH@JUUFNof{D*&Du58)AfS-3> zS^w`VH-fxZm7beoX+C38<*m2Z%EF}Ah_;oaEzRr`pO$La@w~YAPUP~v&Sr0VqK;SY zQB8<#Y20q`*>CrWXI2lN|6QrD{P)R%Bwu4mzZM?#X&x-goEtSQH>wqxC^@D^9-VTj zfN9SmzFO0Cc6MQjnW;N}Txf0IsQ2gI<S&=+s?RmOxvInI#)m{khhC3PK}}Vq!&Y*q zBp%s#-S68fV!z|2V>z2tadq0f=yzc@ob$RH7aYBsIIlDNTT6Lg#)Cuu_-g)^iTs>Z zlX&X4OR(tOZ})bvI-Grbm$97r*MS<QQxz2}vR9p3zRbtVC*k^^4;#3PZ#!L?TN}9D zDrJ+jc8hz**4^fZCttJM!?ou4@1)%K$5&4{AQ#M5viIKN$lZJ6l8@}DH4<;$`|IQz zjp@eO*SK#Q8W{4Hoe&XI`FFQ?*XchG<$^LYd+YWu-1^OBPqEJKwu7IiNDHs{ouP8o zP_y-7boEP7``;&C%hj9j4Y;v1{g}-8hzmz<UAl5BBdfK|o9+HHw*P$RU+nr2Zc)Hx zZ5Xv*c<}~d?Yx68G<KICD$lS9Uiaig%BvXp4ynV;Pd*u*yyMUH@gviO8a|!3ueSG1 z+js2CHEy+vcqQg1GrR(MT^u(ZI@-_FHdnZ)%4m|7S2h<{lbp24<f3WE&Hgv!_3e%^ z*KPF<XkjStesIoXg<FWz;*e06n-bGLO!<|*UEINa=7A7(uEpl(ga10LnY411Mf4Pt zoLi4-oVi6iSBk6J9~A!dDV^0-w_JfKrBQg-o7>Y*n=cR+D4JkW`9M<r$N$|Gk3-i< z-AJ_Gc**f{OVW<iO#Q#n_b)|F$@!(>{`kye)ePTuU%P^%{wFfcY>uQ}yu@QNmGg#X z-<o%~gj<x<pY2>bzr^o+gJI3NR^<RYn<*;I_m`&d&N$Fjo-<S4c*b(C0~eOOUG(m& za?H`Pg}rz6{5USE%{|A%pKBDDWaVndf3u^#VMcVIg9Oj5nTG^Yc!OhwC5nFipS|X? z*dwF3jlJvEJt__CDwPhYTsUi)_^O}ZLgJSDnXmi%NFzFIeZkgQ`8rqiYA#2<y0WgU zD)hyX^6tNj&SY!s)h!X4eIQ6*Ve7hCOAhT+)J>`XkgRb$Vv=yM+|i}SEAr#(GdPTI zzt3Lzk%J>*?>o<j3BGq$hx5H#VKaYsTjsI;Kew*>RUF-0P&DJY?D>tyH{N_E?wy#n zTGOj?a~5+}S(AO}o11HH+}mqhHaCyAxHWYvckAOFes_O}te$J7mALil!tGYeU;XB~ zZ)`o+_v@9g)BSS!f3uGo$1VJt8PmNvdglDYYJWOr*|&U>@Z4kjE5cGXTUAcz`Km?5 zjoddkUavmWxIV$u_QTW4#?uV;3v!m0OK+X#yDN>`R-!WP+WfCt#g~MF9R6zFKQX84 zpSrDPdZVNNb%FPr?;lK#O?p;s>3%tnTd$*X-loe_ZV58qE7XXb9Q`ZK&zQ5OB2IJO zIqw<8lZ=*5QT@r#ZL!J4<mqDfz7&nBz8%8e{6(`ZM2{L8n4fy2HD_JZhdY}YJT{6q zB(;e<c=(^!bB#OoK2<$YDC?K^*QNQBUY#_KQ|`2P*Xf(ty;Hen@1nv<%`LNx<Ky-g zvB$<tsegEBZc~{DZ;yuC1F!2FF5m9TFuc#~n;!5eXk`?4;E#ZxSB1-ilBU&bcyD;b zTmHtfXLkC#w?B_2Fiq2}KfL>l>7F9)miv_=KV6ghex>Tn<9TtrAjEb0=7?h^E1c~$ zHuW2c{r`9`ZC0wL{j^0|3QN@OU+^_QowD%}`|)RzrZF7fUdVf8aB2I?&v;(xYu!6# zPwB@b=eqM!(+`WjVbF~Tn!bZY@kYLwPthmY_1)rjr^`Of&RPD)ahvk~W5@K|f9z%6 zzwb(x=JzxHR*%o^$SIh5a)r2>+A~S*;G!>^xR@@ln#cO!zr*#CE5(X;)Wdft3PfEg zF57bK{_L4diQY5q*MIqR<(l!!N85!yx#lQO6)z||d&PI}?;75Xy(i8+oUU~C+|iGL zpLJPIy9qdLFWYsgWbO=I_5U|KD<{5els_g?f8hB8@vAefrzkE{=oi=C-2eT<w;4Ro zpX6<OKgDj=+S8{$Xf7_`3BIx8vL`3gp_g*kO3wS`y?%A+v}e|pllqHu(tT<~0-ina z%Xj_|l(>4Xo5?S$%}G1=TxStgSby(j^Je9r^TYn>gXTgCgLdd$5@%ol%?bp7Cx|%E zCU^1~7#Mirb0O)adGJXPl4f?C9L|8IcI2~j|FbT!V6JhBY24D#(9pE!Pv?U@n;rO) zJtxE)G#}n9o$1imvAjE(<M`JnEiCg~1lv4UAHE@zXV4L1D7vr5u$%FeamB7*JJ%F@ zWiWxKJT|>7smx$tU;sH3;RWRBoK{8#20^$NG7@u(OHvUNRQqsGP%*YLR{iS?@N?(o zlHvk|gQtf}5Ca2)3j+g#3I{U-0|UEd&MgK8hQI)y5LX5UhD`znWo2c1r4s)C{~sC} zdfPGa_3PLF7cqEwd6|0!Yna+}pZL^v=+*zkO^X&S`d?|#$)&W&05lEP!xNX-yXwE~ z?85r?$AJu+Hf>Unm-kq@j+KFdfw3gWFPOpM*^M*?28KtTE{-7{$KPJL&38zFhb`e4 z!_A*he*Treaw*m%`I!9TV>-81$JS&^Y3%<MlesqJ`;-%liee(&=htob7CHBG>Behe zR|}*%W+ZId#@aM1=1)-1<DEI5Z1|592&=5<?Dw$$dfZB2Ri%*16hpO|>{T-gR5_F; zCkBe7q(mr22yASeprCxbYzF7wsR|u2@)LSE#J;y(jhcQouFX}+DnfCqfX=mW9hY?y z9C6!BJE!q>n6KU26(9a(&w>h5F0-Kf9%eO-6`VUd9Zx=MXxMqw_ut8FZ&RFiwr=j9 z&Z|0`S*h@Cz1GdV+T*fUQ|_>R0ELUEtDnm{r-UX@TD{fJbES)sfdLeq*dsa@6i4ug zPAn>ir&T<Wj5!OL<8bEO2_6;J$Jf>}b3&#e|NsB5zt{4=-h`tOLQllcJoxa&O=^Pj ztCx=?4i(zod~~3_t^G{<PtjL=A_fK-xyh5?)T=LI3ps!~IT!Zl!!=MGf}Dx)0P;+# zC^G{CH{1gyaOZ=v+M5Eblc<cM%&-1nrcuTO1_lNN7El_!m#}|10|SF7G>tA=w1|O$ z;s5PLn>KAqT=ajFfPs2)&>OUL#<UKU&LR%)ospRLSV5rmJD10tgn%lBfZy_(>Ni%2 zXDqq*pTnB@#`$@k(^npSH(9u%k7>Soa@&vTVS!3qz8~xMw>xle;XnSkRR6D3#GBJD zb_qTk9DWxt$Q^lff1lipIcHxVx3-biFOV+cHK<@W=(x^!Jof-A(|ZQCjSTglR{De( zO`Q}kw|;;Bzh^9cRZN0=;*T)B7wDMIxSjJF6Z=x$9TOO~g$sJTl|7KWVe0`?jia&_ zoDpmWd-x>;54Jdq%H4XlUYb2*uAraLMaGqTq%C$dzBc=xp<D1nuf3V!IbX+$L;qQJ ztYhK3>rj2c+CVemN2?~IqH=V0qvM(i_ocTTqPgF*9rIt|weq7<!?kDUJXVyrC+(Pb zxH{!#*87-i1`pmfe`0X+a+~9p%KZ3e8*@R{#J6*9S!>IBE!S1~u!vDh>R4U;lE%YP z4|YuVi(d86eLdfUU5t;D8IBtl@cz%+-ZmjJzmY%w+ftWhQ@s3kE}63=qu}&km1)uD z1px;xRvl>lw~A?f!x`3B+*-}+%&iTc9?9LsC$s2dM5XkLh3^>8EemLHZLv<VW7xdo zY~6$1Y-ayvtoP`?oc>Mis;A<Co`@Zyd9PS(Z(Z8eXx*Z$T96wNlj~)pf0kj|i+RCL zzix8!#O?hc-LEH6;3X~<J)7NtQ|9|6hG!oCIVAS1+7hK7bl^bX(z~nlqOLu<Jbz0R z|E_DVN+0}ZWOmQxpIXn?bEJ$>_^C?dLHB3nPuJ(`_qG?Te_48fcTVT8z$yFp>|Jxr zUxe|GIA?+20hhlTw|?jEifmEewY!nCVM^Dh@NLsII8XUk)E>y6@9yw(cKw&_-?eXh z3q<8F;X3ca)YEd-v!VYUYYsOn$J*^o>$!itKA4dlT9Mhm>OsDIT*7bh=hpeG_bfmB zxp`~T+owD`*yIalzTh`?kVy2H<E@KcX6&1ADqo73fdQ1U0=yZSM3`|efdJ_R;kS+; zlGp_i5Hn%5=02pg1)wDnAd^6NOCzYxfS5`A0tuLlL8gN$H00TR(E0?B$soL?QIwGZ zx`czY)e6WqfK~}0w+E2jzohXa+y>&;3?Q2hD&~-@YEYX3<aQ9=(x@l}b3c(S3}mB0 zL4#a5fa-dXu^_yq@d?~$5^8>Q<B^MQRF|KXfw`Q>`Ucr(P@o_uQBc_ray1BVY3!4Q Z8BJ785a7+q2GR&hEf1I&7#I~nJOJx~0bc+B literal 0 HcmV?d00001 diff --git a/build/aimerthing.png b/build/aimerthing.png new file mode 100644 index 0000000000000000000000000000000000000000..008e6b6e80db33849d27736bfc8fd4b031af8045 GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRdCT0c(hNQXTpBNYzI0Jk_Tp1V`ZiXkXF*15! z?)QX&fq}6k$S;_|;n|He1_lOoPZ!4!j_b(@2_*>*YGPG}1_p*!CJr119J~p<tpW-S g6Iiv~j2Rew4soP^xM;%3z`(%Z>FVdQ&MBb@03;wE8vp<R literal 0 HcmV?d00001 diff --git a/build/arw.png b/build/arw.png new file mode 100644 index 0000000000000000000000000000000000000000..f509667c3b90a211bad7a0c9ad450b281f67e4fe GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flU|?rtW?*0tj9a%3BoN>e;>y6l@c;k+r8no_ zWnf@nED7=pW^j0RBaMN9LDbX5F@)oKvc-W94G)<Q^DERHC}3dF+Quf?|4u}Wfq{X+ M)78&qol`;+0DVRs#Q*>R literal 0 HcmV?d00001 diff --git a/build/cursor.png b/build/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..ca76e84e80889ed8e2719e377c1aaeeb957afde9 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{CT0c(hPnUWHG?<-J|V6Q3=IGN|F^NRIa%%* z!N9=4SQ6wH%;50sMj8VHgQBO4V+hCfWRB8=gcGwEjs#fcaxynR@M2?Y^HC5>WME{d YE@LfiUcmX7fq{X+)78&qol`;+07d8_7XSbN literal 0 HcmV?d00001 diff --git a/build/gun.png b/build/gun.png new file mode 100644 index 0000000000000000000000000000000000000000..0f28c2665e4de59a860284bd4a7312eb7e791d67 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pU|?oqW?*1=thN0Y0|NtRfKP}k0|SGAfPjL$ z{E6VavkVLjj3q&S!3+-1Zlp0VFo<}%IEHXsPfkeSNfcq2v^tE<;Rb_96;t8M7_%4# P1_lOCS3j3^P6<r_&fpo? literal 0 HcmV?d00001 diff --git a/build/hamster.png b/build/hamster.png new file mode 100644 index 0000000000000000000000000000000000000000..1346ce776d46fed336d29c6b9af605e7030dc095 GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0y~yU~pkzU{K*;W?*1ox6HZ4z`zg~;1lA?z`(Fcz@V(G zY_C+p|Ns9(Lql&nCcb|C`u`#ZFE1~1uV4*Ro9+{z+77+?pSWq!qDB8J4LZ4$78x)w zFfjD+#3lBw`foeCu)h6qAj76jn-t{bJ(jLxWnf@nED7=pW^j0RBaMN9;gP3{V~EG` zw^wfS9a7+7OE|`G^XHSFf90=SiZw|-CcpTY&aKt4HQ7=c`+vn`t_}G<<;0?*m`L~e zb=$o~&i!1v@mko`0;!G}37fXDHqDCp6V&r~XU-=Z{v!p#Dl0nsJ?y_8w-Q)YDWo#R zP^~6=)r<mF4yDP7fg&j>5sDE48yhDmC?7AI!TEQpLPw1JgdPsD?`>D3rk{;#b5*j6 zP~0k@b1huQWt{{^+&0tBX}lfgYxj1=hkx0#pu&{PEa<+6SxsXF=Z;Rtlg}C&b{_Tp ucXHd?6z83-oBOBps?KIsDtue7bu+K_xa`%GJ8U07;o|A)=d#Wzp$PziyQ0bf literal 0 HcmV?d00001 diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..b22f25d --- /dev/null +++ b/build/index.html @@ -0,0 +1,66 @@ +<canvas id="gameCanvas" width="600" height="400">no canvas support, try a newer browser</canvas> +<style>#gameCanvas { + display: block; + margin: auto; + width: 1200px; + height: 800px; + image-rendering: -moz-crisp-edges; + image-rendering: -webkit-crisp-edges; + image-rendering: pixelated; + cursor: none; + } + /* if the canvas can't fit the screen, shrink it, maintaining the aspect ratio */ + + aside { + float:left; + }</style> + +<script>var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(a){return a.raw=a};$jscomp.createTemplateTagFirstArgWithRaw=function(a,b){a.raw=b;return a};$jscomp.arrayIteratorImpl=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.makeIterator=function(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):$jscomp.arrayIterator(a)}; + var fntA=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1]],fntB=[[,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1]],fntC=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1],[,1,1],[,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fntD=[[,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1]],fntE=[[,,1,1,1,1,1],[,1,1,1,1,1,1],[,1,1],[,1,1,1,1,1],[,1,1],[,1,1,1,1,1,1],[,,1,1,1,1,1]],fntF=[[,,1,1,1,1,1],[,1,1,1,1,1, + 1],[,1,1],[,1,1,1,1,1],[,1,1],[,1,1],[,1,1]],fntG=[[,,1,1,1,1,1],[,1,1,1,1,1,1],,[,1,1],[,1,1,,1,1,1],[,1,1,,,1,1],[,1,1,1,1,1,1],[,,1,1,1,1]],fntH=[[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1]],fntI=[[,1,1,1,1,1,1],[,,,1,1],[,,,1,1],[,,,1,1],[,,,1,1],[,,,1,1],[,1,1,1,1,1,1]],fntJ=[[,,1,1,1,1,1],[,,,,,1,1],[,,,,,1,1],[,,,,,1,1],[,,,,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fntK=[[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,1,1],[,1,1,1,1],[,1,1,,1,1],[,1,1,,,1,1],[,1,1, + ,,1,1]],fntL=[[,1,1],[,1,1],[,1,1],[,1,1],[,1,1],[,1,1,1,1,1,1],[,1,1,1,1,1,1]],fntM=[[,1,1,,,,1],[,1,1,1,,1,1],[,1,1,,1,,1],[,1,1,,,,1],[,1,1,,,,1],[,1,1,,,,1],[,1,1,,,,1]],fntN=[[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,,1,1],[,1,1,1,1,1,1],[,1,1,,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1]],fntO=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fntP=[[,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1],[,1,1],[,1,1],[,1,1]],fntQ=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1, + ,,1,1],[,1,1,,1,1,1],[,1,1,,,1,1],[,,1,1,1,1,,1]],fntR=[[,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1]],fntS=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1],[,,1,1,1,1],[,,,,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fntT=[[,1,1,1,1,1,1],[,1,1,1,1,1,1],[,,,1,1],[,,,1,1],[,,,1,1],[,,,1,1],[,,,1,1]],fntU=[[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,1,1,1,1],[,,1,1,1,1]],fntV=[[,1,1,,,,1],[,1,1,,,,1],[,1,1,,,,1],[,1,1,,,,1],[,1,1,,,,1],[,,1,1,,1],[,,,1,1]], + fntW=[[,1,1,,,,1],[,1,1,,,,1],[,1,1,,,,1],[,1,1,,1,,1],[,1,1,,1,,1],[,1,1,,1,,1],[,,,1,,1]],fntX=[[,1,,,,,1],[,1,1,,,1,1],[,,1,1,1,1],[,,,1,1],[,,1,1,1,1],[,1,1,,,1,1],[,1,,,,,1]],fntY=[[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,,1,1,1,1,1],[,,,,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fntZ=[[,1,1,1,1,1,1],[,,,,,1,1],[,,,,1,1],[,,,1,1],[,,1,1],[,1,1],[,1,1,1,1,1,1],,],fnt1=[[,,,1,1],[,,1,1,1],[,,,1,1],[,,,1,1],[,,,1,1],[,,,1,1],[,1,1,1,1,1,1]],fnt2=[[,,1,1,1,1],[,1,1,,,1,1],[,,,,,1,1],[,,,,1,1],[,,,1,1],[,, + 1,1],[,1,1,1,1,1,1]],fnt3=[[,,1,1,1,1],[,1,1,,,1,1],[,,,,,1,1],[,,,,1,1],[,,,,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fnt4=[[,,,,1,1,1],[,,,1,1,1,1],[,,1,1,,1,1],[,1,1,,,1,1],[,1,1,1,1,1,1],[,,,,,1,1],[,,,,,1,1]],fnt5=[[,1,1,1,1,1,1],[,1,1],[,1,1],[,1,1,1,1,1],[,,,,,1,1],[,,,,,1,1],[,1,1,1,1,1]],fnt6=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1],[,1,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fnt7=[[,1,1,1,1,1,1],[,1,1,1,1,1,1],[,,,,1,1],[,,,,1,1],[,,,1,1],[,,,1,1],[,,,1,1]],fnt8=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1,, + ,1,1],[,,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fnt9=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,,1,1,1,1,1],[,,,,,1,1],[,,,,,1,1],[,,,,,1,1]],fnt0=[[,,1,1,1,1],[,1,1,,,1,1],[,1,1,,,1,1],[,1,1,,1,1,1],[,1,1,1,,1,1],[,1,1,,,1,1],[,,1,1,1,1]],fntSlash=[[],[,,,,,,1],[,,,,,1],[,,,,1],[,,,1],[,,1],[,1]],fntColon=[[,1,1],[,1,1],[],[],[],[,1,1],[,1,1]],fntDot=[[],[],[],[],[],[,1,1],[,1,1]],fntNeg=[[],[],[],[,1,1,1,1,1,1],[],[],[]],fntINDEX={A:fntA,B:fntB,C:fntC,D:fntD,E:fntE,F:fntF,G:fntG,H:fntH,I:fntI, + J:fntJ,K:fntK,L:fntL,M:fntM,N:fntN,O:fntO,P:fntP,Q:fntQ,R:fntR,S:fntS,T:fntT,U:fntU,V:fntV,W:fntW,X:fntX,Y:fntY,Z:fntZ,1:fnt1,2:fnt2,3:fnt3,4:fnt4,5:fnt5,6:fnt6,7:fnt7,8:fnt8,9:fnt9,0:fnt0,"/":fntSlash,":":fntColon,".":fntDot,"-":fntNeg};var log=function(a,b){console.log("["+a+"] "+b)},fontStack='"Comic Sans MS"',id=0,pi=Math.PI;gPar=function(a){return(new URLSearchParams(window.location.search)).get(a)};var customLv=gPar("lv"),Canvas=function(a){this.c=document.getElementById(a);this.ctx=this.c.getContext("2d");this.w=this.c.width;this.h=this.c.height;this.tW=this.c.offsetWidth;this.tH=this.c.offsetHeight;this.scale=this.tW/this.w;this.camera={x:0,y:0};this.mousePos={x:0,y:0};this.realMousePos={x:0,y:0}}; + Canvas.prototype.fill=function(a){this.ctx.fillStyle=a;this.ctx.fillRect(0,0,this.w,this.h)};Canvas.prototype.getMousePos=function(a){var b=this.c.getBoundingClientRect(),e=this.c.width/b.width,d=this.c.height/b.height;this.mousePos.x=(a.clientX-b.left)*e+this.camera.x;this.mousePos.y=(a.clientY-b.top)*d+this.camera.y;return{x:(a.clientX-b.left)*e,y:(a.clientY-b.top)*d}};Canvas.prototype.translate=function(a,b){this.ctx.translate(a,b)};Canvas.prototype.rotate=function(a){this.ctx.rotate(a)}; + Canvas.prototype.drawImg=function(a,b,e,d,f,h,g,k){h=void 0===h?0:h;g=void 0===g?b+d/2:g;k=void 0===k?e+f/2:k;this.ctx.save();this.ctx.translate(g-this.camera.x,k-this.camera.y);this.ctx.rotate(h*pi/180);this.ctx.drawImage(a,-d/2,-f/2,d,f);this.ctx.restore()};Canvas.prototype.sliceImage=function(a,b,e,d,f,h,g,k,n,m){m=void 0===m?0:m;this.ctx.save();this.ctx.translate(b+d/2-this.camera.x,e+f/2-this.camera.y);this.ctx.rotate(m*pi/180);this.ctx.drawImage(a,h,g,k,n,-d/2,-f/2,d,f);this.ctx.restore()}; + Canvas.prototype.drawImage=function(a,b,e,d,f,h){this.drawImg(a,b,e,d,f,void 0===h?0:h)};Canvas.prototype.drawRect=function(a,b,e,d,f){this.ctx.fillStyle=void 0===f?"white":f;this.ctx.fillRect(a-this.camera.x,b-this.camera.y,e,d)};Canvas.prototype.strokeRect=function(a,b,e,d,f){this.ctx.strokeStyle=f;this.ctx.strokeRect(a-this.camera.x,b-this.camera.y,e,d)}; + Canvas.prototype.drawFont=function(a,b,e,d,f){this.ctx.fillStyle=d;this.ctx.textAlign=void 0===f?"start":f;this.ctx.fillText(a,b-this.camera.x,e-this.camera.y)}; + Canvas.prototype.dT=function(a,b,e,d,f,h,g,k,n){g=void 0===g?"start":g;k=void 0===k?"top":k;n=void 0===n?{}:n;a=a.toUpperCase();var m=a.split("");a=(7*m.length-1)*f;var l=7*d;switch(g){case "center":case "middle":b-=a/2;break;case "end":case "right":b-=a}switch(k){case "middle":case "center":e-=l/2;break;case "bottom":e-=l}g=0;var p=7*f;k=!1;m=$jscomp.makeIterator(m);for(l=m.next();!l.done;l=m.next()){l=l.value;this.ctx.fillStyle=h;var r=0,t=p;k&&(t-=.5*f,k=!1);n.shortFullStop&&"."==l&&(k=!0);l=fI[l]; + if(void 0!=l)for(var v in l){p=0;for(var u=$jscomp.makeIterator(l[v]),q=u.next();!q.done;q=u.next())1==q.value&&this.ctx.fillRect(b+p*f+g*t-this.camera.x,e+r*d-this.camera.y,f,d),p++;r++}g++;p=7*f}return{w:a}};Canvas.prototype.setFont=function(a,b){this.ctx.font=(void 0===b?"10":b)+"px "+a};Canvas.prototype.drawLine=function(a,b,e,d,f){this.ctx.strokeStyle=f;this.ctx.beginPath();this.ctx.moveTo(a-this.camera.x,b-this.camera.y);this.ctx.lineTo(e,d);this.ctx.stroke()}; + Canvas.prototype.mvCamera=function(a,b){this.camera.x+=a;this.camera.y+=b};Canvas.prototype.setCamera=function(a,b,e){this.camera.x=a;this.camera.y=b};var Entity=function(a,b,e,d){this.name=a;this.x=b;this.y=e;this.sprite=d};Entity.prototype.step=function(){console.log(this.name+" is stepping");console.log(this.name+" is at "+this.x+", "+this.y)};Entity.prototype.draw=function(){};Entity.prototype.intersects=function(a){return this.x<a.x+a.w&&this.x+this.w>a.x&&this.y<a.y+a.h&&this.y+this.h>a.y}; + var Room=function(a){this.id=id;id+=1;this.name=a;this.objects=[];this.hitboxes=[];this.background=[];this.w=c.w;this.h=c.h};Room.prototype.spawn=function(a){this.objects.push(a)};Room.prototype.step=function(){for(var a=$jscomp.makeIterator(this.objects),b=a.next();!b.done;b=a.next())b.value.step()};Room.prototype.draw=function(){for(var a=$jscomp.makeIterator(this.objects),b=a.next();!b.done;b=a.next())b.value.draw()};Room.prototype.drawGUI=function(){};Room.prototype.keyDown=function(a){}; + Room.prototype.keyHeld=function(a){};Room.prototype.click=function(a,b){};Room.prototype.mHeld=function(a,b){};Room.prototype.start=function(){};var fI=fntINDEX,c=new Canvas("gameCanvas");c.ctx||alert("Your browser does not support the canvas element");gameCtx=c.ctx;c.fill("#1c1c1c");c.setFont(fontStack);var gameStart=gameCtx.imageSmoothingEnabled=!1;c.dT("Death By Hamster",c.w/2,c.h/2-40,2,2,"white","middle"); + var images={mouse:{ingame:"./aimerthing.png",cursor:"./cursor.png"},level:{tileset:"./t.png"},player:{car:"./hamster.png",gun:"./gun.png"},ui:{a:"./arw.png"}},loader=new Room("loader"),loadingText="Loading...",loadingError=0;loader.drawGUI=function(){c.dT(loadingText,c.w/2,c.h/2,2,2,"white","middle");loadingError&&c.dT(loadingErrorText,c.w/2,c.h/2+20,1,1,"red","middle")};var rooms=[],loadedImages=0,totalImages=0,key$11;for(key$11 in images)for(var subkey$12 in images[key$11])totalImages++; + loadingText="Loading...";loadingText="Loading images ("+loadedImages+" / "+totalImages+")"; + for(var key in images)for(var subkey in images[key]){var IMG=new Image;IMG.addEventListener("load",function(){loadedImages++;loadingText="Loading images ("+loadedImages+" / "+totalImages+")";loadedImages==totalImages&&(loader.step=function(){cRoom=rooms[1]},loadingText="Loaded! Please wait...")});IMG.addEventListener("error",function(a){loadingError=1;loadingErrorText="Error loading image "+a.target.src});IMG.src=images[key][subkey];images[key][subkey]=IMG;loadingText="Loading images ("+loadedImages+ + " / "+totalImages+")"}var levels=[{data:"[[1,1,2],[1,1,3],[5,1,4],[1,1,1],[2,0,3],[2,0,2],[2,0,1],[4,0,0],[5,1,0],[5,2,0],[5,3,0],[5,4,0],[5,6,0],[5,5,0],[5,7,0],[6,8,0],[0,9,0],[0,10,0],[2,8,1],[2,8,2],[2,8,3],[8,8,4],[5,7,4],[5,5,4],[5,6,4],[5,4,4],[5,2,4],[5,3,4],[7,0,4],[1,2,3],[9,2,2],[1,2,1],[1,3,1],[1,3,2],[1,3,3],[1,4,3],[1,4,2],[1,4,1],[1,5,1],[1,5,2],[1,5,3],[1,6,3],[10,6,2],[1,6,1],[1,7,1],[1,7,2],[1,7,3]]"},{name:"First Floor"}]; + hamsterRef={file:images.player.car,nl:{x:1,y:1,w:32,h:16},b:{x:35,y:1,w:32,h:16},br:{x:1,y:20,w:32,h:16},r:{x:35,y:20,w:32,h:16}}; + for(var levelRef={file:images.level.tileset,"default":{x:0,y:0,w:32,h:32,type:"blank"},tiles:[{},{x:32,type:"floor"},{x:64,type:"wall"},{x:96,type:"wall"},{x:128,type:"wall"},{x:160,type:"wall"},{x:192,type:"wall"},{x:224,type:"wall"},{x:256,type:"wall"},{x:32,type:"floor"},{x:32,type:"floor"}]},$jscomp$iter$4=$jscomp.makeIterator(levelRef.tiles),$jscomp$key$tile=$jscomp$iter$4.next();!$jscomp$key$tile.done;$jscomp$key$tile=$jscomp$iter$4.next()){var tile=$jscomp$key$tile.value,key$13;for(key$13 in levelRef["default"])tile[key$13]|| + (tile[key$13]=levelRef["default"][key$13])}console.debug(images);var targFPS=60,frame=0,menu=new Room("menu");menu.s=0;menu.o=[{t:"Play",a:function(a){setRoom(4)}},{t:"Editor",a:function(a){setRoom(3)}}]; + menu.drawGUI=function(){c.dT("Death by Hamster",c.w/2,c.h/2-25,4,4,"white","middle","middle");c.dT("W/Up or S/Down to select",c.w/2,c.h/2,1,1,"gray","middle","middle");c.dT("Space or ENTER to activate",c.w/2,c.h/2+8,1,1,"gray","middle","middle");for(var a in menu.o){var b=c.dT(""+menu.o[a].t,c.w/2,c.h/2+50+20*a,2,2,"#fff","middle","top");if(menu.s==a){var e=images.ui.a,d=c.w/2+b.w/2+e.width-4;c.drawImg(e,c.w/2-b.w/2-e.width-4,c.h/2+50+20*a,2*e.width,2*e.height);c.drawImg(e,d,c.h/2+50+20*a,2*e.width, + 2*e.height,180)}}};var nextRoom=function(){roomI++;roomI>=rooms.length&&(roomI=0);cRoom=rooms[roomI];cRoom.start()},prevRoom=function(){roomI--;0>roomI&&(roomI=rooms.length-1);cRoom=rooms[roomI];cRoom.start()},setRoom=function(a){cRoom=rooms[a];cRoom.start()};menu.keyDown=function(a){if("ArrowUp"==a||"KeyW"==a)--menu.s,0>menu.s&&(menu.s=menu.o.length-1);if("ArrowDown"==a||"KeyS"==a)menu.s+=1,menu.s>menu.o.length-1&&(menu.s=0);"Space"!=a&&"Enter"!=a||menu.o[menu.s].a()};var gameRoom=new Room("Game"); + gameRoom.level=levels[0];var player=new Entity("Player",0,0);player.speed=0;player.maxSpeed=5;player.direction=0;player.accel=1;player.sprite=images.player.car;console.debug(player.sprite);player.crop=hamsterRef.nl;player.x=0;player.y=0;player.w=2*player.crop.w;player.h=2*player.crop.h; + player.step=function(){player.x+=player.speed*Math.cos(player.direction*pi/180);player.y+=player.speed*Math.sin(player.direction*pi/180);player.speed*=.009;for(var a=$jscomp.makeIterator(gameRoom.level),b=a.next();!b.done;b=a.next())b=b.value,player.x/64>b.x&&player.x/64<b.x+b.w&&player.y/64>b.y&&player.y/64<b.y+b.h&&(player.speed=0);c.setCamera(player.x-c.w/2,player.y-c.h/2)};console.log(player); + player.draw=function(){c.sliceImage(player.sprite,player.x,player.y,player.w,player.h,player.crop.x,player.crop.y,player.crop.w,player.crop.h,player.direction);var a=images.player.gun,b=player.x+player.w/2-13*Math.cos(player.direction*pi/180)-0*Math.sin(player.direction*pi/180),e=player.y+player.h/2-13*Math.sin(player.direction*pi/180)+0*Math.cos(player.direction*pi/180);player.gx=b;player.gy=e;player.aim=180*Math.atan2(c.mousePos.y-e,c.mousePos.x-b)/pi;c.drawImg(a,b,e,2*a.width,2*a.height,player.aim, + b,e)};player.shoot=function(){var a=new Entity("Bullet",player.gx,player.gy);a.speed=20;a.direction=player.aim;a.step=function(){for(var b=0;b<cRoom.objects.length;b++){var e=cRoom.objects[b];if(e!=a&&e.intersects(a)){e!=player&&(cRoom.objects.splice(b,1),cRoom.objects.splice(cRoom.objects.indexOf(a),1));return}}a.x+=a.speed*Math.cos(a.direction*pi/180);a.y+=a.speed*Math.sin(a.direction*pi/180)};a.draw=function(){c.drawRect(a.x,a.y,2,2,"white")};cRoom.spawn(a)};gameRoom.spawn(player); + gameRoom.keyDown=function(a){console.log(a);if("ArrowUp"==a||"KeyW"==a)player.speed+=2*player.accel,player.speed>player.maxSpeed&&(player.speed=player.maxSpeed);if("ArrowDown"==a||"KeyS"==a)player.speed-=1.5*player.accel,player.speed<-player.maxSpeed&&(player.speed=-player.maxSpeed);if("ArrowLeft"==a||"KeyA"==a)player.direction-=2.5,0>player.direction&&(player.direction=360);if("ArrowRight"==a||"KeyD"==a)player.direction+=2.5,360<player.direction&&(player.direction=0);"Space"==a&&player.shoot()}; + gameRoom.keyHeld=function(a){if("ArrowUp"==a||"KeyW"==a)player.speed+=1.9*player.accel,player.speed>player.maxSpeed&&(player.speed=player.maxSpeed);if("ArrowDown"==a||"KeyS"==a)player.speed-=1.53*player.accel,player.speed<-player.maxSpeed&&(player.speed=-player.maxSpeed);if("ArrowLeft"==a||"KeyA"==a)player.direction-=2.5,0>player.direction&&(player.direction=360);if("ArrowRight"==a||"KeyD"==a)player.direction+=2.5,360<player.direction&&(player.direction=0)};gameRoom.click=function(a){player.shoot()}; + gameRoom.start=function(){customLv&&(gameRoom.level=customLv);gameRoom.level=JSON.parse(gameRoom.level);for(var a={},b=$jscomp.makeIterator(gameRoom.level),e=b.next();!e.done;a={$jscomp$loop$prop$pooman$23:a.$jscomp$loop$prop$pooman$23,$jscomp$loop$prop$checkwall$22:a.$jscomp$loop$prop$checkwall$22},e=b.next())e=e.value,9===e[0]&&(player.x=64*e[1]+32,player.y=64*e[2]+32),10===e[0]&&(a.$jscomp$loop$prop$checkwall$22=function(d,f){for(var h=$jscomp.makeIterator(gameRoom.level),g=h.next();!g.done;g= + h.next())if(g=g.value,"wall"==levelRef.tiles[g[0]].type&&g[1]==d&&g[2]==f)return!0;return!1},a.$jscomp$loop$prop$pooman$23=new Entity("Human",64*e[1],64*e[2],images.mouse.cursor),a.$jscomp$loop$prop$pooman$23.step=function(d){return function(f){if(0>=d.$jscomp$loop$prop$pooman$23.timer){f=Math.floor(4*Math.random());d.$jscomp$loop$prop$pooman$23.direction=90*f;var h=Math.floor(d.$jscomp$loop$prop$pooman$23.x/64),g=Math.floor(d.$jscomp$loop$prop$pooman$23.y/64);0!==f||d.$jscomp$loop$prop$checkwall$22(h, + g-1)||(d.$jscomp$loop$prop$pooman$23.y-=64);1!==f||d.$jscomp$loop$prop$checkwall$22(h+1,g)||(d.$jscomp$loop$prop$pooman$23.x+=64);2!==f||d.$jscomp$loop$prop$checkwall$22(h,g+1)||(d.$jscomp$loop$prop$pooman$23.y+=64);3!==f||d.$jscomp$loop$prop$checkwall$22(h-1,g)||(d.$jscomp$loop$prop$pooman$23.x-=64);d.$jscomp$loop$prop$pooman$23.timer=90}d.$jscomp$loop$prop$pooman$23.timer--}}(a),a.$jscomp$loop$prop$pooman$23.draw=function(d){return function(f){c.drawImage(images.mouse.cursor,d.$jscomp$loop$prop$pooman$23.x, + d.$jscomp$loop$prop$pooman$23.y,64,64,d.$jscomp$loop$prop$pooman$23.direction);c.dT(d.$jscomp$loop$prop$pooman$23.timer+" :: "+d.$jscomp$loop$prop$pooman$23.direction,d.$jscomp$loop$prop$pooman$23.x,d.$jscomp$loop$prop$pooman$23.y,1,1,"white","middle","middle")}}(a),a.$jscomp$loop$prop$pooman$23.timer=90,gameRoom.spawn(a.$jscomp$loop$prop$pooman$23))}; + gameRoom.draw=function(){for(var a=$jscomp.makeIterator(gameRoom.level),b=a.next();!b.done;b=a.next())b=b.value,c.sliceImage(levelRef.file,64*b[1],64*b[2],64,64,levelRef.tiles[b[0]].x,0,32,32);for(a=0;a<cRoom.objects.length;a++)cRoom.objects[a].draw()};var editor=new Room("Editor");editor.i=0;editor.t=levelRef;editor.l=[];editor.n="LV1";editor.saving=!1;editor.sa=0;editor.start=function(a){editor.dPos=[15,65]}; + editor.draw=function(a){a=$jscomp.makeIterator(editor.l);for(var b=a.next();!b.done;b=a.next())b=b.value,c.sliceImage(levelRef.file,32*b[1]+editor.dPos[0],32*b[2]+editor.dPos[1],32,32,32*b[0],0,32,32),c.drawRect(editor.dPos[0],editor.dPos[1],1,1,"red")};editor.step=function(a){0>editor.i&&(editor.i=levelRef.tiles.length-1);editor.i>levelRef.tiles.length-1&&(editor.i=0)}; + editor.generate=function(a){editor.saving=1;a=encodeURIComponent(JSON.stringify(editor.l));a!=editor.data&&(a="?lvl="+a,document.getElementById("leveltext").innerText=a);editor.data=a;editor.saving=0;editor.sa=1}; + editor.click=function(a,b){if(50>b)516<a&&50>b&&(editor.saving||editor.generate(),editor.saveclick=!0);else{a=Math.floor((a-editor.dPos[0])/32);b=Math.floor((b-editor.dPos[1])/32);for(var e in editor.l)if(editor.l[e][1]==a&&editor.l[e][2]==b){editor.l[e]=[editor.i,a,b];return}editor.l.push([editor.i,a,b]);editor.sa=0}}; + editor.keyHeld=function(a){switch(a){case "KeyW":case "ArrowUp":editor.dPos[1]+=4;break;case "KeyS":case "ArrowDown":editor.dPos[1]-=4;break;case "KeyA":case "ArrowLeft":editor.dPos[0]+=4;break;case "KeyD":case "ArrowRight":editor.dPos[0]-=4}}; + editor.drawGUI=function(a){c.drawRect(0,0,c.w,50,"gray");c.dT("DBH Editor::"+editor.n,15,25,2,2,"#fff","start","middle");a=c.dT("Save",c.w-15,25,2,2,"#fff","end","middle");c.mousePos.x>c.w-30-a.w&&50>c.mousePos.y&&c.dT("Save",c.w-15,25,2,2,"#e5e5e5","end","middle");editor.sa&&c.dT("Save",c.w-15,25,2,2,"#1fdc2f","end","middle");editor.saving&&c.dT("Save",c.w-15,25,2,2,"#1fccdc","end","middle");c.sliceImage(editor.t.file,c.mousePos.x+16,c.mousePos.y+16,32,32,32*editor.i,0,32,32)};var lvlS=new Room("Level Select"); + lvlS.s=0;lvlS.o=levels;lvlS.drawGUI=function(){c.dT("Death by Hamster",c.w/2,25,2,2,"white","middle","top");c.dT("Level Select",c.w/2,44,1,1,"gray","middle","middle");for(var a in lvlS.o){var b=parseInt(a)+1;c.dT(""+b,20+32*b,70,2,2,"#fff","middle","middle");a==lvlS.s&&c.strokeRect(6+32*b,54,32,32,"#fff")}}; + lvlS.keyDown=function(a){if("ArrowUp"==a||"ArrowRight"==a||"KeyW"==a||"KeyD"==a)--lvlS.s,0>lvlS.s&&(lvlS.s=lvlS.o.length-1);if("ArrowDown"==a||"ArrowLeft"==a||"KeyW"==a||"KeyA"==a)lvlS.s+=1,lvlS.s>lvlS.o.length-1&&(lvlS.s=0);if("Space"==a||"Enter"==a)gameRoom.level=lvlS.o[lvlS.s].data,setRoom(2)};rooms.push(loader);rooms.push(menu);rooms.push(gameRoom);rooms.push(editor);rooms.push(lvlS);var roomI=gPar("goto")?gPar("goto"):0,cRoom=rooms[roomI],keysPressed={},keysLastPressed={}; + document.addEventListener("keydown",function(a){keysPressed[a.code]=!0});document.addEventListener("keyup",function(a){keysPressed[a.code]=!1;keysLastPressed[a.code]=!1});var lastTime=0,mse={x:0,y:0},lastClick={x:0,y:0},startclicked=!1,endclicked=!1;c.c.addEventListener("mousemove",function(a){mse=c.getMousePos(a)});c.c.addEventListener("mousedown",function(a){lastClick=c.getMousePos(a);mse=c.getMousePos(a);startclicked=!0}); + c.c.addEventListener("mouseup",function(a){lastClick=c.getMousePos(a);mse=c.getMousePos(a);endclicked=!0});window.onwheel=function(a){0<a.deltaY&&(editor.i+=1);0>a.deltaY&&--editor.i};cRoom.start(); + var gameLoop=setInterval(function(){c.tW=c.c.offsetWidth;c.tH=c.c.offsetHeight;c.scale=c.tW/c.w;frame++;c.fill("#151f1f");for(var a in keysPressed)keysPressed[a]&&(keysLastPressed[a]?keysLastPressed[a]&&cRoom.keyHeld(a):(cRoom.keyDown(a),keysLastPressed[a]=!0));startclicked&&(cRoom.click(lastClick.x,lastClick.y),startclicked=!1);cRoom.step();cRoom.draw();cRoom.drawGUI();c.dT("FPS:"+Math.round(1E3/(Date.now()-lastTime)),0+c.camera.x,0+c.camera.y,1,1,"#fafafa","left","top");switch(cRoom.name){case "menu":case "Editor":c.ctx.drawImage(images.mouse.cursor, + Math.round(mse.x),Math.round(mse.y),2*images.mouse.cursor.width,2*images.mouse.cursor.height);break;case "Game":c.ctx.drawImage(images.mouse.ingame,Math.round(mse.x)-16,Math.round(mse.y)-16,32,32)}lastTime=Date.now()},1E3/targFPS);</script> \ No newline at end of file diff --git a/build/t.png b/build/t.png new file mode 100644 index 0000000000000000000000000000000000000000..0407f3076ee71a85e6fbb154bb333a3b4c19aa58 GIT binary patch literal 789 zcmeAS@N?(olHy`uVBq!ia0y~yU`$|OU{GLTW?*2rm#}|10|SF-fKP}k0|UdNMT;01 z82;a0v}x0(#6|x%2^gp+2fblnU|=i>@(X5gcy=R=fq`kAr;B4q#NoX&67wD_2(*6Z z@|cqlP{k1NTV7NB#wziQCHMYwSTo-^KhJae%A@Zl3s>|p%~wxu`!PK%P>IX;W8MCC z2ktHW#~+vK|CNe(bK1o&!DoZR?*az7BaiOylbbQ;?Cay!Hq!b9(nY)m73>Bb*BOuJ z9$;m9&%m~kq5jiKpAe&|lj7yp@9+QjjHR!NNpMg65vKP79n%@Nb6#U&U&^~<0>id& zL65hx2a-2zJz%PFRMvtsg3VwLzl7ky7H3hpThG=@vxm$T^b@+sxN?uQ#g4|;X8$vE z3x4ReH#0ov>sWE<Kg*7FEPQtzsxMd@XeRt<)nrsuj?Qj$TvOq`^tMAZ_j|Tu{wusz zepG6>_UxR;iW2vv9rF%Xr`*hXA9Ky%!Mo;93~pX-bKFvyAOCD)F36hrcFrwpZCS77 zx+)(QF=|O2tBYUKcsT08j_H2Us~)<q=X<b=@o_T4apMBs|9RWnCPd~p^2dK$>auK# zm*37MbCzTjoc^maE!w;w;K0SI1Fip7F|BVn!}^L_t9hNdwZYRPxx4se7JZDUlzy@B z9pkxW0S&G#)+u%jn|GY8d$60$?B9&_9^IGIzo}jIR6NiVu|qWP6^reyOS>AaTa;A` zawB4Ly=?T)GE93hFWBkVO-`P;y&t6e^&|?s#HFHVvm0>Ae80r-%;P_Y#GX}KqV$6f z90*)`ca>h$wMUodZ;9gHb?sH@ga3@o?z#L^>-l<)lraiFRf#<4{;d4z`h5M~_JZ{< zOAqkQ>HHNqW&fVNYmWJgF#ZweED${4@>k>5@BCenE$X{=H*z*i>G~ADZMp{MDgTPv z1Nrma9e&QP|FZqN_HA#0sQe{d=Ute3TF!bl^xtF6;b!GnyPau0_m9^HGm=9qGW%CO z$d`{x_$~h2I-m8P<%d5vZ*6+}lxGK<e8J2Y{H6{Pi5_#jbr~2K7(8A5T-G@yGywpM CtY2pU literal 0 HcmV?d00001 diff --git a/assets/byemclogo.png b/byemclogo.png similarity index 100% rename from assets/byemclogo.png rename to byemclogo.png diff --git a/assets/crazyabackground_a.png b/crazyabackground_a.png similarity index 100% rename from assets/crazyabackground_a.png rename to crazyabackground_a.png diff --git a/assets/crazyabackground_a_big.png b/crazyabackground_a_big.png similarity index 100% rename from assets/crazyabackground_a_big.png rename to crazyabackground_a_big.png diff --git a/editor.html b/editor.html deleted file mode 100644 index e69de29..0000000 diff --git a/assets/flor.png b/flor.png similarity index 100% rename from assets/flor.png rename to flor.png diff --git a/game.js b/game.js index b8de109..beee64c 100644 --- a/game.js +++ b/game.js @@ -53,17 +53,17 @@ class Canvas { // Mouse position crap getMousePos(evt) { var rect = this.c.getBoundingClientRect(), // abs. size of element - scaleX = this.c.width / rect.width, // relationship bitmap vs. element for x - scaleY = this.c.height / rect.height; // relationship bitmap vs. element for y + scaleX = this.c.width / rect.width, // relationship bitmap vs. element for x + scaleY = this.c.height / rect.height; // relationship bitmap vs. element for y this.mousePos.x = ((evt.clientX - rect.left) * scaleX) + this.camera.x; this.mousePos.y = ((evt.clientY - rect.top) * scaleY) + this.camera.y; - + return { - x: (evt.clientX - rect.left) * scaleX, // scale mouse coordinates after they have - y: (evt.clientY - rect.top) * scaleY // been adjusted to be relative to element + x: (evt.clientX - rect.left) * scaleX, // scale mouse coordinates after they have + y: (evt.clientY - rect.top) * scaleY // been adjusted to be relative to element } - } + } translate(x, y) { this.ctx.translate(x, y); @@ -122,10 +122,18 @@ class Canvas { // console.log(chars); let charWidth = 7 - let strLength = (chars.length * charWidth - 1) * scalex; + let charOff = 0; + // check if there's an odd number of chars + if (chars.length % 2 == 1) { + charOff = 1 + } + let strLength = (chars.length * charWidth - charOff) * scalex; let charHeight = 7 let strHeight = (charHeight * scaley); + if (strHeight % 2 == 1) { + strHeight += 1; + } switch(align) { case "start": @@ -326,14 +334,14 @@ c.dT("Death By Hamster", c.w / 2, c.h / 2 - 40, 2, 2, "white", "middle"); // Load images var images = { "mouse": { - "ingame": "./assets/aimerthing.png", + "ingame": "./aimerthing.png", "cursor": "./cursor.png" }, "level": { - "tileset": "./t.png" + "tileset": "./t.png", + "human": "./human.png" }, "player": { - "debugarrow": "./assets/arrow.png", "car": "./hamster.png", "gun": "./gun.png", }, @@ -493,6 +501,13 @@ var levelRef = { ] } +var humanRef = { + "file": images.level.human, + "bladie": { + + } + + for (let tile of levelRef.tiles) { // if the tile is missing properties from the default, add them for (let key in levelRef.default) { @@ -594,31 +609,66 @@ player.x = 0; player.y = 0; player.w = player.crop.w*2; player.h = player.crop.h*2; +player.oldDir = 0; + +player.step = _=> { + // check that the player won't go into a wall on the next step, and if so, stop. + player.checkpoints = []; + for (let i = 0; i < 2; i++) { + + let carCx = player.x + player.w/2; + let carCy = player.y + player.h/2; + + let pointOx = 0; + let pointOy = 0; + if (i==0) { + pointOx = -32; + } else if (i==1) { + pointOx = 32; + } + + // get gunx and guny by moving backwards (gunOx and gunOy) from the center of the car in this.direction + let pointX = carCx - pointOx * Math.cos(player.direction * pi / 180) - pointOy * Math.sin(player.direction * pi / 180); + let pointY = carCy - pointOx * Math.sin(player.direction * pi / 180) + pointOy * Math.cos(player.direction * pi / 180); + + player.checkpoints.push({x: pointX, y: pointY}); + } + for (let checkpoint of player.checkpoints) { + let x = checkpoint.x / 64; + let y = checkpoint.y / 64; + if (gameRoom.checkwall(x, y)) { + checkpoint.stuck = true; + } + } + if (player.checkpoints[0].stuck || player.checkpoints[1].stuck) { + // move down sideways if stuck + let change = player.direction - player.oldDir; + player.direction -= change; + + let sChange = player.speed - player.oldSpeed; + player.speed -= sChange+0.01; + } -player.step = () => { // move in this.direction, which is an angle in degrees player.x += player.speed * Math.cos(player.direction * pi / 180); player.y += player.speed * Math.sin(player.direction * pi / 180); player.speed *= 0.009; - // check that the player won't go into a wall on the next step, and if so, stop. - for (let tile of gameRoom.level) { - if (player.x/64 > tile.x && player.x/64 < tile.x + tile.w && player.y/64 > tile.y && player.y/64 < tile.y + tile.h) { - player.speed = 0; - } - } - // keep the camera centered on the player c.setCamera(player.x - c.w/2, player.y - c.h/2); + player.oldDir = player.direction; + player.oldSpeed = player.speed; + } console.log(player); -player.draw = () => { +player.draw = _=> { // draw this.sprite at this.x, this.y c.sliceImage(player.sprite, player.x, player.y, player.w, player.h, player.crop.x, player.crop.y, player.crop.w, player.crop.h, player.direction); + // c.dT(`${player.x/64} ${player.y/64}`, player.x, player.y, 1,1,"white","middle","middle"); // canvas.strokeRect(player.x, player.y, player.w, player.h, "white"); let gun = images.player.gun; @@ -641,6 +691,11 @@ player.draw = () => { c.drawImg(gun, gunx, guny, gun.width*2, gun.height*2, player.aim, gunx, guny); // these two vars at the end are where the gun's center is placed // canvas.drawRect(gunx, guny, 1,1, "red"); + for (let checkpoint of player.checkpoints) { + c.drawRect(checkpoint.x, checkpoint.y, 1,1, "black"); + + } + } player.shoot = () => { @@ -648,6 +703,8 @@ player.shoot = () => { let bullet = new Entity("Bullet", player.gx, player.gy); bullet.speed = 20; bullet.direction = player.aim; + bullet.w = 2; + bullet.h = 2; bullet.step = () => { // for each step, check if it's path intersects with any other entity @@ -655,11 +712,12 @@ player.shoot = () => { let ent = cRoom.objects[i]; if (ent != bullet && ent.intersects(bullet)) { // if it does, remove the bullet and the entity unless it's the player + console.log(ent); if (ent != player) { cRoom.objects.splice(i, 1); cRoom.objects.splice(cRoom.objects.indexOf(bullet), 1); + return; } - return; } } // if it doesn't, move the bullet @@ -667,7 +725,7 @@ player.shoot = () => { bullet.y += bullet.speed * Math.sin(bullet.direction * pi / 180); } bullet.draw = () => { - c.drawRect(bullet.x, bullet.y, 2,2, "white"); + c.drawRect(bullet.x, bullet.y, bullet.w,bullet.h, "#2f2f2f"); } cRoom.spawn(bullet); } @@ -735,6 +793,16 @@ gameRoom.keyHeld = (key) => { gameRoom.click = (e) => { player.shoot(); } +gameRoom.checkwall = (tx,ty) => { + tx = Math.floor(tx); + ty = Math.floor(ty); + for (let tile of gameRoom.level) { + if (levelRef.tiles[tile[0]].type == "wall" && tile[1] == tx && tile[2] == ty) { + return true; + } + } + return false; +} gameRoom.start = () =>{ if (customLv) { @@ -748,16 +816,10 @@ gameRoom.start = () =>{ player.y = (tile[2]*64)+32 } if(tile[0]===10){ - let checkwall = (tx,ty) => { - for (let tile of gameRoom.level) { - if (levelRef.tiles[tile[0]].type == "wall" && tile[1] == tx && tile[2] == ty) { - return true; - } - } - return false; - } let pooman = new Entity("Human", (tile[1]*64),(tile[2]*64), images.mouse.cursor) + pooman.w = 64 + pooman.h = 64 pooman.step = _=>{ if (pooman.timer<=0){ let director = Math.floor(Math.random()*4) @@ -765,22 +827,22 @@ gameRoom.start = () =>{ let tX = Math.floor(pooman.x / 64) let tY = Math.floor(pooman.y / 64) if (director === 0){ - if (!checkwall(tX,tY-1)){ + if (!gameRoom.checkwall(tX,tY-1)){ pooman.y -= 64; } } if (director === 1){ - if (!checkwall(tX+1,tY)){ + if (!gameRoom.checkwall(tX+1,tY)){ pooman.x += 64; } } if (director === 2){ - if (!checkwall(tX,tY+1)){ + if (!gameRoom.checkwall(tX,tY+1)){ pooman.y += 64; } } if (director === 3){ - if (!checkwall(tX-1,tY)){ + if (!gameRoom.checkwall(tX-1,tY)){ pooman.x -= 64; } } @@ -790,7 +852,7 @@ gameRoom.start = () =>{ } pooman.draw = _=>{ c.drawImage(images.mouse.cursor, pooman.x, pooman.y, 64, 64, pooman.direction); - c.dT(`${pooman.timer} :: ${pooman.direction}`, pooman.x, pooman.y, 1, 1, "white", "middle", "middle"); + // c.dT(`${pooman.timer} :: ${pooman.direction}`, pooman.x, pooman.y, 1, 1, "white", "middle", "middle"); } pooman.timer = 90; gameRoom.spawn(pooman); @@ -855,7 +917,7 @@ editor.click = (x,y)=>{ editor.saveclick = true } } - else { + else { x = Math.floor((x-editor.dPos[0])/32) y = Math.floor((y-editor.dPos[1])/32) // console.debug(x,y) @@ -996,46 +1058,55 @@ window.onwheel = (e)=>{ } } +try { cRoom.start(); -var gameLoop = setInterval(() => { - c.tW = c.c.offsetWidth; - c.tH = c.c.offsetHeight; - c.scale = c.tW / c.w; - frame++; - c.fill("#151f1f"); - - for (let key in keysPressed) { - if (keysPressed[key]) { - if (!keysLastPressed[key]) { - cRoom.keyDown(key); - keysLastPressed[key] = true; - } else if (keysLastPressed[key]) { - cRoom.keyHeld(key); + var gameLoop = setInterval(() => { + c.tW = c.c.offsetWidth; + c.tH = c.c.offsetHeight; + c.scale = c.tW / c.w; + frame++; + c.fill("#151f1f"); + + for (let key in keysPressed) { + if (keysPressed[key]) { + if (!keysLastPressed[key]) { + cRoom.keyDown(key); + keysLastPressed[key] = true; + } else if (keysLastPressed[key]) { + cRoom.keyHeld(key); + } } } - } - if (startclicked) { - cRoom.click(lastClick.x, lastClick.y); - startclicked = false; - } - - cRoom.step(); - cRoom.draw(); - cRoom.drawGUI(); - - /* BEDUG INFO */ - c.dT(`FPS:${Math.round(1000 / (Date.now() - lastTime))}`, 0+c.camera.x, 0+c.camera.y, 1, 1, "#fafafa", "left", "top"); - - switch (cRoom.name) { - case "menu": - case "Editor": - c.ctx.drawImage(images.mouse.cursor, Math.round(mse.x), Math.round(mse.y), images.mouse.cursor.width*2, images.mouse.cursor.height*2); - break; - case "Game": - c.ctx.drawImage(images.mouse.ingame, Math.round(mse.x)-16, Math.round(mse.y)-16, 32, 32); - break; - } - lastTime = Date.now(); - -} , 1000/targFPS); // 60 fps + if (startclicked) { + cRoom.click(lastClick.x, lastClick.y); + startclicked = false; + } + + cRoom.step(); + cRoom.draw(); + cRoom.drawGUI(); + + /* BEDUG INFO */ + c.dT(`FPS:${Math.round(1000 / (Date.now() - lastTime))}`, 0+c.camera.x, 0+c.camera.y, 1, 1, "#fafafa", "left", "top"); + + switch (cRoom.name) { + case "menu": + case "Editor": + c.ctx.drawImage(images.mouse.cursor, Math.round(mse.x), Math.round(mse.y), images.mouse.cursor.width*2, images.mouse.cursor.height*2); + break; + case "Game": + c.ctx.drawImage(images.mouse.ingame, Math.round(mse.x)-16, Math.round(mse.y)-16, 32, 32); + break; + } + lastTime = Date.now(); + + } , 1000/targFPS); // 60 fps + +} catch (error) { + c.fill("#1c1c1c"); + c.dT("Death By Hamster", c.w / 2, c.h / 2 - 40, 2, 2, "white", "middle"); + c.dT(`${error}`, c.w/2, c.h / 2, 1, 1, "red", "middle"); + c.dT(`pls let Bye know by emailing him via`, c.w /2, c.h / 2 + 40, 1, 1, "white", "middle"); + c.dT('bye[at]byecorps.com', c.w / 2, c.h / 2 + 60, 2, 2, "white", "middle"); +} diff --git a/human.aseprite b/human.aseprite index 977d23f02f8006c4001bae5c8558a35737815ac1..bbf2d18c519bd69806ac0458053acf1603e986b1 100644 GIT binary patch delta 203 zcmcb>)x^cfG?B5Mw~2*;;nznlh7<+{2Cj|0Kbh)-7#J8>6&M(J8JHRVGciB`8-o-> z#hm1XganS5BOl}?jUA4r?R7h9P?^=${HE!m!R|x`H9Ia2<}U_reA!h;ly_O2@V#+K zl%eSG^0g6Q6B!ve7&wqj6kreln|OdPPN(Q!e@~%?@``?uVr`C>N7LChR&AW=xGJv1 oSmUDqx_b|s*scDooLIMFV%^G#^&e(7d&@F>lHh$mxsK%$031g{XaE2J delta 287 zcmZqTy1>O4Fp;sI_W}z8!>^Cr3@Ho@4BQ)ge=^mZGB7Z(Dljl`GcYjxXJUW?P6h>r ziaE2t&U*NNjbN9g+d+*5h7vDK>~0t`Tx$<rQwP?>$iT$FgrrG^L587X&fBXSc^MQq zSRBfWgO?X`zvT_AU=(h7a(h3QMyvhatB$S#jM8G;t~mK#ag5RJu20U2R=<3C^CpeU zx1!FTm^XduNrldR_4+pNtN$MUzuBmK+P0G$O=4CSC*O;RiN0jW7!cD}?FzP@i9w2i z2g!O?1`dXbIluq^|Nr0hzy1Go2PTJw|2wD4FYZ{_EZ#lG@QJ73;k4uRI(du?f`>JV MFM$o2Y{qg10P`VZ6aWAK diff --git a/human.png b/human.png index 6dc00291784b44a78d4b1c0bd5217f9b5e3124c0..10ef95d45000bfd431d73903090245bd39b61fcf 100644 GIT binary patch delta 207 zcmdna^n-DNVf`jg7srr@*0<9Q`5F{>T=ySyu8>z36V`w5uJg{$hE8tb?;pi1X0B+y zAn%)eX+PuAS^+Oc1I^V*>U?r9@5H&C3qQ<O{_fh#i4q;N7%PI=9Og1Iyl^hhWOq5$ z|Kmc=K5zfWZzWvqT#xO1z~izpF|$C^W#UAW9V||^+?!h7yyEwGTIN{G&U0YX19|a@ zB9A7o-XZena#Bgg2M^<QPb-|3+-v<(olv^{m%N4jtH=a~SMtJ>ca>$fTJ}y|a%K_( P0|SGntDnm{r-UW|;AdOX delta 271 zcmeytxSeT&Vf{x>7srr@*5nig#xqrCKg^#n%OsG^E$B>&lB=OE1GnX@KijO6Meje^ zIXz`_2j4pJ?m3)n_C^yrZhKF;>7uE0wJ1oYF`RLy*yKk7bA+yJnlnLp16R=PqMAO5 z4>=tVm7;#iv0ZRxY<12)z0or1z~Y8HK7szbhc{@KG3T*gQ2tT>J^p7yqPUIT3(@~4 z9F+3(AD{4KUJO<fkhz25T>Dg3pBGG9So*A(B+4dURZ?Q#6Z7WKgErTi1D6jxSk;s9 zwqxN%xrRo@+)07A1yfADRz4Kyn*DT&Mbj!-VTp!PzmKJ7J>Jfl6e=|7GW!u$HXCUs bh8ww&s}zr(R%2jbVBqj{^>bP0l+XkKY9Dqi diff --git a/index.html b/index.html index 30b0ff2..15b0ec2 100644 --- a/index.html +++ b/index.html @@ -32,10 +32,9 @@ cursor: none; </style> <aside > - <pre id="leveltext"> </pre> +<pre id="leveltext"></pre> </aside> <canvas width="600" height="400" id="gameCanvas"> </canvas> <script id="fontScript" src="./letters.js"></script> -<script src="./l.js"></script> <script src="./game.js"></script> \ No newline at end of file diff --git a/l.js b/l.js deleted file mode 100644 index 8325473..0000000 --- a/l.js +++ /dev/null @@ -1 +0,0 @@ -load_level=b=>{d={};d.t=b.codePointAt(0)-32;d.w=b.codePointAt(1)-32;d.h=b.codePointAt(2)-32;d.z=+b[3];d.m=[];d.M=[];for(i=4;i<b.length;i+=3)d.m.push([b.codePointAt(i)-32,b.codePointAt(i+1)-32,b.codePointAt(i+2)-32]);return d} \ No newline at end of file -- GitLab