From 282d51d7a4a557201a9d33c2e69cc14f207d4a8c Mon Sep 17 00:00:00 2001 From: bye <bye@byecorps.com> Date: Wed, 11 Sep 2024 19:50:03 +0100 Subject: [PATCH] final --- .fleet/settings.json | 8 ++++ assets/large.png | Bin 0 -> 3608 bytes assets/large.xcf | Bin 0 -> 35934 bytes assets/small.png | Bin 0 -> 2142 bytes assets/small.xcf | Bin 0 -> 8727 bytes hampsterengine | 2 +- src/js/objects/player.js | 17 ++++----- src/js/sb-player-small.js | 75 +++++++++++++++++++------------------- utils/size.js | 17 ++++----- 9 files changed, 63 insertions(+), 56 deletions(-) create mode 100644 .fleet/settings.json create mode 100644 assets/large.png create mode 100644 assets/large.xcf create mode 100644 assets/small.png create mode 100644 assets/small.xcf diff --git a/.fleet/settings.json b/.fleet/settings.json new file mode 100644 index 0000000..355411e --- /dev/null +++ b/.fleet/settings.json @@ -0,0 +1,8 @@ +{ + "plugins": [ + { + "type": "add", + "pluginName": "fleet.javascript" + } + ] +} \ No newline at end of file diff --git a/assets/large.png b/assets/large.png new file mode 100644 index 0000000000000000000000000000000000000000..108f0a9e15decabedfdd544be6db62fe37e549f8 GIT binary patch literal 3608 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 NgQu&X%Q~loCIF&aV9)>n literal 0 HcmV?d00001 diff --git a/assets/large.xcf b/assets/large.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c184785b1c2ad7c8df25a8e18d997fd0a3889e3c GIT binary patch literal 35934 zcmYe#%q>u;NKR8IGcYt{U|?W$U|?W4!2ki%7#J7?L4u473=F~y3=AC3(-;^)n1O*o zgn@y9g@J*Aoq>Tt49W(n6J=mv_{_k-zzZ^3H#t8yH#M&WWFAOT$hjyru_QG`p**uB zL&4qCHvl9f09Klro0y)en_iTe0ulqMUZYW5Qkj#gP@JEWnWD+1k(QpEpOastpaG_I zi_()46%4@8P*amjBMFPNp#m6!q$`RG5|cCY(iIF1G`Tb?QFu^}ZfRa-i9%*xaz<*g zCYMG<ep*^_YKa0^JrWzjL{$uOGZJQ;1mOsoLTDvz2(7*yLK}5M=xitr;X%ne3=9kk zpl}BTV?bgtD8PIYD^rU=@=PFtfq{Vy8s`5Q7#I{mZ2JbV3<rn})yxTHgCvxY*fL0L zE+jU{Qc#?N)N><=^B}Q#k=Xp8GyzQup!5Jr3n2X<^Hq`5sesu3|NjTMRT+s5(gRWt z^ApHk1_lPE`A`Okf&~Uh9Z2ppNRWX+NES+KLTE4vQwvh}8!W=W-U^|)*F$K&oe-LV zLHr;yEBirqR`!F;tnx&#A!@mydW2co4-O8t_(6zUaM2KVL)6fY4GT+Hm=MDkKgG<+ zeu|xw{S-5&JP~Y&T5hNwVNUi_gM%%83gQ-AG{oHyHMC>H!V(rH#PG#;G7GZrWEW)L z$t);O1RJ838>&ZGkbURiV2kgBxCIvtaW_N_?bxuegoOz){CW<C|NIA;S%nX>gG(W7 zv^cz^;b!F@By8b>{9w1>q9G*>ZQP3}xw%=1VY46PKgG-`e2N`h%3!0#;Ux(-C;uQ} z3!mZ#y9E~wDM@JKUPQ^v%}ETK{S^OBW<lYd?BG%a8!ZkmDYyms2MJqvCqLLNxM)a8 zK^ylXN?vY3V%Y3EK_vyKtpZB%p!Nzj8d6e#>UwEbc5u6Z`ZTD70_A#KG^O@}`~~s{ zb{f=H0HsJ!djT5_$;qI)R+^I?TrX3f29+S7T#1XO)LxLkK>ol^gX(HfiUHNv*l0*j z1J!lXg6!aWk@_?!hl6qrE}Bw%LH+{y13L}M383~RH!Cx^-Hx5+KFAK1Czl50HIVrr zOdB?&?*XYPLH;3?kKNy(ehKqIQ0tGIlNsEq#!hpeVh78UOM`ME$b1l{4I9!kfYfs! z|B%YZ?r%`9f%z1uZN@Fg3~uvcr@42sgXPJkLHQJ9J_yr>4QaPSYAKL^NabVqH>gd| zytAIU0n}U1V_;wqfcBWpp}l<&_W;rmg#hvpg@Q6@7-`UrPFO%ksz9R%q>fH7gFKAD z!nO!D11uas=7I*vG9hwGpwTi01_mX02p>$s)PmGa1dA|8ctdEpdI-(H0L{JNb}gu_ z4=Q~?H6bpxFth{&=_7^>>T7_^WCr&mK<#s8a4AVVA5`jqdifx|LzT@;bojC#gq9cJ zb}*=K04nc5H8U=@Ftp4C=_7^>>YISfWCr&;K<#;EaJfu8A5_kPdi@~1LzT@;bojEL zf|O9q;C3^pF99lHK`jMbY+-0A57I{r8`PHpnaK?9r-0i3%;1`Ucs{6P1&soL^bS=v z@!<>Un}Es!L@NeXUcp*7g!rJ|1gKnssOM&dwc6;#M{VJOT4JCw4puh8{56nbAU7eq zgWh~l{Iaw1ALIv*d@~;;$Oe~Uu+|%_v?P`f>RW+IMTmNCPFO3IUVPLREvV%QDq&$I zGpsc_kYXS=A-jX#d{9lp&dGm@A3P4ve2O3&T!zA0tFW?~SU#wy2`ZBz>bV7Bt#W$t zQCsk!mNuw-ht&(P*7rb)f!u`b4tn!J^&Gn(|4x4JtN`;)LTpek9#razgG&-n$p&hb zfl3uzY*5Jq8ruSue4vt;ST?>fFmY&!hMg8ZC=M>|aMA1smBI43X=2?7@e?F0_*t>j z%&eeNNgSNhKsg`OW&-6pTx?Lz1dW7&N(N9#MJyZNh?zJv$7833Pl<y|16(xwDP^!c zZkkv(Li_{?3w}=QG&3hC*NTHvA}D8oS~Q?kiHi+Nxu9_~P|gA6WMbL)#@EE5IRZN^ zyi**UTX50rJC(umxM^bD2=NmnEcgYn)69aPJjuYokbu<dH$dw3hv4q@8-Y5ogKbSh z3<bS@XpbJ`Ef7{V29Zz<3kRqg<#33&`f3ObCShtA7#Nhx!6FRmvmrES?E$Eq!<Ek= zWe%j}3o1WAWgVz|7-b{E1T^~y3MXtdKP&d~09H;w$|y)n5>(!R%0^ImGRj7T325#S z6i(P^eopM=2drFylxdKb8K`^$m8GEaXOxWy6VS{fD4ej-{NQr9o~ePgo~ePeo~c2w zo(Vh}tA$i9ci=9I!9~?zD~my^)5u*P#tJJpA+*MR2n{A-;Q%d*HC}^78H|ddG<;;0 zfq?<0mVtpm6FNexdl{-u7eX^IFthR>WM>sVD2#&!wL(FqF{qUaqS?V?6`+<Zq;w*N z4=Tw)dO>y(W`oQIxd~!E$X<{>kbV#*h7WQxWQ_?sxc^QZ8#0p%(Tk4_aT~}TkT3(e z7o;ASI7l8M2l6}2FL>FU{HNGCg-;3Npg}ENPzerd34>^M@OS~JwG1iIh~a}ue~?~g zPJZybF@844Y>=BE=7a17=>zEjVPg0oH$zsXu!H;1#IYfB%MiWz*bujY+yMzQkb6Pu zafyTEA#$K_fcXV4TabSzyP)t+VH`B5H4Q5DL9J~N%?|FfgIeT}Qji!vsKx;4WftTI z&t&6ggUklG31U9TUXVVJ9uOvm4{|eP9Sb|SA4?n?GTRN&i;oR)8^|4yFax<4q#l<z zNFE{w3I~{9@UcPdcTf%o%>;=b<Y&c3gTz3icc2^!Dp5eAuEg_&!LvmWy|iG1+QpEP z1hmElWDh!x7)b_|7_@K$$V^ZT04kXvqn@BJgV>8r9F%`SGd<#`_&KrBATiMR7%2aN z$_voACh>e>=r}4UFVcby8$l2TuZ{z`5wx}jnMRD=(#j1We}T$(P`LvcR|JI_#9nOT zpxg<X$r0blFNlo>iGfC-K)DN48h}O)iRTMLM=C)%jTUU!7=$o*wH(NeptU^6G-7m= zR&D_K3sic8N)^b+9VpBo_F@wUl`QfH<H5NfQeuGSMx0sY56Yj42d7X-ss@daJ9EmP zlHVB*4n;`FgT_gn1?6|vGctfy6}TX^V?p~8KzkNIYxX%97#Lqb_b#BVDlh>x&jwAK z_W%F?HUIzre?Y<b0?02QKS8naWGDkU9H4Dl<MR-?>}V*R4yB=O+-#&aE)y&a85kJM zpsNqepyLka;t+in$04*OXfFl>1A`@0zZG;Zh1F(=y!CwuZ3Asn+a^NzcA%9Y3=9nR z&JeysGL(kyxp0K~#R=*@XQ(-@pnWO~3=D3deJKnK4DO)4LJSNH9#C=5K!`bBmQWhH zO2Qkwq=bRN2fFgY*ApV|`yN93=|gD$<q$f+9zq8~{U78H;RiwGL!kUnXn2M$gvf_M z_mqS~!yy7{e<alYs7Q#q=tc+~a~ML$LgOb6>Yq5!-WLW2hIpvH_-cr{_<kr24bKE9 zKXD~QJZUS0PKL%$3N(CEq2g(CA@XUDA#{2?gw6o%)nQ;@$bg1lW-LTJGZ#uj)n|hC zWic=?WI<Q7WI_8tSx|pvLHFHcLHEiqFw`?EFfjXCBjI{R7bG4?rk+cL`sxH2{?{|< zpxeYKgD%2tz(93%AiJ44&~0LjKo?<`U|{w&W?=SZ#zEIJTA=A+XQ&^FCUda-w`O3b zDmG?d{?E+7{2v#MZl68_^M7^*=Kt8~dM@;ku4iRoAW4)1l;SMVd<iiH6wjcP4#V}V zDh%~pB#45|mcTGu1xvnBW?=ROVPPC}JvR@1b%ET@!N5?@YJ--R>p9WGoSC|+KsK|Z z#|Se+JsS_YOV~gzk!E1_#f9scMCh-NgW*3jgY|&odL{-27>49GP@Wr^xSkWEOvgym z#tc+d1*%C{S<q7}M+gJ6uQ&s<uRIPKR?fg^P`(;Orht4Uz`#%s#ni1A(98Y7&#!03 zC>dEqaFpJ#QXN!I!D1Ig*Rv@w3`%oQ>il|;zy2#TF#i{3V8%*Iqt|gDe_`eTPEZa2 z`5T7i89+5HT1%5MRj4ipnS~-E&rr{Vk*9dj+j!E{SB2t=dXSAMBGL@?tf1Nq7BV2Z zo(ZGmVsk(%Rg4ElABx+-?nD&<xf4ain4z8zy%i5??|}RX!{$^|Gtl+#K-*u>m;mjc zfchvPT+h(LK#J&yZ#A%D^g@{g(DGhA6DX8nsTV}oGiji!Vbo!$AFO79YIJT;X^5{k zi=IpC89^ZftI@F0^^5`x^+U~EP*^})HlP;Hh;Q9sjA7I>VvGqfqt~1DYz7$VUw{E~ zJY*1=g;Gm_-GwRw@*}DU$d9NZp!Cj;Q959bm@#664vPUp{XpqN^Mea|8xG`JR5c*i za$%$bRvCtRQbkeC1(|>`s!-2@(Y|J6VZa=Hpn^J7*MRIr6#?0cTs91F?|#5r7o(#K z&{0fghI&p=Z3wFSVOSrn1cZsh=z10z`sxy3_|K2#rh0xI24cnPK{X=_1G)(;=sl5o zHVcM&Dyti8wJ`gCa|UEgYxmW2fWjTre#g~9t7kW1pt>r&BlKV!xlGW~11xpJ=z2zU z74=L44D|z{52Y+eA6Ejq6Ga8soh<0N8YGG~P628epv{qCw1=2j80rVJSr|S?P0{rr zKccDu&4;0ifc=Qxx3A|`U;veLXkmt56xCdiT4wZA1j+}nGzOxvv<DbL^OE${H_$cm zK-&+SYXH$Be&m1+W7Lk*grS}kQBaM`h+zs(0RwZhH4?68WMHVLwmOjA$ZcJeJc(X< z4u5_<3r3%f6{82lgx*sDwE?*qm{({sF#BSo>lsxThOEgbDWV<}8mJ<m&_EFZ&E0b| zF#p$PVE&Jd28Rabs62BHS{nm2M~7wfo^o|4uB``|hbqF!!2q5EL9OjsQ_$UqG5Y6> zu7Z(g@S23`XOQnuML@no5pl*CG2mgSXTq4pU`MZu)zL$RNd;Ym(PHqLgc1gz)-Y<D zNgX{@K)yrO1M(dg#&{8{4nsW&q61y$548QDwgwE3_%;VKMlHnyS}#O`C|bP_?)77? zS>r^n>FSwGu&r&QNF8c^BBqT2TG@hYMHxt(7&CCI0j+_q=LF4@fO;G-3?A<wMHIA} z3beKfsdWYFxr0q-!dTnH3tHhwq9|%9!)gE;8Tb!sC8G7h7&FkzTOQCTJ!q@}<~tBw zPq{i&7lF(}6=4y8x)Htq2x>ur+yKK^deIy<4D}c*LuspzzGYrLr_Fy@2?wG_d?^QN zfuOX(+|ko93#iuwYF~gxH?h(6EEx4JlMMsryzLM$8B}6p&K<F$udxBIfuy!NY-7rp z<6MjwEo6+|6liuCG`<O<xuI(o@UcN_O+axAD;GdCma<{k*$k?WLFpOfUl^`uMX%q3 zvE~PJ26kTrX7;UTW?&esW`X=!&xFy#=9OU}NfeYf!0QxXVFjY=S<rhT^_&t6ko628 zc^IZp9msAb44c3$dv*q9Ur-H&jRuuLpw<*xT}@kkAh%+!PT>;3wq^ylD9Du2IYGpn zAQuBeJpzOFI-t~A^%$et^{fI67$e&hsH*2;_>bfQkZTC@nK9Nbv4KX?Ne~6u%8b!w zWiw!?Cq)!w3L^9%ZfA60sE6Xg-U?!1U<B>o`vTd6#n8mSz)%HcJ2EgZK=-nNFM5)L zh=Y!~0AVnX+bJ<QJH05sG!J|q7HGR5$T-mUNzisVmI1u(3G6-!wmyQ60fCvpz`&5x zhv0y`55f%4EowQJAaXsRZK4be3_W^Kz7>>qgVI3|8bpHhgD{9)nFJyk7%D*rSu-#& zR6?VmvJEN@y{D^k9+bZdN^gVGhoJO1D18e`KZDYrp!7coT?M*M3l!6!E73qS)ZJB3 zcUM8(T?KV_71Z5TaZvqPP`V6CgOUx%9B3F-&4P+AgVLLz^gbwk3QAvt(vP6@J1G4N zLRW**69WT7wGfmKO@h^+BW6J2W>9e_DD4NOqo8yelm_2P#=uZr2jzD`Y0%wqAafQ$ z`RkzcE+~BrN<-tf`W}@33QB*2&^6Gj!D{%Rd?_fc2BpF0jxjLQ*g^STP&y1sL*u^& z8vixW_^*M+e+@MLYoPI81C9S0X#Cee<G%(P|25F~uYtyY4K)61pz&V|jsIF`{MSO` zzZM$*wb1ylg~op^H2!O$@m~v#|5|AL*FxjJ78?Jx(D<)~#(ym|{%fJ}Uki=@T4?;& zLgT*{8vnJ>_^*S;e;qXb>!9&p2aW$aX#Cef<G&6X|8>y#uY<;a9W?&ypz&V^jsH4m z{MSL_zYZGzb<p^)gT{XyH2&+L@m~jx|2k;=gSxw*n5>7!e?2t*>!I;q4~_qNX#Ceh z<G&sn|Mk%LuZPBeJv9F7q48f2jsJRR{MSR{zaAR@_0agQhsJ+BH2&+M@m~*(|9WWr zH$daR0UG}e(D-kF#(x7e{u`k2-vEvO259^@K;ypw8vhN@_-}y5e*-lB8=&#u0FD0! zX#6)o<G%qK{|(UiZ-B;s12p~{q4D1cjsHey{5L}5zY!Y$jnMdSgvNg(H2xc*@!trI z|3+y1H$vmT5gPxE(D-kJ#(yI;{u`n3-w2KWMriyuLgT*?8vjku{NDtP|0ZbsH$mgS z2^#-R(D-kH#(xtu{+poj-vo{SCTRROLF2y(8vjku_-}&7e-kwRo1pRE1dabDX#6)p z<G%?S|4q>NZ-&NyGc^92q4D1gjsIq7{5M16zZn|;&CvL7hQ@z0H2#~R@!t%M|7K|X zH$&sU85;l1(D-kL#(y(3{+prk-wciaW@!AkK;yp!8viZO_-}#6e+xAJTcGjZ0*(I` zX#BT8<G%$O|1Hq?Z-K^t3pD;)pz+@VjsF&C{I@{kzXclqEztOHfyRFeH2zzm@!txK z|5j-Hw?gB;6&nAo(D-kK#(yg`{#&8(-wKWYR%raULgT*`8vm`(_-}>Ae=9WpTcPpa z3XT6(X#BTA<G&Re|E<vYZ-d5v8#Mmgpz+@ZjsG@i{I@~lzYQAyZP55{gT{XwH2&M5 z@!tlG|2Am+w?X5-4I2M#(D-kI#(x_${@bAO-v*8UHfa2}L*u_48vpIk_-}{Ce>*h( z+oAE_4vqhIX#BTB<G&pm|LxHDZ->TzJ2d{=q4D1ijsJFN{I^5nza1L??a=sdhsJ+9 zH2yoF@!tWB{|;#UcR=I60~-Gw(D?6w#(xJi{yU)Y-vN#P4ru&$K;ypy8vh;8`0s$m ze+M-FJD~C30ge9-X#96T<G%wM{~gfy?}WyGCp7*$q4D1djsH$){C7g*zY`k&ozVF2 zgvNg-H2yoG@!tuJ|4wN9cS7U86B_@W(D?6!#(yU?{yU-Z-wBQXPH6mhLF2y*8vk9; z`0s+oe-||VyP)yk1&#kMX#96U<G%|U|6S1d?}EmE7c~C6pz+@YjsGra{C7d)zY7}w zUC{XNg2sOrH2%Ax@!t)N|88jfcSGa98yf%J(D?6$#(y_7{=1>^-wlobZfN{>L*u_2 z8votU`0s|se>XJ#yP@&l4UPY9X#96W<G&jk|J~5|?}5gD4>bP4+hkem1sFK%1sDYD z1sF!zqv0@`21e7sXc`zz1EXnRG!2ZVfzdQDng&MGz-Ss6O#`E8U^ESkrh(BkFsRZ1 p0|Qe71cT<`7#$cGKp4bkSiryl#vo1r0|NsHgV-7j3=AO5001TO!gT-u literal 0 HcmV?d00001 diff --git a/assets/small.png b/assets/small.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb828d4f16258b0c068da0fc02f5f9ec6086c94 GIT binary patch literal 2142 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mJh`hO-lvu3}(dY|V6b4)An#RwyXSPs_|n zWnj>lSUb_$<8XjT+y8A|wIMEV6dp}j_$o<Uv~W$RhEr>R_Lf%(MVG}*GChJ~WLU2^ zHTNG~)!e;#9pAbpg&z!sWd%Vc6NS$Ea_J`76zr7$Z~OoJ-sepJs%EZCbLR;#J?)|T z$VqLt7EAoa-Z-8E?S-8)f6dWQdl(u2{fc|3_|wRHwe?~1CmBmV5bj9!G1qy-`)H=G z_wzmeGHI@!igxPr3|=%H>5rKnTlYAo;Kq65!){il{xWJ}T)8^i4Yj4TKAIG|1e%`u zo*olskzW{gI`rBe_4-7O<!g0{=U(FwiZ~+V!Z9Jxl`}P><I=i`NlLEI3;F+Vcr1QW zb@FN!w?5X81x`hO9@KxR-j-IEb;+0OXyZBY+y5k3n|3=aPP={o__n(ij7;YbOuhCg z{MCUs>MyrW6SHLcwY{<X^)$8jjMJ?TT$rpUIZ2r{<LBqf2Y-9^X>#-2W3tVDcW2gf zi&}<DCaa(D78G#wh-y^deSA0eZSn8z%PsfI$B7ipv$vYX&%nUImgMd3!tfsi7wla= znSp_Uv%n*=n1Ml08H5=tmfDvwFfg!}c>21szu@E+<TBr!67-jWfkCpwHKN2hKQ}iu zuY|$5C^fMpHASI3vm`^o-P1Q9ypd0wfq~7`)5S5Q;?~={d-FsLMc4wwQoD7(*D76H z;xTz%Thk=<MN1Yu6x6t+@G;JN?_`0~8*QuKR{M!_rWwt9ae1!xf0@4JpPw>2ILY%e zDljmzC^Rsz2sAJ-2{<q?oq2ywV9nEy5C6S-e*b)Z@Ll;3sKlOv4Pp`jj7%I342&E| zx-P%kC-&p#`SlC;e>lASeCYSv|9;=Pzx`WXwSD~SuZ#EZzxqDBN`C40;NSlPL7E*H zn3i1G%YI|`b1~m7&sYDg^|D=Zb6)=Y@3&{qo5uxm0f$3_tc5U3gxlMhCRz>$)D0RK zSUjBg1@cyGDZ8=ffYsLL0jn7p=O18T5>V)TTHUbtd;RRUKhs`ozWrOXx?f!j<US6E zhAGqDGv52f)01)D{I<>JtKXS*?$&>m+Xl4)$qyN6_6NMye%_R3FJ8Ir<2u>%d*6pw z+kR#Wg?aq&!wRc-9_P5N&sQAssy`2R)1qqr4c~3HU;0<N__^!Vd-?C5XWxBq@T=n6 zzWBF4w#3PcLc^8u%|5Xm<^Jo-`E$N}b`{UHao<1x+VlB;Yga?V-Xrn5T*Aud>Hm$D zqSqduUaPx<OW*@1j{*bZq#ZwJDy;q*l2twDNR|EG=L_AY*Zy}GRRD*-gU~rvwJjHI zcV7D|{j~z-TptJi0)y<?zx(7@K#gCqjNL=4dVXdT)b9-p%ic3?JGXlGSIg~Nzn|Y$ zAN%_EUAy&v8DJ5lQerXhocLh|m;n)C-zysyf8VWrcK0jW{2sG@{_o-T>GthrzbaCy z<Kf|v^u4lS@AZ4z;?DmoSil5HQ3-|TSR#8W%i(-y{sP0QIvCf1fr-NbOdv%FEGcq0 zG-&$lmw)i>&b_ym`<E8idtYaUrAD831vYc_+Y)6LpJy$5X8?|L1qQ}t#(UT!toid- zo9M6q`fKa=?Am)5ujkj^yLbKl-#;)*7esyEdSI>XhD%ZRZpmGG@%yUX`xmeKm$kd6 zZ2cS(+R)&iz`)2c!DYu^hQ;4!L{%59wRL=!ru#Kw>*JM7EHzBb91aaCyS_8by~y}~ z`Sayak3L{)JI}o4?ZdBe+<VH;7k;U$+P<v48y4a(@2vgTaPj-;*=y5REN_R4wpa_Z zJlH#jlj(u5gaZT9o>O%V2fxalzxMI&@4A4)GZi3Na?dNUUm3AvK5&*r&yl-#8M6q4 zzqQ<6R}V{q>kHI4VBSXx?q{jG1}o3(+a?B6_kKd2Zox|SCGIS+5EUz~sH)oait$w? zBTQ)8BOiffY4_A%{H{0b9Lz5RS3#2-#{nA$2UbWCap2Y&W)+jqFM6iK{G9fTkqM>| zrQkvL1(QHR{W%uTbCN<S|Ej|nnd}-FSri<E&ap7U(!iRtHV015*#5j0=CcKpDjOPL z7Hyr$e&WiR!_H8bI7~#yVNYu_-mu>|QCITg_nhyQA+S`?@|U48anW}Lc(Q1bQ-E2Q zkb8~Ee3O_&y+6!DO~(8Mi?_0W{(SuV>iPR?{-y<Re*SLxs|qIXbcvY-=6ZyG5A1ov z&e3@zKLG4hMve)SwjTJvW@`+K6z+<P%vU}$ERvY(4$o_c5Mhi|cq7bo@HxlIcIn1D g{T1*e`;Req>Dy;wE9P%vU|?YIboFyt=akR{09bS;lK=n! literal 0 HcmV?d00001 diff --git a/assets/small.xcf b/assets/small.xcf new file mode 100644 index 0000000000000000000000000000000000000000..0c60c27631a89f79c86820c0ec6d92689580d05e GIT binary patch literal 8727 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 literal 0 HcmV?d00001 diff --git a/hampsterengine b/hampsterengine index 3224534..568efde 160000 --- a/hampsterengine +++ b/hampsterengine @@ -1 +1 @@ -Subproject commit 32245348ac2e1223b8742bfb60d68391e29ffe7e +Subproject commit 568efde05f8520563f979227fb37362cce842d31 diff --git a/src/js/objects/player.js b/src/js/objects/player.js index df4db12..6779560 100644 --- a/src/js/objects/player.js +++ b/src/js/objects/player.js @@ -1,6 +1,5 @@ import {Entity} from "../../../hampsterengine/src/things"; -import {abs, easeOutSine, GRAVITY_X, GRAVITY_Y, round, roundToRatio} from "../extras"; -import {rm_game} from "../rooms/game"; +import {abs, easeOutSine, GRAVITY_X, GRAVITY_Y, roundToRatio} from "../extras"; export default class Player extends Entity { constructor(props) { @@ -20,7 +19,7 @@ export default class Player extends Entity { this.headTarget = {x:this.x, y:this.y}; this.headPos = {x:this.x, y: this.y}; this.headPosStart = {x:this.x, y: this.y}; - this.headTrans = 25; + this.headTrans = 1000; this.headStartTime = performance.now(); this.collideRects = [ @@ -58,7 +57,7 @@ export default class Player extends Entity { } } - if ((!(engine.physicsFrames % 15) && this.vx == 0) || this.vy) this.stepUp = 0; + if ((!(engine.physicsFrames % 15) && this.vx === 0) || this.vy) this.stepUp = 0; const entities = engine.room.entities; @@ -95,7 +94,7 @@ export default class Player extends Entity { if (abs(this.vy) < 1) this.vy = 0; if (abs(this.vx) < 1) this.vx = 0; - if (player.x !== player.lastFramePos.x || player.y !== player.lastFramePos.y || !this.stepUp ) { + if (player.x !== player.lastFramePos.x || player.y !== player.lastFramePos.y || !this.stepUp) { this.headTarget = {x: this.x, y: this.y - (this.stepUp ? 1 : 0)} this.headPosStart = structuredClone(this.headPos); this.headStartTime = performance.now(); @@ -128,9 +127,9 @@ export default class Player extends Entity { let distX = this.headTarget.x - this.headPosStart.x; let distY = this.headTarget.y - this.headPosStart.y; - const elapsed = Math.min(performance.now() - this.headStartTime, this.headTrans); const end = this.headTrans; - const pos = easeOutSine(elapsed / end || 1); + const elapsed = Math.min(performance.now() - this.headStartTime, end); + const pos = elapsed / end || 1; this.headPos.x = Math.min( this.headTarget.x, @@ -144,8 +143,8 @@ export default class Player extends Entity { // Draw the head canvas.drawImage( engine.assetStore.get`player_head`.sprite, - roundToRatio(this.headPos.x - 1), - roundToRatio(this.headPos.y - 7), + this.headPos.x - 1, + this.headPos.y - 7, engine.assetStore.get`player_head`.size, engine.assetStore.get`player_head`.size ) diff --git a/src/js/sb-player-small.js b/src/js/sb-player-small.js index a03cff8..b0ca2a8 100644 --- a/src/js/sb-player-small.js +++ b/src/js/sb-player-small.js @@ -45,31 +45,31 @@ const SoundBox = function () { //-------------------------------------------------------------------------- // Oscillators - var osc_sin = function (value) { + const osc_sin = function (value) { return Math.sin(value * 6.283184); }; - var osc_saw = function (value) { + const osc_saw = function (value) { return 2 * (value % 1) - 1; }; - var osc_square = function (value) { + const osc_square = function (value) { return (value % 1) < 0.5 ? 1 : -1; }; - var osc_tri = function (value) { - var v2 = (value % 1) * 4; + const osc_tri = function (value) { + const v2 = (value % 1) * 4; if (v2 < 2) return v2 - 1; return 3 - v2; }; - var getnotefreq = function (n) { + const getnotefreq = function (n) { // 174.61.. / 44100 = 0.003959503758 (F3) return 0.003959503758 * (2 ** ((n - 128) / 12)); }; - var createNote = function (instr, n, rowLen) { - var osc1 = mOscillators[instr.i[0]], + const createNote = function (instr, n, rowLen) { + const osc1 = mOscillators[instr.i[0]], o1vol = instr.i[1], o1xenv = instr.i[3] / 32, osc2 = mOscillators[instr.i[4]], @@ -80,17 +80,17 @@ const SoundBox = function () { sustain = instr.i[11] * instr.i[11] * 4, release = instr.i[12] * instr.i[12] * 4, releaseInv = 1 / release, - expDecay = -instr.i[13] / 16, - arp = instr.i[14], - arpInterval = rowLen * (2 ** (2 - instr.i[15])); + expDecay = -instr.i[13] / 16; + let arp = instr.i[14]; + const arpInterval = rowLen * (2 ** (2 - instr.i[15])); - var noteBuf = new Int32Array(attack + sustain + release); + const noteBuf = new Int32Array(attack + sustain + release); // Re-trig oscillators - var c1 = 0, c2 = 0; + let c1 = 0, c2 = 0; // Local variables. - var j, j2, e, t, rsample, o1t, o2t; + let j, j2, e, t, rsample, o1t, o2t; // Generate one note (attack + sustain + release) for (j = 0, j2 = 0; j < attack + sustain + release; j++, j2++) { @@ -147,7 +147,7 @@ const SoundBox = function () { ]; // Private variables set up by init() - var mSong, mLastRow, mCurrentCol, mNumWords, mMixBuf; + let mSong, mLastRow, mCurrentCol, mNumWords, mMixBuf; //-------------------------------------------------------------------------- @@ -177,21 +177,21 @@ const SoundBox = function () { // Generate audio data for a single track this.generate = function () { // Local variables - var i, j, b, p, row, col, n, cp, + let i, j, b, p, row, col, n, cp, k, t, lfor, e, x, rsample, rowStartSample, f, da; // Put performance critical items in local variables - var chnBuf = new Int32Array(mNumWords), + const chnBuf = new Int32Array(mNumWords), instr = mSong.songData[mCurrentCol], rowLen = mSong.rowLen, patternLen = mSong.patternLen; // Clear effect state - var low = 0, band = 0, high; - var lsample, filterActive = false; + let low = 0, band = 0, high; + let lsample, filterActive = false; // Clear note cache. - var noteCache = []; + let noteCache = []; // Patterns for (p = 0; p <= mLastRow; ++p) { @@ -200,7 +200,7 @@ const SoundBox = function () { // Pattern rows for (row = 0; row < patternLen; ++row) { // Execute effect command. - var cmdNo = cp ? instr.c[cp - 1].f[row] : 0; + const cmdNo = cp ? instr.c[cp - 1].f[row] : 0; if (cmdNo) { instr.i[cmdNo - 1] = instr.c[cp - 1].f[row + patternLen] || 0; @@ -211,7 +211,7 @@ const SoundBox = function () { } // Put performance critical instrument properties in local variables - var oscLFO = mOscillators[instr.i[16]], + const oscLFO = mOscillators[instr.i[16]], lfoAmt = instr.i[17] / 512, lfoFreq = (2 ** (instr.i[18] - 9)) / rowLen, fxLFO = instr.i[19], @@ -237,7 +237,7 @@ const SoundBox = function () { } // Copy note from the note cache - var noteBuf = noteCache[n]; + const noteBuf = noteCache[n]; for (j = 0, i = rowStartSample * 2; j < noteBuf.length; j++, i += 2) { chnBuf[i] += noteBuf[j]; } @@ -311,10 +311,10 @@ const SoundBox = function () { // Create a AudioBuffer from the generated audio data this.createAudioBuffer = function (context) { - var buffer = context.createBuffer(2, mNumWords / 2, 44100); - for (var i = 0; i < 2; i++) { - var data = buffer.getChannelData(i); - for (var j = i; j < mNumWords; j += 2) { + const buffer = context.createBuffer(2, mNumWords / 2, 44100); + for (let i = 0; i < 2; i++) { + const data = buffer.getChannelData(i); + for (let j = i; j < mNumWords; j += 2) { data[j >> 1] = mMixBuf[j] / 65536; } } @@ -324,10 +324,10 @@ const SoundBox = function () { // Create a WAVE formatted Uint8Array from the generated audio data this.createWave = function () { // Create WAVE header - var headerLen = 44; - var l1 = headerLen + mNumWords * 2 - 8; - var l2 = l1 - 36; - var wave = new Uint8Array(headerLen + mNumWords * 2); + const headerLen = 44; + const l1 = headerLen + mNumWords * 2 - 8; + const l2 = l1 - 36; + const wave = new Uint8Array(headerLen + mNumWords * 2); wave.set( [82, 73, 70, 70, l1 & 255, (l1 >> 8) & 255, (l1 >> 16) & 255, (l1 >> 24) & 255, @@ -337,9 +337,10 @@ const SoundBox = function () { ); // Append actual wave data - for (var i = 0, idx = headerLen; i < mNumWords; ++i) { + let i = 0, idx = headerLen; + for (; i < mNumWords; ++i) { // Note: We clamp here - var y = mMixBuf[i]; + let y = mMixBuf[i]; y = y < -32767 ? -32767 : (y > 32767 ? 32767 : y); wave[idx++] = y & 255; wave[idx++] = (y >> 8) & 255; @@ -351,10 +352,10 @@ const SoundBox = function () { // Get n samples of wave data at time t [s]. Wave data in range [-2,2]. this.getData = function (t, n) { - var i = 2 * Math.floor(t * 44100); - var d = new Array(n); - for (var j = 0; j < 2 * n; j += 1) { - var k = i + j; + const i = 2 * Math.floor(t * 44100); + const d = new Array(n); + for (let j = 0; j < 2 * n; j += 1) { + const k = i + j; d[j] = t > 0 && k < mMixBuf.length ? mMixBuf[k] / 32768 : 0; } return d; diff --git a/utils/size.js b/utils/size.js index b7fe8a6..9c40b37 100644 --- a/utils/size.js +++ b/utils/size.js @@ -1,14 +1,13 @@ +const fs = require("fs"); +const stats = fs.statSync("build/game.zip"); +const fileSizeInBytes = stats.size; +const fileSizeInKilobytes = fileSizeInBytes / 1024; -var fs = require("fs"); -var stats = fs.statSync("build/game.zip"); -var fileSizeInBytes = stats.size; -var fileSizeInKilobytes = fileSizeInBytes / 1024; +const statsUncompressed = fs.statSync("build/index.html"); +const fileSizeInBytesUncompressed = statsUncompressed.size; +const fileSizeInKilobytesUncompressed = fileSizeInBytesUncompressed / 1024; -var statsUncompressed = fs.statSync("build/index.html"); -var fileSizeInBytesUncompressed = statsUncompressed.size; -var fileSizeInKilobytesUncompressed = fileSizeInBytesUncompressed / 1024; - -var compressionRatio = fileSizeInBytesUncompressed / fileSizeInBytes; +const compressionRatio = fileSizeInBytesUncompressed / fileSizeInBytes; console.log(`Current game size: ${Math.round(fileSizeInKilobytes*10)/10}/13.0 KB (${Math.round((fileSizeInKilobytes/13)*100)}%)`); console.log(`Current game size (uncompressed): ${fileSizeInKilobytesUncompressed.toFixed(1)}/${(13.0 * compressionRatio).toFixed(1)} KB (${Math.round((fileSizeInKilobytesUncompressed/(13 * compressionRatio))*100)}%)`) -- GitLab