From 4657718bc9a5ced99eb5f9c3dac85f9dfb866a4e Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Fri, 4 Jun 2021 14:23:45 +0200 Subject: [PATCH 1/5] Change the game control --- Plague.g1a | Bin 65184 -> 65344 bytes assets-fx/bground.png | Bin 18902 -> 19054 bytes src/core.c | 40 +++++++++++++-------------- src/data.c | 62 +++++++++++++++++++++--------------------- src/display_engine.c | 14 ++++++---- src/display_engine.h | 2 +- src/epidemic_engine.c | 2 +- src/main.c | 2 +- src/mutation_engine.c | 20 +++++++++----- 9 files changed, 74 insertions(+), 68 deletions(-) diff --git a/Plague.g1a b/Plague.g1a index 29520fea59c122d61c0261acacba8641624b3180..61beddd2b084c54226962ab9cd0203c6e8cd2719 100644 GIT binary patch delta 6342 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 delta 6151 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 diff --git a/assets-fx/bground.png b/assets-fx/bground.png index 16eac62ebc335d7fcebc0d8f43f27a44c57b21b7..fa6f7c358f08180f69bf940b009ee41eace2ed79 100644 GIT binary patch delta 14717 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 delta 14737 zcmXAPbzBtA^Y`5mM|Z=~-5i}B-QC?ONO#=P2uQbrAR!IXAi@z+B8`-EHxd#O&*%Gl z_K)3t?ab`FcV9EJd6otIl?hB^1}>(v(8J$YNM^*o_>z7@ofz;@LC2iK3%P%SRFt(@ z@)jdFkEPYM9M{yLj1vSq{`>G3@70%!&!6=ydFvK*YxcEig9k_PSK-g&w}BV;PfyQb zFNyG%zg;Ug$HODHgSXc=kqvVXPO^Lg>ri{w-G^4GtUiqDUMZ)%H3tuzFR zNHX@%^DdnMsxRPN)>m`4qCfiHLtpJ1$TWn#i$S|zk+`>3+I>z|JA2A8-vQU!|MwDF_ce6VIY7`jrzJx3D3tS@ zZLK5EFNCfpO!%4a@%P%oMvY`sATi`>g|8=of`KT9+NY6!0Czup-BxgrM%z6s)ti|8 z+b{hjrn8;ZBx38$p&X^AIm|uQ?zhIV9*%qAe{T5r z{2KIRP}g4_E12=uS1LGCBz}0_vqV*}z1z_Z#(sRd*{Az1OxSms(<#_@xUf%D6Vvcp zkG7orV2~Pn{goqOLAWKN&+EM3Mvf8G6K5cY+w*-<&ITg+C*Pt{U&xyN=dJ7byJ+H3s#iClHvW7Rcv zJwpZWua|;zEdy6pPrrOtR7ck`X?0qS`$>#f<#);PxhUX)(%DMywBo&IC;X;u<-FsH z&8_cS6ZXsX&ABp9m@-d~%Hg|HHn*^r)^l~#K2_cE1e5W|1W`pqOiE(@Im7+|iNyEu zR29Rl5%#1gds#xJsQVa`H+OGWUzE?m?NbJoS_`^5pybnMjy; z#r@;&q_i=eq$A?pz~enTUtjp>$Zp6RkH#Sl8R%PLBdXTLq9v{y$>^SoWI@1Xk;TGB zeWGg~mwD3XVM)q^#;>ZI2LG^1X>y!C>;G*f?g-P25a~VP7X2sv?^+il{O!LuQp~`_ z-|5qZzx!mX&-PkYOh?d+-jSLanN)Xgu@A*^q-&x+IiY@4I%aAF3^dHc&CNXSwmZ$* z=j|6|c&GST(R%~XtUIxR4mT)4=Ss=?F8*qf_$O^)S~xXmPTnSwZN{znoz}LrI8HHU z{aR5n3E_=B!8+7$(jsUtRr=@|nNfPrzc#!1|0*(B`A&o1Xo)F`Nsir7_~Tt^n{dH; zXiQ6rWb65S!G_hgovP#%W;=UG$_1J8;B6w%0ZP&Pi zO?Qsi`#F$^{y>%M#8wEEtmc^{yXp3E3A-z6)|js1N-Ka4#M=Cf^`~XxnB1!lJkaFAqmY5XUoYYS7)DbUa&?FSkWEg)k>AGRFeEtZ33>pJu+-!0>n#0YTCcY zmHU8Ti{hH=3ps^~&Tjneqoxp}@zPrLWvbucLSdM9qvXI%7p}oG8t%A6UAh#T`|xf~ z*$pOn-mqC=%E1gyp+j$p<1Zy;RB-PQZ7irOk{sdvwF>RRAVSPCRXNHmp%Lbtxf<;Y z40k0K5{XOjIKtfsA4@C3ZG|~Vcn8whGMN?3XpwoO+uK~VQ0F)CM-?hm|o@;o!5s^A( zL?n>;q+f)zua2)2?boqWF)t(oQr2>Ur0@!+4r^cGhi3?-!U_>sS;%pGOb$GFC+#*F z041UoCGWnXdc11Eb9f|BESnKfA5?m<-?G0= zQL9r;$xHk+NC%yhQi;yE0f!sWy}r@lvA%@6^4*PYG)eW~q+TtIJnI5ptp` zm`d4y5pFcZ>vDV0Xvw+gyG7Kt)#ed*Dbyqhj$c}DIh{`zsambaxH1M~K**H24hO6b zWm*>{ViWonMM1v3F%Iw-8qCT|AkUl7LDy9AxELUs(XgPds ztzrh%4dMIR3(~#;wconhB|ET>XR6vtRH_ACsv;k_eD_!xyzL(yxYE-#e8Glt%LeQ{ z=Y@RVLFKu4IsNJLCP^7(S+jdi7V^Wr&grxr6dDYgkX?GWtEM~qOuD4xI9v1|Eej4= zF5jQ>vQZfJ{0waTfR( zC@o|d#`CU+6%a7m<;R=!s0t?8-6?_-vus7e<<~ULU55aP`(nS`Z0PPXVyJDk6;SVh zDee18NFDRn90|l8rEYSsqadRdCG!OSwpX|d&?)~~V(~7+empe!0DpHEYj)#{@(Wj$ z!~!OWNVJr5=GY)-9itF}2jgVA*3R(*3G@6b^+=IR8d$U1f@ry&n7(2wECSA$`pAd^ zMx(2eld;6OoS=7c&`8^2Nmc9Ofi|8T6KI*OWaOToM*hjC=B<=06eWBd_(OZllRv5>)1aAmP&;NtbclMsvmdya zb{Z!F9?M@?Z0OLJFT~Hlg-?Tci(3ib(B{I#(%&fNeooso;Ra736QmsRl{NFqPMV5} zDz2kYIngG_RnT;OS8@H5DFJ@I^lbrca;B2P-V; zIPrTl2*^2a$j3+!mLxwRjyKvfdE30`x0ssd(@dWx;yd`=W8&}%;mg_vallxIP9X;N zGy)@b5~-~37!XGq!OL9tpN0v2%d!G0@yTOn&WTkLNdOKQ^M zr{Ar&X^;X|Cd|67VxkXV8Hkq8Mv2GA5L4+=j7Btq)cZ$0%sfng zK{pul1FAVw3HsoPzVxZntc!LVDr7j~=EMX@sCtGiE!YTdqxVq8aS&&THt*%%%+E#0 z=jP~eG#qJH_#NWQM5sn@3w2OvqW3RFpbEw$s3O1x!C$Z({D-ACd76)~Vi|;wOgJ*6 z)BBEsY-%^K&{1#wvvB>@RqZ(50v`57(nuh8)s@GEa|$9^If0ah#x~kh(-me)lo1e| zTcKLA7D+Z6NRpQ0Mj7BfElPw9fh{o*;GP~p*c80m`NhMRLg4M}gaN0J)?h20B zmS6qLg+8^TN|MvnyeKSBPTHIG7Qk<7GG>W=Towf+zpzqudR;SCDN?NT@P|?L4e4LJ zT4{|M)abcJnj`XH4#1>;%185BU#|>=xUVNQ_@B}j6;%gZdDb6&jY7begf~&cQ!yh^ z3BQMlwq|uazlSY|bzp79&?nt9?~cGn^}I?^O9Wuj5z= zZPKvHS2;V?3T?2e_PG1P`(fAuQZ$9`70nJitzz+t?@JK;Na&tL5jx~^1f`4UH{~BC z#rP%?sP6Qh0}S&tn*4`m^?Bj_R=ZzBOH-h345~Pwt}u$`cqgENS8=gmdYqL$_nks79!3yyD5?QD&y~`RJ!y{-V1T-` zp8giPgN$$-ujP&?!>F}hac!Z#N>tWz(i0!-)D~i!di!=*OI(;CvgoJUM<#kYP`3R1 zmXg<_?&(y~6a_A3WB|v=n-cgE$1)Eiz>k0$-ieuB zUC;|0(CHwc94BJik>nNi5m3e<{WP9j9J#HVWXXfePOTYT95t*T@c}n6y^gXjrRW;q zQrvAS%&~?c2SQn$n(g>HDwzQjqQSvl3Yzm&IOD06rV|E~03PmWdEq^|A<w*>`yQlpq~Qs)#!n5^k;Kjp(Zi&If^R{ zHPMDFS2`*?6gDKx6DqUgRMhT*X|N0q&~Eh1GTzrpLwKvTW5w3%o5sbiX%;yiMN&)$G*{d3ZroD~)@m7B89i<{CTZCu zqO9)+J~k@ooC5uf&}v0##u&eHnn~Ov75UK__UE71m$L3;Gy6uSo88I(K)S8j@O8L}1tZ2idYi7O9zVxH+cf&-bO%Y5Do^xNt`;WLYf ze?|;qY%|Uig=ADQrp=+WLLzNj^U9jbWr%*$|MC2>RF*vL8tWh10kE92i)lz0ALYIa zdPf|in_>0&4o0sTSpCXxZ>mTM@)N=w(!1|fl02IE4X??U{dM)bsMNsM=YMHB_%Cv( z-iQ2H49CGwn=s<;PF)tjEwn9B_cun%)eBE z=TlrsDMuuUrk^xY(DthQ!^nK?&q}I-fCBapIXMch$%pW`0~0)UQR5)ykFFTkg9^MU zFDj^VXqGp9VAeZIoyZa$37GzbZ~)m^<*i)ZE~F2b+A^R(&hKi`7k+3>mB(Fb1kH?l z@n%Rcy}-@J)YnngPK_vil@eJoaFoo& zOlmOD6yRU$SAB^&rMVyky3m9#tMA^PR%lTw^@9$P;rWEE7zTUKF6nb63h8OgIU(+Y z4^YpFVi~ZfavDq+4cLlH)!8I#E~(8?IhS!NU6q~|@3vNPgXq^}|yx+I!=-^}Cg!JjKXOycP76j0qapI6E*)OGu8YZv6 z3uVG0xes`PKG?oqR%9ANeNUoHY#R>5ZIMma61%4a{<sJz7c2Mfk6YA1B$U@c&KfU>`rUh0L!5kEYp@3Wjk zSQ8l%&rC6ryOF+A&P5mGOlYEWoL7}Mf_1BcK~%&%^$R86?QNQjgnRvDx()=^mWtd zIeV9Zi!I`KzdZ1N#vr7Na~-ZZKC>|CG4gEr_igcg${9A zu?VBPde8UDOZUeGL%h@_``pe;&w$d9T(doPbR~X-U0Pscqv22IJ{EL$8)pF79P3(C z*mPXaI;O&0BrRFBkgPtM5F{T4%;gm0jDN6aK9E>LjQ69_s{)F! zq>ru%y)s1;f1-#Yq{!hrjE3ghULUpWcG<(WpL8`fZ&0n7swzDLryNjs^!%3r?rWC( z3U+UyJ>=M!6flzGTw@GGNn~zIFO|e^f;DR8Lguf_6Aa+ie9X}G$e#?iaTCB*g(Erp z<&nRa%pz5GegsPI#gM&7cdTX7+wRINCRvO3m-l8~r>n+(i~;cAfrfXehpv?jY=(}I zS^uZfbraHO#AiIKRXm(AKl$&6Ojxd$Rop*>{b^8rD#p*=E)yC{`ID45T#uaIao?<{ zXc*A6#w$WhbOEm|x?f!it^O_W&ksdeRe>l*yq?5}lVbqMpc`#4ZT)54WeHEj=ACGH zipw9YO|JHM~(5Zmz3}^48jgsjK(+YETazz1)rd*#E{pop&v?Y-9X8F|GfO6pyIS0(OsDzE?G(Z z7^@$3cU2^41bS>o(d3^l;@W=xx2qtRgY~4PU*?rkfimD`c{x`x4(klUZ+Q=7EjQ~c z&~@WkL}~Bb8yRr)CK=}OmT^~62kFI8So9imiFRC~(0J^An<|Sx6aAXM$MuSQ%}|p& zq1*WIMFOp{+jXuSh1xB`CsafB_qUy;*3D91B6f)ka!pJdBjN9Z?KSny7XnK(MCgsm zEC=HojJb1gLU%XEV|U_?u2*-HSUclH^g0iYloe(ySr`4oQS7s_{EMCnT7&5Z?$6@O zEYooxNoBv-uAlBsu*GGCMWy_ozY&mr^jJ5P*o zM<8kxb&4+F2N&8p@#uJ^R{Ig5Q9yNAQ0Bi(%Or1_RebOx`9VAX?@Kq-_W>Ke|sp{1mFM-n6 zXHKZJeig(SR`>eV6LH~Ty(bUv81?)s-JJ`EM`%w;)0nrOQBs09L&QhE9-y z;|=q}ZHe?!=VxV;+nxRXfrvJ^XQ*hcMyvYb-<0D_X-Uv91zbrGdbQ@p%P=4Jl?*Ir zW;zVYwa|ZPlp9QvKH}CV=l~iPEo@&4;m!Uu*)Z-jUPo+rN!83G>OUXK%0hj-~C! zPv^Ax#vF30C|#wzted7Hqww6x*k41|6~IieNl?MdJUvbGHpm-gnQUaF_!3skbfNP% z8vZEYfkkgUeT9+0{1FDNEyEpLtz>)yC1=Vw?}&`8*Yrq@d)1e2>rvq{zSHU@{k^LV z^^34U!?IXWQeMEaE{IpEvkZd9-^| zrGz#Pl_S47F3<%17Hn<<5HJm`^u(trhL;P>EXs_^X65Sj357KU^J5~SNE{abNK|Kh zn*S0Tu%f3-N0yQw>1o<0G7|UX?iCUZ<|>z&?oCFKjXcRYcXBHtcMD@nDRz7p(mPvX zY;J{(=pKvW2l(b0)V-(KJjjaI;(xttH7sudl*c?VSs%JkxWm~D}zgv8a`} zMLoLvKZ2TLpdt2e(~wsSlcAYGm?|?)Gbcz!1D=?kJ~EHLzPa~gUx6St&%$$6ZaZZX zDbbldt#Y@_R@MAM;E{YXo-5Pp!YMT?1f%+ZSNSLfytME5P6lMUYowseN|k$p-WuJd3CI*rr&+BUTl9cRLG zpo2NX`DGcz@k>5ls?Y!fyL7g~ZSb_jJ_=;}tre9wRKKIgG+VNGi2YUTL^a*$z0If54Ie1Go<)tEnQ8<33A}ExqvS7may=?xU&2O1p{k%d zYypUOx{X$rZ&N#0u3xJ#dQ2c}Fz+7_pdNXYMj4rLHXvOME*-GvW|(hat8diauN06V zWE~_7=B}$v0krYmFJRdoEt`Fmz`{38b$5=hn5Bk`ZAUjuUBQ4}Sj#R-rWT*t?sj5O zXIC)zaG%s|aIj%ViZl{{I!kt}REPbzP1fQ$PI`LfY~~(Wirl#ryR#SrWeK;MhJA*6 zS0A5{gi<}{^J2MilRR$MV&5}jN<)94*SjQ;A};V0mz(ff)$%yOwL5x<2{3H9Wwh}Y z$PX7Mw$#kH{GbP39+f8)_ovM1I?3OmRivJYNugJ_kUx{K$xjh6X@*lal8Co5&tb>t z@J~}~`2~0u@FdqnT(6ubxG8NZlxlS{R*i-hp6F34B)Y=e%mujARm7`^eHglGKOhE? zb==Zys@_))Jnq?;M<<20ZBu>1{NsbZAHWac&ABH^uQOYJ!@@zpmQKeRC_7AynJgB{WrE>Soy@0>bjz z?r|N%RPZ3&&&yLN^-hIzp2;cg17@8#LJ38FvgQ9uq%RX3vP z2h4c!S#F3na&sG;JQ$Tx@s6Zoq}4ZqnGb^L&C%*6e(FM0lvh-;7O=)DtX=A9FN&M82Kt^vb|6pR#^o;QxuTsT}w&CBlJQpk~$~>@Z0#XBaqX8MT z|55$Yf-mrqoWi(TPH`=%9|r(_x*C7_Hnss6ZM$9`mwcJc(Ckti(6`TmLj+8Jt z!r#dENVQ01hsG68uXI0dtnIKbl472kPIg}~YfV?ZRvGB^iW{@D06y0^7wP$i@&-An zQ)87HjO$QOruXfohGs5D?N>U5wEdB``CkqGmDsE$Ke=B?XDf#!g==lj?^Xr+B|h%ckJD{hcV@p7cky;UrRy zi%H1LUx(?R9F+#10^mn97b{F#3)T4J5ffTI)cQiDorNkh4049CK*O4=I!X;p=^;lbOSyh@8ltaGZ8kGDm5f|zej zW*7-e;vT+=YZ*Ed63_=b`kS?s`N`jP0mstJlQ3G2P%P>;a3tm)$I`TmO^t@a>%^pU6QL zhMCG~Y`MIo;iTPOASakNjfwhQ2DS3%?dfv0Z_fef>+lFJLTW2-mQ1pTgu^3%m_c%u znZ#SGbEU(O7{pXFulfo!Fjm1|_UN#7$qZRJAmWa;-Q3lCzFP05 zq_B0pkAG}((_$lIQ0HU~^Eg5B%ux?4%u?mMvCF2;xxMHPzv--NLn&u?#qr#Z<5^3w zi#Rh6QyJj1}Nyn%R0084$<>hr$<>l$U zd_0|8-5mjdpbz2c(kcTwB(d81t&F5#$pkTn$|x6EgF)RIofxbVBbWKUo$^<5nQ_eD zzw3JOh}|`t_AKF1SQ0aGi*UN-%^G=jcS)oRJmd8NRB|H*cBje1H37y6QGz2ZJ#e*~YmNHxO%k zETiv-Z((qaasCniQ>jYM9I?~2^@n;t>IY~tIqz_e#yiG@yQOiazt+WVFmq7XaF)Y* zB&gPBZL2n$v({Vtx!+66+GMicJjD6D*@084lme1bleFBnU&Vzpm)DK&g18 z+91+;KseQmYhfWO?1&F z6xqkXZ%}+9{4p@FZQ^vjXy`El;8EvOZiZdx3IGsPG#jxdf|&V*97KhL1^9U!Ler1yAd}c@m)}rge|?#*Ga^A7eG48~)?_^bbr>40^(ER7n%=`*U^g zh0*Mh;4XV_+tZHYjBnNZ2PI^)(}TJ*#Q1I5GhB3LnQBs(1 z;d+d2e!s0Z9PW&vO&S+Y3dNhoP$QhLqs5Yc&v8sQ(v@6N6oKspr#jUz^vghC_$Y2i zlHfN84ePTGY+uR7`v)>sKJQ(;8@sFU{>)QVeS~lC(P$NvJw@ihw!MS+@ai7NJBTAV zY6$jPab+tSfzv4(YL(2)fj34>L&}AOn+0haDJ;SUFuMq;g9`>`{+_AfJ;tMWxvApg zRfptJZmH`cOiLxtor;D;Gb~@Im;`Vd+{j_tRoI3sML>nqLPlboL-0Bqpq>bUh) z9^0V(bH@J6-*ClLt(BsYv)yhIPI&G!=D1aLMlWTDvS9_LgYTw`P9g*0a_F2@n3tDDC+T zAdX>S$_HL8Hu55ok!82=J`u{Pe9oC(+g^=5E}{@I)n2Uk0@4H6R!RDm-DXaT8RX$h z29&bLmR>D56u|H$U9*bO%W{*?e@F=j>285P5dW5tikWb}Z0<1nVZx)M!gICgHi zz{vVpYi%!w*hAralV%w#$ae$2K!A80*>#eGT|Seto&}hz=_&F4fcf(IfIt~sC*$B4 z;G4B3&HRNdQ%}M9fI&a`+^l!oNYc{kQfs*^W$}os$Ufbnkrm!7q!RtZ+ro;P z2V2vDk>SINQMN9$?p%w2X{YluL4A=t){b0H#7k^UW1rcVSUaU-UCs3ePThf25oZ4g zL{a483^}gpp^wPT5k_To$Y{aU3|3Upwkz*_rhO}Y^RwGmb-Y+(Qq5>52I8$5jI{P5 zarsX-Knp!}_3feWe9~}}!DE-+7kbTE*VYJgGepF(wl>zt2u<&LO@ydem}+&H$Qeo6 zPfLLuG-1Wf(103jEMd9h4qT$AC1-z8n$7PLzx}iG6E=%7nsFZ=X%Ddco zMp0q|C9nGDWm1+=t(*sBrO;{*|5nQVN@|?Qmke)d71(T7X)boI;_~uL88KDgF7@2m zyj5MA{viji$T56QynMtz&Hs2c<=~x~i%I=+`uTFT;d66gdD%DHWz2)rQk0*^z1Fyv zF?bz6!Ke!Q<3bGZ4{aRaZ;T-R5J%A=c4}I&1jBq}RFra<5h|4!j;PWU(v}u9g=Emc zRYZwjB0-?z+5Rs}$AF=LR|=k?09+c71As~l14M^Qvs{}QgO2C2k@lZd4>dY2&5YhS z0WJ+Am`ZH$BwWZV5BIf@7lw}SG}2b&dKy`RYvlspumMt1i4{l6zqhRV1hAG}|DQuZ z{;y@%O32GZ1x*i6$jhs(?Y}2oWTpGEO)c*qL{ceG@}0@ShW3*@-2?*KP>dc)kiEsUjGf@9sK{>#ed8;WdC8m zn$wX!-xHyt5=)-xBc>8Vb(8&1-e@Z7zbVi|FOH0MFfO&x?{2`tC%)_X0f8=Ifrq^< z9Q#EnH-5!*i!&8v>DD=`@5U37l>GWUQ@gDKH2!2qSQgfM+%LCN$km`dQFY14+c{=& zT-tT%(AB*I|5ml&8=j5(qzk{N9ID$+1}v#gF~73p*M&y1{%4Q5ds!*=Tko-erq#&{ z9CZ65x|-+*-$#qZhi;)43NEtG-0X@%U*B^WQC=G_hDh>%;%nj4 zn}z9~11KBuCM`9oaLX@ij*Jt^r+8v63f^A5zkpr99~>Q!(OLPMn9anU>ntn3)z;l> z;(wfQks-^h`}XElS|vJvyMAa|7D)np^Au^O#(AgkPkOP;v%4!QOtJL6h=;zr_BC10l0n0^#s(k^nUd{N-n&asn11n3 zi>n83F7ODVf~+Tn-^^=w34>qx)$i6zQlmH)IF3363I+hg&&pWL#&{&`TbOOn4zmW2 zU+krt+@FoSzX+yU8+JFW@Ab(E5ZRvnZT;)Fn*E>bpO8NH?X4n2XhM;i|8axVOR>eb z4~O)aZ6{+ElM1}Lt3U@2#nTSoRikRCwfSq_G8wM>F1q|Jq&MgT6GefJ?*Mjb z1Eu?oU&DiUnXT!shysEK6a9rK$&g?y7044ujGJX$A&1pyl7U&;khh9YaxG;?t*~LC zAm2ii#PLPGB&|Vf>4NVF*I`IbnyEnBGl}L!csTAhSJhWC@6&QL9ityaM#cy@S&Tp| zD5juN4K0o-CE{uS$xJ8v)a|#-?o8psq}6{R^_%y4hT8cQnOWLttK@fkVl;OL%-a?% z=F+Od!p>qe+hmB!xLF(x42xk(W`@=>iEK_5j*O70wAO_m&Fl4lkYUp>)3CTrbnoHU z6tk-o;I>FnVB14=aKj85S;B@t{NnC)W4})@43rbMj*|g90)v+%ti-0?lWX!IceBOG zk=``q`{HTs-7}3D=AI)lEO*QjCF>4}Un%aRoHxhmSwgdMr6w9v(nMCSIJhFHwx?_L zu-I@gun3x}ve?jO*U@2h$7!xv(d>vFpZ*D!b={&;e?^S$MZgntQ9C^2iP%A7jvPGC zoyR=%FDB{I^7=eNb&vKn_e=f6sGfM|{f_^cbtG#B$7&cvKH24R{{N+r`B1;ko(nBa+r_*oT4T+h%7Yd|;vN%ZO zPXROTa|XbfmC3r2EO<>BLeK37rR*+E=ON2NsBZrfGV zJXieRbEnC>myU)1RlHtBi;aK|A~yz30D+VQ=FuUhSO_vyNk9OA-G)h$z8mXbPXH{_ z-LIj)CkcY|u+sDdI0h3ohc{M`?Wh8|jBTx_@Gd?h%BvfhXc55w$qgAu!u0dpVvSJY z4f9b#1=coPQJUMp5Xs_M-G|x;STD(j33Y?DJl%4l%}?Y`_H$8l9s%*2%jfszgxvKU zkNr|5L4h5RG@YIZiT(R>17x`P2bZ4yu!j4a=w*uy>MP4Vy0OfZC86=#f`<7?_i%(j zZ%XvsqP~X(dB602={v&<00;q~2cW?J7kfVu6px?ntCiSC>_6)Jrdov4T!ropkdwTk zTN`unJb-x8jHY4R_N;`ROsQZ2Qt>|E!^1Da22rB+nP>^5=;|@We%R2S7@~OXl&W?|)42qSPSRMOX*p z1~v%9|9_A$7D<2?3&Rt16!>B(D1Q)LEK(y2eTI6md@f2-uuhEb63jmc!#(?WB|Sip z-$vNoarFPk@dvSS@1=+&M@6*(0AT=hf<_L|Mnh_0>J_l>Y7;y0Bfh6&i|BQVXo|x~ zEPpRthDxj!E-=;4{NG*k7O`MYy?z~}@$QGz*_AQmfuvMTvd}jS&L!QPdi1gV-?K3A zK`nju!F=+m8+r^gDjEB=TjzWI?q;WGpG7eIH`^Dwb3TokB$y7g#8J|$Q|l&p=1NkM z?J`!Cl^&^rfQ$xQ9~*pRlkP4JU|hEj`tLWrTd{Q^d~$lw+&e91f%QxOsm^`Z_}0$x z{C+S4+ClK`!7-KTr3hv5^rIO^@%{tXDc~)rpqNkHrs4R!4Tbg`JER42vCg^GQVi}S zwRQmm9()~O(yTbog4b7nx(0azkOyCQScyL4VHGtc>!%ymfn4)U12V%GiWQ1ppsAo1dXxUpP!brBFEL?LaE6@OQM-0? zAlNi&>thhYtAc*kt%+-Q2{pJ!op%dc&o6bm zR-`}W&1$psA@W>(vw{Pmu0KvtI;hYI(t~gMqGCW{13ivL+gyM(29!$_s;MYO7GTTe z=?NeiT@qQmeSC`k{-!Y(GF83(x<0MO@O*gzPp97Ss6sO>!~b`C(_k0GhCjvKhKTVW zUmI;p0BrWG`92C&T-S$f5lGR9Vgrs@99mfdHi^jP&}~tPwW!6C|BKSomV#BihdZlm zonTVeow$HUx@>BMZITGwJ-{P2)q2P{iJnx5&ZPwrv0+g}JDUU(Y9mT9S|1()!tc8< zfah{?p6N>5vm`6I3=G^fRYFs#d(|3f6bZ3;3wCLFrd_2AKpg$7k%V;huHrSG-WtgR z0{|`bi$Ln4v_94B#pSv~$jt(LMo>FGT!xP19B=y>PU4-_@Ua&3F^ssvOzda!1Kin$3uD_YtV8k9I^nk8{|4ztX z<-0YsuZ{PKd{k!sdv+{tsA^>XLXWcWyf)*@=K!M+Yx~}J2ue8lo%yc(qe>y1m!0jbeNz-i(Nu%jRsV=6wj~k`FLH zKCw_{Sr_zzAC{DgzIOEMC+%yZ&kZBaJ;|k4L7q48v}M&uV^gv_g=nal3fzPFB6lHP+abjj&mCLDyih_Pv7#reUL=dVcei< zdUU)3LNCz@3q;MwHnujc478Ot5jOYinp2KSKBANl`m(d~N^iWPP$jY%0zO9{J(J?O zy{@$N#l5MPYpe3j*gl0J@bdt>UjqIMK!E=riH4{NZH`;6YyTiD#*McCyT^S|{Ca8} bPbf7vL`KQrWNLfBe@RtQOQBxQChGqIhvGsh diff --git a/src/core.c b/src/core.c index a476971..2b231e2 100644 --- a/src/core.c +++ b/src/core.c @@ -54,7 +54,7 @@ void next_frame(struct game *current_game) current_game->time = 0; // Update the game - if (current_game->dna <= 100) current_game->dna += 1 + floor(current_game->severity / 25); + if (current_game->dna < 30) current_game->dna += 1 + floor(current_game->severity / 25); if (current_game->research < current_game->limit) current_game->research += current_game->priority; epidemic_simulation(current_game); @@ -87,42 +87,40 @@ int get_inputs(const int background, int *mutation_menu) int key = rtc_key(); if (key == KEY_OPTN && (background == 1 || background == 2)) return (background % 2) + 1; - if (key == KEY_VARS) return 3; + if (key == KEY_VARS) + { + *mutation_menu = 1; + return 3; + } if (key == KEY_SQUARE) return 6; - if (key == KEY_EXIT) + if (key == KEY_ALPHA) { if (background == 5) return 3; if (background != 1 && background != 2) return 1; - if (background == 1 || background == 2) return -1; } + if (key == KEY_EXIT && (background == 1 || background == 2)) return -1; if (background == 3) { switch (key) { // Symptoms - case KEY_F1: - *mutation_menu = 1; - return 5; + case KEY_LEFT: + *mutation_menu = *mutation_menu - 1; + if (*mutation_menu <= 0) *mutation_menu = 4; break; // Abilities - case KEY_F3: - *mutation_menu = 2; - return 5; + case KEY_RIGHT: + *mutation_menu = *mutation_menu + 1; + if (*mutation_menu >= 5) *mutation_menu = 1; break; - // Transmission - case KEY_F5: - *mutation_menu = 3; - return 5; - break; - - // Return to the main menu - case KEY_F6: - *mutation_menu = 0; - return 1; + // Validation + case KEY_SHIFT: + if (*mutation_menu == 4) return 1; + else return 5; break; } } @@ -133,7 +131,7 @@ int get_inputs(const int background, int *mutation_menu) int rtc_key(void) { - int opt = GETKEY_DEFAULT & ~GETKEY_REP_ARROWS; + int opt = GETKEY_DEFAULT & ~GETKEY_MOD_SHIFT & ~GETKEY_MOD_ALPHA & ~GETKEY_REP_ARROWS; int timeout = 1; key_event_t ev = getkey_opt(opt, &timeout); diff --git a/src/data.c b/src/data.c index 2aad3a3..c8f70d5 100644 --- a/src/data.c +++ b/src/data.c @@ -4,20 +4,20 @@ // (contation, severity, lethality, DNA cost, change to cure requirement) const struct mutation symptoms_data[14] = { - {10, 10, 0, 2, 0, "NAUSEE"}, - {25, 10, 0, 10, 0, "VOMISSEMENT"}, - {20, 10, 0, 3, 0, "TOUX"}, - {15, 20, 0, 10, 0, "PNEUMONIE"}, - {10, 30, 20, 15, 25, "TUMEUR"}, - {25, 10, 0, 4, 0, "PLAIES"}, - {10, 10, 0, 10, 0, "LESIONS"}, - {30, 20, 20, 20, 30, "HEMORRAGIE"}, - {25, 15, 10, 17, 0, "INFECTION"}, - {25, 10, 20, 20, 0, "INFLAMMATION"}, - {10, 15, 20, 15, 0, "IMMUNITE"}, - { 0, 20, 0, 15, 120, "PARANOIA"}, - { 0, 15, 0, 20, 100, "FOLIE"}, - { 0, 30, 30, 30, 250, "ARRET TOTAL"}, + {10, 10, 0, 2, 0, "NAUSEE"}, + {15, 10, 0, 10, 0, "VOMISSEMENT"}, + {10, 10, 0, 3, 0, "TOUX"}, + {15, 20, 0, 10, 0, "PNEUMONIE"}, + {10, 30, 20, 15, 10, "TUMEUR"}, + {15, 10, 0, 4, 0, "PLAIES"}, + {10, 10, 0, 10, 0, "LESIONS"}, + {30, 20, 20, 20, 5, "HEMORRAGIE"}, + {25, 15, 10, 17, 0, "INFECTION"}, + {15, 10, 20, 20, 0, "INFLAMMATION"}, + {10, 15, 20, 15, 0, "IMMUNITE"}, + { 0, 20, 0, 15, 10, "PARANOIA"}, + { 0, 15, 0, 20, 10, "FOLIE"}, + { 0, 30, 30, 30, 20, "ARRET TOTAL"}, }; @@ -25,28 +25,28 @@ const struct mutation abilities_data[6] = { {15, 0, 0, 10, 0, "FROID"}, {15, 0, 0, 15, 0, "CHAUD"}, - { 0, 10, 4, 25, 20, "GENETIQUE"}, - {10, 40, 20, 30, 50, "MUTATION+"}, - {30, 0, 0, 30, 0, "ENVIRON"}, - { 0, 15, 30, 15, 30, "MEDICAMENT"}, + { 0, 10, 4, 25, 10, "GENETIQUE"}, + {10, 40, 20, 30, 20, "MUTATION+"}, + {30, 10, 0, 30, 0, "ENVIRON"}, + { 0, 15, 30, 15, 20, "MEDICAMENT"}, }; const struct mutation transmissions_data[13] = { - {5, 0, 0, 9, 0, "AIR 1"}, - {10, 0, 0, 15, 0, "AIR 2"}, - {20, 0, 0, 20, 0, "AIR 3"}, - {40, 0, 0, 30, 0, "AEROSOL"}, - {10, 0, 0, 9, 0, "EAU 1"}, - {20, 0, 0, 12, 0, "EAU 2"}, - {20, 0, 0, 10, 0, "ANIMAL 1"}, - {40, 0, 0, 16, 0, "ANIMAL 2"}, - {20, 0, 0, 12, 0, "OISEAU 1"}, - {40, 0, 0, 16, 0, "OISEAU 2"}, - {10, 0, 0, 8, 0, "SANG 1"}, - {20, 0, 0, 14, 0, "SANG 2"}, - {40, 0, 0, 20, 0, "SANG 3"}, + { 5, 0, 0, 9, 0, "AIR 1"}, + {10, 10, 0, 15, 0, "AIR 2"}, + {20, 10, 0, 20, 0, "AIR 3"}, + {40, 15, 0, 30, 0, "AEROSOL"}, + {10, 0, 0, 9, 0, "EAU 1"}, + {20, 10, 0, 12, 0, "EAU 2"}, + {20, 0, 0, 10, 0, "ANIMAL 1"}, + {40, 10, 0, 16, 0, "ANIMAL 2"}, + {20, 0, 0, 12, 0, "OISEAU 1"}, + {40, 10, 0, 16, 0, "OISEAU 2"}, + {10, 0, 0, 8, 0, "SANG 1"}, + {20, 10, 0, 14, 0, "SANG 2"}, + {40, 15, 0, 20, 0, "SANG 3"}, }; diff --git a/src/display_engine.c b/src/display_engine.c index 6459bf5..7d89692 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -12,7 +12,7 @@ void display_background(const int background) } -void display_foreground(const int background, const struct game *current_game) +void display_foreground(const int background, const struct game *current_game, const int mutation_menu) { extern const bopti_image_t img_mutations; extern const bopti_image_t img_planes; @@ -29,7 +29,7 @@ void display_foreground(const int background, const struct game *current_game) { for (int j = 0; j < current_game->grid.height; j ++) { - if (current_game->grid.data[i + j * current_game->grid.width] == 1 && world[j][i] != 0) dpixel(i, j, C_BLACK); + if ((current_game->grid.data[i + j * current_game->grid.width] == 1 || current_game->grid.data[i + j * current_game->grid.width] == 3) && world[j][i] != 0) dpixel(i, j, C_BLACK); } } @@ -47,7 +47,7 @@ void display_foreground(const int background, const struct game *current_game) { for (int j = 0; j < 48; j ++) { - if (current_game->grid.data[i + j * current_game->grid.width] == 1 && world[j][i] != 0) dpixel(i, j, C_BLACK); + if ((current_game->grid.data[i + j * current_game->grid.width] == 1 || current_game->grid.data[i + j * current_game->grid.width] == 3) && world[j][i] != 0) dpixel(i, j, C_BLACK); } } @@ -66,6 +66,8 @@ void display_foreground(const int background, const struct game *current_game) break; case 3: + drect(mutation_menu + 31 * (mutation_menu - 1), 0, mutation_menu + 31 * (mutation_menu), 7, C_INVERT); + dprint(102, 37, C_BLACK, "%d", current_game->dna); length = 67 * current_game->contagion / 100; @@ -80,9 +82,9 @@ void display_foreground(const int background, const struct game *current_game) dline(57, 60, 57 + length, 60, C_BLACK); dline(57, 61, 57 + length, 61, C_BLACK); - if (current_game->mutations_selected[0]) dsubimage(5, 15, &img_mutations, 0, 16 * (current_game->mutations_selected[0] - 1), 15, 15, 0); - if (current_game->mutations_selected[1]) dsubimage(35, 15, &img_mutations, 16, 16 * (current_game->mutations_selected[1] - 1), 15, 15, 0); - if (current_game->mutations_selected[2]) dsubimage(65, 15, &img_mutations, 32, 16 * (current_game->mutations_selected[2] - 1), 15, 15, 0); + if (current_game->mutations_selected[0]) dsubimage(7, 15, &img_mutations, 0, 16 * (current_game->mutations_selected[0] - 1), 15, 15, 0); + if (current_game->mutations_selected[1]) dsubimage(37, 15, &img_mutations, 16, 16 * (current_game->mutations_selected[1] - 1), 15, 15, 0); + if (current_game->mutations_selected[2]) dsubimage(67, 15, &img_mutations, 32, 16 * (current_game->mutations_selected[2] - 1), 15, 15, 0); break; case 6: diff --git a/src/display_engine.h b/src/display_engine.h index 916e4f8..20290cc 100644 --- a/src/display_engine.h +++ b/src/display_engine.h @@ -7,7 +7,7 @@ void display_background(const int background); // display_foreground : display the foreground, planes, statistics -void display_foreground(const int background, const struct game *current_game); +void display_foreground(const int background, const struct game *current_game, const int mutation_menu); // display_mutation : display the mutation selection screen void display_mutation(const int table[4][8], const struct cursor c, const int mutation_menu); diff --git a/src/epidemic_engine.c b/src/epidemic_engine.c index 3a2ffce..09d4d40 100644 --- a/src/epidemic_engine.c +++ b/src/epidemic_engine.c @@ -15,7 +15,7 @@ bool can_become_infected(const struct grid epidemic_grid, const int mutations_se extern const uint8_t world[64][128]; // In case of water, low or high temperature - if (world[j][i] == 0 && mutations_selected[2] != 3) return false; + if (world[j][i] == 0 && mutations_selected[2] != 3 && mutations_selected[2] != 2 && mutations_selected[2] != 5) return false; if (world[j][i] == 1 && mutations_selected[1] != 1 && mutations_selected[1] != 5) return false; if (world[j][i] == 3 && mutations_selected[1] != 2 && mutations_selected[1] != 5) return false; diff --git a/src/main.c b/src/main.c index a3d81e0..6fd0f27 100644 --- a/src/main.c +++ b/src/main.c @@ -146,7 +146,7 @@ void main_loop(struct game *current_game) // Update the screen dclear(C_WHITE); display_background(background); - display_foreground(background, current_game); + display_foreground(background, current_game, mutation_menu); dupdate(); // Compute the motion of planes, DNA points and infectious model diff --git a/src/mutation_engine.c b/src/mutation_engine.c index 1fa3c1d..b1ebaa4 100644 --- a/src/mutation_engine.c +++ b/src/mutation_engine.c @@ -74,8 +74,8 @@ void mutation_select(struct game *current_game, const int mutation_menu) key = rtc_key(); // Manage input - if (key == KEY_EXIT) end = 1; - if (key == KEY_EXE && table[c.y][c.x] != 15 && table[c.y][c.x] != 0) + if (key == KEY_ALPHA) end = 1; + if (key == KEY_SHIFT && table[c.y][c.x] != 15 && table[c.y][c.x] != 0) { end = mutation_buy(current_game, c, mutation_menu, table); } @@ -99,11 +99,16 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut while (1) { display_mutation_buy(c, mutation_menu, table, button_selected, current_game); - key = getkey().key; + + int opt = GETKEY_DEFAULT & ~GETKEY_MOD_SHIFT & ~GETKEY_MOD_ALPHA & ~GETKEY_REP_ARROWS; + int timeout = NULL; + + key_event_t ev = getkey_opt(opt, &timeout); + key = ev.key; if (key == KEY_DOWN || key == KEY_UP) button_selected = (button_selected + 1) % 2; - if (key == KEY_EXIT) return 1; - if (key == KEY_EXE) + if (key == KEY_ALPHA) return 1; + if (key == KEY_SHIFT) { if (!button_selected) return 0; else @@ -122,6 +127,8 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut // Update update_disease(current_game); + current_game->priority += floor((mutation_data->severity / 50) + (mutation_data->lethality / 50)); + const char *msg[5] = {"mutation", "achetee", "", "", ""}; message(msg); } @@ -138,7 +145,7 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut } } - return 1; + return 0; } } return 0; @@ -158,7 +165,6 @@ void update_disease(struct game *current_game) // research parameters current_game->limit = RESEARCH_LIMIT + symptom->changement + ability->changement + transmission->changement; - current_game->priority = floor((current_game->severity + current_game->lethality) / 40); } -- 2.45.0 From 360390c059920977967ba90eb2188d95db57d6ec Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Fri, 4 Jun 2021 14:41:26 +0200 Subject: [PATCH 2/5] changes on mutations and menus --- Plague.g1a | Bin 65344 -> 65328 bytes README.md | 13 +++++-------- src/data.c | 8 ++++---- src/mutation_engine.c | 8 +++----- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/Plague.g1a b/Plague.g1a index 61beddd2b084c54226962ab9cd0203c6e8cd2719..47c489b24de561ca445c188f3ad195e1e39a14ee 100644 GIT binary patch delta 4460 zcmZ`+4^Wdw7T?Vun-I{T&=64*1QZp^f{3YLjRjk%T#1rX3aC-TA1x|cyi#E#R_dh{ zP+aE9+-0tGbWX-HCHmPpXX;IvmYF(t%w4SUYCY#Jt>`f=H*zIInKsJ(HX(xE-N(Fd z-@f15_ujsJ`|{EEQ0{&xk3HY>hu%}pU$;h1+{a(r!-)y<7hQYo3YvML;5?;F^3!bE z6sgiiTq2C%d5|*U!N8J?Dy>>e2z3zl0LW8Xl~xA%N*_?j9=b6qf;y~3Mc7d*a0OxV zenH?(gq3#PH9|`~(7#J+r+7NW6E<7vg@MfQV!~cIEA`3cl&0{0#q~9{gsGC?DTc6k zGhybNgnVWpEEn?^$_dlBKrm3?BrHM;-4bAS!V(clER(#-J9KM3VV6816|p4eDv^6m z5te_2uv>%VsrQY9eb++h@h-v^V|hGcX@!f{8W7C3o(1(0_GT?%+0}&U5rzWx=H_5t z&SO-$$YhD?1YHh=V61VEVwDw)h*-~`KmP%+RKlX&;rJwNL={a=B5Z*Jwy&-o5s5M& zCfzWW!*=U9VQQFai{vg%#*B|(DgTP()tsaA5lvfnXa|>swv{lGg0L(^-e#0KqfXHI zDS{Q^jo-ax2ti`QUqCh9%FVNWA6p*EURe5-N2ExK)UKe((;#72EE2}ruz?q0SR}hG ziQA*sMonr8tpX=^N2jUbz2;<_O-ZT7YN%|94ETBkAm)$?M9)2z8mc0}6d zI1jbTi~Z^Bq|$ldF#U!uT>{yG*1Gh*lYjS>EbVUHWIMC-*w-@;PRMjS?nKQ!FtKLd z&s1w%rMGTpE$#kW)=5iK#T`$USz|x8i5JT=R-DYsFzFM&q4SsKt4yv<$Lu`r-a#6d z_{B5NYYYmD|K{>dbfYXi^^4T><%)>BguH~+y01yTCUb#Z?nyCgD&|zpXu=Z4Wfs(-4^Sg0XQ>J1vAww-CpELya0Z0}gj*sEiE z#&(YpP4$?4^oFkYUv|@ZV#+ z4;leKf^ih%C`Ny+WR5MO>6iu!ejdD;gO_u%;9;hduvw6aq8FEOHoWE9dEe7_l&FcP z-Mm}3f~HEhb!AkKAjQSfc|xU}T@D2w=AGQ4zoSngOiCdvIS+jahLXJCV=xZ#!nr46 zFNM%Yh(aLJ@Z8_ZW&RP~vf!nNg{ZxFKVilm?t6TiX*i+m0g%u84Q;Z8PbJ8cWl?Ws?0>L2ERJ16W8I%vcjnn|sqE+>kuJH+9qGkNyEr|5Gd)pn_b4iIy^5lR zW>j6#B7(QjTh`2DGS;ex(|+-FWLl+UesK53D{p zKREY@cC#+_GD{>O`1JF=FW z`}p|tiLp4Qc&w3U3Ku9VxLfPyEH@W5Q+ZqfRC&$-0LR7iUM= zRazCQPL(GlQl|9>N-KHl=HIBTq5U6qbI<0rqJZB)Mlg%pGO9!nnJtpG1RpFu{G5?c z3f}?$PM1)^ucr&&5FU)!w!((WFv15+{#1)GpP*m~vyXtcpi=sAKfQ#tK-Ox3tT6Nw zoek^=);A*eWi@HX(|+|;a_)$yQ8x+Oj@E7~Aq=p4=fwrv0uLte6$!$}4bd@`f7-$#oIbG1az{ z&Q9YUlJCfV84l2L^h;Tk!z-h~3)F{qSSG9q67pfZg(ZQ7y$gAOcU{ow zRgj8DpkWQfCdF{i1s$Cy4PDU4mALhiMH;`fWxX;51)M5be{7)3J@}~|Cah^Dh!N&+ zgFXds1GzxJ9A?lhG-@IRerlk~RNSUi-uU2kv7jaBIQU|9mkB#KJ|&psgp3^!r~3HA s_VuIlUw$NHd;c8dg*^N`#y55$Sgbh$KSz29lRZe~2|Y=?^I`XY0NCBl_y7O^ delta 4458 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 += floor((mutation_data->severity / 50) + (mutation_data->lethality / 50)); + current_game->priority += floor((mutation_data->severity + mutation_data->lethality) / 10); const char *msg[5] = {"mutation", "achetee", "", "", ""}; message(msg); -- 2.45.0 From de7f58751f946f2f77a609ea325eb16b4bd8a393 Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Fri, 4 Jun 2021 15:13:48 +0200 Subject: [PATCH 3/5] Added infected planes and fix README.md (thanks to Kikoo and DS) --- Plague.g1a | Bin 65328 -> 65412 bytes README.md | 25 ++++++++++--------------- src/core.c | 14 +++++++++++++- src/core.h | 2 ++ src/data.c | 2 +- src/main.c | 10 +++++----- src/mutation_engine.c | 2 +- 7 files changed, 32 insertions(+), 23 deletions(-) diff --git a/Plague.g1a b/Plague.g1a index 47c489b24de561ca445c188f3ad195e1e39a14ee..8cba6a3c195f7192e2cb0b23c2e37efa3abd854c 100644 GIT binary patch delta 4729 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 diff --git a/README.md b/README.md index 89b5992..9b68803 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ -# Plague inc - -## Présentation - -### Description du jeu - Plague inc est un jeu de stratégie où le but est de réduire l'humanité à néant… Simple ? Non ! Il vous faudra manipuler avec dextérité et prudence un virus pour anéantir des humains qui ne sont pas super collaboratifs… Pire, ces petits rigolos veulent sauver leurs peaux et recherchent activement un remède à ce mystérieux virus inconnu ! ### Licence @@ -12,23 +6,23 @@ La totalité du projet est soumise à la licence GNU General Public Licence v3.0 ## Contrôles -Lancez le jeu, et pressez n'importe quelle touche pour passer l'écran principal. Une fois sur l'écran représentant la Terre, plusieurs choix s'offrent à vous : +Lancez le jeu, et pressez n'importe quelle touche pour passer l'écran principal. Une fois sur l'écran représentant la Terre, plusieurs choix s'offrent à vous : - [OPTN] permet d'afficher / cacher la barre en dessous du monde qui vous affiche vos points ADN et la barre de recherche des humains. - - [VARS] permet de passer au gros du jeu : les mutations. Ce menu vous affiche vos points ADN, mais aussi les mutations sélectionnées ainsi que vos point de contagion, de sévérité, et de létalité. Dans ce menu, vous pouvez modifier tout cela. - - [x^2] permet d'accéder au menu statistique qui vous affiche les stats sur les humains. La barre symbolise le pourcentage de la popuation totale : donc la somme de toute les barre doit donné une seule barre entière. + - [VARS] permet de passer au gros du jeu : les mutations. Ce menu vous affiche vos points ADN, mais aussi les mutations sélectionnées ainsi que vos points de contagion, de sévérité, et de létalité. Dans ce menu, vous pouvez modifier tout cela. + - [x^2] permet d'accéder au menu statistique qui vous affiche les stats sur les humains. La barre symbolise le pourcentage de la population totale : donc la somme de toutes les barres doit donner une seule barre entière. -Dans les menus déplacezz-vous grâce aux touches fléchées, validez avec [SHIFT] et annuler avec [ALPHA]. +Dans les menus déplacez-vous grâce aux touches fléchées, validez avec [SHIFT] et annulez avec [ALPHA]. Pour quitter le jeu, allez sur la mappemonde et pressez [EXIT]. ## Mutations -Dans ce jeu, vous aurez le choix entre plusieurs mutations pour faire le plus de dégât possible parmis les humains ! Comme dans le jeu d'origine, celles-ci sont divisées en 3 catégories : Symptômes, Capacités, et Transmissions. +Dans ce jeu, vous aurez le choix entre plusieurs mutations pour faire le plus de dégât possible parmi les humains ! Comme dans le jeu d'origine, celles-ci sont divisées en 3 catégories : Symptômes, Capacités, et Transmissions. Toutes les mutations ont plusieurs spécificités : - Contagion qui détermine la proportion de personnes infectées - - Sévérité touche la recherche, on peut la comprendre de la manière suivante : si la sévérité est élevée, la maladie est grave, elle entraine par conséquent une recherche active de la part des Humains. La séverité vous permet également de gagner des points ADN plus rapidement. - - Létalité détermine le taux de mortalité parmi les infectés… Une létalité élevée fera de votre maladie une veritable machine à tuer, mais cela vous dévoile au grand jour et accèlere la recherche ! + - Sévérité touche la recherche, on peut la comprendre de la manière suivante : si la sévérité est élevée, la maladie est grave, elle entraine par conséquent une recherche active de la part des Humains. La sévérité vous permet également de gagner des points ADN plus rapidement. + - Létalité détermine le taux de mortalité parmi les infectés… Une létalité élevée fera de votre maladie une véritable machine à tuer, mais cela vous dévoile au grand jour et accélère la recherche ! - le coût en points ADN. Dans le menu de mutation vous avez les statistiques de la mutation sélectionnée. Et entre parenthèses vous avez les modifications effectives. Le nombre entre parenthèses vous indique donc le nombre de points de contagion, sévérité, létalité, vous allez gagner (ou perdre si le nombre est négatif) si vous faites muter votre maladie. @@ -40,8 +34,9 @@ Comme son nom l'indique, votre maladie aussi puissante soit-elle n'est pas invis ### Capacités spéciales -En mutant, votre maladie peut acquérir des capacités. Ces capacités lui permettent de mieux apréhender un milieu ou une situation, ainsi la capacité *Résistance au froid* donne un suplément de vigueur à votre virus dans les pays froid. Cela se traduit par une augmentation plus ou moins forte de la contagion dans ces régions du monde… +En mutant, votre maladie peut acquérir des capacités. Ces capacités lui permettent de mieux appréhender un milieu ou une situation, ainsi la capacité *Résistance au froid* donne un supplément de vigueur à votre virus dans les pays froids. Cela se traduit par une augmentation plus ou moins forte de la contagion dans ces régions du monde… ### Moyens de transmissions -Votre maladie aura tout le loisir de changer ses moyens de transmission ! Plus ou moins efficaces ceux-ci permettent à votre maladie d'accéder à des caractérestiques intéressantes qui lui permettront de coloniser le monde entier ! +Votre maladie aura tout le loisir de changer ses moyens de transmission ! Plus ou moins efficaces ceux-ci permettent à votre maladie d'accéder à des caractéristiques intéressantes qui lui permettront de coloniser le monde entier ! + diff --git a/src/core.c b/src/core.c index 2b231e2..f79f276 100644 --- a/src/core.c +++ b/src/core.c @@ -30,6 +30,9 @@ void next_frame(struct game *current_game) } if (current_game->planes[i]->x == current_game->planes[i]->dest_x && current_game->planes[i]->y == current_game->planes[i]->dest_y) { + // Infect the airport + if (current_game->planes[i]->is_infected) current_game->grid.data[current_game->planes[i]->x + current_game->planes[i]->y * current_game->grid.width] = 1; + // Set the new destination current_game->planes[i]->dest_x = current_game->planes[i]->depa_x; current_game->planes[i]->dest_y = current_game->planes[i]->depa_y; @@ -42,6 +45,14 @@ void next_frame(struct game *current_game) int new_dir = (current_game->planes[i]->direction + 2) % 4; if (!new_dir) new_dir = 4; current_game->planes[i]->direction = new_dir; + + // Infect the plane + if (current_game->grid.data[current_game->planes[i]->x + current_game->planes[i]->y * current_game->grid.width] == 1 && + (current_game->mutations_selected[2] == 3 || + current_game->mutations_selected[2] == 2 || + current_game->mutations_selected[2] == 5)) current_game->planes[i]->is_infected = 1; + + } } @@ -54,7 +65,8 @@ void next_frame(struct game *current_game) current_game->time = 0; // Update the game - if (current_game->dna < 30) current_game->dna += 1 + floor(current_game->severity / 25); + current_game->dna = current_game->dna + 1 + floor(current_game->severity / 25); + if (current_game->dna > 30) current_game->dna = 30; if (current_game->research < current_game->limit) current_game->research += current_game->priority; epidemic_simulation(current_game); diff --git a/src/core.h b/src/core.h index cd9427a..e3b2d3d 100644 --- a/src/core.h +++ b/src/core.h @@ -70,6 +70,8 @@ struct plane // Coordinates of the plane's departure int depa_x, depa_y; + int is_infected; + }; //cursor : cursor information for mutations selection diff --git a/src/data.c b/src/data.c index e5da63d..4854748 100644 --- a/src/data.c +++ b/src/data.c @@ -6,7 +6,7 @@ const struct mutation symptoms_data[14] = { {10, 10, 0, 2, 0, "NAUSEE"}, {15, 10, 0, 10, 0, "VOMISSEMENT"}, - {10, 10, 0, 3, 0, "TOUX"}, + {10, 5, 0, 3, 0, "TOUX"}, {15, 20, 0, 10, 0, "PNEUMONIE"}, {10, 30, 20, 15, 10, "TUMEUR"}, {15, 10, 5, 4, 0, "PLAIES"}, diff --git a/src/main.c b/src/main.c index 6fd0f27..001ac54 100644 --- a/src/main.c +++ b/src/main.c @@ -35,11 +35,11 @@ int main(void) title_screen(); // Game statistics - struct plane plane_1 = {22, 20, 2, 84, 20, 22, 20}; - struct plane plane_2 = {34, 20, 3, 34, 44, 34, 20}; - struct plane plane_3 = {68, 44, 1, 68, 20, 68, 44}; - struct plane plane_4 = {104, 20, 3, 104, 50, 104, 20}; - struct plane plane_5 = {68, 44, 4, 34, 44, 68, 44}; + struct plane plane_1 = {22, 20, 2, 84, 20, 22, 20, 0}; + struct plane plane_2 = {34, 20, 3, 34, 44, 34, 20, 0}; + struct plane plane_3 = {68, 44, 1, 68, 20, 68, 44, 0}; + struct plane plane_4 = {104, 20, 3, 104, 50, 104, 20, 0}; + struct plane plane_5 = {68, 44, 4, 34, 44, 68, 44, 0}; struct game current_game = diff --git a/src/mutation_engine.c b/src/mutation_engine.c index b5c5ed7..67f69b0 100644 --- a/src/mutation_engine.c +++ b/src/mutation_engine.c @@ -125,7 +125,7 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut // Update update_disease(current_game); - current_game->priority += floor((mutation_data->severity + mutation_data->lethality) / 10); + current_game->priority += floor((mutation_data->severity + mutation_data->lethality) / 20); const char *msg[5] = {"mutation", "achetee", "", "", ""}; message(msg); -- 2.45.0 From 10dc257f205b3cea2f8b3d53ea5cc243443a6f96 Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Fri, 4 Jun 2021 15:36:10 +0200 Subject: [PATCH 4/5] Minor corrections on epidemic model --- Plague.g1a | Bin 65412 -> 67124 bytes src/core.c | 5 +---- src/core.h | 3 ++- src/epidemic_engine.c | 2 +- src/mutation_engine.c | 11 +++++------ 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Plague.g1a b/Plague.g1a index 8cba6a3c195f7192e2cb0b23c2e37efa3abd854c..48881a2e3544e34b2f0024c9ff2ca979dcf1523b 100644 GIT binary patch delta 7173 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 M_*^U*`RVNc0V?Lu&Hw-a delta 5482 zcmZ`-eNC2500JT^+80D<5lJIx0G-fai^LFZwLxOgphH-q92%5$ zTIKr^Wp`$UxT`SR<-EzmA~(9as5@JVfMf9m-55xEIIyJ>!P(HP5M>N-v}x) zTQ5xrDS~t7Hm$F&k5GbVrh3*5M5BwezTUos2(^UH)DyD6SL-W+pA-Qpc(ZC?wMT~* zW)WJ~4!N38)c^<3W+m@nwM6A^Av9~6(67v7!TS+}emz2jQx^zb-T^;lgf>Fn*aL6_#tCim zC6vdq;S!-Ch(is&u?pi(7O34M#*|Bi+MfwdSa=$7@Y9IJY*@&!UA}zz?+{@ep?+gZ zl%`V;Ri<-~1k=TX8K$fMF>ShW{!{j8@;1{KYq#Y_4()M{l~%^O&hGyCN9(WT|01vR zXhO*9BMEKY@ynaHhJ@Na{Ay=~uvH(@aJ%48K;HZIGFAL)weH?bW}JEPU9wf580Jv9 z^DO$}fD)D4dLY2@8R*Z!dxi7vhS9~%f>AXRW>n?Bn|CfD;Ix=`K0YpF(csJJddG({ z@2qw(^Uh|B9}i|Sw{EeJ#zu9^HWoDM_n!EzD8}uJ6QhVX@z%JS+Vkp;%m(}IJ&}Jh zKH}`@{5orW0y(?Z`m+e_X)o(Kae*~SG}2Jf!LsyAo!J(@M)f{b`E0~rmkaw;ev$d> ztV#Oi&}blWc7sbetIhx0(x|E*%$jD=9_8{nOZ*OW=ap6-5xV~&)<3VV`x8+AePotQ zkZE##xi9gqB}7GNxIORdzYHhzq?XXI>ljZF8XSvqpkPhg2=zv3n(S;$pP;##$@@Tx zHe3|KUPjL}p(l7>d}M)o3!!GnlhB_{71HPnXP{HcY0j5ja2eOXjlNjY!dezy4N}@t zVgKIKdQy?ENmy~^S=Vwgx6WsBi%qqJa_hX4o2po!Uz(3%iK}JbZ1Z2Ex_EPguDEyd#Yj@%_zz7%5zNsWG251cW$~R$lrlso7e5 z-<@R9J5J`a?W%;e&6x@2kf?jYiz~CV=Fa?+4i^0As1O`=d(9?&xY|1LCd|)OYY8C-iZeST2o3?;g0p8w)0u~@SmbXqlyCxCM^1$k3lcxI(H%*k6BFM zvVg_i|5*_+xRCpDuylR!qdS3Yci@Z3)HjRJm~y$!yvF`Ww?DEUZZ9b*Iq>6tXzE9r zhXAAOTHr?HJCr21RXkAcTIfc_KkW8ewki2>88M+Vb5?APt4s}G6khUp8_ zqufaMPn=!OOW~Ohu$;u{!JLQD|CZx;93H%GdN3QQ{+&DfA=x?gMV3YXVAkT-ta?K= zxCL8E^)>m1jFJ7$+fnAmxcg*v!ieyBddcHeI@?5LVurr>!_QxGJTCsM;;7+mViMQ)WsS2}%)}7S%v_IQHX=7U4O;=^(OZPP_m(u3-Yer8GcDrk4 zKR0DSzx!W_xBb3FOAYka-9(Evewu_uXd7c(3tw&YzE9lCcYIecx%1DqiEuv)oa|TG zPrBZ2R{v2<`-?^~%3LEL$jjM&&5Imt@I_~#vnV&_@Z_P%vdK3m4^F-@nZBxY@-(TQ z?Y@7Xq$W3x+$Y_CsAm5dv^3%AnHY-VRC`YGxib-2M-di+$InH6YWrieW^}Q@#jh{; zAt9()ba}C=#WfnfF@wg~^x_0@bD2bgcL~PLh4OhEY>@ZrhE75khXRIJSI9l%G6$g& z3@@t(r~!ch8z7opFrEpDo|qFWqD(H5EK7`nv^%_B6u--450>WWq7n%WrG!R|GIQjQ zh7FNtG!dha)U(j2CQVc#P9MS|qIYY)D+CVwYYqYRjj!PB!!xe31Vy_>!8Ot3XFeGtQ%*2@wr01q)xakXjb9qSTQ9H zuRSVgVzJa!qs+FhGA4Exd_c7P6285t46h))qErt&#F1fRTgugC)fKmx zJ;}MW#iO)v6N2XkEM=HrcMC(JWfc#2#Z+5zz9znl7o8O*M;hb1-0I?tA$4vfZ|&R| zf;U%OHNe`F({u@OrpmhpQ^^Qn7m@?ncygGS5GVPXcd0aqsNlK=R=y!fOj0w~h9n@V zf5R?8mjg-8O`NNQMQ=Q)NkzltCbIU8IUds7&K_)x6mt_LZCa$LSzm(#d6-d)QA{zi zZI-4mnd6qzj8IAj28DDUJ?I04Y|4`4zX9Kf6FppIj@`g4>5-9#3`8IV$AXu0+O)4^ z`yI7Kf8eoGJ+~}+$iV8;BaMd)P*FqW=>HP;ryon=Nlz_TlFk!OXeOE>6IsjX;;}p; zJeJfd4=u>FRKDp0aZTMgp_6DHZ`8B^)#10ivuGUeRDc<@9nepxt&-3k*CoqlqoCP7 zL}-15WZ&X1YPj!>5v(dJGKiOMNtM=DmB`(o%Fh}+&5tSUv z{y@j4%DbF(rmisNOr7gdU4v!MQ17-Y~P}ehQ%!Xx*pwk&8p<`WQmD6|#EUH$Evwtj$8`@e!~l zq}m<-B514^2+hlstUH55jSYFTU1nvkruf*pw7y!jrWW>Xm!-Z}zr&sL$*&H^Q=ZoEkk) zae+n>mOW^*NBS%qn&b3=Gr*{QrKfbSH$XX&IqWq?IV2^VXUz{c)AnzI=8O3;hm}!V zblbig|Br+X?<>%F!o9-G``37S?DYm#w*MP(cPJ}ztPyv|vIfU*#679ZT6~zJ{^EZt`)ES(&{LIC_IaV_$-IoC2%>I{+y<-ovbQn~b({bSsfJ zlC24CR1H96%O+M^!TOOjDDY)>wkWEp0)uT zfGPmm`+HP)CK`ZXW>NuJ0O-t=%J=VRg3249%jaGIj01)NHvtG^CbX?SOspPZ5%n>~ z=%HuFfAoWSbiZV;KP-yT9g_Rh`-1e(r`HKSVb^PtAEdg-+lbP2OER4G7j?KT(9$(?%lnZ(%-;H~h+C4at;RnCN13;8S2pqGM>GPow6-o< zLaRG)bQHRAk<2q zswo7uZUeuR{i-j3t!@7#rU_+hN|npVOUc2*L%Edk_oFQE-B(hYToAR-XJd@uo4TIk zalM}Tyw=vGEUi~3{r26j!=1fxh{a2Z2iV&~(_X$--5hY%LjEGOHx=(d0GIKH)104) zcPv2GBP5Ko!QY0rqRTmoeH-XN;(R8Y%T#ZXN5EC(N1jZ39T;*4iZNf0nD&+f%RzV; zo?hUNt1c8mo`yc9eLF5|Yi9_&c?Nz23Id<8f^ z0%O?*^3R=c@PdG6fTu+<<_DTjNSw#x4&;ETWC6_$%NdX{*SCVlA7ufuJt`H+Y>&QY zP6QZy1*LNW9+d(}sZ=iAx~5ZUqzj%BCS)!5UuA7=@|F=36planes[i]->direction = new_dir; // Infect the plane - if (current_game->grid.data[current_game->planes[i]->x + current_game->planes[i]->y * current_game->grid.width] == 1 && - (current_game->mutations_selected[2] == 3 || - current_game->mutations_selected[2] == 2 || - current_game->mutations_selected[2] == 5)) current_game->planes[i]->is_infected = 1; + if (current_game->grid.data[current_game->planes[i]->x + current_game->planes[i]->y * current_game->grid.width] == 1 && current_game->mutations_selected[2] == 4) current_game->planes[i]->is_infected = 1; } diff --git a/src/core.h b/src/core.h index e3b2d3d..704bf20 100644 --- a/src/core.h +++ b/src/core.h @@ -40,7 +40,8 @@ struct game int mutations_bought[3][14]; // Research data - int research, limit, priority; + int research, limit; + float priority; // Humans stats : healthy, infected, dead, healed int humans[4]; diff --git a/src/epidemic_engine.c b/src/epidemic_engine.c index 09d4d40..b504ed3 100644 --- a/src/epidemic_engine.c +++ b/src/epidemic_engine.c @@ -15,7 +15,7 @@ bool can_become_infected(const struct grid epidemic_grid, const int mutations_se extern const uint8_t world[64][128]; // In case of water, low or high temperature - if (world[j][i] == 0 && mutations_selected[2] != 3 && mutations_selected[2] != 2 && mutations_selected[2] != 5) return false; + if (world[j][i] == 0 && mutations_selected[2] != 3 && mutations_selected[2] != 4 && mutations_selected[2] != 6) return false; if (world[j][i] == 1 && mutations_selected[1] != 1 && mutations_selected[1] != 5) return false; if (world[j][i] == 3 && mutations_selected[1] != 2 && mutations_selected[1] != 5) return false; diff --git a/src/mutation_engine.c b/src/mutation_engine.c index 67f69b0..658c14f 100644 --- a/src/mutation_engine.c +++ b/src/mutation_engine.c @@ -80,10 +80,10 @@ void mutation_select(struct game *current_game, const int mutation_menu) end = mutation_buy(current_game, c, mutation_menu, table); } - if (key == KEY_LEFT && c.x > 0) c.x --; - if (key == KEY_RIGHT && c.x < 7) c.x ++; - if (key == KEY_UP && c.y > 0) c.y --; - if (key == KEY_DOWN && c.y < 3) c.y ++; + if (key == KEY_LEFT && c.x > 0) c.x = (c.x - 1) % 8; + if (key == KEY_RIGHT && c.x < 7) c.x = (c.x + 1) % 8; + if (key == KEY_UP && c.y > 0) c.y = (c.y - 1) % 4; + if (key == KEY_DOWN && c.y < 3) c.y = (c.y + 1) % 4; } if (t >= 0) timer_stop(t); } @@ -125,8 +125,7 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut // Update update_disease(current_game); - current_game->priority += floor((mutation_data->severity + mutation_data->lethality) / 20); - + current_game->priority += ceil((mutation_data->severity + mutation_data->lethality)/10); const char *msg[5] = {"mutation", "achetee", "", "", ""}; message(msg); } -- 2.45.0 From 6c4278ffda441339e5877cf3f8e0ee1d6cf81494 Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Fri, 4 Jun 2021 15:36:24 +0200 Subject: [PATCH 5/5] Minor corrections on epidemic model --- src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 001ac54..307b01a 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,6 @@ /* Project name ......: Plague - Version ...........: 1.1 + Version ...........: 1.2 Last modification .: 4 June 2021 code and assets provided with licence : -- 2.45.0