From b16c557cf0a7b7523bdbd5d0f1f252663c05753e Mon Sep 17 00:00:00 2001 From: Michael Chen Date: Mon, 29 Jan 2018 19:10:08 +0100 Subject: [PATCH] Added ingame sound effects --- bin/assets/sounds/hit1.wav | Bin 0 -> 13500 bytes bin/assets/sounds/hit2.wav | Bin 0 -> 14184 bytes bin/assets/sounds/hit3.wav | Bin 0 -> 13542 bytes bin/assets/sounds/hit4.wav | Bin 0 -> 13272 bytes bin/assets/sounds/hit5.wav | Bin 0 -> 14640 bytes breakout.c | 29 +++++++++++++++++++++++++++-- breakout.h | 1 + gameover.c | 27 ++++++++++++++++++++++++--- gameover.h | 3 ++- main.c | 17 ++++++++++++++++- 10 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 bin/assets/sounds/hit1.wav create mode 100644 bin/assets/sounds/hit2.wav create mode 100644 bin/assets/sounds/hit3.wav create mode 100644 bin/assets/sounds/hit4.wav create mode 100644 bin/assets/sounds/hit5.wav diff --git a/bin/assets/sounds/hit1.wav b/bin/assets/sounds/hit1.wav new file mode 100644 index 0000000000000000000000000000000000000000..605e2e99d04aafe1c554931ff653c52deb0b562f GIT binary patch literal 13500 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 C>Mx4` literal 0 HcmV?d00001 diff --git a/bin/assets/sounds/hit2.wav b/bin/assets/sounds/hit2.wav new file mode 100644 index 0000000000000000000000000000000000000000..2ec93cfe3c5799cc8c7334a2c1928c21d5e4f904 GIT binary patch literal 14184 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 ()*u8LH9NbP%0I&(Kfw8GVGxR+e7J zCtVo10MNHhtU+Ci6V*^LccartL=2LlTAd^e`OpaW6~6;bt)Pc5L2+zDKAc9?%ofFf zrsFaUDk1~1-Ge$Kab6GyebWWmI}eDz2A-V;ZL=TeSczbs0BEC6z~&No{H6?rYS@WL zAI7u)BX8iV0C`0$hobBcTt5Yl2SK}~U>y#U3Qdy@yUL>SZ$#bwMAFGOd_RvI>kDgj zD6_rL9y8E0%)rmjvJpl-jJu%E(2txV3z4ynVap%rZ{`43wa{tb1`8C$PRB$s5a$>V zfYUhax?aPbOoE>JD|E&Pe4+-F%l}Z7%Ynm>$j->MOJKW&;v71j%BbT7pq;|dO^u=> zXmgsIzC)d#hIx9z!=2&3bSR4zxDQzZT}2eUI0W}Z;lf50iVTUcX$GN>ypTs74#r(cuqwZcM4pQ0DqnXXJ5kC z4e-V`)U9sd+A7HQpS^2>Yy#z!ihipS^`$4!!@h^V%Yd16;f7YK2sJbes&y6a#a@v~ zP$Z?G%ojklq@X{E#HkNOtv^Jjf`9$VeRNy3&>i}KOS_;Js9>0-P&aSLeR79ffam)H zn}eYZCxI(RqN|UERu|BNW5i%F8@rUrq82R8!adiKuzwn&(iaM{6=Ku|9d}vOpPN8Q zKa3v*TvrAXR)bL$sNeG>1nkrqh;EDwt%F*T3{C$x)}=ys{|U`s5Pe)x*xnXdu>|`l zhfs$;0?!2dahcd3iolnOxWuCW`gzM`04(n-r-KLXz!D45(4(cGY7|FqH6>l4F4rTc zuc97rLoKafA;$P7eg4)DDk z3S%6sX$S3H3|=n|9FB$7z6@)(BYp*;#{WatGYli=N6qkxAk>e6z}5nI>i}lm4emLE z??-_!H}?IjAcD<-hBEN6KfW@tVh$}?k#t8#cN6ygz}E+Kf(wC=V)%bOSl`1UZ= z^Gxv7e=-2p{kD8&9r~#o z*l8w^JQBY(B$bFSSjY|Z*uaNQc;1GWiR$Xb%7m2Ya3b+kW2m*?Fn)bf6uU7_aJCyY zA_vh*MlJu@`9B7mzr^Y2XV~)wRrC&2OBP-#DpDZH3oTs%-YfHKbuMJ00M}da|7Or_ zRgsmYu=1*?O6BmI1FP_2W-nHph}V0Jd>uJFAIhvT5YP;mScKTT#6D3;pt&Rv#SxM7 z(9&0b<#;1x^ctwkvC!B}F^fMCMKJsC(9~K<8Vc)w*6h!S(SCFp z_c2E{DwYj7TosXYKygOH=5w$<4iO20WktXgd6AU~nC%wcxqcO&>h+zl(-2{=W49jz41$i+8Lsh>G`)^|Wr_f}tu<~!1Fsg8h!enpkA04WG;dAGv_gOpNu@Hv!m-2*(IvsJ}KSFbPXPgQp~_ zd@kgR6&(EzvAYaJUHGLMGBJ_|?;F3K$cNA8hq5S!Cw;-;$;dAinXln*e_*XPa(+6v z`DgVliPhDC2O7g~P2r13^pH<~)z_);!vegH!|ShstpXSkw*g?KMtm@mi3q0yuU_mZ zM!>?KdEr2$31)I)1x4Ypp{N9-Fk3BfNjO##hxq-A?6`-F{+Zk97*_+E#lo8V`0r=L z(GM9OfsvfQtY_eKJFK8ME0x$wNdco9V3?ercXsfK`IT9(@LK{r@CES*g6+8xfl^pg zAhPObhjj%}J^d@kV=$M3SVh6s-mttrR#ptT+zh<`JCOcU#e^Y0u7j^nV6C@c{c~iC z4gFGnJm2`&CrSe?`4FdEur?XkdWbmeg{J%$__>T6c=?O3ba2v7ROE%7Si4lIDz8?aU zAI3`m0hjN^8Xm$6UKxmW1z~jzpW^sC8_y@;b6?@%*H~Q&&K@d(4XOgsH4&vYsM2Nd zpCX7;6L5b`SXmAu N7%d8j$b~1l{6F>-L$Lq= literal 0 HcmV?d00001 diff --git a/bin/assets/sounds/hit4.wav b/bin/assets/sounds/hit4.wav new file mode 100644 index 0000000000000000000000000000000000000000..408de69aa72dcb2bf652a188eda17a99b93b456a GIT binary patch literal 13272 zcmW+-1$Y%l7oC~ieHIr8Bq1RLD1@I9TnYpY?hxGFU5dL?ELe*K*HT3jIa8il{5M2@yLIQCWCsyJ`%8(%9N6O>77hWk!%=k+q zLI#l%_^k+Dw~_)Wq)LMEX@6XV*rgTkcoQ4(CHc~W72nI(^83n#GDW7z&+-#~y73tu z-@oAw3vtO0GE)}FbeS(D)=QCZ@tu&*@_~Ga&jgV$+*2rhiGlA$A@?WwL_U+LQp0oK z$bV!8?v_%)J}h{u3EwlZdKvNqsX{73<{TM$$flE82Z%Epca?pGQ(w&SYbICZ|t3dh!>>?QJ^}?qk zU>`qxqBLX;#`9Z1`}gHbS)L3cgYoGC`9l6BPs^+FCbX3+-{bdqJ3-NRpUL7KbOE0pU?1LulayO(<$xQ65B-t*z z%0wAWnn08N$uN>8k3gb%va}onIqu6_kZv%p39wun`9J7q5PWC1oFj+I{&KxcmJP{H zvKp&SmEC10c|kUXFLsj4WFN8+uU>-IyvRE_Uk1sBl0t7&vAPL6u0Yn1mZY)#Q~1k1 zauy^SL9%5F*;B5>T6^FdWl2}LOE|?N_{~4^vCNh|zVdIpr^*|d_fingKG=oh(N_EsX)E7BxKDp!=&GMUF?*OP=p9N}w?Eh2%emL+6yIZ0HL z)ku`^=-kNTPdOrkZ6SRTkL5%s!)@g1X`Z`sqjFAG6+_u1dS3V|pV?`TP9KKeE=Hdq-XCLcF1$bemFLRc-R(|!J?(Hk_Q<$P^xg3Hn?E#k{}Gf}c66OFbt_a% zsUFt)YwUc-LHiG7hDH^pC4K&1G2iG)dgsD+L5)Hag2qNAM+JF}E`G1x(lV9pVZQHw znpRx@w79T;@P1?7hxOlv+s``6x)XB)QxEB9ij1M-Q>xon1&+|>W|nc(_buZ8gl!R5 zwJ@(1mOMI4&eS>vJPUlqc6rWu4Ji7BdgXe1x|5XL@UP#}<1(z-+g$HlR~*%CCqi0^ zyPrSg)fDwokKYe^wkG9zYHUh__l@7lufqzq<+jSPsIyC4j+zshSY>~UdG+QOFX~51 zUJ9=uTIPc&`--FR`^^kdzrJZl_V$q@dgA)CJ4ZPs{hq95sCySN!Vv+lf zaadWYz9D~+4(fJwDcQlx%g)SONg#E3CB9cKVf9V%-j9O9!{$YmE>pJjjL1Hr&w{GDz2OE!#d8adLh zgI2`%c2GVI%G<=x`o(G8b6#Yxb2Tk|ntmf~Sn9nGDck=a)_CiEkI(YH;WMyEC7U|6B9Bw zeDw%hL*{5*Y;oo!dCRlf^TA!SU{>0i&$%g;lB>K~^fut*=#SSw$&5{oQF?|*P@kK# zY*PX%6nWv_z-MpZs?bScYTyEz;b>@N%Q_i1AK!YpDEsfsl5aCVEp+<3TIYV$XL{|o zOi*k4|4@QNb&M_*=^OCEe|>4C%yg}*^K(F2>G;5{QRIi?ECg1=Y3({^u$lGX}-CQvR7q><&Lx` z=uc&^lw2r&wm4H1`B{mv&9pFOqw2AB@*ZOjQLmVW**aUQDvw#NmZ?~{O^=XeXji$G z{LfTiOY>gud(D4A;K#r_{=2+$EKg0{v~YDD@OY+S5lu-cKGdCR>>w_8ncS~AO$#1m z_y6`at#$T|oG*pBLQ$Q{daEN~uYWUJ2k(*r)4iV1`QS|F>?<=$WkuwF&e@)+<<@gN z(!a0+=6t0Z->lm_b@IH@($X8}&dHgUz0po&0-ZtLY2E!xha?r<8eF+pZe(86hT=Q? zntCT$XOIY&xBI?c*;U*bMPJ)|EJ^gL>hZel6=qt>TGDOgE9oX5xNAFG@g!vqS?9US zPn)`0vo&9HkpIPE4~h>fVh>y$d^;%EcEX5pUUuJd{x550>hg?jxgXM7f7a4F7e*G| z&w82r)o`*I;)KT~#wh=Y#g4Pib>x+_=N(MnTlm^27*ER2bv>$)0z4tn0 zN*8_f8Sdup8G4fIRL+r{-;Fw~hjU8a6+M7$@RV~mQ8n`lK0^e0ck*pUS9#*(F8Ro* z<;Ua(XY(w3u3vtayb*9t1(a&ii{xy8(`W`9Pw%88KUUhLmQoz3?LHPKl2R5_T zw<B<%0E3t+rY5Dd~OOG}m<4@}p_1a#3q%{!2S*+Gl-YsSG)Z)=O0K zG~sh(3(v}ex`qEUsk(_tt`L{&P{GK;-|R7VBmY%) zP~JY-&=yZ^&RBIuv86>OszFMk-^#$Q)~<|`%A~5yHa6#nCk@O&tIoY%n9R~amq zIhK32ShjjkpntgAu}I%vyi(rb%m7lX`xa0LU_V=y_rZL{5 zwLR>r^_Wiw>t9+sQ?hnMIYg(6x%w?biZ;eY_Z3msRMk8|{Xx59S!A1Pd81fpP35z; zjg=S6WJ!8kFX3G88Ok5IMmSQ9rEEW`F1nIfC13eM!;J)IA9r`XU*Z0&V+GN?vr)-2 zLAmE!(f^R&i6SG5-w$pQa60g_-&xa0lEpVV7v((8GUpsmZx?Y&?l_%_4!QAv6nK8~3x2Ir1UU7#XSJ^$XOOF+8Y`^<%QCjIknH|qrtk*Mo zk>6!&K9~O_SA!c@mf@_UwX@eTZMwG7Z&L6{uLPx@_N!&QsRYZ{rxwN*=DGLSQ@-~6 zn&ha)AKFz%V_Km8NNUpasz2Q#YAbo{sPRd*w0vZ*o%4-Nnkq&Y&gSndR8194Ogk-o z#X0wL{=(fn_f&39;lbSg*{d8*&tS(UR{<-b-6efAr_VE=%HAmf=YsG1HuS3H6YHg# zDrzs)hAd7C#38bnTFdq(`1gPrmKd*Vfdl=8)nhqse!x}|x2WgTbAHMjoj*4t;mgaf zA2Rx7d`xedU8L}pJI*-Zscu-+_2x?SJpWaT^qyeuPgB?*S{J3Mc8g1BRG2?gV zXyZOTr5`Wo5ZK0jY_IiqtrTPVZCgQ{1xw=)(QYdjSl zIrdDCTi@$AYL7Cii{`G2_OYJLMgw)T5prj80#uEgYIKTX+u5I zk?H!;80IXWKiXc?-Ps;eVAd0qFKj10ZpyGNwVYM=vRU$9eYj`1Yg}Qyf=qi2=PpNa z_a$C|SXhi{jy2TQ(97XH-7C^s**4u4t5qSlagv?x4z%xbRW}a0E4c>oMeG*YWNb0+ z$?`Nq?ADv;x5NrMK>W}3%8~9VMC?V{zv;!)``UQzfOW6$H{TH79{wSL+5TDn%>ozr zWm#WY&RLfzJ>5qfDegwjMma09MiY-!ukML+K6G?)JKP;yZ(M`)N&0N}NY62`g^KUzU|K;d zYWhm+@`t=VS>^jG*(H7FfBWS9sX(iYTd6f7or&wt@m$xE+v4-@9 z9K=p&eYE=OFjHyk9dn*imF;5hX%)HB*sI?+>d1NIxC|vD)Pt61<|FEUZHcwEt)}^l zHqHFP++CZg#Ha(b8d_1cgVJ5ur}!v!=sfvA{KJzyJ)L75LtN$EJsnYn?;Te>ecd(e zagKNT8otMU$+=H|ArDFy?=7n-leOvUA4;NTHVdVt>@9Z4ZoH%Gprf37i-)>rJKMVU zcup9)5pV3{Q|TGS$u6*2YOK~%J*#?|9NH6YhIyT3qWO%O*%GX~)GjPtImEgfL9Scw zT{>|`IJ{i`Mp=GOpR1SUi^U63RsK!3ummMg`HiV8g$$I@;u-%Y?vqw5M(LpzH6@xl zYKmGxZJ_3}k+d=$2W?x)&$6ogP4wbj48wRND$6bWA09`?D_v-w%wX@;w`8{dujenL zxY5^L!ZpvmT<@n}b1iVL@yz6H@LPuQt5RE?Kzk@x&9%%EmA9<4w!$>hyu%V=`P=l? zT+3R*$M=#rPBnlfLRr#>{5w6r#Hc9nKy-RWok&ci)6-ig2R zEOEQ^(}IYbMxJ;^OJIe+<;q`@SJl8dxWQ>XRrH}C)|kBPkELB z&yMlqdR_ED>X+tyT@s^!#v>NvHN62)dPO-Z7SNgNxh`D$-i zadnZog1Lh7f|zMdqKaikhTd1_dRxBP*y$Og4}-Sb^UAWj%1tFr3r*#$sn$=XTWlEV zE|2j$?nZW5u)!gnW$d1OoAVvFOOpsA{+2YKBHqku^QHk=zQk;&Yw1n#(Q!QIU{=lS zky+sx-_q7(&dwj|m}Aed&*1T<0`pyy=KW{zi=xc}!~HJ$E%yuXzHR!6dB_^}mgX3} zJ)J~8{X_<)S>hSX+^Kf2S$({=Be&_YUc&c{Fs7*g5?EM z^1l?Eb-p&VsfSgew$%uxGl9n~uA z8Y`uJQ-`rj?6tPX#MOgZPs zQU4!ejzIbZ@*6!wH`5P_6@IxFp4-S2Z~Bc5k>045UKgEst}$3lBBAseiD&J#QKn|v zO*Khtq1}dLVM6L|_W)N9M`Gcg!cq=jXLqN?UD{|at?Y>U%+${^*7}=ugQbz#YO1Cd zXAUxo_{$1>gt5UGXdFgP`$gYjIQdqwQZ$xNNEl6({ZL`0L`8Kog8ofgz?1)BVM;kB z$V<6I+~j^d$Fs}T-PPHxxjQ)9JCoe1A&pEvk?c`AXcM&GwLH@r^BJw0@|3+%nk$=0 zS>VI3$_b?!`^NH3Rc%|WU(7b^F0T?^Rn7ZVtM*LoPxr&CU3{`p%>B$c$Nkvzw|k)L zZ+BhP{?d5`Bc5l=d$OA`*mK;dFJD4}Rr+IbS8hi|@J~@3mC4=WoY+YIM{~ph<2YYJ zR4Q>QX`^JAikdQ%vf3U?ilu^BHr5{>~W8H}Zu> zMI((T$-&ZB3es0eP+GH+N-3=-m|bxe&or^b2BMka zGA@X0o}yPUa9ZSV_31h_R_jTg@u;)x_q5OreZ28AA0&^H2PBTVSxxnz@|>lyV#)$G zg7zTkvIc7RS7a<|^F;OT2;&K_BJ0Sy@*-Kp{$_tu4p!9#weZ0r6x_um`tm|!46iF1h|7F|$Rx|zJocQu zR^OTaGEIVpj%ydxKUh3XA}u91it8gi8$EA4sh&d5Pe!2ph#IwBXtW#f++XbHC1rq6 zb#E{ke`Av#X?)>1axSgJs9ireLKXp$(nO$G!U<}tH@KZA^77)W>`NY_bMb-vg$SHQ*HbUHm%W692We|o zU-46Ruz01j+E$&cSd=1450*tX$=BkD_*tyv$;Kk?5Zln7_#!judu6e@Ox4v#+6Aq% zI*tX>O5}^UVfg7zPcQww=e@h8=cK;EsAM!TcJr_B@W-MDdJp~4@wiL|&;e|^@=A$T zduV4&!%TP8YU&PkxpI&k5W_?ouVeV=)%5{-HNByJM6YNZG3s+KAw(GxMYm9u?PFHu zUsz;3)#zpT_FZw9m*#0kKjRu$LJ=bo9(h?@mlueN9sR2GQzk0KludLPdQ+Pu5&z>S zxr0yR2lydqt+#AJex|FbiO#0gSaW(n#>u_t$*AHz=OP82qdw>~h0w+H1v*rl2%{s( zE3t<6+wc1{{_)GpGB+5+6{9(>tgFDYp!*Kt%)_j?9qrx)Ba*b zX$r|hbiENv#Q<3koxM8f(hMg5Bf~`qugg2|2qRn{ssCX7VTAKH++S`Wg>);tubGmn z{HWBY$AJNj#XRE|&l~r8&qTede#z6)s3)(ZW3-vt)b?7uI!!qZ3*INUMFHnVZ@sK% zv3s7|+tbU_*mK@93;C-TcxO?X&UPzPm6pmZu&Ub1TDF9qKnLi6oF!)P{_vdNcml62 zZp-E9Mfrhiy<~0KD>@cg`X`A@>?}vyz zd;~AcR~ddred8^-+()A$Ct`${B@)DVaY1AWyLcxI(H!;5>%t?ZK(>o=JZVWc(qE~Q zHU?IlqW@yuS7beTMt&oAptB5gNh={Mx0a*OZEJ=I8zuGlIX ziL0Wk{46r~P2Nqo_-kXL@w@TRcw=N5wfS4VO8hMji}JE8x~)6VEwm#x_KHUQrE$wh zFb3j0)Ie`)IE=}BlITWyvjs|!nys2llT9uyTsx;;S8J;WSps5qD(y-3<9RNuwpr8> z&&5|c0$%b#?k1byd1r_hozJN94SxEZom3vNlQe^_!YQQ++eH`AI_v=p0fWybr)eM^ zFAoTceqI}KA8f*c9^4Rl0+>>k&Y=V85Gs%h2Ga`YN@mD^#ZP=NBIcwKYb@5Y^h~2a zZ^oDKA)<)9DYlD`*x@A}fJ^10jgrPFgBw@)PSHn3k_NONy9FOeVh%PLnw^i%c>;XL zM?{G|VxnwDYSV?RirP_|qP5rNXqB`XN&*c9FUsfRjfZ-BC6&oI(Z@oiH1PA^?WF| z@mKs9;$Rp$#{u+rFe?*!+jG##z6S3I{I4hNkG!^koJZ%krK}-a;v7?&cQdBKvW7lE z->+{rLb2LX{)E}t(Sa*YX>^pgOE!Opr3z*w4iyU82DBPvX;2z2=spU;Jr4O33x+}LSG>? zm|mt|A)^;M?U5u2epE)x7m+ejW}|PLLUy3v+KmpunK4+IfUa+C#jK>z(OUY*PH@Q~E$VQky7yu-{ zie7dXOjEc-RpBcPK9xT=jv4{HFCWF%@d$B4#L1sANim9WxmqZNP??=;xm!LxCfAm`Q1_5H|7mPAPN6s4 zgzrY4+ATT)2TH-~?m@m7;9wm64PA0h$^j$GA!oVB9kLw!ZU`c94m{vGCKMK6df*{u z1765H^!6_x10DZwqF^SnQEhliqFf?p%X63;2|!J$5oRo=qaXPhUHAz4BaNnhI4@ix zE3oPu*g6CK?seeYPQ>9}>?1-pk&EEXXGs~_0FjnOBZ1#%=tH`nmImf8fbLJr$=LZ< zQC+TvZ`d&9&tb17$C-oCL&x!i%6hkn4B(`V@}~6nMDWFj`S5clAX>2 zi;bnp*jXwfZinnEEz*Sw!DKlQ2)!CR-7XJdkHMHzn2$WzgpP;boyXTsx|9~9f0GTc z;c)o>T(G;Jk=0xAnS2%B%yaoZQ42WMUp|$;lOO08WV=Ej&xs2+vio6U@ zI*w_J@u=5UqBc5~mSz!bI6UqVPFX@~a;ErITnEaBh;`x^ESoJ8NHcm1Ijbcd01J1a ze}K~+!DLBWp!o!Fmo(h&vc-TZ!$yKa5hn#_ZW`eVgh4*}r=Sdyf znD(dnbPOBD{(^Ug&@4>APsGVduld za8V93Co3_L@`y~OSD@c5q&0N54R-iJR2Ku0IoFF4(kX8vOYWv+*mkxQC*grKp5BK< zcg1AU8tX0R3%Rd2DT*N?U=3n}_njg~NfuamF>(RXRtfVyP9W4bQVVC%V663p&Y<2j z2s=%NpS?o;WE*Tf47OZ>nUg`7ZG47hMq#mSNL^rsmgcaPgo!jb1g??Y2@>H(C9sCW~JD3po@t2`8UAC$r|vmSa5(sXdwzQn8#BwA<`DH+D86?sg^}VkZ|O|C|Vb> zkpVq^pG68Gw-7_Cv7cR-!b!y3OE|cH3hH`INiKFcQtro$OetA_6JBds6SF#9F-u~@ z)Y5T8%|`m3npja5jhI+=RWzknJsn4sw>YoVS{Sr)<798r7(^DEylyHyfXRy9c- zTt8y6tPmVB0;l{^n95QyNn|E_fcRYyqePw&$)YYKNW`pBJb6g`ksrd5=|3P}e*$hl z!TeQ2xnC?0ZBd&z$nSB^i;I?s!tZ&$ifjWEd4PGc40#3!QUYtAM`n48xiMWP0b!qG zzU&6jooyNq^8uhmpE5HfOY=wSllGXWL}0%{2OUn1EKPnv;R zM@`_v_e#nqaY*zKwGppZ#AoqT_#&3CV&V$ig8WL}1D`J7NnepUmg2L|5Cw;Er4otP zM__I)26J~)q=8+0&sN)!y-NbM?;r#8BFO}2b(|Rc(V4Udsz%vFLnhfr`eJTwA2b$= z49;NRi>L`ymYrd>cvx+ie1um`=qPR>Z;@sGfd!LMO9&>XfaAlYKTzl%*mfvnhk|FT}-1S(A*x&O1Q6CCNwVwTBGBsKIA( zN+gPFA{bL><1m@n4bLkFe|k+TgBexD1kPK!0f>1I({&Y5r=JR+p8_9QE4RQSbxhzz zgEK}0*+RkOR$_*29&*npITx9tEM^Xm!}49hnvNjvE~CSNrRbhP&Sap=P+-Z=__-2x zehK;7BF<_7CAxw;ZidY}%5eEe92B<%`Ao zmjWvjfi6=KkrU)Ze6kNT6(BvLCe}~DI#+=xePMq=O48QIPVIqER{9d>%FghrlhDf& z)GjB3uSWs1rs1?)3upBN+UUP5tAXP*2IBsW-DQi*;-MIuPDGocWhgiBUZzH2pOlQ_X1U`g(+fd!l1Mknn z87Lk0?*~M~^aI$ydN7W?h~2fAd29-MZGo+-VQ&wB<{9w*BJhcBc*d`Y`5i!{>-cR2 zaOV~B)O%RF3-q?0EC!SHfk)p&Zdi}Cs=zNU;*`A``|ge1UqLjdeebrARmdFo$aCx{ z1)eYsJ1-3k_<|b7U0D1+u-l)+0nrZQj`FlOrV$6xR^T^9=|y;JIM&?>8`>e?S@`I` zq5!jfbAXEx$Vtb+A721j&LE~+ATzC#4S**H!E)M(>8N>Jhu18ZX3VcH!F@i^qZ9mU z6_EHPP&-q+LZ#+6u^b4H2Y%BB87dl_?jr6@$63t^Kb;H7y5Y2O4eahFbi4<7=QW;P z3zEfxz0D^HFMj`uz0ZW5{DGwpzI%w)CbUGFO zaUbz^2{uAw>Nu_`*J{Z34PYz%D|NJ)^+^%7a6_K$UAG{5%&nn)qM7tAhH-AlU33EHD~t z-2=+Kght=uY~Bmm%?0~xM@H=iX3!fF4MU6`gtRvx4Mntk0!}@|EbcSpr(cn^E(2pW z;HL+;p9l00!EA6PoO!B1N5jBELXkBc@Ti4|&Q^$08_+izaXJ)HnFRJ%3-h`&Vabcg zmecXcFzDnp?jD0(t-|hpht*pEgYTeKC)~bL}7JV4qPb=r`-lX-u}3jB5pEZ)o@I4H^b?y zG^Trlv7c0Yb{(F640bvK397?$Pzgb_H>I6$Dv3dL@hR+F1$=lT@T`Q?F>}jBIAU}< z_Ei$AO+);C&m`YZPv5iePM}T{^2KMYx(L|27TVf@=Rd;k6y&`qplN5!Fn`aT0pJz) z;BR+ewFk(a0sf5hi=alU+m?-uw&1h~*}*k>(rQ4(^* zJ#qv%vIO!>#}56G%Tj@xt)P+m$h}pOc?V#Zk8!>&1K!&UIj=j;^yR=Q&Vp;#g|?hv z(_he~GJ~o010MRr>LbAXrXpr)Km!*LBXy(?P?Dh%5(-4$4XMIV1K5wfOY(_agFj3{ z&UgZCtw97g2mU02OGsH9UUvu>{rxmD5i)j$eu=7(wgVEpcfNcV05yx=YS)x@a#8;kW55&3M_FK$XW>B;?T1Xo>L7dQW5x4 z8I}ovR~Ccqau9F-z;h-c2lc})Cc@I&@ySBeM52MJ!(oNV_!m zVS)eLMwDFs4+{^&me&v^SFj5=BL4f@72!>x&`d6Nlmdi%3N~ZKr(;nSm@b?ba37V8m-1MDS0L>^(B-HfV4huy6|I>VN+)OPYau&G7#V zv*9oEfNU)weE{w~jJVtgzuWL1U-ZZ#&`n2p)kt_iE1+>H#NZ`F;c3`q4_1Bv4eID? z#o^tC_^J#0T9BWPLf1QCxv|KDTfmhHp~ono`a)>AC-7!8_M?EUU&5WMA=^ycmjuN4 z7xricD~!ao1kde{-BgF>EcjoKCqR;a@n0mbk%@y~qgwFt24EizVCf3baR~1F&bz<= z4~s8!SPFLfZpo7Wc|rkn{1}*g41Tl?2=xlTCnLiBAXgDY?04>cNNxhAw?hQR$e(0W z`1wBA=P~@MDP$T3|Co#3QE$Zj_x};ef_=VMm>k%DRh(-Y!*>QDlZ^vEYY8r4MQ!6> u?C=DxgFwv_@ZLA@(ja`kIxs4ZbV5wGz|ZdpN`U~$z?}n##I?9q$o~W7h-y#( literal 0 HcmV?d00001 diff --git a/bin/assets/sounds/hit5.wav b/bin/assets/sounds/hit5.wav new file mode 100644 index 0000000000000000000000000000000000000000..69eb66cb9e5e11090df69676eb8e24e2c368f2dd GIT binary patch literal 14640 zcmW+-1$Y!m6YU;ZjckMv4-UZ(cM0wi+}&Lccju5hoWtGS;W%7_1r3&9fw*i|N4o!a z|2H2Ao1K~NE_wB;y1H|#=FQ90CZv1gZq0^`ol?X`2%)%|9w%gZ4@v}LBSQvG87SeN zwxlO%L7J0>xayONq!y`zeKoW_0gphaq5k_$F`}{8VaD{*4>D)x3F{er-3U5j0l;rY*d=3A^?ffZ!$;*+} zWDuE8Hj%$^Z6Q0zNXVldB&1+;4-X(Z&*DwUSkj$zC6h=ed^eHwCNjz56-j^m+{06O zJyISkC`!iTjy_}+`3v{WBZ*`uX4Q$DChH-gT4X9|Lt;od$jc0kyyK7gHok&ev4WR8 ziT^>Sk*$0lkB4MSaVysFiMQuId>lWH`#$pD$a&rct2smB$U**#w}7+`@E^EV@W1(G z{s-2T4|znBAZVaG2_QfCV!oLNLb@(Kf~1meqyq23RbnSEnLm5P3)5&~;GyIw{YD?s z>r|qr@cm-agl>m~f8uR-csqWUeFgFpM^aHI$}P>1Of| z_wtQo06E0_@hW^iZw=cD`hpZ~+_ zl75&~9(%|-@Hpa26Uk>jhc(a@{Tpvap74(3C0#D8q3g*SzF+^PwPH)i1KN|cVkej# z-);D^{|E}rV0DOHY$^W9*RVLU7c1*S zW|G-_G+VEqV{K@0dS5@Tbt9AMc&&;0lH3s+35)4gX|ZooR90;D(Aw@AEF&t#-1|ww zxhHpL-Jg8;uRjvkSkE*_Z2W0r=69doWrAu{itErRZ0L)LOD1-j6g6S=h*d*tc1kP$ zJI%{m@TEw?$g?2_haXEndHblgd-{f|Td$uTpKv^B=chv7{&gkWeuY;Fofvs2HoWrD za+^vth*}%+XW$0o+uTy$X64S+;&WzyE|opf??L#9;7bv$tI)X7aqsK#dMz5wu0Aj9 z8cFt4bM*LH{mGe!u}=aXB;B8u6q3;|J>=)V_CfHl4`i;N5D^zqC~RxQxUjE&pXBah zZK|qelmvEF*RqZ!jeA}8qv6%LE8mYtU%qs=17I(^_Ria?rOD^Qz|5UDw3b zX?Ne~e%XDx^tl?pzDb#?A*D?*O@rr(e>#8V{+4e2)bFM7RlRr9-rxV6n>s18LbhQ4 z?z!!WvnS{5&#jQv{k!+`#+0>RM}KB-KE2YCKBaW}xj(0qvc_0FC_nOIi8Zl$d3(j$ z6)wb9E@h9YU8s_!xvWW?4{%n_Ih51XE;`G56KF^4RhuoiQdnwKm*{hmoufKOSB)4P z+`@ORfw6P$;Qan++derHL!R_}IRD@39}6zdiQu*QdTeCS_#i>~f~+lY|-4Hfunr7?U3n99cj1 za!sFF=@r|TORZR?(zw{T5+#eYEj-0yql5KaZ@Ge}8Ed}2eAoF^Y|@sL}gyimgTp33ayMlGDTc1&L+c!mzJY`GmT^P5O1b)ch>fA zBfh-+8kJl#Y3qm0sk?IK*tdB%7-k3T4S5t%r^K1EOUiaA<1XVUB}Lf-vVGtCY%nnW zpwdR!>g=7J?-*F_%QVI)wBvqgz0r)RMFgu!>cr^G`DJv1{E94s!^iipJm0Om;JAa zW5owjThc@ur)TQzm64u2wI2V-vdC4VW{Tsf&X4ZZdKo1(_k8-AU*X^8ykGaa+v}^Z z`X?F^8@+1z=GWW7ANHiwPMw)`#Qmo<$gfhNrI8UO4HfEF9al5D_MuuMYrd)0yW*r0 zcOppPfWXVfFUqI_!9G9ld}j4u_kX#w;`86zXFH2&|A>DYo{8gW6|t~%m5p_}b53RT zOJDT$deYBV>t0QN`|#t=uRDGOrADO{&#$P@GY<2g9dae2ThxKb{!z<{mMs-pazNC^ zLUjVy`cE}Y;Gfj`{Em=LYm)+@r+JCr8r!XaZ9(ONci2jqhVf`^fu5$8Dma`*e|-IZ z=xd+P*FTL&nVlkkj`(sm)9s$f76`jdh5bVP$NRSpYF4PgZ-(Jtd5C$X+)nX#*xV`J zR_?9N6P^@hg7>+4*3dNYK*+Je2O{ql4=BB_)YFp7ixml<7jVvZlBE(o;KQA{l-`23rXP*Z{Eb1jz{deR=vGLj!V7~M`))GLF+P_!v-ys$xf^p|W`+M~l44C& zv&v+j%Jev>;gw%a>vogB%@x)+QVH!^xMk?DkZ(4{8f)HUXeTD}N*Z^cC0C}viX z*I!ySewEjh&iH%|tQuUpP`gkuTq;~WV6wG{p);+>rfFlm(;fZu@8-YAua&nX|BTzK zt<-KSqnRjwF{FqmgaguCA<^r}zn%9ZKRY)y>uy%f9AobI{F(07`g=~rx)$9wHz3Tv zwyk8)}pcq&9lt3@~Y#a8HB zl{u~^jspdU^Z(AikkK#0oOv!YAp3ewpInj`SJ1(8U)`sFpxw;#Y}bQ3h8m)#6}eEv zS|p~(hUhV2M*@w$txUs2JMYe#svVs9c_;GgI9S15d#tmpQbg~s*Jou(FLIb&(RP*IW=y|EKagK4Cp})av7%jWWR&AE@ z#BOQQPED_$v)_K*$=$!H>-i!fhu+|)c&M;htS)%@ z13sDlBQT+&w9{C}$7I_RIIYm2u<}v&qdP=LMwf^g5%YKC(!x6ezxq|PZZ`CxRW-pq zHNRL^^R$XT|NU|2oAXQUuNS^se!6}RO52?!0aXfI_dJc&f3@QJD3(N82{WkxuHKn$ z75))Ig!Zt#G~+0<$=urF<3BIBOW{tTqr&{ckAw~kc^_Og=#~FyYj0zcFi(&6Dz2-J z>v_ksJLS~QJDp2&3gsFK3S5!ORQ(lS&TBJ;T_z8?OWo%w?JnzlpWiZfW{x|%clL;! z4f)NSpFC&vT=Bg*$1gEhjHnlVGHOKBx|n7~ERh>R?gaCo?S4}Y7lemmGPNnI3S`Gi zS0`se{$Tqn*KThcZ*i|vsic=?=kyWUJhi(vK-ZLI&Mx-*1lQg+ zT%l&6ufjZG*qT0kr$k1CE(>-9ob(MbW|M*1YWL%ONA|w#%Q-1I zM{*YD7Ryh!S8%R(AMh;jyz@NsF83z8?XDs2Ojk*#)j7)@;7xHKbxrh~R15S8{4HH3 z^*8vMdRY4V`1(@c`o0F=&(^J$cji!Yf74OZdGlb)Y74i_vc9)0F}F9DwA?Y*H};f9 z3w_C1t-5D|ATWvre8{5o;4zGmVK*zUqK;vRdu<(gta0w#2JRw zM!~qkP}LY|`d}Px^f8OR*KE%M3xav5PgKw7KceiB?ISCPO$Zw8JImx1E~rZ#h4LEZ zY|JW>UMRKc_sGEE*En8|T;4I!S)ZPiZTZU9PJ6 zX<4?+E*Y8WEi*H7&919Tl0J);G!V-I>oDtaYc1b3{v`u)Y|H%0S|d%l@E)**@usKc0VS{5kNW z?c=vku_;ZzhW&VwRyB8+OVfgc;qp=Ae)B$SP2VfN)qU6a-1Pb7`^s;GUkl&Oz5{G^ zgVRDnL$y$!@TcL9@Z|6b;X_07f~xzyF{$EO*2v>$pOGD#**W9i^h;^Ke$`GJlin#~ zQO3oL0hzBeuVns}H95Chfz?&avrQR}Jg5R6$Ntt2X)UzY`b0j5t`)NlFRhDhM}saE zI#Kv}So??-5l6$Pr0puJ?BS$iec{mkv~TyWX#%j{2`YdvY66z@JZMeb$!Y;Eb| z>$l8y!PeF{-Sop?F$Nlj2{J#$qL4*i=R3(D@vi*TaMRenq&?zHkHm% z#2R;1yD_(DcEijH8B%83>@T@33liPiw5jB&=rw#YC7b$~mYQ0dRvV5$l8;$yRP zG$xCTPu6aF8+xv}SGYgBLR|w~H{FB0+my!IL3Wzdr<_!w^Jyw+!w0iqWT7MYeSMgg zq#jqBsn3;*%6H|YlILybz2%**R?&wuO1#2U!&K92QyX)pWwXy0pD3T{)+lR+xt8&! zxRe~$7b^blZjNaMJsgVjq}%1~q#vUBawGFQOQxlzWvV&e)X#8QJWXEd&D5UW0(W0m z7e`>hKLtme*{(9~M0X`+iC&#NqLoEaK4utb>}?D+J~v#Hr;BOC##iX;)Q;W+cZ_?v zE62IR)yBI)%VV2JNioAIV zG`mt&S*^@cUU(8*inEQYt?P;Nq_dgpv8$oGv}crez4BV!sgL2aQ4@Gamx@7hW5Y$` z0`q4}j)j>Ym>wFx8m7wkg|>W}_NQ{zbJ-Q;TIU|(b$O>K;d&doKyt`Cj5(HUzdr*i z2d)b^YU|^F#b>gqoRmO**9&>yI=uGY1r-bW=l_=HlRwCQ+P=@;u%Lxww)2(yyPD2h z3J1lGvdNfZ%r`DEE;Bf!Bgm-V3R7rhQk1Af8cW}jy7UZvM9hWbrc`P)$~9C?k|%>T|6P3n5K}{?ZqDyD`x6myh7L+po8OEn6qs2>+&j z?|fESZW#N^(c(+qR;}+&cC0F}*!Sl7vX)hSd5c=46(-Q#>>X$=5>}dOGj%LAJKQTPn6YbzGFIUSSP8n|48wy@x#u zz2Ce8z4N_almc~+nxphomuvO)5_sbYR3qxrmb3!hM!N`Iga%Y3<+)1_);21Y6tm*z zt>hWy8SAwuZ2uxUFl{&V5-X8Nwn&?< zbnx_WPjoMEuX0cD7?cWXqWVfJ&33T6dbYM#>#w~~L)02dWp8u%*HCv2_Ye0oZ=(8E zyRHjlzpz1!6!(euZZi;~}|^Xs1Q#Bd+Sj^&mE#zXvyZ zKyrmfQW?oDc9g0}YlO~3W!+eYc3L^@x#S-2zT~RyEay1jNO6vG?R4qxFG?-lqbIPs zlt>SyQ=*@^O*|o%7P^vD?jU`I9%5x_yWGy$*R;~~#N;qfwwCgFV{Kx+ZXuQ)raSUe zA)LI`52*Pbk29~puV8?^fByZv+`Lu!9qo$?MmTS~yMs@s@XvICxLv+!bed|KubMAe zh?SdLni?7Qihq(*`U54|o#>q4Z0aiS?vE^KHG4=4#LkAT<`kcNzvupOwgonSTa@2N zOFZIeahjx+@?<-%6)^j={Kokw?N;Xu*H>49d#yK2%~G#vlyya2GX!<5@3e_nQ@S7( zNcH9Ja;o%Pyd!YBgl3|)ID%BCvjvCvKz?T&YR)xJGxsqqHdv+3bO+n5uJM#~opW3% zNVLzl?<3iako)P?MB0CP|6Rw_961?NRw+u^)=!8dGpLFFB`uc89EES%2iT1m{2P zPFCTg(l6sC>omVGn`%26a5A8U&F#C$`p)#194LhI{aSTJ_PlXD1KJew9QJ0bE!kYM zN0=^+kWa{;8h}Tv|zi`G|xd-9cL}a;esy(X6I4YYL8Lv!8!>24J9pOeBb() z3)mb`CBSGC{EAr{8t(~Bn2*xLm0-x{V*pi&uY(cT=XPp=SY32igB!&Sv=OZ zK0!X?tuYp>X|H@(j1z{DD|!tzK)K`f_4e?5@oZ9tX*c!Wycy-fFR`<9Qc9MVN>{{X zLTOr(tl-C3OJvicIz#ygS$*?XQ+H`xzs?nEl)B0Va=c-`VS(YO+(|NuPHHE2_(pa~ z@2z*!r|2pAba3b1sJp)AeyFrBCdNx2k;*l<%S-npVHcE>8e*g&d}b zg>bQ^SX~Sg?+dc<85Q3RY_)ztv#VYu-y7$Zy^Xy&UXRjUi(*AcL!qbC!m!lX4P%@# ze=;vL?>5C7Kgs@5lu(z9gI$(W;}xP@@vibp$}F{|{+1cZKzdm?D>5-lbctSZoR~Y83ZaG#sOS&t1d#QW$c+y9#W9V!8WPWKGY+Yb2Y;A8@WWH|l z7+V;(8cxY;rQgNfsGo31>@~}V6k1}wHm#;+*8Wy|s=d{c>Jg>4(ped!d{Yvj@h18! zeG6N{yAv1LP3sE7g_*)F!6h6NqOs~&;U3~nOFn^Z*H>#-)N87*X4RN_Udz{8@f31U z=qkOH2O4LZl1x8M)yy-^{^tG0LIxi>Mp`J$AtzZOeXzR7o8xx42D{3;rn@S;smI}w zm11g~wnD$n?xJS@o{XingeO8}v7J~}^cS;*JHj);A(RzYic~5oWr~}`B4U4`8|_L~ z@eJ02orDbz(5LE;_1^3o>}Wr)O^)I{zepslNp8<2}g@l0-g|2-=tS zqfs=O%p%YEE0&`F)O59lI$r7JUGKTz8RE4nW0iqwQ@tb4Ae)6(Qk=1rd5q<%HOFVP z?^~bK))^L?xs}lY4pM>t&>E{Nz4zUNT(_MYoMW70on?Upbv-4#wUx_iJ)N@6?00^U z9HV`NB%z&XkiJQ62j5ZkL-l8wiZj<&vN$@;EwqtW_ zEErYrS3y%prn7?Q9`e=cWRW=D@Y?j+vd8Cz?*rdsK9bdAiZ_Vjdfro;=*@QdIo$<+ z6x=SjmL!XE%J$puzKAqcn^Axc_O_Y zZyoiUwv^@Y&e)w9Ckj%qbX&BEzvy`~f`_pLZK>KqS>QE#Z+cdE&cG7Sg4q}7XZZ?R zP24AKlKUHs##rMvL$=&N9x3${gM>8ffbHisf#Pj}e!kd8JVIX6V6m}OOui(4l~d*I z@?&YN_zF7g$Chiym1^D?&lq<&GV0&lPuxp9tGyePKh!7Sjt=&Q_a`Rs&nm(mAzdgX z&KJ*$>&2zwUh%5@D-*gkNL}*={BS)mQUN zygWHU8qsysNl!tWC&i-Db})t$@;%uj_cN?F)HbY@uSq||AHqWVkxynd^(1wQg1pAF z#WTV)#S`oeR~o5pwHdk(cF=Cqp~3^9f!IU5EF7X6$a+4EX~>Fts+H6l>N0hR_D0{u z2UDxKQ>tK?XY69yXzFkJY19qV^$LLJU6be5hW=kPH-Fh!aRo0pna8OIxl+)=zn`;i8` z8XKnjAbU#Fbgi=fx9-PA0zbR)P1un(V1M}?U(365kuPUO*-!nJzFnWEuhIX}Mb?WQ zWf`n8pUlr;=XwJ&%(;lkow*-ZSuA#JCt{y@9w~+$)^S1!FYOfU%jv1=JkhVmS?1Rflu7uC9`hm?oj6i-J_q^FhVch4bD8E;9Yids?= z^lbeH`-8vW^|8-9g#H5*s41KmT8Zbx46(GdNy?V$$t&f@a*Uy$A>L5mpvZ^h7`eC9 zN9-jGpo_^L`~tJF+4^fOP@ApRQ6mt&-SFhes#~p~_0w)>b@Z#ct_QFRES8mJLF|{l z8_}h=-a}uc7lNHG<{hwCTmxuV6da0SyxwwqxuINK_L09qdyAy9(mip87$=Ib%R@q2 zA%TWr&-Gt0lS-_Q{QRGn(|V4p=2vDu)nG55_OGwKs^hj4AEvmA02eB{+R9J z+sH;bPiQJ;ic_S|Qix38#XF>UDM^IYzz5fZ9sMP2ho7Do4hTzy-h!|2H?2jFp+8^= z-wAttr^UhgJjw;-h9av2)tl-9ZK^(()#cZCVeIeEAbk-RcR*wQd@rlazUatYST#0^ zy#f!YMxK&2v_DpxBhHe(NJV9bv{kAk0TBcN{(TU=0L}OdHjTwF!onc2zHBecXU+JZ z{2ece9*92V53s)@WH9k3A7Lk-SVcAm%7i^ttH+;#b9^E3^dfyg57SAs z6j*03h&Jqb0jqz9oW2U%#GI@Zkg)-JHqy}_V4cdKFSjz-I=lo78l*owi%c*6Qgy^}?9r zUKYt0qGx0d;>K}07C!%093p*}hRDn0Rq`x3P@V!*dmy}{Y3Krp4elldLuRzw+JcE1BS_dsvU9A45x)mqlQ@A=>{jQGJ4Ej-hHfs$FSV%Il->{x;rE?MS%1{&fIJO|a znTO7o;pm-NL++DT&_@N_kx$DC!>|k0SllJP6Oq|s7uhKG6J7w#8kG7S z?X`MKy|3l~uLo(#+90r(UhESp2A_~4w*uD3qb_tBSX!K?up>a`9+1Ii_K{WNyLeM@ z+wF9?P(}2YlB7wf4z)JSFpM#n4J&01d>A4w686#kWH-Ob9C{qad#1Kmzo7PaOL?Y5 zs!P=Z;6OF~U%eS@>K}HWony;cU3OgmO}A^8wMFogJ6a7y1RIYcz35Tlo|r8~8lsG! zjEhZ=O)pHxP|G}Jd}p{SKa{Q_Pa8;4t>J$m-c{Cfw6oeAtg3_7R~w^E(&hux25B9& zQ0*T?!AxbH5}~~IUiCiq`YXefP_?2qRKLS2{FiZvm!zxmMZ@o?lGQOqn?4$68WRjo zxvbnw8YJ!&GH6qJn~a9`3KJC^tu87CE6Fyn{T+~(h90L(R)dYw$7sFO4&ZfDJm=lb z-NoH?-Iv{yQ7d|^#Ay%onY=Q6A=H!l$XyMZp_#F%(QG_pC~24?-v$?3C>q4MLZI-K z?f}E=MypUp9^w5x(ckr%@8)Isb2gimLB_C2AFsF6Yh(W}UrW{UwdaT*&oqw~p|{dU zBEvPoGj>5^RrzdGfj)2>Y~>y@tCHyNIR&;fQn)P?5f6xw@cfICS#B+Nk$vTjQUo~N zbac?nBER!li1UeBNo}_}3_PW(I!|?|V>CrurdI+&_XImAOBSG$XA7+Gcl2oaqhqQ& z4~5UnMP^i+RbeC8O%?%!uSwpKy@Ae^swh~6r(c~|5E(KxV zv?3793NM?cyY+d@0v6y!x6lf5oLok)P$iPcTO*DJu|;~Qegr7j9+>)Gi`NNz$qu1T zzKPBiT8gL@Ay!?JHcK@S>vILGP=z)pWBDGIqpt%iYM>9(_rw1uGApFh3;5rMKBZJJ z2{s{%Zl=C;2Kv_8@%6aBtNu+pgi%guGU9L}7R^Osqy9pcuu0@%4{5j*C2bQw3Qp=o z7oUKg;!u62mWM3miYmkY%AhOaK0Ad>r5tLiRfI{1o0G7QoJ%)S4|Z|0QA@~W+u&ur z*m&s7%jTlz>lqnI9dwfrCiVhaP7#}nsd(x({Q(U7FPab5Z)lCQFY0OJLdCRgT3tO0 zc6^?XC4R7-0KC6}5DFeQn!X^_$aY=^{B{tFU<{SPuD~>Zz7ti8o1_PQLyHJAgcQLH zW?f257Y++!gu=o>WUr@5J;-|juL#RN$cC_vusjtEESP!q*T~jC>Ob_K827u*^cYr( zHD~kKMabuO{*X5Uo`%syl+h8wL%}GP7W<38iwkk}5@Qfu4VpR%1!`I{4QMh`7JNDwufp+a7 zB^%ay1bEa8?CZ2X9GDcXmj|wNK>kSCOxVjoblPQ+9kiUV264HZ*jnr@wi4aKF(DqK z3_|zLTJ$(t(8;z1V{8Ujc*Z}YyE7WRs0FEjzDPgv3BEj##~=#q1W&iHe8}=LSix7I z-eBY;4bc-(n|vmN!0qb`tB~8A2fLq#`0)-SxX{^{$EToY@dl*QjMaqg{LNBW12CUd zRGE$t2VzkhvroJFK414c26H{=eMfR4Sp`1zTcvF^XnahQj`%GTgY@#r%wg;f$1DA4}_OJ{|^%}(O3mcUXCHP{h! zHQfnauAzfzV_FD&>NMsTioU}{SnVwIB=+Y+_#i%mZ^U!Sm|YXZ@1pQ&^J^lYmA`SvDJmzRq5lcSm}U7DskH3>H#fkc3l+tq)M$L*F8*Ivb&r zda%BZu;;rh4EytTK9T%DEILnrP!;XH>BtPr(SJ#2at1N-I16W+^oF`ed#JtA%s`B% z`XE*sD^DPQfF*tqT8Pt8M_&e}b4MsCte|=5&K=30pc2oK+uQ-eDhx{~kJZ(JPgVso z{GdUCSxAO2SNK1pp3AdYAC{<3*Q@J(K>axVqF$NZLnhY}==BGBLstliLLT_k9@NYJ zrhaq;_6;i|EAI-l^kvZ)>n0e*2R<5}a*H+*b_hR(!lFkw0T0;iS3p)>Oo{4JVZg$$DU65fDQ{+%T=iu`at z4+isggV)}mW^m%ska82jL8rrN{vbKXu)nkJVEg;@W%?L>m+sPAvn#9-{G=ODBO0i2 zhTfr<@w)=O^Z)MGIG%)f#`O0pP(NC8(OLMJMqVG?90pdy%=OVY~#o z624v%8NnQM`BnmIgut?6(LKEjGpdJGU!v*Idl7-bS`N~NsNs}AHC;g!CQa|FYua68 z8{4!?np0~JE9=UzuZgvIL)uiS#yh1|!(-ZOx6E68(HOQ+LA^a?EV038Xw`hW~0nb4TX zH?eqR#6?&+aK!nD@+J8yU{)V;ig-vh+KzTX##Igd$v4SlbgC!vIlLtgMlHY#td0dv z96%R(aWV$%M+bJbqkU+5T91a(EUbDQ+_{6c4Z1nGiRy(bmvD0+@cLIvy;b`Tm00m2hhcz*%2KJi9i zE3Fu1ccAHY$mbvF{$SI4nSu94B=G@jT7X@t&@tt6Sm(iYJBL1^LxJxYHEIue>d*5Y)4NM0acS%B{Kv5?wY#J2?WjF-asfYLZi zPz+Z3o*%_G6%Yfiz_vR9;p(&2@T!gMUwCZ`^t?OKe_;IJ}ZBrxR%} z8b>36_+QCgu+i0I2|Dll0x{Z;;Gr zR&dP1=(P98l?Pos0|z|^ez^)!VHCJ$4;~LrP>0tBQx4}vcqv{ID{g~tCPJGjVC`MV z24qZbU~D`rZV}x;x8VAn4yCQA4>H;VU}R;81Zn=o2lM(scN5~3KX`#3-dB?U#2a19ZqfODLZs1F-kfDZNR;JV+it1eM5$ss?{HGc*;F$U){VxgrB{uWaD zZ_a-~%YWnNM&wlcFuQv=fp7=9e+WkNke`MIFT!>&!kaGPT*Y_ph73fUG$;XWR)o|m z!7j@}^L6mA9;~z~Z1lgZqzU3E_%zme5;A^99%BFD1S0DO?1Oaxio6CsPsU1|(9kLN z7pk7~psAzqED5U{fEhhU1+Fyd2zy+M$omBPxPte*C6CDkeBKM~9QuFOvkyLa2A?;; zA|`-CR6}0$7AqOgYk&uThaWux9=t(aPv8;o%9+?JdyW$?6cVn2a~bt8_hP`bg8#4W z1ETvo*v1EVw-e_sDv}<^E4E<2{1EwGq+;E)lp z6@OkDelP&_%sa4;vZ(6(jd#8v-{Hm2$T^_!Na)Ih*l`}ai8E2b7y{4O0v~;b+E_;* z(^2532N59vyGU86IUXica1O|YJH}ykF{oN5L4)sD8gTA6-U(Q-9jnX1`IaK^%KEU6 zGC2JbhBHQQ!N{)gV^~Krm`n)H^>l{>&yY8y0QepWJ{JR~_zT{B8mBs{U@!A59}S5H zLWghJFX+#Xe4!?I*AD1MK`vPoS#S$P=4fJsH~z#L{yRxC3F{pR{9Oj7mx3733{{Gq zR zos_x*yqp97jsvQff&JD-OkWIX{Q_Q81ccc<)u9`6}3Kd*EORUX+IbyQ%>PCt{?B@U|FeZvmw98nqlJ zGR6|rO0!{^FMu1PU^`Zvvw47f=fVyq09nUle!GA~Pw;MnaRN~H^Ti4je0~hyS`I{P zhWw&FMyUl2#o?Lt(9M0=V>sqL6Dv4~*zu91VZ`^afE!>%gR!2PsP$(7@e**o!Wk$# zP%aD-EecuvcmAy`bnk}M?FGWOg61jsc{=+7yR_j`XIR8Z$hQ!3kU7xBHB`bJ1XBe2 z`-=SO4!nCZq!|lO;5fOJ2yG++2`)o=ci_b@fk!_uW(FcmGCc1pFyaI(a5e0u$N%F- zQ{EN+whVuJfVCLm^DUs8$ym>Npx_DM(>k&cpU1*y>)@nSt^fO83)p@W{G|stKu5^) zKb(k!?j8H{-}GS05B;g*P4|HZ9tK&xr6$rF%TDwYrl*>r$5X5js+VGDbZ z*R8{P#^a4mAeor|uPPMYUJNlY=>MN%@l18Z{EF}$A7r^2=KLCVav1io5jovhWLksp zZwfR!^Zya-0{BcCEQsJ872*3$@%EmGlIqxhDSC7%{9BR^JPiuTj`# j8V&X{7N5G|?)sR837SfVHEf674}r}L!&pPG!fyP323d9+ literal 0 HcmV?d00001 diff --git a/breakout.c b/breakout.c index fbd9b94..b9c3d5b 100644 --- a/breakout.c +++ b/breakout.c @@ -21,8 +21,13 @@ extern int width, height; #define BLOCK_TexturePath "assets/images/spritesheet.png" #define BREAKOUT_CountdownTexturePath "assets/images/text.png" #define BREAKOUT_PausedTexturePath "assets/images/paused.png" -#define BREAKOUT_DeathSoundPath "assets/sounds/death.wav" #define BREAKOUT_IngameSoundPath "assets/sounds/ingame_music.wav" +#define BREAKOUT_DeathSoundPath "assets/sounds/death.wav" +#define BREAKOUT_HitSoundPath1 "assets/sounds/hit1.wav" +#define BREAKOUT_HitSoundPath2 "assets/sounds/hit2.wav" +#define BREAKOUT_HitSoundPath3 "assets/sounds/hit3.wav" +#define BREAKOUT_HitSoundPath4 "assets/sounds/hit4.wav" +#define BREAKOUT_HitSoundPath5 "assets/sounds/hit5.wav" #define BALL_MinSpeed 8.0f #define BALL_MaxSpeed 25.0f #define BALL_AccelerationTime 10000 @@ -60,6 +65,7 @@ bool BALL_IsInit = false; bool PADDLE_IsInit = false; bool BLOCK_IsInit = false; Mix_Chunk * BREAKOUT_DeathSound; +Mix_Chunk ** BREAKOUT_HitSound; Mix_Music * BREAKOUT_IngameMusic; void BREAKOUT_INITIALIZE(SDL_Renderer * renderer){ @@ -80,6 +86,12 @@ void BREAKOUT_INITIALIZE(SDL_Renderer * renderer){ BREAKOUT_CountdownSourceRects[1] = (SDL_Rect) {.x = 1, .y = 1, .w = 242, .h = 665 }; BREAKOUT_CountdownSourceRects[2] = (SDL_Rect) {.x = 245, .y = 1, .w = 443, .h = 665 }; BREAKOUT_CountdownSourceRects[3] = (SDL_Rect) {.x = 690, .y = 1, .w = 443, .h = 665 }; + BREAKOUT_HitSound = malloc(5 * sizeof(Mix_Chunk *)); + BREAKOUT_HitSound[0] = Mix_LoadWAV(BREAKOUT_HitSoundPath1); + BREAKOUT_HitSound[1] = Mix_LoadWAV(BREAKOUT_HitSoundPath2); + BREAKOUT_HitSound[2] = Mix_LoadWAV(BREAKOUT_HitSoundPath3); + BREAKOUT_HitSound[3] = Mix_LoadWAV(BREAKOUT_HitSoundPath4); + BREAKOUT_HitSound[4] = Mix_LoadWAV(BREAKOUT_HitSoundPath5); BREAKOUT_DeathSound = Mix_LoadWAV(BREAKOUT_DeathSoundPath); BREAKOUT_IngameMusic = Mix_LoadMUS(BREAKOUT_IngameSoundPath); printf("Game initialized!\n"); @@ -254,6 +266,10 @@ void BREAKOUT_DrawLivesHUD(SDL_Renderer * renderer, Scenery * scenery){ void BREAKOUT_DEINITIALIZE(){ if (BREAKOUT_IsInit) { printf("De-initializing Game...\n"); + for (int i = 0; i < 5; i++) { + Mix_FreeChunk(BREAKOUT_HitSound[i]); + } + free(BREAKOUT_HitSound); Mix_FreeChunk(BREAKOUT_DeathSound); Mix_FreeMusic(BREAKOUT_IngameMusic); SDL_DestroyTexture(BREAKOUT_CountdownTexture); @@ -270,7 +286,7 @@ void BREAKOUT_DEINITIALIZE(){ printf("Game de-initialized!\n"); BREAKOUT_IsInit = false; } else printf("Game is already de-initialized!\n"); -} +} /* BREAKOUT_DEINITIALIZE */ void BREAKOUT_DestroyObject(Scenery * scenery){ for (size_t i = 0; i < (scenery->BlockCount); i++) { @@ -445,6 +461,7 @@ bool BALL_CollideWithPaddle(Ball * obj, Paddle * paddle){ RECT_SetTargetPos(&(obj->TargetRect), &(obj->Location)); } (obj->Momentum) = VECTOR_ChangeScaleTo((obj->Momentum), (obj->Speed)); + BALL_PlayCollisionSound(); return true; } return false; @@ -457,6 +474,13 @@ void BALL_AdaptSpeedGradient(Ball * obj, int FrameCount){ obj->Speed = BALL_MinSpeed + (((double)FrameCount / (double)BALL_AccelerationTime) * (BALL_MaxSpeed - BALL_MinSpeed)); } +void BALL_PlayCollisionSound(){ + int sound; + + Mix_PlayChannel(-1, BREAKOUT_HitSound[(sound = (rand() % 5))], 0); + printf("Collision sound %d played...\n", sound); +} + void BALL_Update(Ball * obj, Scenery * scenery){ BALL_AdaptSpeedGradient(obj, (scenery->Frames)); (obj->Momentum) = VECTOR_ChangeScaleTo((obj->Momentum), (obj->Speed)); @@ -476,6 +500,7 @@ void BALL_Update(Ball * obj, Scenery * scenery){ oldMomentum = obj->Momentum; oldLocation = obj->Location; if (BALL_CollideWithRect(obj, &(blocks[i].TargetRect))) { + BALL_PlayCollisionSound(); BLOCK_DealDamage(blocks + i, 1); if (blocks[i].HP <= 0) { (scenery->DestroyedBlocks)++; diff --git a/breakout.h b/breakout.h index 630d395..c4efca2 100644 --- a/breakout.h +++ b/breakout.h @@ -76,6 +76,7 @@ void BALL_CollideWithBorders(Ball * obj); void BALL_MoveAwayFromBoundaries(Ball * obj); bool BALL_CollideWithPaddle(Ball * obj, Paddle * paddle); void BALL_AdaptSpeedGradient(Ball * obj, int FrameCount); +void BALL_PlayCollisionSound(); void BALL_Update(Ball * obj, Scenery * scenery); void BALL_DestroyObject(Ball * obj); void BALL_Deinitialize(); diff --git a/gameover.c b/gameover.c index 2dfc649..eb22ede 100644 --- a/gameover.c +++ b/gameover.c @@ -11,6 +11,7 @@ #include "gamestate.h" #include "breakout.h" #include "vector.h" +#include "highscores.h" #include "background.h" #include "main.h" @@ -33,7 +34,7 @@ SDL_Rect * GAMEOVER_UploadRects; SDL_Rect GAMEOVER_TargetRect; SDL_Rect GAMEOVER_ScoreTargetRect; SDL_Rect GAMEOVER_HUDScoreTargetRect; -SDL_Rect GAMEOVER_UploadTargetRect; +SDL_Rect * GAMEOVER_UploadTargetRects; int * GAMEOVER_Digits; bool GAMEOVER_IsInit = false; UploadState GAMEOVER_UploadState = Initial; @@ -74,13 +75,17 @@ void GAMEOVER_Initialize(SDL_Renderer * renderer){ GAMEOVER_ScoreTargetRect.y = 450; GAMEOVER_ScoreTargetRect.h = 183; GAMEOVER_ScoreTargetRect.w = 1000; - GAMEOVER_UploadTargetRect = (SDL_Rect) {.x = 0, .y = 600, .w = 1000, .h = 200 }; GAMEOVER_UploadRects = malloc(4 * sizeof(SDL_Rect)); if (!GAMEOVER_UploadRects) printf("FATAL: Memory Allocation Failed!\n"); GAMEOVER_UploadRects[0] = (SDL_Rect) {.x = 1, .y = 1, .w = 4634, .h = 732 }; GAMEOVER_UploadRects[1] = (SDL_Rect) {.x = 1, .y = 735, .w = 3981, .h = 734 }; GAMEOVER_UploadRects[2] = (SDL_Rect) {.x = 1, .y = 1471, .w = 3024, .h = 666 }; GAMEOVER_UploadRects[3] = (SDL_Rect) {.x = 3027, .y = 1471, .w = 2391, .h = 666 }; + GAMEOVER_UploadTargetRects = malloc(4 * sizeof(SDL_Rect)); + if (!GAMEOVER_UploadTargetRects) printf("FATAL: Memory Allocation Failed!\n"); + for (int i = 0; i < 4; i++) { + GAMEOVER_UploadTargetRects[i] = (SDL_Rect) {.x = 0, .y = 650, .w = ((GAMEOVER_UploadRects[i].w) / 5), .h = ((GAMEOVER_UploadRects[i].h) / 5) }; + } GAMEOVER_HUDScoreTargetRect = (SDL_Rect) {.x = GAMEOVER_HUDMargin, .y = GAMEOVER_HUDMargin, .w = 250, .h = 46 }; GAMEOVER_Digits = malloc(25 * sizeof(int)); printf("Gameover initialized!\n"); @@ -89,6 +94,21 @@ void GAMEOVER_Initialize(SDL_Renderer * renderer){ printf("Gameover already initialized!\n"); } /* GAMEOVER_Initialize */ +void GAMEOVER_MouseClicked(SDL_MouseButtonEvent b){ + if (b.button == SDL_BUTTON_LEFT) { + if (GAMEOVER_UploadState == Initial || GAMEOVER_UploadState == Failed) { + if (clickInRect(b, (GAMEOVER_UploadTargetRects + GAMEOVER_UploadState))) { + GAMEOVER_UploadState = Uploading; + if (HIGHSCORES_UploadScore("TestUser", 244)) { + GAMEOVER_UploadState = Finished; + } else { + GAMEOVER_UploadState = Failed; + } + } + } + } +} + void GAMEOVER_Draw(SDL_Renderer * renderer, Scenery * scenery){ int i, count; @@ -110,7 +130,7 @@ void GAMEOVER_Draw(SDL_Renderer * renderer, Scenery * scenery){ SDL_RenderCopy(renderer, GAMEOVER_Numbers, (GAMEOVER_NumberRects + GAMEOVER_Digits[i]), &target); xOffset += target.w - 1; } - GAMEOVER_DrawHorizontalCenter(renderer, GAMEOVER_UploadTexture, (GAMEOVER_UploadRects + GAMEOVER_UploadState), &GAMEOVER_UploadTargetRect); + GAMEOVER_DrawHorizontalCenter(renderer, GAMEOVER_UploadTexture, (GAMEOVER_UploadRects + GAMEOVER_UploadState), (GAMEOVER_UploadTargetRects + GAMEOVER_UploadState)); } /* GAMEOVER_Draw */ void GAMEOVER_DrawHorizontalCenter(SDL_Renderer * renderer, SDL_Texture * texture, SDL_Rect * srcRect, SDL_Rect * dstRect){ @@ -163,6 +183,7 @@ void GAMEOVER_Deinitialize(){ free(GAMEOVER_Digits); free(GAMEOVER_NumberRects); free(GAMEOVER_UploadRects); + free(GAMEOVER_UploadTargetRects); SDL_DestroyTexture(GAMEOVER_Texture); SDL_DestroyTexture(GAMEOVER_ScoreTexture); SDL_DestroyTexture(GAMEOVER_Numbers); diff --git a/gameover.h b/gameover.h index 69c27f0..2f348a9 100644 --- a/gameover.h +++ b/gameover.h @@ -15,11 +15,12 @@ #include "main.h" // Enums -typedef enum uploadStateEnum { Initial = 0, Uploading = 1, Finished = 2 } UploadState; +typedef enum uploadStateEnum { Initial = 0, Uploading = 1, Finished = 2, Failed = 3 } UploadState; // Enums // Prototypes void GAMEOVER_Initialize(SDL_Renderer * renderer); +void GAMEOVER_MouseClicked(SDL_MouseButtonEvent b); void GAMEOVER_Draw(SDL_Renderer * renderer, Scenery * scenery); void GAMEOVER_DrawHorizontalCenter(SDL_Renderer * renderer, SDL_Texture * texture, SDL_Rect * srcRect, SDL_Rect * dstRect); void GAMEOVER_GetDigits(int input, int * digitCount); diff --git a/main.c b/main.c index 2a88d7c..7488ed7 100644 --- a/main.c +++ b/main.c @@ -33,12 +33,15 @@ const Uint8 * keystate; // TODO: export all this into scenery and enemy waves SDL_Window * window; SDL_Renderer * renderer; SDL_Event event; -bool running = true, fullscreen = false; +bool running = true, fullscreen = false, LoggedIn = false; GameState gameState = MainMenu; Scenery scenery; Mix_Music * MenuLoop; +char Username[50]; +char Password[50]; int main(int argc, char * args[]){ + // AttemptLogin(); INITIALIZE(); Uint32 fps_lasttime = SDL_GetTicks(); // the last recorded time. Uint32 fps_current; // the current FPS. @@ -84,6 +87,10 @@ int main(int argc, char * args[]){ return 0; } /* main */ +void AttemptLogin(){ + +} + void GAME_Escape(){ running = false; printf("GAME_Escape was called!\n"); @@ -158,6 +165,14 @@ void HandleSDLEvents(){ } /* HandleSDLEvents */ void mousePress(SDL_MouseButtonEvent b){ // Debug prop + switch (gameState) { + case GameOver: + GAMEOVER_MouseClicked(b); + break; + default: + printf("Gamestate currently ignores Mouse press event: %d!\n", gameState); + break; + } if (b.button == SDL_BUTTON_LEFT) { printf("Left mouse pressed at %d, %d\n", b.x, b.y); } else if (b.button == SDL_BUTTON_RIGHT) {