From e882a22b3ca2a1462be482dcf332a0cfc743f59c Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 12 Jul 2025 21:16:07 +0200 Subject: [PATCH] es pot definir el color dels globos (dels 4 colors disponibles) al fitxer de parametres --- data/config/param_320x240.txt | 21 ++++++----- data/config/param_320x256.txt | 21 ++++++----- data/gfx/balloon/balloon1.png | Bin 2028 -> 2072 bytes data/gfx/balloon/balloon2.png | Bin 3752 -> 3909 bytes data/gfx/balloon/balloon3.png | Bin 6974 -> 7169 bytes data/gfx/balloon/balloon4.png | Bin 12511 -> 12516 bytes source/balloon.cpp | 16 ++++----- source/param.cpp | 65 +++++++++++++++++++++++----------- source/param.h | 47 +++++++++++++----------- 9 files changed, 105 insertions(+), 65 deletions(-) diff --git a/data/config/param_320x240.txt b/data/config/param_320x240.txt index 30e4496..340f644 100644 --- a/data/config/param_320x240.txt +++ b/data/config/param_320x240.txt @@ -43,14 +43,19 @@ title.title_c_c_position 80 # Posición Y del título principal background.attenuate_color FFFFFF00 # Color de atenuación del fondo (RGBA hexadecimal) ## --- BALLOONS --- -balloon_1.vel 2.75f # Velocidad inicial del globo 1 -balloon_1.grav 0.09f # Gravedad aplicada al globo 1 -balloon_2.vel 3.70f # Velocidad inicial del globo 2 -balloon_2.grav 0.10f # Gravedad aplicada al globo 2 -balloon_3.vel 4.70f # Velocidad inicial del globo 3 -balloon_3.grav 0.10f # Gravedad aplicada al globo 3 -balloon_4.vel 5.45f # Velocidad inicial del globo 4 -balloon_4.grav 0.10f # Gravedad aplicada al globo 4 +balloon.settings[0].vel 2.75f # Velocidad inicial del globo 1 +balloon.settings[0].grav 0.09f # Gravedad aplicada al globo 1 +balloon.settings[1].vel 3.70f # Velocidad inicial del globo 2 +balloon.settings[1].grav 0.10f # Gravedad aplicada al globo 2 +balloon.settings[2].vel 4.70f # Velocidad inicial del globo 3 +balloon.settings[2].grav 0.10f # Gravedad aplicada al globo 3 +balloon.settings[3].vel 5.45f # Velocidad inicial del globo 4 +balloon.settings[3].grav 0.10f # Gravedad aplicada al globo 4 + +balloon.color[0] blue # Color de creación del globo normal +balloon.color[1] orange # Color del globo normal +balloon.color[2] red # Color de creación del globo que rebota +balloon.color[3] green # Color del globo que rebota ## --- NOTIFICATION --- notification.pos_v TOP # Posición vertical de la notificación (TOP/BOTTOM) diff --git a/data/config/param_320x256.txt b/data/config/param_320x256.txt index b27ac6f..dd90d34 100644 --- a/data/config/param_320x256.txt +++ b/data/config/param_320x256.txt @@ -43,14 +43,19 @@ title.title_c_c_position 80 # Posición Y del título principal background.attenuate_color FFFFFF00 # Color de atenuación del fondo (RGBA hexadecimal) ## --- BALLOONS --- -balloon_1.vel 2.75f # Velocidad inicial del globo 1 -balloon_1.grav 0.09f # Gravedad aplicada al globo 1 -balloon_2.vel 3.70f # Velocidad inicial del globo 2 -balloon_2.grav 0.10f # Gravedad aplicada al globo 2 -balloon_3.vel 4.70f # Velocidad inicial del globo 3 -balloon_3.grav 0.10f # Gravedad aplicada al globo 3 -balloon_4.vel 5.45f # Velocidad inicial del globo 4 -balloon_4.grav 0.10f # Gravedad aplicada al globo 4 +balloon.settings[0].vel 2.75f # Velocidad inicial del globo 1 +balloon.settings[0].grav 0.09f # Gravedad aplicada al globo 1 +balloon.settings[1].vel 3.70f # Velocidad inicial del globo 2 +balloon.settings[1].grav 0.10f # Gravedad aplicada al globo 2 +balloon.settings[2].vel 4.70f # Velocidad inicial del globo 3 +balloon.settings[2].grav 0.10f # Gravedad aplicada al globo 3 +balloon.settings[3].vel 5.45f # Velocidad inicial del globo 4 +balloon.settings[3].grav 0.10f # Gravedad aplicada al globo 4 + +balloon.color[0] blue # Color de creación del globo normal +balloon.color[1] orange # Color del globo normal +balloon.color[2] red # Color de creación del globo que rebota +balloon.color[3] green # Color del globo que rebota ## --- NOTIFICATION --- notification.pos_v TOP # Posición vertical de la notificación (TOP/BOTTOM) diff --git a/data/gfx/balloon/balloon1.png b/data/gfx/balloon/balloon1.png index 6e4128acff79f359fadda264d72dfa313f3bb9d9..d17d16a7935841715412d5d1d6e604be2e635bd9 100644 GIT binary patch delta 2045 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 diff --git a/data/gfx/balloon/balloon2.png b/data/gfx/balloon/balloon2.png index abc4290f0587ce25a5b4bc85dca25c191381716c..7dfff30cfca019c086b37470357a44dd5774b69c 100644 GIT binary patch literal 3909 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 O0(v^Pu2pC|KKT!DlA%ce diff --git a/data/gfx/balloon/balloon3.png b/data/gfx/balloon/balloon3.png index 360fec6bc1a734931b0053d612f4d37d4723e864..2eedfb44e32239784b6434892b5ef1dfa110e77a 100644 GIT binary patch literal 7169 zcma)>cTkg2^Y0%7L;*piODKX8dQ%~hCSAHfXd<8xr6?`*7OBz`6i|>R9T5WoDWQu% zXwp%73tfuz4!?l!ojdQHduQ%Hc`}=GcF)<(c|P;q6aGkB^$O(;N&o<^s6ABD0{{{- z;&+=%7m1%tYN#~ggTzHoRRO?sf))XQwMtD%9_E?6lH&LZ_B+15i?!>=)7T2}H(?5c zbF?p=sMW=}+$9>rDR09r#WC9F#qcWea_RP}yyA+pk%Jwk+ri>Ljlp9d$KSr5#k(IP z%>S|}`$ZE6*f{*n!@>0ig$#-9=EwEC?)5vK(svG@%}J->Tvq*dJF6vAZCBqGSl8|P zB6p8)^C`R1$loMdYG%eCrgnZ895nU}JcGWsg2w+0U*bm}t=A$?Kz}>=enHx?p!Uzy zsI3P}4V6)vIL%(P->`#S+^jKb7Df{~W5aCIf0KNdgBfThH6nm_TU1s(cqmyzHW~f+`l1hw+wwsM~5rM*5&m>N70e zJ(wXD(Wp2>p8e&Ir=<|mIT*lAMhz|h*kg{G%fREW@tr|( zz()GzABRsdR8yUQJf~dBjcEqh%4DWxS-#Mt!pT@TMkyZI7+nRWTqfXg8*Y`WgNGBE zJ$^ot1F5^Lb$qJN(cy8ibmWtiKGIeBaj0kH?7PZK>N~^}g%G zyEP>qShC)c>+B!bl;wnlP)@7wZk%zs5vs-+8<`uK?e{52QSd4Yo+_KbKC~)#C1g!>~AKs&{;&%@;CYA zaeQ)GPKdG$s3L9=m6R<0`Y_sP#woUuz`wP?c*Bm?$Wt?W@TiL+ozGdW=IP29%*T9= zHh%Kx+B`~~N!*}ph9TG`x3H^wT!~B$i#_(; zZl%TaUwDw(r~IRFiBH4({u_*N!f563`+WfS1^vQwz)c#qYi9?Y(6#D19$#iMIZfA;@cDeo8B*M?gX%it$Wo3-2j zM7LLM17t0G%mN_FKAH(Z%_Xd5e3Z1mueBwJpZ0b#0l-B($$S?~{M|LEcut$)@H3wR zK?(q@s)EO*k=_K!J?$x`=1tfBz_wXaHDIIP6*wMRY`F4p*uk9e>a zH?KlRaV8wMY_hxh&=X%EXX8gtTP$shEp;ItOZlY0cJW?ou)DzuDFg`-{m6GG;3~f#TomP=QvP^}nxhaGn+g70 z=FZ}r&*WP#4^an|me9N)0=z14$SP+ita34}1olKu`)9sRvf`m3REHhJ@5%XIYaA<) za!c1aRT=`DXG$ZME{+g(_@jjs{;2bqExLzj*cuOI9XqS*iqz7dZhZb;m<9h_>-Y6R zPpfZNh|!}7qF6jSlrT}7S-YA!u3ND?rNV@EtNx3N^m^1Lt$b`u4c~up1SPxSI+}r~ z6mp+@<^ogBfuZ;pvWGL1I-WI$YHMo_Bj!jDa!YJNljN-=E$-~bWKJ5xTN%OH>Xoxc zJOT|(!b&5@leN57T_5;2AlSj6qxc#hfHl&WG9^;stpGFrKgV^ijx)`DiimW`XEqs1{rFu7Lk}mSzV=Y== zdt-s36bPYp|BMMFGVy~{>gwXh#5XnDn}));#H03T@4c;#juzehHm!3ky6XII-SIBZ}846NbA0~e;DSE^xm)MQrFGg}_Rh^od`1e{LZVV}*qlC<- zYQ3*iGsMF)J|?$pR}Fv`3pOEo9DTl90`>Jey)R`n9%BdR*KMP8*yiQNqhw)DZ%s;8 ztaWW{I{WCz|Eh7yU84+!cpbS4MA8^BBQ7(U)LrY%MUet~=oB&)cOCE_N_f+QY}TM8 z{5v;LC5X$?`EIxcioi=38f9S6zX-jKdg|d3fRw8NC22=>42O=o>R=W;z11jkKgLZ% zZhWj+EtoVhur^~|NoaCbkM8EB1R8D~Z;_UHvi#Ifqw+Y*-t&2#_jM(OY{<8!xWz#c zbx-w+Lz4sv52;Bushvn85~B*Sxx06(wgif2hpK5B!-Bk-TiwXV#jJeD#=Ks4>Ny=l zDlEIOMpZ)@(CU&xGq74*vQd>;-CkBR*bK$JO3O_f^A=yXHf2LB($50F7A<1E;O!-; z==k+(b@Ux?a|zhDos|-!(<^sTKU&y1*imxDvnG;mOBJyuhcO%D$ra$tNCOjMU;3~_bfKQ=GWVw+a}fAKBz2~KU^JR|}m_HPzwB|ZuMXtB>S%<~Wl1-lpF{S?GY>}6o&b|`l)6x!;KCJzQRX%^5by6qsEJT_ZMCmj3C=sB zH>=7g;1WPYemu#4k}c<)N2cDP{JQmFGvWYTBwqO3W&2bpTG@EWM(Hh zHMY!{LE8BtnflZa?O=rpi|)&)W$SA%+T=5jq6Ff(Hz1~glaKrox|8kYM>3^MG+IgR z@N479JB)C4C&5k+d6#ZRXN#*|LhXy6j&mw`osz4qFXims1VX~=&9;@qruMXYKS44U zT){b@9>y_#hqm+#)>upEC^-q8Y>V{OrbdtWj&xZ{?~}Z(R^|ZAXjbJC`OT(V9%9tM z@oJV{$nZ5o&9-Z_Z<*pS+=Z^qeVix8(K9y;P?U~=fH6ij=MOUD{-~Qe%^kJW$*fOQWD+NZ;u9EU< zR&qk_(>0^-91IK`bXA3Jn8PdoWcztRo1-VV4mv^e=18^1R==j-!ELO`2#2 z3ZwS_>b~ZnxP7ktmIHFxd(0=BXO_5&SBHDw?WzqaPnZe*4A(16&9pF!$Bf=OxY^)1^;T~?Q?uY9PSt!dD)E*Cr5kKs z$`SsX*;ve{dbRyyy^({u=B+32fnNhWTE1F-{&nEZDu}zL3bsBP=~nvRth0%Sp&ioG zcbr1-um~X~92e}bx|{d+;qBhqiVhC`@B7@HZ1KYI{8!H6Rutlq=4)HmL&hbZ94t>$ z*S}IASOTM&Y!f-!uJfAz*7*45^;XPiFzBOk#xu+9nRh460coVO{eC8~ zjd0_wu_j5kk^Hmjc3;$vQB2$GmC$bbF5K!!UFueZ%uAtJogsR?=NgFWLqdzZPfXB6pTzi>5|2qJ90Rh=f5=$r^kgz8E*Irr#FTxQ265? zTYeR#=Ll|8YG}&fRPVeL%8qYsU{R*fPC+b|MBXXBEP>^krJ<&NF!teIYZr-~+#CJc z^6M#U)jir$7wl*~gxS8Rmuuhr1X_KvL<;!N;jIgEkRiZxOXW7Rk{4Pk?+fSz^c>D6 z2LzB%Tzr}?h!jsZGtektI62}t6*~5dLW2cfFpVwx&PThmm@Yq*y#XOqA!6+img5Iw zc1X|9U4$0j9`E7c(P@2#PW02PL z@9Qr^0`~laV$qvo+d=txeJ+sBN4}zt?_3U!w-B%Hi>*Gc={I(4HaYPaW<5FBuHpFF`R9Qqgede}Yd2M-WM0^z^O8=W8co{-$dx*G8V6SA zB67x+^9-HoJWTaT!5^kHV##J9(j&~>`X&vU<&T+?*$RZV! z{+hfyAe^hA=t}zhxeS{{RGVH*@uAmm`EJimZZL4J)IP+PBVsu;VJhVyrLv8v^EM(+ zs2OfCL{8A4?DnWk1nM8+hRz^}6xDW({-+XWcu%7gEIK)ZdVk#x`~A@LAJ@JaIe1Ue zY78;SO_PRyGE6-miz5uiC!OgtJRK2}%{w9@?f=Mn#{)FmrX@ZrZVS2lr2jv(B~s95 zLhI&#i8#Ae^Wn!XyLy?Dt*8|XObv0NFu8fxF8ng9cm6;sZt@XFXQ>Q%S}glWU3Hp% zYNfR0mdNvbb?XM`*rs!V)h2202Sc)^|7SyU!_a}U?f)bm>L+cZ@(Us!X=sX-CPKbX zWj%)6Z}KO23P`rDD!T@9ADRRwBD#6y2bMDYhRXD1G51nmWl%~%cZvuJvuVS(0V)dznhcWBl{eTcPCNfp)hCOGDImegNAEq*1BI08u zrQ9O;iuEJ}Y$xF%6silzs)6fjb!h=7oFsefZNZ2(XT_TJ!62uk-D5b{B4+3~h?)^3 zxBjvOhvkrUzpp}CAW$4kSIE`HQP~G81q-oSIXibK-jJnH&lAc({~a7Zmioq2A%;5$ zE3mJUocGgnceV<;3s$f3Hm{N8Ak4AUnSSx)Qlyb}f< z@Ta&JO#&V6+}TU2CUlAO?8K1g(oT1M^<*bmc5Uy0_x-=|Nj!9FOeR!zV_D&apK1T@ z!jVjPR4XrI#h2gsC0r}tX8DAtGL58K%t&5$rm0Py%#$gxcuOi>%q50uy%h7JomVSi z?MLa?ljWvIbr%(K+8Dui+&Nv`f1Y}UD>$+W*ZCkWK9xuZws;ypwn+ak(w+XEp!J#m zwmb~n!^J1XDAH-%)htMT();@K^?TA;>a5(@1nNjuR)?iBgHUt|D*Z|_XQ=FYwtaF$ zklDKlX2$+XBIxSIkCm@;{vmB+*;{%2>%z=o^g#&0Y2D{!BgNeJ?_SwhQs$WtZKPi& zJ0X)B!YC~EHfV>FqAu6IdU4?027Jc}#D8CN$s&qY^0h;jz8>nbel>%NEJAPb+a1@L zV2|3)qnZ10GNw|~S3=*6P*GlBNNLO_tyk+Wen~pXX=~XR=pU#YByOOxGBkWGR~vV< z+R6gTHNILQc0djk_QUdIxKxdZK#Or+AbaP0L`f1a0eOSn1K<98zZ`^ z-u*=}z7|O?Z{TY13d@ZfH~!62f}gn{5tFK&ZwVQ5)nKi8XzAOyZ{~-R&lO0}6D$R|z(%LKs?IEzIS=KXs{p<|hCs$LOj)kf*ogh^b>fwqHYjX6!F@stJM_Oy2jo_&t>|rlgA&cUxbLI z-gDot_sdRxD>G}&o|(*lKhKWT(SnhaGLixSK(4N)tOo#i1i0_E zBt*C?y?Sg8?gP(V52gfEV8B=aU_4M)Ry6R=T+4EHFj!1)&k@fWQHuVYq-3-;u*>mH z?}{#u{VHiK)n{|Yn5PKc1X9Uo9SC<(f&EawYSwksCj`_CZdA>m&V8cZkUpJp-Qsqr zwSKNf-Zglx=k+%khIbqJk_PWDw>`Gm>-^|`lxZ`&FSp_M11{t4lVjzUDpjIY~ zK~2Eb1Wr@R8*_Ov_`<4n0uMp8x}%4AjN0A3e#IscyvA=yxC~rS<^Thd=Q_VZoW-G) z@X0$L-DhJy4sPVF%9)MBkw@3<9+Y$^idsxO-2ugLt2%3q&wU{Hc<*rJIVO0z_iSb+HTWqMBz>g4xFvFzsvODHPjkD~ax0ySbGiy-j9Ut>V5Rd#kZ< zp`^50dSSa#g%Cvy?-3q}-@dj}ZQ*HXRxCWN>Rpj%sc7mYn>dE5zU5e9rU1R?3v+;X z@x9k-A<_Bf88J+cwz%!XA4qe@z|-IiTZI7>p|G#oaO*2N()ge?C1mvN!2{k8D?D_b zETK2KgP$qw{*)IVPGWZ6J2^)nZaB&7*TUh}^S!1zSa`;S>1bBpPt4LfEnqbFw4&&h zN*`af*Py=?td4^Mp=~T;7?XF;wpbqBVafk+0csq^9p?V=dSH*fp-m@}Hx(-DWnjs! zUl9G8EmO+J@hJX96C{9Qj>04>%)|&uJ}r$Fj@>>YYyuOfyOb|cAwi)W#7%>P`G5y$qmstzd`EFRVjI6e%n>TWDHUu zjRH{U(RX>_=H~gq@6DZ_d3WPOiUHQcg&dw+j;-asSmw&gp^TB6jgaScD`<2+^>-=E zr6U%=ttq|y1;_nckK_U%JR3IF@U(z?hc@_mL5Je;QPvPxw*gi|#vv|w5dhkEnMR_I z;wWr@Tt2_>={63zLmQvqNELt$nhX4*4k2R5w!hytfrZLvrlt13H&nrEe;{$=uCn4C zo>-7~eu40lAKz;q-whFZm1E-l<2?aJln4l}zdB>1nr;hI*rh_q$c(F7Qxel&!cZYH zYTt2{@3d}hedWhg9Yu!6$yO>emYL9CG8^Urg=ZfF#aY4`N5`7c?;Y>~CzjTAtAOFJpPLC%~0R&+zR}L7;qb2cz>eZqu*teDiUlCj5VZ;c# zma_?;nfxr#VGSG-k2&Azy1s&*=h)tOP<*$c>)_cz9P;Rh0X7m8Sfb)l{Fr= z-+cYxr~i<6Cf>6zEKOql>sTv9a2Z2!x9XDK=PKV*3remQNcw@uhsOEqIlbMZpi;Ef zYby7r;u3u-3&hU^EJogY+aj|3zAr%I`nnB0R8Eepcd4&bQf{HeP3fJ{%;Gska8zyu zSvWT~E$_CHU&euy?Kkd2d|XD__HO2e8ub1Xg8?i+FBE)Z=?QEwsjE;eOC! z_&r-YwLW(=JxoBc?DJO5A(QTfN1K({*VP8oY_SVL)kU>4*aKwXEPkcKW~>C3ATnxX z3wyT0c7Cz>IY8$v46Z?B{XV!AlNU{ngw|AG)^KY&*-}u*=velPBCsU&Eq-3)P?I+` z%a$kO(nGX1CB;%3uHr7eT<7LslQjK6?UT*;XjdJz?D+!|GOMjeCtf6@Snv1mu%bWT zM}N|#O;eKMFQPAvbGku40+o;wwOtYeJwH|%aA6VA04daMw{rx+h6_mbqJ*c@MRKU?A!qaAh#;{>_A(g&DEs z>AX~>y_&iu#2wpv@U1nEC+M7XU7LQ-)D+ zAz!60;t-Z33~T1-YrR}I>Y4q!`zClTE5oy$B7yng`c_3GdhvJka6wJmO6++&xp3lJ z7wzIK8ywLDizFZ&6rBo4a~$(t=ud&aVKhk^r{30V+3oA)IVa5EL2Wl=Eu|I*8e7Eq zPUe%`#%$yvqffWXwP(MoZv?R(sf3O@gTB7){-4Oi5E8Ty_1S!LyQ598iGcVZ=iwHy<0Z_@i}I@>Y0z3vJ=j8|KT$ z0#|2l9j9fX^ut}AtKgfBVd&8mfsqvgNuBtbo(OhuJakk1%!kHvgil^Nv*gO{)&n}) za5g>z)->fTXyL%sd0@UjT1Bx4$F>KvY4G;r>htVt%w7W7-uw%*^=kI+FLH0)li0uG zm=)RFEFJTztZeQ(Av^`!dq{S4SG1X5*nr-NQ?`CCf0wpi1fKQ}*a$fVT=eOm+A04BY}yEh(%@&mT#;AE$6yBD@aqmIOHn$r z#-$^KtLqi9R;eJuZPZe%ouE}Ia*JtYRexl2v#DW2?f~CNfZfix37DLt%hKB4Rd84% z>M4n^1^_)&oDo8vOg_)O%X>G8NG`4Oz05f&16i`bi`mhDD*uvl@nGp*WS(A|t8I|{ z^5vslvstsq+;Rb@2dNzxQb$)WV_1UQMHam8(1`-e#ZQREw&_Ep*U}CRa@3&0#8-TG z<{9I`(df=%=dY{`WfgUv-jSKC5sAAO*OaDrBR7|qN+P@)Q#B(Y=$vFx>%D@k*ZX&c z1I6?$eZbfB3k25Q1eBr1@qqTx^B7@`{oVEg{K3p-<&_8V*(cQ}{b>T1fRLa|z1k#< z=8f)^wM=X?GO zFsorUH8uWol_WyG!@kcf6#R;xAd|D{*1$_9n+2V_B*nOOvy3bMq!vmW-GP<2nU@eu zIMn8@c@pfoWUv$;EOTQ~S4VM2{d^^Shv$JH3QzT?~ zukKsx_n4E;k2UA$;JxTpj$|G=t(ldP?Dhx9XvNMmYGM+ST(*aVAw1fH6a8pTezL}( z=!+86Jpd50qy^?|E=u$utg^^uWXf8#?2`r|Kveg^nkOj>kp6adcSBka-)CW*pJm$V z6dlqT(r(5zW7o}w;w!EC-o1W}zPNe}54XhnM}op- z>OAp3T5a=u_&POChH{gU^kDYY&EQO!m?EDQ^^%#(T9w}6m;*_6XHF#x2Xsx{-}PWq z1%qL1jTP-OHf0n{U-nl82_+*!W%iIBr>YFgDRp}{R|z5$Ms}Gbd!ZNW5zz@1Q3bPg z_5^w({2w8wKb84RYvMLz*_z=%x5oKqN{A2c2ypdr_V|lj`Pu-*605!6SeBIQ$39%^ z=Do!IoLx^ReqL?SK({UhI_K^{ltNZ444lbwB^m8Xqf%%d+m8)j$-DNkYllKpi)^Yf z2LC%I6Y_&bW>(Ce#p|t&9gcX8O%;RrT(I~VD-}qYeAAgLP!)J}vTk?Zlv18IiYz2~ z>BT(BRCU$o9yh0JvBp~+?F}yfA=j5izGap!8jdeMe^{27Snr-l+D)7Xqf)Njj`>fr_jMou?K45%&5lMr_{(=TTK#&Gbxba4` z%HQcjExnwoaC`%6*LXQi$sIIV!BXovX8sia5tldJsD7&fz9-Q_Yq#_#HF@lg-&aj` z=^MWbImWsyaffBHp4DxgY}TuO!01yg$E~@`U|#II0+;s7Ds7R_}(BR8rHPi}@6EK^EN} zIMDaMIe{B$4cqL!!EDiAOlX<^9{mRbOm!hhC?ADrIn!8M#*3iDw_%<`bp%J zap{&-3_~6JG02O%;(oJfs0j59=Wwi)1FYjLO1b{i{gW?K2JB#~A;7qH`=QiDvx7TG z#7i)XZPhC2w}_MAoUMVp2>h)1yv}Q9TTvpdDk|)1q+>8{-K98ebr?k9mf9hq35{0H z3fv*k=yYt6f4Q|YD^iXe2P|*~lIh%6v#_<|{@=g~bzax3X{+pP=5QKZTd!(rLU zYXhEKhnf4#pgLCrC68~nI^5%0Pr~+yB)MNv*a$h>Z=M$XoNs=iW{DmgOQgr+p9blA z>i zUs$GNER8GPOx2iBN)k}=c~GK7U$!Ud$@MQ?me{B8Xv^9Dt-{@{IgJ5t`c^3@`3)u= z!1uDK=SIwx=j2X6(6H~E6f$a$A`N(Np5C!Tqp zRIbWrOwukR+Z5RkWWvEnb+ZL#LjDcJXu;Yp?#AsBYoPssNu8j*zeg->(jSMFVSYT z7f`oz*{Mlf(n=t@B}Bq&BEhR)U~tSNlQ7DAao5kbzY{7-^so_oBk-t7DVCOF%k@dD z!08HNS~~2xRld6`WaLKa3cy{zEi~@IXy&|=J?)%f=yUfQU3F{Gvs#YR`6?#Gyurd zo!xFTrc{n(H1gKL@1?$}rmPVe6$|1i?(J>5#0+9(%DQ7*o;zpk>aCayo{7EPU2@jS z(RJlgN-mmh9!5*7_;c}6yhY7Ae&!?M#|#E%I6V*K?%_sIp#ty6Kop1;%e-Bz{oNdf5v_LN zGO6I89NGH*f-Z$0tY>#a(>Z*`Cz52+JB66V+yy=a1Ye9 z2}KZjAtJQ5_?ZmB3Q~4{ZpWmUCOVH_EZogNOT>V6#$32C(ALdj5MvEy^O}2AtyQ_; zcvwm+Oou0H;m2%bt2dn2>r}-7HeyAbd&_hz*Knd0b*(7NWb3cOK4&Mtl7Hd8>f$dW znbz_DgBz3~LaR9K5L*UlJ3heRy+JvH}bz4V-w1Z@}>eVK<>J#XG+2&)B`GNYg2cj|wMUQK)h z9tsJjmh*l!_+>4*#?6om(G1Yt-$r7Wtyj*Y>)I(s|i>Kg!`+T(l(QdfrZ-Oz`7JK&qy-K>csgQ^;CV_pY zIEe{lQ2{U0urgzk?K%Hj3{A2v(wplxOeDf39MpJ;4Hb#~5+Zwg+j@BP*H;_^Gwyo# zaFl<#8#3iEG`-I(l{V2@()AZ&#^J==!*AH*zq_-HzWJLk%;ya%exXbkmS6T{-OzqY z)twc)0#V)NmA+_z)(OSi%%@xVQZ^YHb)8?vZq1hZmbuSdoOYoZ5R`_TdWnc|awTD8 zwe~0*p7Hu_)xq^fxAyekd7n$n) zxe7C;5~}M(A7>S}7r~QJ{)p{)j!U^9ladex*EnOZdsC%wK4!ls3X%vI=Da<|;S#ngQVa(D>e4 zd&a5p+bT{=+}{V==cBe(_(+d<&XFX%OJ=_O;qTt$SL_w8CoTrSw77MM07AnW787gml-6+c=+6jXRzumm?Eal^;|-)tG((-cy-ONwUQ)mo7CQKbAN z+Kbnqr~mTEC3by6I$WXq;wv-;<>PuoWpi%Z8h2?ua7YdoEIhZ;3 zk3LqfSnf5c`aU;~OVQL7_hUne{WiIdE(|EeecnRK$-hqj z^vss541*i;402IyrGNQiJCI>q%rSBWFI?k~7IBPqTjI|0qvdbv|MT9+4X0uf6d$i% r?HX6R_lG+dy5_W~aq@3Tvwgnj`}MG*$XONlLJUw>(NeBZG7tG5)tq2- diff --git a/data/gfx/balloon/balloon4.png b/data/gfx/balloon/balloon4.png index 445a857a4797e73a3c3941a225e0992d032c58f1..4e0fadfe97b61a880b5f25e8dfbb6bdf953ac7fc 100644 GIT binary patch literal 12516 zcmdUWc{o(>|MwtSNR4?IUfyKTCX4~PJrYEX9ZR=_!-D+g# zmD=qgl@fstPFX3PHwtzv{Mc}1(N&w$bQtn!22z^ESPs6C z0+tP)W(h;Q&A{bpm3bQejEEKl^SKWD3%Y(oBw14P zBuTVW=`4I?hpv&55oj|9P#fLaKnQ>PnQ^nzq`OWG0={lE1GmwVY)0YXpBW4K9w07_ z=?c6#0q_(C*{to9DYRjOqfH!m+Ahe)KE`BxXUUTT_{;B~1aTaYn9W+eK|O4XYENLh z8Fg(G71xO+cCy?{R=i|+Ppe)1FrXqVvB0;2=Wn0JpKL_j=KL^+l3Xgrj|(C1FTm}9_AUF2 zY5W!RT3&{>$tb+0#XPHk*!Cj<=(;hIfMNMM&{9B3V|5*Mb|dB5R8a}{ItOg(Sgwxx5>u^+w83FN=LeNVmia3L&9tJNhzCTZO2PD56!Koy>^M% zzy>7bJhmR!L$7;CDW9_9t(Zr@3GXv80EU!=zgA7{jS?~U%Wlal#GJ(K1;k3>IkZu zVEGwZ4qtpyjKGF;MsXc#2?%H11h8eIpZw~%ThT5%SEC@7 z6fSKinOOEYd*CLp-Fz*=GJPTxH#UZ_PLQcTD?6It?NB0beZa@m`Hmo6AS04{e2b81 zpX;WjWi`M1k|4GIO9l7KRfT!wEH@=1_3=UY114tv=EWYhvPrlm8=$K)^RjE&F*_Ph zPFA>;+}{(3*nomza}>>Pb<vB z0=e|VVNX`jq7wj-oY+}DBv%k_-+VOlD>SKTb!G|++{L{zA$z?}Q_4oL!>+7&jb33Y zYP%k6c&7{Iu?3}!qx=+V&mnqy_trSnD|Nn=&QX<@BSqR~`ip?thn)$(sR)8i)pyb9 z3b3!wzPEB@){ER#Nps>hjc?}D9^lOCe$$;=lZwL6*Y!=hP@10`O9 zmO36~O^q50n6a$m9EVYd%M|Om5 zQivAaDF%M$bKME-*&mGG+no6ZOJOieJg9bfx7myknp?n-H|y<)O{;xcVy34MzWp#i zwz9FDyR1(PKX5tpR?u@F!FJ+QpzbuAMwQ5>LYZ(&h)>avQAL%qNTepx$MB$79Aw0t z&%7u*G_D!I*>2Z224iX1ca-PNBed=s)wg%^x}M8b}^g$JaMH3OEj1RryKmSkI8) zJEJM#t||^Y6TVXq^4Q*SqPLHmfj?$o%ratU-`k6KIuBc^&o~}Blb*sf$>{7%9&EV7 z&Glg8fE1_LOV8y1opyOVaqw<+tjOF)g`t7AVE&x70j}a_=mI}s2Yq+W*4+J@pdVg} z=N3e`KNI#CdD&R0=xj=SDnE=upv!(fX*gXTG>{jYa(P*0u$b|Th`eVXZxbR{`-^g2 z(7Nno;bWgObspOv_UW^UXbHBm&7@tl|KOo*C3vV{#A8%zY&NbT(dY5ybhiQijcocO zVmy&^kv|6WxMW0HT09p?t`^*B@5NHe`~2DAS+PT#V3usPv_5MFyVJ8{!oOM?bY*7g zKlVo*y;&E(kiW|-x#ICK4dZP$MEOPL66k^714b)`}iEu!+BTa~B$?&n!9 z?Vcp-0|dB3Lcl+Fqm!1tlz$$*5D z%t%vVdb8U`>{An&U45K#SYcsDnyusfkgVex&$6+DF2_I>(6pwZ*K*QlZGVm#BNr7<&YV`;V2YEX>_?*OZW{B`g?B0yT^}T0 z4^$a*+j;_?_se_&Tsvmb!=wS^rfvnsP#-jHGbUM4Ma~S}@0~MvcruxNhr)kJ05Zmm z8)YoCiIi9aUjvfd++?ga=1MUx!l{kDS|0%InwCON&FMnfa9LT~ABuG&poqq^w9GGR z)qb5_dOZTD4a9l2F&~NwYU~G@wg;u_RLaYe^x&EX;oLV@y5R})`b?)PFg@|3q$*H0 zO8=`zyZH+0hj=6>6(OV^b@X^yn@p>J@V8Cgh;oX*Set>74TjJmRhyjY(S)LR-I<`} zh&G}$2!9hs@|>dHt}aS@Niss7tM42~;sUl@LGF$V+Q zG|{0B3O)6bB~r9Jfs3c01)wTux%>c_!nb0ibEE&pPz%_{2-rHED>!Jonfv(_g@;K} z)%M3gqE{Ta>oGKfcnNHCd&j(ADnB~ivxEC2VY^1dp3|sK?5n%T;BDd&!@7dqz*?#q zF+L;7C`|5{)rb(<3NbAM{&CoE_LS2H=;V>})CVt7T9CgFL@sn$_{H1DF)y;r4;L<8 z{i_|L2mXAuA;m2P|UvlE(X&im)Pn|H6^rt`|;Jd`(D4CPgjkOjJcd{wV;kt!1rt9Ud=0 zrChvJo47_BYuSG!hUVi>`Ly`!o?!mho)Y5}P2-j>25%AwN{ARK(6br)j7WCrg`U>% z?80ESm~rHqYPlA4xEX602dX2rQf(bxRP%8{XK4_B9WElPOV4np6CPsbe5V7ke;ppZ z1pl!I<7?T)Oyq{OP1s_Ai?qJL^0|z=E}M@cMCc@K*4iRJ&C-p~zWf-W;X3w9gun@x zM1Z`&?hpq73xyTWB4eWJm6)e{u2TAlZ3i7;>qb-X*Oh0bhz!jSF3(wa0kbtqjq0a1 zU5#B&JD)R%gJPdN$&VgPkjZBKy3q4;KmDCf?3N0D8MUf^duUX-P2#gTIj|TaueJ2Q z1$bIzZqGf-8wdMIaM3#y-b84aRq=A&{+(sw#Hpd=n{gQa+Q!@fK`jqp`KVb``7~Tl z50p)G(E~+7Wy|KhBtCe=7tEnt=O&!UOCOXhs7-B6vpt~nJg={N*-Mzh9Udy(ylg2S zJdj7@@SsF`d{=3t2jew!?UDrjU{EgS9nv z2c||g@V?loOsuqeoT2##>bnE${`V+3xA@*rDl)wJ9k6<6l84me=aNrsH?54H8F>76 zz`hfs9br}uhET$7_t5vavgN?!qq~2ixmQJvG4R2 z+e9%{7$)Ox#O!gQY`D(|;DWt>Z84W{9OjAU~BDIz8p^*H!b4xF1`Y{YL#F`hHvDVhMbF#^Y3#Ibps&2iCdxGm9r_f(&FEv{8*FY zJ7xm*kA_J%lkT*M#92Am$qQfiKRfx7CmB1;^l7CoiEFx8hUzUKkLLw(&Ar*@<3qy+ zUvogdRbM7f06BZ#o1HJSdAJLx9>AfIMJ8e;!b^|@TK0CtKUEvlpfl27Y zwb)8xk_VV|g!{31T=p@To}+6*1CvHtkZUHsG~f-PW2!3Hf=5ibn#79_ z;O=b=z4Lq*J*jIWY&2du?K95vWn}z|b0t50Q{C4Lv!88z-ymnI{9Dw>v!QZopmfT} z+19XWrAHJw4yH@q>i4rYHAnwI_~vaLzR$b~&w3?9_RaCw2pLO^53eM=@tDw$Rs2_I zU-BE;3uN#`#DXOrP{vOv^vz%{QET4|XXNfwXxA8Q62-0^wJ(sfqB-BtpjpTXTl`GQ zu`TAw=!Mp`9vx2fBL#=hgDLq=$K$-xR3+#VAL_h_F=---81cCB|9BarnIAA3z@b8N z`hFu_kOOD4^(ZtC#`uHr`mwB1|BdE29iQT~V31^C;hyl;am;W?HFTedLmxT1bzV99 z@R!H&O1C0YdNS>nqwFrdto|v5LA^USRY4Xs8pITUrxzYS)(We}eJ zv9VXyIb*G=-aLORR^9blUdbrOz1B>i-KUUeGSvMQK|@wcQ`+d@)|LU76e}2uaXDDI zn;(wa4jqHcI0AYF=xfe#qB}(8TVvn$^yjwOvGJU$7V)}uKMUCw(SR({yjPGyPHz^G z^5|6kRZ#Mcr;9T8STBPh9vRiTkXz2+B7PA>CwQ!Df zUW-sUs=>atyVTrUSFA3e5Ii59I#+wn6v?}fRNmOITCRbBZQTlJ9|uYAgytM_C#~o> z)0Jcewg>KNV+60~9f%^#zs1mLa(iOS?lC@-{n|_fA=iTZ+>2x z{{(rt>(zy4=yFW#o0%L@^b$hOZ#(LC4#h}+pWktG=qy)lo|VI0k*USYvoc`^Q2YU2VpIy^y z-bT5=BG{}j7q@1yifRKWbyJL-&W!CrHQ>cK+@QTr0U{AScqkkeBdCP-n2y3kYAyp< z-h9L6SoyrsO(_yewQ9IT*j|-XK99x*6j04bw~=(w+SQ(Jr$83UvHY(hlw&k~8Mjd( zJYFJm@qARGS3YR(1swsMMd!?r2CXmUJC+9G|3=n4)RKY-d(*{m*XMFHO`7NT(X)Us z(Ru$t(CLO4cVzx94YvQ$j!yu}vqPV@{_&1>#yx|e+YGHMpBf13)|4vjF*1> zSZ8&ZDe;vc+>}ad{R77bHXxS5s|~sX^sco_~{D+AC8&I%ylFLvn(_`fQ;R9EVJ9c<1{Vz`hwH{Tu)5xc~w54od6w)-7uT&YjU30*Epa zzlEeAZRifsZuNLG5JtX=xE4!{47*tBaZBJ0<^EqXKL@1P473ODu!oyU_+*$eY5dC# zum`Vwjb*ajL;bWX)rM&LH)7iBDur4)4`txhMwnp4uc+~o$q@HA@Kg*Y<0w^!y~~1z z^e9RSEOssro2eCG`#rV6Z=PI z;{~9fWkg6tx@wnM>&*V{SCK>l2Xq0Bl$eV7kXinhao%DKQyE>3IOP z1%96d^~wMqGKL+gFSQ$Zo#Jb`nliFtlmYoXXpNU8#TP_q&bs|x2AgR5rkH;Z{>7|# zDt`Uf=pRLimo;uL9$u~G|Q+)8`qx?9sNZqm&*w2d=uLd*@I$|&MiN_vnB>L}F$ z(@T!evu*^rBqv{sqUneoN)^DWM0F(MQr+VDTxcRJ^Wr+>o&LYrbQMZLtjqn8vEs72abNG!wS7quh=!F?2E95#_$5EkJCioK4halG) z)gTNl3>oI3Y`2)sR$wxNfMTfZ=IGLEON_K4ie`OQ&f3OHO<|E+QzzbSWA1il=WgQY zK9yrU_)pXeL@y|1$ug7wp0<52S(i}PLNxt@M8;}-&0=7@P3*=8eNTxrRnAp z{gij;2)bnglx-`mx;2CUa<-T}^UzdrL?HLOvoTn{p8uGsYwv$I(*Q9o#+JmdnxnUV zeh=_3u*lD9WC zInj+TBe=z>1|B+FtvbAp!?%6tOW4H5QJ){b5jme2qRkl~e3nuA^42!HPPMe%3|21B zgyJLE$7S_Y$X()OU9dapxs+it=4rnV=_u?J0nji0@Wx#yO<;zg@C~u3R7jCiRMq~R z#uM^In?*5_GnN;A5J|t^IwQz=eDgl{kKsC&?m4um(_+Y@!zGI?#+=@)im_HqqD}*# zA{}vL#J@#OblvGg;sf#f8FiH9=6!i>NfPUe#udHXN&ED(E(^-j?jHW`8N9v-?Ta)2 zN*|#N)f6(ZG?ekR?wH_=E<(n;@)c`kQ;X3#!~~&9yN3DnI*Pjyl9sAS@B)XK$n)nb zoKIZOzpS?dt2lj@Kk~ez$dCq|mtz|vCmz`$yJ$15m$UDa_O(0W8WeG7Z6jFF#vl^6 zjULxh1G-P$h`OQYn4=gv@5jK6#AJV(+|o|4g~1Ld?9~Dc5T9o3gs!&=IepFJyBHpZ z#x2%}bIHQOE>7(`?&tb-zXC8-X*asu8doGnd?0HvRXo|9H=%H=h|Q2axP<4Mbd}}V zQ#e@vjAprh($)5m$+%2YyH73lTO-UQQ##h91C72KE=$K_tzJw!DQr>tl2I$F+Z8o9 z=foq7s#h+0=J_-WIZ&yZ&UZ6Rng4VE8Wz<5YX{&qIx}^x9-f^3r~2=-KWm{%x!6#G zg#mW)choO;H`QHj^740{g|XK@BzLC{YZoud$T)y!%O6jZtT*$ zO&hM=uw8-=WW*?Jh&=v>58(55{`{s3D&KA6*HK;xX*0--OS!`9m7&c?#eFf@mUcO$ zHz8TFaBpqGtMP?XNKG3WdSSiEuOL^~9cBR81bIxg&mSdBFaRuzGP>_Ka3V8fU{<)I z%ZKj6|GN=@!C%Y__dJA6&bN+P&;64tsD{h_$rU17?+!!b);-s8Pco( zxscxFgbt(+rLHD8dlV@u0^~V=pyY>hy;`cD-^fva-YF`=LFPk50Uxkj>}rGY2DggA zq!qEDL5ITGP8Xn0_gvJwIAiE}K%Bksqh@<&ij!0Md!NuUszKy&1=V}@v|aQ3Rfll@ zuTa+o@3wVrc=g8}+J2;*=;8TO~+0S$1ocU1A%C$E>Qhk@!zFFpO7m)GM!^T7mYa`Vk? zz3Si%k6t8Z#fF@_(Njl%=*8Xf!9A#!ZgKMf4Voe;ex%Wa)xC_39TgT(VFkbn6(?@w zp+#nN(`L8+N!^bFe_GZ{i~A$w+WGzl_P9;d2O(2)4%u@_tc@1`1o%4;qo#FNX8x4% zF~q|O{p=J{0j~Exh)ntDq z|AQP1VEL^VPHN1G|DC>K-bgKv?Gm|ZM^=6Q!wQ4vjO5>J1X!=&IO6y}?p|d|lXz~rC--YMBM$xP2t40f?Kxz__;!u) zJyO7-ddmOr6wuZR>SB=Un^=WUW0Pus5dvBTPjkqet{NN;WqtN*=p6`;6xOTi$ zj%*M|xL*+Cep?cUrZIKYpFGz|kzwxP#Nq!7Ct&Zg&~A1on#R0daT*M_*+dXG7`**U+V@~k|IN^(h{+Bextsq}Hn0=U zWqDxZxG5PPy4w~ecUbqiB#HhYlkcjv?iOm8a6!#?3tl^3GtGY1;Y@Q{Z~Fk?-l5>H zFHQ|y-6d))f>ZCBiQkTyEfJv0S6T-&-Tnu)KZ3}IdlNsq``LXx@SPR0-|+p1mH2U| zkKZjR&MqB@TjxAFu#qx3N2vykWh=!rXQN=u)*Uz@m-`VQ2BlDbVi`|pJ}W5aoZP?i z76DUzWH~dls=?f76GeED`l_hlq}xoIiowdNiom-$?>k$EYr+!VCZ@dFpw;~tC)jp^ zM_hMvwd>2M13l#fdR>g-Qk(F_=AR!CFKxgikRwFhOmf9Y$)N8eVoUJ+GBT9$%Tb97 z{BGC%2de{z0#Di5g7&K_V}w!RJH4^2Wx(B2b<*+Jetm`{sGQ5QX(?nu4pX4T;Tz=> z2eN)G&RfAN=U!G)u%odhHYmvo7~IIUn>$0z4YS#_qF%uxa-3MmMxP?wGQaGf6vd5! zRr&LrAdK{}CmlqqRyd{~N0an{f5!xBjRY=i<5WDym8Ohcak-bF9s7_*B_=y(%Ig52 zzef#{;JLnV_a^z9KWGDm#rc%3;u>Ftu7@dd1ip|y!G2=3`Pu`^^zg0j*ebm3f2#k% zmEn%=+8Z@W{n(Pk*-l&G(^K+SPL?*A&j;R;@C{`aIO%>kA3^Sa034K~h_5`cN{f4# zEl`JFtJOJxVhd4CuKj7>JnPzdVcF!W9ae@^;fxJTzN zvqhXGm9A^A2nde=H~-lgpv+e*B(LGolY+YA4d?xL z@}ah6aBm-=T)qmdR7HU=lPB&Rhm}9%c)0LZxO-{pVK9zb@h1B!yR3zuY5`OX83m zP=3iBY%q$S4KcJxMaFTl%E;*cLa62xEF8k>usQsoqv1ua%j_3XE00?Nbg^* z^vC^G|1;E#hY0epvryKO9a#7N)&^E_l)p@BwWOStuYMInTn+L22&FkBF1q+05_jLb z^1%j#wE}&o?*W^0_W!U4)|v|fjNQTVAtE?qB$F&=X}=t{;fVb=B%qbuF4VQB2|)Z! z0#dB&(|0PKA}uaD%7;%*o0XHIP0fuj=KUV){ykAfpXt(l_DHpLF;}7Kp-kKPnSHmM zX576Ns%yNC{dNcnW53Pfb(^aw$PmvgctQ|&Ar0a#c)99*R4{CWHL1mMrFdLg0Fx~C z$)%=_X(kj&-WT^i^|1ob{^38x2Nmi(osQ>9&8&14x^712GYxt~yZcmAJl;R+tbj46 zLe7u17;oy0Z1SQoE}%(|&m6j?!8Bp~%kYerZvCkw?Pj7Qk@IZ*Vl)3z4*RF)t=k6P z(ts+58TNc+iiOOhgb1^GoiECY9QoUAEcHW!g_4Czu{@d?NAy{is}~N4h-jPvr%!LDI>*AGxX;So$imE6yn-$_h zOR^9hj`a$T7AJUDf|iOqD>mia{Ydv@NAtA2eZMw(UdA|E)$-0k@0KQR7#$JWl%L&o zlJDMrrO#sh;`4XYNTONm^Gw*v`RcqA>53!2O9*+nPZGRQJ!F-QBwAbu$Tv=tl1OF+c#HIVb>ehy09vP?CB~0y> zb25SPO~%?NYV@!F1pH|;@LvOeI95?%>OMkRsmyo!KKB>;J{9ke9Wqzj-hVpjZyuWN zcT8Ge(w`EZau`UvJ+CWu^IRX*-s4(d-=mFO_fwDDpVG}r^6A4FN=Rv~#*0G7`EgTz zc$o#scJuc!z4C}jdH<)#KI_RNys*{E{z!oz3I>vno|w5VLRK4_R~9Z)#<$sj?|CzW zHQ|5gt1^pKDl5S1g!6as|5EkyRc1nwK){5AUmK@?B8p81g9Kt!vmH0A z#=ME29Tv8SVmpwFyb{oYQ~CbFw7NIZ&=mPD$;}hGD~lS&O+&af_N`I!Yy-HLTs%Q$ z05x5))A2BjBC|<4Vp@(_EmgE$oC4ghF=T)0ktg8aY^n zueYWqqralMF{28B^aBJvgU=`?Q$Zo_XZrbX{AdR|} zPSlB-l?RBND`YdyV{$+Ji=n#>*jFj~l1)dcd7p$K+6wG>b$4ra^erZQv~1gG4i(0D zTyUYfAc{z!D&>DY`dh32Z4xxaBUJuj5||MY|6hUr!_e)f|Ca?o24Akv?WdU;{xpN& g4>us23L%z>PdI&_cXZKywgA)7GQ3=<;rQTx0Uh&Vb^rhX literal 12511 zcmd^`c{r4P{O?C(&svBWifq}E2$_n=zE#T76h&E@kYv4O$-ZP48WOTA`#OkZiOMo$ z8QB>-!_1hu=Zv1`>Gz!9Ip=r%u5+FL&UM|_7`OR;zSn&3xxe#zzdvu`CPq3(nE9C@ z5XceTYg%Ry2+b7rc?%;w^>LiNoR|88#@$Tk3Z%5}#1aG|4AIrPeEoUGYNktZMn_VX zG5oQ+tL(>9pUSZ}u6<_yBG7sN{3DrqiSW+X_qBzuCEmEH8JNu8rH8*IQ*U9j`CVy;lP-jz@a`Ox=v63rHoR76q^BuXmL?I#IgN_I>xh6w zVZhO8R5$$|yT934*UT&8S4c8pFs98KVNkRk(?*YDSABji(A3Q}(+6tP?ZMTK48U7) z0*8(ep%?tUA&_zh^nCW-6g@eJ1CW*>_M5WtN8i1!B?OrY#auk^h0+QGAk(lQe3_Vn zTr}Ze%)y9XZ*0;--|_Kpvul$arickxjZ5VyWpiHX=iE%%n$!K4NFC7O_|$qa*asS5 zW&A2&@XbId>jLF2|3+--K138)2)ap-mK#;VQ7~`RghY7`&4`8phuUG`z;#-B4hkLE z8qP8h0E5^Ge-A^kIH(`N?{}xqApBY+$|CLfv05D%qwrTxqql0#(``aefv)GK;NGW^ zKQKd>IQ!Hii7=K>)MnptuN0L_cf78)=yCvRV%k5Hx-nyM)RDnJpQuR>>;~7DIk+Qr z6m?wOvKj4Mf7|prCU_`NJ+vLvi9rg{*(5H+OA-!63ApXvVje;+V$W%u9fCHEH%zn3 zU%VBz`!>D+9EnG4rE(FAzTS7v=U}eH6e}oAQu^=D7JS!q>PnGk?q2G*q(Ahq8{>gY z>IR+pr70&WzL?EnI*99^1k8g#n}?|4G_}0!U96O6Mpk}|0^ay*K+vpHd40#&ZaKc; zyAFO(?_Bn)tyrOu^V3j6P0%#+ktTS$Q9)@D!Ea*4UOJ0(o}au+z)rHQ*B~M zVkPh*Y05%5Uq|EQ)tn|8utglDViZ}l;4W_UQ01alh$XC^1D-O5aGZy917l1LQ&m+v zg_z-wdf(V)=*h?4xtot-JPajgvGhZLl@!2rjFhkj7S9@w&Yi*K)1F%_TaLa1L z!qjL>pKtODUv}$TLHZrFX@LsQEGll#OAnBVEupy6Nz1^;G(URE+lp<2Ib$0y>Dz#i zFEQhT2F86rOp&eQra$u_fSKeTR+?g7MOPAYz+HmHXmIX8(ws6H=R^j1W*$!Thd9}P zypvp6ztX>^!tyO*V11JOa1$ZZ#d|j+)kRmO?6yF0s7istxmN)Vfrz6MIBbGVzEe;{ z={H>Fw#;UOC(N>VRk%`94zH$o?6?LUJI6?v1wdDKm?9yCH}^CvMD@$Y67e4ZZ>M`# z$$tG6v9VC;S*Y8Q`0KHJbHMDz7|Y<^Q?H8nVbx*^yN2K6jj!p-0^;-(N9=f77r>8W zfY=eR;d=`ZMb1$#Ohe`z6w)H@W*iNd&I)d>q7bc8E`s?6N97s6Tu+z6*VO?{w5a1ZZQsV z(sh>NRMuNDP(DvEi+^Gef2#zm=!aUj{$(ejFq%AJXz-JDZt6<=u3Umvq;a2IY_pG0 zY~a!5`=qVKh6S2{s_~SMn(FH6Rh52Y`1ONDnrjW6w5nZLiyc$TZp(3i>lDZTvKJ4D&L6+_*$R5)SyZ$64eFxj2iLU6dhL5?W_yXd%oqc8PqGxep4^GapT`+l9X9Lwwb6>fDa-8K+#P??VR^E&-1%zBxo#gB zPNV?xeg@-Ne|%>A^B|K_CbHoJ-A#=K^<{+RV#yTxn?r`;k?v`Ve%qNq?>>*cxS_*V zhfIo}Z4JbLn2^^%G7f`!0PcR(`DoS1H5rE*HmihCgTb9#^fX#Jk%!$$GAF!AfC} zgweN~0ySow^-)5B(vOlFpUy;d;%+TEd+t}yfxmujakbQzy6sehE6mINRqGR*_w*41{G%|d-{h42y2Qagt7)R9_47gkE<$<1Z_bjLz~n)K%n z_~g+XE_tQYqv3qKQDxgtvy(+^!d0FQKDLsbJ`HDGi!v9Twyv0rlRK7mX_Oh zmYXpR0%iejXxJtR*ede+s+d&lUtcorTlOg z_W>R9UW~<17WJ+6QR>7}MJDv=)4-C;`>wLL#Wn;@uFNIT+1)*Yt27J^vlmWqJAU>C zA^$0JwicOP*Cd-Z=I1K!OnsxhDt(p=AlU6SkT4AOd*npPUHG|?AJE-&FvqV*!27m) z7y9Zoa+>st{evax6vM|>1*AdjMTiHf24S_94t6x&WTV70MPZSJC+rGtQ2e@-?$_O( zsQ%&a(MSEZ$O9k~8=l!3>yCQOHXEKv6#f3pm9)Ow`t8HW3y^?2?B2>J@VchDNvUI2XX+g7ky=Wl=GD4@yoT^u)j~sfi_$H z=ab4z@&9pRv;QOAY64S|Tr@rs#z3vfHjQ#6MKh%~l#GdoASAa${yiDq!N$0zi}1K$ zOM^~c06s()%xKJOX}H41&}6}Tz;1Ue1p{fG6OcnlUIokuxMFxq;~q4&B}pHGlWmJc;X8%@ zp1tBbIS2N#{TN!(<77J~3O~RBC{7z|lD;}$r%cIBUy~`_X0)zL+zuLt@&h_A53o8$sT0`;MC7HYXi(?-f<|2d2Cnvbx-Q&QlRUDt?PtQlfVn+vDFM9#WXM#9rj`?_`OPubrStz7F&n;lxN33Bo@N5(U0EG z7Q(#iJUgIwy~{Ze+NUhYAH*<&3b{KL>0S7nPxUG>846Vg=zm|``=JcMO#AW$@`avD z5EnwjT7~HtQr`t=Dt7NZshq<=eN2Y$=&o zHM+z`q6GYcjZ3s5eu5)1_D6q40B2+folo;*2gOwoZeL1XWTPqyrg2an{P6Jv4BaC z9kFxk4F=}aty=gSIkGS{3~&Ve2B(^tq;LF?dD(@pt%Ta$e4Bu+&LU1g`uZ#F!Dx-~U3o?K#K*-Leh^ zu+@RLs6u6Lvci$%a!N02?RXEFG86>c&(@vE7aRw3G2I zmF8z5MWG0Gu!krfBUA5ZTHizR)d`$Ij|R9Fa2vW!vnbNugFdG@+q_f$&wX>o?WFEW zd=Izy@IVJD{wv<({C5chI4-r@Zcce!?odD#ZPkU^m{$Mn%-8NGD{a?9EG zuq`MY>>itzD0SN{)Whw(q_|@|DU@!+Bs|#SPKI7{HTzts3d*aeKUsoSKrjElJql{@h>Vm)6Le@bc^C$dEM-dVV zU7lNj)gi?lD(@rrzq8xl1gsakZjeimo^Y^+``>se%h!u6^vN1TF-mTPYV+a7J>H*9f@^uk;#V z_CMnHxjjSY_#noUh{>&r+|*{877R3wo@?A_oU5$<9A`q9--7Bhh}zZr z<9X*_QjFrCD>ZITySHQ#;J+FF}Y>Vs!AXw2JVkN)nVEApHN z>fXnw09Wy=hJJh@g}W3vh|w9m(G-1bue!Atu2LFVO7c_`dfs-nEOPl+>JY(I`&dlG zacpqe;k?%+{pZYj3^HwEz9{YzHDjEbAVnW;m$G!Q^1FH2zAr;;Q0QYN8hHF%SYB>SqhNX;}}ZVg`9o_NxGbfKeaiQ%~|)(}#z|`tOpcpugCK2%>`ieQ^A^&ST0YR6#BW zmGp(XkyC$2KaLU&%&Z?rxVvc1~&w_TNV7kp6vv|uSMu9 zH=IYwX|%HL?^L)UQ1UuL0;d-Kuz z2cZ8GS$<;9`e#p~@9jB6>Tl3rftvgU`bCv+t$#p2>j3oo0WYwPrGJ-XY(Q5b7^|_@ z;lG~5o2gr?%1O{iXd3z-dw}bP#xJspi!`A6V{a2iK?T~h;GVdyZdkTCqu4TVEs$C8 z$#n#Z5k03gpg{d5$Hw)gCs%4C_iZUTyl-UYzZ_2TId~Ql3F7;I>Nm4pS?;&Kr!4Ib zCoa!cr*#`QP0}WjYE~8nC|Bb;PwGtl9lHb2;NP*P< zTG#TM97^<6n_8Emu*j*8DP~qAhn2wGA&@4a9kz>v)wl7)5?y|b?FKG#1$?jhrePCi zjCs}yHO(bShDW8YsNM!trx5xEd1?0|!Rx~bl#l_3{pxo`;usz>Zmcv3kfN+8PI2g> zU1Zu}FJN{zM}uLso4gcju=<_PuMh_x6+-ng2DfGW3+7>}fqQ(mv{LsDluX59DtS^5 z&+o7?))BE>p?vz=)Ny~ae+H;{D*R|p7~k=3#x^A)=U=CR&GmSoy1+NO?eEu7PecI8 zVh@o9?|mQr%h;Yl7_^MLOlU~@>c3(?{;$beVOZ~a!#+>_q&<;;Bn74rrCk2wa_|>( zj(?^>d`J443P6O<$8kIoV}q=;S^Rd)fz1N}gE%G8lGxDW{EiPdLLG5%s{b-oF^H>} ztUYYgUN((AvZ;IuJogVl3k<LbrCbecP2mFUC(GSl>~m1+!vLFhlwW8)`KZ z7vHsidksiT!&uPB19B%frI+g+Q`c_7JltuK=tyym1o);=RN5C)@W84yD^W}=aru3- zR=E5h@xa3g2F7hqjfV*Uc^0;S7mgav>N>ES_xsSTbTz^;mGBKV7SrjdPP>x&G~sA39REm6S)+EBpBDC$Phz1$!^p-tJ;=pXJ^fQ7YJ} z3)SNh>f_fyC!=bbJsd0Bj-K01e|;ff3-hc^=DFYhQ_jz)fI<6FnKOcz5jCZaUyV8? zM5LoV@)K%yMcsm6ZZWAhj1*tZ3C>;3lo`;?~m{|moghA`dv;J-m^*;Lxt-RW7W><@FroC-3=)DEa9)UIGit;cbmMIdB;3(dU_6H;}Z+^x?WEo14+r-49Z z_tRyh@n8|G!Ojd!K{Sz~K=pvCts0pe+L0Ogi{j_(1FDyS-sOI>8uZrdg2jFIHGwJa zfDf5bdaiqNnKb62sq+ZBowe{u-M#wPR;QW*-{eH+ZN8)D5FaRyBr5TRrGiop4QX7aiY)%x7!k((SSUikN zYsPq%ZYU(CI`^!dzJ8*R;{0NSq?AU3%?y!YqJ=bW7NPrT2T}8R+LuzmSpCy`1+!Dj z!FsW8Tm(0}){)D!QDj%M2Aq#4n?A)Y)U8tN4);0*cL9wM3w zy0-79_BY5gisz)CgXs`3;AD2uuup_G-3sNoU_yYqj!pM&YxvFdd0D+Zn*=Nm9Tupa zxhXAi9vE{X&17>g=(FCmQKv3E?ErIJME?T9=gjHSZ?i=v!Q%GH3HjW! z$8|D1n0lyYl--#{a#^)FA|(HN;Y%pltWpwhuCHMTEoO*wfv=Y6BsRjosR><;)@r0o zHPaZ~JP0KS4u9i7EJHLB!#&X)?u{>j`-)tO6iKPEg_`z3zd!9ATz3w z+^Hp(m%zl^bV_Myc$qH3ig|NL za@0@wN=#euotM_|-nLGjn+8m`Ub$uEGH&Kqid>|b>azkesn=MXK)etdcRXI^McVX6 z_TG`}zPRMGK^CjZ)tK!LfirjCXh0ww(Fa+8gfPhz$0z%^rZ+`vc?Ru}o!wyWC%w6n z0^_8R88?{<9r3%4@{(L13fu}m^TY>iZbN#H$j$NxoV?#fcej2;f{E{L^@$7NscP7c zDSF@Uuv81Qt&OBWn+l%#CZ5HGgyZ(ApzuRC`z`i5PfIc@2%dWY;ba!qZZh7$F?b)M zXI$TYudq*)W%b~>X4sNQ>{-Iz5MU7$CUVKwV6IUYky}tH>$T`z>lZuB8HL+DrV0g2 ztU1#&);&+|y)Ky9`xJ~HQ`dBGluSrlTbJs2{pNfk>;aR){YR|A{aG|EBnA0&l+(s* z=Dw-6#1^x-liF64fS$o2e?ylSYAsJXa^u~uO`H>(`k|{2cVqXGy>q310zMmto!v9W z`9NmYe;7eu9 z5jk(7aB12RX&jeQQF2TT{MSoALuZU7)gA}F{cKfFwpCFm#5)qx8Kak$``1!|8H+Nc zMGa)2OF195#$YQanMyh)jsgnd^&}75E#5m#tGFx+Tza{+xOR%NQlPa4wKHRZmn3PD z-_)+Zy6k*55|{65G*VTWB294XhI>jWsIlYNC2Qu`lcS5yB`%o8mVEbD=vERnIstb9 zxJ4EWjqg|h&pJt)DezSSGL8PR8o1+7x`v`|JybPtUf~}#uzH{d48%ohsA|B9Pyno|M3iZzUrc93XDmej)ar2>JH!gfOD+2f9oxZqL)Vt)8m(Kv@ zQ{$|cQtFOCUbNZ2QWGhdsG8?$9s$2g@wK;FLuQ;ff+5E1q&J4)F4-@ZM;A-x+d;rmB9l;Rz32kv$S zcc*Cohv}^Xex~c47+y_it2s)D`}bs|iqibCS>KxLUeG@te+kitR$5RiO#SemsyyT_ z-YS}D;QSda%Wzsq!^W{csExvpF*3`~t(_H+)V_HBj|c%a(M)WKYOl**c@NrAE%Y$h zKdPWt8yCxV{)TWa^Bo;hXBco|8m3K};h-o8Odtg-nYDhgT*C<6sh{%rQ;V9^L8?E$ zn3bknY(1s%TMGQ;{O48zyU0^Vsd|9!Ub5F3%i^h*=03plUO!Tkc_&(kGyEXu^IKL3 zj3Jwtdc;@kdYXMwAj>wvR0S1#`S0oNbM|!r)^O=k^JT3t)bY*yf7%qI@4;4h`zuRp zhl64NvmW^F;IBY6{{6^RnwSqV#89d!Zn-1w(sq#bxgvB|{jBMF%Cb@iG6vs&lIq|0 z>NtTqNJ7WmJsg_N6ArA#acMe%*=Yb2Mr9K*$eM>VZ>fJdJ*2ax>>zu$jr+OwPZ7#_^xVntTj$YZm*Quj$r4R z{`!#G0H~f#SItWV9TksbB8}3{3^V$M=S!drQg6U!ddJ9`Ro6|=oY;+m zq-&;Q(1wnvD^{Daxnh*mzDhBGyE)ZzNBPKmm(JlWVv50LMI%^288Q4MH__*gy1$OG<@5l7e?* z7{uzTR*bXrfCxJ4F*w;Jy{X;#+M{gHM6Hk7v>DvWAB-J2Vpx(0n>%Y*1P&V7kD&0Z z&o4%Ob1n`Yy^Wo;frmViA$ZoUJt;$^WL*`P8YF%X!Pk%bn=3MyfMZ6rhs(-x(WGjg zt6$h=c*w^R-Ob1TN&8T!X&+`Kk~uZ)Gxt~8$Io)d0;gRD%WLJ@MW)f98=oI(G487) zyT`uO$J5RV_|5OYHc8(`F07H3?>bI>@`|;@QJWtcp+MKDSLs%MX=73`Y#*uWSlsXF z>#`T6S&)R}!eMImg58hQYVRwRfbUU$;EnV5mYzN!eDxq(qEH(AYth+3$gF7=;B@_*7*MmJEBg{(dS)M?; zucR&?TF24nKL>!`tCVgF-irHM02~%NyhI{)>h%51|CBvA=4_p@7{hPl-x(WLw*U2o zM#~6Pyh^RP+UFKAMJ+K$X7e>Z0r292*z06L2>xE}DT4-JIu9}7V~5A^`9S*eeWc$y z`RWadVVN%O+=Wn9=QaG#wd^el+=A4Zw%|wJ#V)vncV7n!sPUhv7^{-35t2*U<^XMf zhMdAJj}MfBod1&mNZ0URO7o*^i&KL?8WOZRW3CZtOudDu5^`ZHt^Gi!+(kPqAQ8kI zA)X|&zh<)>tu22x6LMIC)4Mb0{j0EprJtg+w;i|w%)M@S{91IHzvpIY%-7j#-*Bx-4R?qTOSx7AenfrJ@2_0!ETU1%ZI-4 z7^#;AG1&*u{&5`E757MdRg`uzd+uX*hUW9uxNk?{@pKu|e3{fbYuE~^*0>pb+E$N& z>!Wp`>4QA3)E=0{$(T%>Z6c)~=AqV*BcGijg66Gwl#R00Yl%ptmAM)Q%RREh1o50C zV#hbDCT6hZ@!+eiyit#i3bB-CEc@BWCuJ#g_3t=-LfbPG^?IpSfG8sH-i*Ccg6wBtGcsDCyv9mN3F&Nj*x zTHG~S;2mHz>>mpEFw^CO+SyEt^5_9;HoWLNWnz+ef`zxc7(^4B>7iIK)(jg z`gcblTfqiba&a34Zob-H=DADUvM>VHAWqcVqhq$Lc1@Xq+7y6`p9Tut-;)+1M)_;) z*QPbVQ0TxM^@=CiYJBMLp!ENOF4s_R*`Qz9cKVX>azn`JgI{S$ayx{hX33~Wr^6{9 z9vlfKh7KO-V>WZ%lA%fig#~(8{y`k*`Od7zP|a>{N@JoO7G2;>*`Dy5fK{DJNhRf? zd*%ZV$@gGSeai?wlboI_YDu=t0?UHlMWHs}oD2YZQiSH>QXah~Pwf`jxw7v_& zOaQAb?sKAPS#Im7XHyqy=XYV5X*4wk*T@B`w4dK|UeQlNdN(m-#h^3}%|xlV<5LXo zT2rpi@#&Wk*Y!(96z_P9>Fp1Fw~*aAURLiigb8^q@;V;DOR|}x{Cu(CEp{_g2_^!5pG12BI z{TI%skSYx4oQ^jC5fc`qiZhq@?_ZhIKlPVOPmRGKP5^d?<{x8sb$?k!_G6PPe>)SIhN^)jtuk(3!K_aIOqW!gltgJ zSrGFz*@{=T2i*Tp?uHl0oVrw(!z56kLlp`CDO(size_); - gravity_ = param.balloon.at(index).grav; - default_vy_ = param.balloon.at(index).vel; + gravity_ = param.balloon.settings.at(index).grav; + default_vy_ = param.balloon.settings.at(index).vel; h_ = w_ = BALLOON_SIZE[index]; power_ = BALLOON_POWER[index]; menace_ = BALLOON_MENACE[index]; @@ -67,8 +67,8 @@ Balloon::Balloon(float x, float y, BalloonType type, BalloonSize size, float vel vy_ = 0; max_vy_ = 3.0f; - gravity_ = param.balloon.at(index).grav; - default_vy_ = param.balloon.at(index).vel; + gravity_ = param.balloon.settings.at(index).grav; + default_vy_ = param.balloon.settings.at(index).vel; sprite_->setRotate(creation_timer <= 0); sprite_->setRotateAmount(vx_ > 0.0f ? 2.0 : -2.0); @@ -301,12 +301,12 @@ void Balloon::setAnimation() normal_animation = "powerball"; break; case BalloonType::FLOATER: - creating_animation = "red"; - normal_animation = "green"; + creating_animation = param.balloon.color.at(2); + normal_animation = param.balloon.color.at(3); break; default: - creating_animation = "blue"; - normal_animation = "orange"; + creating_animation = param.balloon.color.at(0); + normal_animation = param.balloon.color.at(1); break; } diff --git a/source/param.cpp b/source/param.cpp index d854e7a..ca870a5 100644 --- a/source/param.cpp +++ b/source/param.cpp @@ -58,10 +58,15 @@ void initParam() param.background.attenuate_color = Color(255, 255, 255, 0); // BALLOONS - param.balloon.emplace_back(0.09f, 2.60f); - param.balloon.emplace_back(0.10f, 3.50f); - param.balloon.emplace_back(0.10f, 4.50f); - param.balloon.emplace_back(0.10f, 4.95f); + param.balloon.settings.at(0) = ParamBalloon::Settings(0.09f, 2.60f); + param.balloon.settings.at(1) = ParamBalloon::Settings(0.10f, 3.50f); + param.balloon.settings.at(2) = ParamBalloon::Settings(0.10f, 4.50f); + param.balloon.settings.at(3) = ParamBalloon::Settings(0.10f, 4.95f); + + param.balloon.color.at(0) = "blue"; + param.balloon.color.at(1) = "orange"; + param.balloon.color.at(2) = "red"; + param.balloon.color.at(3) = "green"; // NOTIFICATION param.notification.pos_v = NotifyPosition::TOP; @@ -296,44 +301,64 @@ bool setParams(const std::string &var, const std::string &value) } // BALLOON - else if (var == "balloon_1.vel") + else if (var == "balloon.settings[0].vel") { - param.balloon.at(0).vel = std::stof(value); + param.balloon.settings.at(0).vel = std::stof(value); } - else if (var == "balloon_1.grav") + else if (var == "balloon.settings[0].grav") { - param.balloon.at(0).grav = std::stof(value); + param.balloon.settings.at(0).grav = std::stof(value); } - else if (var == "balloon_2.vel") + else if (var == "balloon.settings[1].vel") { - param.balloon.at(1).vel = std::stof(value); + param.balloon.settings.at(1).vel = std::stof(value); } - else if (var == "balloon_2.grav") + else if (var == "balloon.settings[1].grav") { - param.balloon.at(1).grav = std::stof(value); + param.balloon.settings.at(1).grav = std::stof(value); } - else if (var == "balloon_3.vel") + else if (var == "balloon.settings[2].vel") { - param.balloon.at(2).vel = std::stof(value); + param.balloon.settings.at(2).vel = std::stof(value); } - else if (var == "balloon_3.grav") + else if (var == "balloon.settings[2].grav") { - param.balloon.at(2).grav = std::stof(value); + param.balloon.settings.at(2).grav = std::stof(value); } - else if (var == "balloon_4.vel") + else if (var == "balloon.settings[3].vel") { - param.balloon.at(3).vel = std::stof(value); + param.balloon.settings.at(3).vel = std::stof(value); } - else if (var == "balloon_4.grav") + else if (var == "balloon.settings[3].grav") { - param.balloon.at(3).grav = std::stof(value); + param.balloon.settings.at(3).grav = std::stof(value); + } + + else if (var == "balloon.color[0]") + { + param.balloon.color.at(0) = value; + } + + else if (var == "balloon.color[1]") + { + param.balloon.color.at(1) = value; + } + + else if (var == "balloon.color[2]") + { + param.balloon.color.at(2) = value; + } + + else if (var == "balloon.color[3]") + { + param.balloon.color.at(3) = value; } // NOTIFICACIONES diff --git a/source/param.h b/source/param.h index fca3411..dd72f0e 100644 --- a/source/param.h +++ b/source/param.h @@ -46,15 +46,21 @@ struct ParamBackground Color attenuate_color; // Color para atenuar el fondo }; -// --- Parámetros de los globos (balloons) --- +// --- Parámetros de los globos --- struct ParamBalloon { - float grav; // Aceleración en el eje Y. Modifica la velocidad - float vel; // Velocidad inicial al rebotar contra el suelo + struct Settings + { + float grav; // Aceleración en el eje Y. Modifica la velocidad + float vel; // Velocidad inicial al rebotar contra el suelo - // Constructor - explicit ParamBalloon(float grav_val = 0.0f, float vel_val = 0.0f) - : grav(grav_val), vel(vel_val) {} + // Constructor + explicit Settings(float grav_val = 0.0f, float vel_val = 0.0f) + : grav(grav_val), vel(vel_val) {} + }; + + std::array settings; + std::array color; }; // --- Parámetros de las notificaciones --- @@ -113,23 +119,22 @@ struct ParamResource // --- Estructura principal para almacenar todos los parámetros del juego --- struct Param { - ParamGame game; // Parámetros del juego - ParamFade fade; // Parámetros del fade - ParamScoreboard scoreboard; // Rectángulo del marcador - ParamTitle title; // Parámetros de la pantalla de título - ParamBackground background; // Parámetros del fondo - std::vector balloon; // Parámetros de los globos - ParamNotification notification; // Parámetros de las notificaciones - ParamServiceMenu service_menu; // Parámetros del menú de servicio - ParamIntro intro; // Parámetros de la intro - ParamDebug debug; // Parámetros para Debug - ParamResource resource; // Parámetros para Resource + ParamGame game; // Parámetros del juego + ParamFade fade; // Parámetros del fade + ParamScoreboard scoreboard; // Rectángulo del marcador + ParamTitle title; // Parámetros de la pantalla de título + ParamBackground background; // Parámetros del fondo + ParamBalloon balloon; // Parámetros de los globos + ParamNotification notification; // Parámetros de las notificaciones + ParamServiceMenu service_menu; // Parámetros del menú de servicio + ParamIntro intro; // Parámetros de la intro + ParamDebug debug; // Parámetros para Debug + ParamResource resource; // Parámetros para Resource // Constructor - Param() : game(), fade(), scoreboard(), title(), background(), notification() - { - balloon.reserve(4); - } + Param() + : game(), fade(), scoreboard(), title(), background(), balloon(), + notification(), service_menu(), intro(), debug(), resource() {} }; // --- Variable global con los parámetros del juego ---