From 683e8231933eb8320a9086761db65f0325cc22ca Mon Sep 17 00:00:00 2001 From: oz Date: Sat, 23 Jan 2021 09:57:16 +0300 Subject: [PATCH] control ready. --- Doc/FuncStats.xlsx | Bin 39173 -> 39309 bytes SpaceCadetPinball/control.cpp | 990 +++++++++++++++++++++++++++++++++- SpaceCadetPinball/control.h | 7 +- 3 files changed, 994 insertions(+), 3 deletions(-) diff --git a/Doc/FuncStats.xlsx b/Doc/FuncStats.xlsx index ad00dcb1d45db1ec682541f5913da2dfadad94b6..c96f380de6b1b23fca78e17fb0a9649b58a88c97 100644 GIT binary patch delta 31169 zcmZ5`WmFy8(rpqfKyZS)ySoMtZX5Ri!QHiSf(Lhp;O-vW-Q8V+JM52~d+vQ>ykGre zbuFoyt7_Kl4y^tVQS+g)5)QIUtd>2t7LMbiv-G~}@Kv=}>?Irn%X&ur;EoWwaaz7$ zyZckWjh?J1j`1*;4*33P|6vw*y_wA`?Q+DX(4g`5yrCOX13Y4t;6;JQ#6P;SM{KWZ z^kcKR9iHIslDj`c_b)9+FDmKcpLy=jWN%(qaovAqz_{4CBk=4uTxop9P)XN9?tIv1 z8j^Z?IJs0Ny5t(1dv0kRSa1RVxIChfqfuON6(YVYE%bA0g4@nxfP_#AEo9g_;{Gw+ z2$w_G5`|q!B~9z7-}?#p$|pur;fJtChSHmPLZPaXupnQ=?dWdNF*rF%C4-fw1d^_T zJI?ER7Goa#O6a9RDT)2r>|7C)6k&Yp%Agd)jj+PP&@Dz%j-G*R9g3r**e2EG5DJ)YpipM1L%He!JYTpJ*a@-S3$ZkWa3N{JXe5Bf|t(roW#oVCo2&hEf+O zK)loQR%c)yav*C5pJ0`jTFeGz1b&Z)e|GynZLNj@W(3htJ_kszeA#aqo7$3q>~zSXV4eu3S~{fyx2-} zRK&$hRc{5}WoHiCo(2(tX;CSW{A4^8`1ikE5;CcSoy_?S255KmZ!37{da7mfBCJWj zFV<@Zjn5m@hDa+rf6T6&hVJ6(I?}B6)7xm5hBuvev2fo|63##`p zWEPX;A$npPFO+YwrpM8vriox0#V$udh@mf`oxD-Bc$U87idnr%{`#wR{mmXK>E=R@v2L(0>5Goo;E_ z`5M543v)SDxO9tBtI8Do?OAkx8U6yf8+CaUeG}r=(S<~^@6kH5>#~&rt~87Z%}qyV z@RYS?$lDJpMNA`m9=^}yK0x-CGJ1zFEn|VC!5WzTa++YS2Mj_6Q&p*}=H zDcBM4L&0*uiXq|xdqh!e8w36crLfimD@34x9m70l5~gSqv#R(SmATbv!y68O58FlI z2;ljWvr=mH3O|i_L%LGix!Qp!Cj7eL{AnG>$bOVjtGt)!%%xDf7wJ2)1oEJH%>{rf zZ$v>5u*gU#MDER#Qd5gBkU>o|pTj(;}q{@oU{l*S(N~V`fER3Xn*c5ja))B(W+iBoJ_IX#fRfpmd z^d8cYc8>Ye2`gR>lAFLV$`9S%XyM%)WUI7s>V=^r4P5gKgJ0L;^Aq5-^6v{a%C^&D zSuM$zdbZYLartH+b+WA5RC9b={ZrNX2={GPNNy2H`stn;NKg!@8;q7%>zz=6F8KXd zIC!$6(~R@#56@`=KLuer{?OJ#*&<3#ZIo1ZMH7ZE3j;ZiT+D&y&7T#H3L<}a>3WUU za(bYsW}lXA#VHCP_krXH$~t-0G^m_Ha^*hGALJQCzLVvaCdT!RdkC(( z?{lS>xz6iH#zDHHZl2{|_Ot`#(}%mRIAHj`O)@+5WXM?eo@Tag6zo!gxd1Y)09dn2 z*+74GEgVrO+Q3|Wp@dMFiOAn$@Ee6mRF`Y`zck4FGnqt|=@Eh1=AJFSfs50;{+v@J)R|jEwv=MPaMGZWawAxzNOHDIY2M(^5 zs8~o4EelC^t|$KWra?R6<2jce%!>#8_UoDm%*%LxHWJd!D3y<=oUbdS%GuPecQX0L z21IKi%m^AO=H-i9O#B#-i0Own>UEHKIk8T@RvlQ9$G{0`V3FyL)Itfwn(LtYL z#yU?Uw<;m~U6=QeT^6Ji7;lYOM+myp!b6V3_2mlKrVrUixYB{5K?ip;l~P^v0j=on z=g$0rt$cWKzl@|>DC|(9kr)ar3aEPe@lI%a<__)hs!Y9Uw*p+!(PAPpQctXmDJ;=V zZUG3s`Tp-OC~5XZM9{80>HS)Y+5)@G_;^y{s8I_B1ODfS*LY#=GH5)}t@?5gx()L9 z5g~&70~E4gI32)FHV*nC#T9{9ZT~gHlKHEDQ#FQ)0?D_iQKVGr+!p3^l9P34KI3=` zZvsq3l3&WGWdhwdDQ3e}LOI*L(6A4nBU9|7;<5NszO-N5FWW|ISq)Pza-=6SOzCx~ zXoqSI^2PW#rta~ic49=N4C||(IC0i7)n9!+d}N*zK0Z*i=)N$q3esuWoJq*Z@Uqj zZJ7eF=%eI^MIDj^p$sl>q9u@WaWA2q`P>)h)O5KJE2|vDNIfFdOM8-%LS<7QM7G=1 zWBk&UpHINMrz91z+Y;A2G#ycKnxSPvj0(b!0x&o}?MeGif{~imc!^0>!o?$Osm;z@6z1 zkId#_CuMV}SaqwYvn(iniRW$wVHr0LViL9 zoAkX(PT?!TLGJij?Q~4RIrZT0hi}M5v5`dMl{p7gjjPn5&QH`OereN$g6#RNRf((s zTd4amzhN7z+x7P-P2#6gEI4~PASirkon^9!l6!!$zeopO0AfvOd{n-}7x#deS)gn1 z=*YOA0T+v!N*2aTgAzBE^1fU2%a&y1HfF!AfYkK0ji?38OIT22rVX+D)3ap=biAj% zs~(OK1K9pkRozmSD~vMx2OSpOIap@^`#0GwFI@+uV7FK`$q46k(ZlZeBf)#Z!O_`(pVz%CmC2f+oa~wB=S+hsCEwOKxb?~B-OYW^h1Po@$6nv!FHWItX%l7J|Z}G+b6v*Ofl6~&2 zS+?Qc-0RZ}fsv=18l1qoy7s}=89-jWt?zDUIXK6fz4vT&UP1Btl&L585#gojag$O6 z+D!DzSQddJ=BKR8hOCm$Yz27UK%{?!G2#TSFrJ9qVpfXm$p)4cI*6iErLr_he+l1& zmt#sD}GD5&STOGo zNNNwq|HROzWz?zfNL{8Gixgvv!S}OVe--w8up8x(!ZOD-=YBukh+c-*uZk|wUiZqW_beq@KEngQk@h1O}&C+&i)3H2Lw`o&AI>?7!Wm(Fq8 zC($zn#Sw`X24M#}(8lyb@F(x`mIR!?26`x?Lg~@98e7k84`FUQ|H|t`mD))<&F+FJjCA2Cwx#UQOYk>%(j4 z$hdCa=)rjf{`i2^3;yW&0UjqDRj*YNH!*?kg0FfW@8 zvyFnd>nPx*=ClX z2!AYl6MsCU5-y6bInAGe?gga6xByYz$6e6qq9?6~UI5EXV83VAuTc+XsDCU|&56V{0MJ()ok47e%wR6jMhVdE6E}VI zgXc{AU<)!k;*?X#r}ZCUsg4B_vwR;&6ePNRR&X&}gx;HCA6D9ujM2tiBG`H0*Fa_?( z$0%6)1rVw$ohjjkG;OYlLYmsGwplwwT;EWN@T!vQNK^d4jo64~sdBeC;>Vu^!HFh| zpjGBT18tlTOu;j{bA!{Pda>Ne=En-E{c5w5&no9!6nELn&3Z&+8Y;2P#n>#77gH?Z z@beN*^9yam6TODzUYVTTn)_P}pbIgn8yf5avW27Y||E zs(jcYgr0C|{Z6FM)B-m4 z2O6tZJ`R^>{W~=jyY2Yfgj-h`@P>u;wj-`U?;(w0sf-Atb$M{?0c+R#mtu>7GYWuO z5#0sJJUp>1a|xN`3lmB&AEJK_bd3y8Rf-N{Sg^itaUWv(?4RY^Kzv<@;9ht=mn`AF z7^G0#Pl9B^al7N4B;^|cE}i_yAJXKztaDn)i_OHVm6FUxRz)h|IclfL#$ynP=5l%k zUQP9XCDI0|8BXs|)Smw~r z(S(`*@(Z?{`O3Q~0t<^duG#s2rMq%>IngY%ywvi?FdN(1!1jVixI;hdgp(EmVDTFKAj+1a)%eGfqwVTove!q`UR?d$fsseCwTSpI#a=}vKSgmG@8Ug9x7_V zFV6FeB&g@KnhmBGO7OIE)O$zF88I+nf=8N7mu+$VW_9JL2S4ZM@YeksEc#G^VT@>(lteQDJ6l}Y()!rV1KZa?2XQ@w+X zUu86q`k1*ppgQ~AtRA0XxHcluuCmOmW$)+^F~`xJg`Q;!p{`#Vl$W<3menOu+Gvmu zisBWTecj-d!< z`AzZ|6g|Sh`gHp$5$OK&>!DLz%)xu-*TYZAI8++WLig9|yb|GDIGPqmBn5uZK2xuj zX4cgoRP@rGxsv#jcH`7_ppClfg1ZiMan1J&xiCy1PJRMcIAKh|N8__#Kpt zEt+Kq27lnB)(9^ApfJct)!`RN4Eh0WT4dEErE}|TdV!#YZ5cTAMV!&pI*Hj)-;Ye2 zsFYDH&%csdwm{@v3kZ;YnT_!$gJn9;mJTCvUbeMKT=`&;qK15`$nBPgvE;>uc}Y+x zJyZoPn(6`iqiGX|YtaDt5svWNs5Q2yvbirrLEAz~J?_e|igw(69J0OrBzckx2J|MO z9K+;dy3Ls7(7A3gwgj5Ei1mw=84QMQb+k*X)J{Jl8PZ}q#XS(3XnTt4E58X3C##GX zWTo}~_aP`77NZY^?)^iWfM6i3lpRIjp9MS8dF(n^xS8&!UE+c7g`?Pa8A|5MC}tVITqDbP*ImD4yCz6{u;atX}I(rmPN@ozZeyZXrJ6^ZNXEOigNOUc_1J z$hN*U^!{H}MbIhwvJ~iW`sN}1xs`OjEFo3XpN%*LwCoKDFGUE~Rh7kJ4%dm<*&=pQ z`OOd$d!nfP$^Fd5`Yj?WVNgT?(QATjN6YxebzP}DyAc)$b)ub}ivmgPvIKb{r^7IN z95FN#EK_|j$0Jpc)T6Gzkt1?0>9mpEnP4|2_cD?mJ$l8S#`94T-gMJcN=M&Ki}}1B z&HrgRl&R52XQ^TlRM38Fj2PLG);3k%x0f-WNhS9bGJ-k~!|uT6rxi)VO>YJ=8&D%E(0X2glYto~`h_ z7*<3epWS)I_oRBr39e3p?Q5_5?P`Suk;+UzJo>E@VcH&1&X*Argr$?+KVt%MR23_o zC+S35tv*kZnf6GgVWc`X9weVWb_KCeVI5TDwh$j4_^mTyYexR^&Q+E^{dQ{io-B#m zO4)YqH`yorNb20pa}+X=Tt5Y$ZyysjOgY#EK*BMz9*#fwrs;~QVeTdM>|pNoWo^fd zO+zlSQ4eev3$+LsM5aHDt5~*zubJs6?`xZH)O&iX!3up;Pe{|HT{k*a=opQmQg@q9 zd4*suC{uyv$SJwt=6c$-WBmY8l7z=g(pF z1XJByQ5RXWnxC{TwFCU^od+jod2wAhVO&uy}n-N?mlV1A=eXN3<`t z?+i(S1H0?U%O!1fTCmM=y6z zN5eP;+h5ODmkGhoqoai2^HjaH)z)*Y4E-t@3}wV&DU{%|>cOt{tx+#C)g3AQ~%i?@T%FJ4NS>hKhAXMX@G@%ye%=m_s(8JQ zYy?-~>9r*^9fPN3!LO&sQG^0s_peupY^&0`rsJOA%UAMI;QDlay^Y+@eo@cU^Xi3@ zvqQJtohS2;jjs2TQ=2gO_%yWxum?Z&?yCWhFR3mzx`6i;KKIdHFZkhn^W~3T2Thn3 z;tt0P7*Jz);8hPxeZAi7)*Eu{$QNwQS9=8&P**%3-Rw629#{8!_=6R+ZjZox-2^z# zxOK+q9t_Z1JjyzqfS>QTS~%A`9**7mYkVcJrqAy?R}|T7_^mPgJ}rf}idh*1cXgQ&VrwcMt77)W6C_-;H;zydR%8Uw}%_&OAPR=9$9-pd-n;Y4n%JcR2Sd9;g?!UtEBj3lILd zOCoqACNe4NHSFOGjHZ7*^Ea94oR1oN~atg$&J?f&peBDDKYN81C? z9XwvK=H+x%qxJ`QoDBoO4dDBi@ytj)e)@)nhK~E)?T(iV7r^!YPsi&jz`8xp*a5yh z?(iB0oCPvFydN5>1zP(=9&yxo8qZOkhSp#A_L2H42!_Hu?UbQyynW3|E*-i1Gzh0P zfTwNwZb>tleY$3HIoDm-#5!I7bpU(;+<$)2)1AWPG>!q^_1@gi*6BuKGV1-j+I)CY9R$V&hJMcBJG9Y!yUBR=cb1X8 zlmyqV7<=!dF8jS(N!Gfg+3!`3^2ljv!l=hR?>-#99LrO?g^Hr`@91 zA^6^m?jFua2mhbV;ki2N?`@$+H6+Xie*Y(oV*5J)LiGm2fZ_<5b@D~XOCbtbYU;)h zk%$?G>Xa!ej@;l+|??2*ptqlc@6>T0_ zP;TNv3WqU3$?=I0yXGI$=$THKqk=m#^0>cqHN`EQeA)luxihI?W68X;7(RpQMi~+2^ov%b{2kgniZv?qT1l2eAT281i_x=@oqPjZ6Z4hv z@WS-qy?Hu~S+P4j4VsezjS`i*xB^zBLV`RAh#JBcol&Abk&q3IIxE#iQ$$Mn;Vy>}BE8&=%80IG-igO8O~_2n{+7T|7aI^80yuGKNc0+GXFgJI(piy2)R39lDav5M?9|Qy@5ckeb zeNI=mQf%OExDqBgO8@!ej1F{U+)+*^T&r{9*G3nvVI87d*yiFDp>vFd<2 zeOy- zy*EJkk^W?sAY+4Wip7IFnB|^#{zN?ylM)hfJI(7TV)#)^O1m`xgf zGR^zxrnd=f7hZH?aWa_fsAk2H&LYYA|J-3wI`E{jp^pJB^=`*bUWLki*YWy;GH50iPSbB$M(L)f^ zzOBOuRxL-W5oD}w`C)!A64H|K6HK|#u1i`mS#dLLWtfWY4`Bud;X>zzYMxl3i%d!M zwI#QAGz7q1;`M=m33{7~{k^vh@wS$iqa}S*`Yv49jKt~kgFF_c-a>hm^yfq^maErY z45wJ@m<=hAq;1jA^KS~s`6>Qofp2`Gi5@Aa19HkvqAHx5vu*KlAjSS4q*L|J=Y$ zVzB26;)eb2URV%@16WZE z)ACkgQSoUlgyF2U^3g92LCTC$m7+!<%TA$r@82)5HIM2SfAqu)i?%j;V3+uNkLdn7 z2wtwa#d`TXug3_c21;N16f`ARNBx>z!{?kpOQ&A;G=RauEsvwhOBE+i9&v`0loOfE zytvs$1&f8E@w-wCu0q+PLG_K)jUp6{K&je8W2O~Md8yb4k>?OdiNQgI8G7!g*s*uP zM56oj1UfsjB*7FrgH%&&FgCu+=;T%;*DhvZ;E=qSP5*?2s7(>7t-Sa=62d7UdEA8h z7scD(Vr|n;eSCm!rnAmS26nOP80R|)5=yg<j>sg7+4phZ1a#n2BLV*MZF9S`& zkbVOyxp+d%vAc_;KLVr)MW_tv!@n2EUd`p*MsPn&dbN>QSH*O>5MJKUp6cK&DZ^Sa z)00_-0hE6oHG}qyIKL$z6~)!l7}Z?^WdTXc?J0=G(#~JnUi+W$lDBBVCJZZ2bhuA7 zh2yDdpCO}pE@a8mhtsdoi!*{*iC_|zEig|HL zqe$PK@?D_SFR4mLhPQy!s}TBPQDh#nI}x70A?HTa464RU+o(7|dY`3SLH=6%4N|IV z66G;DcQC}L&H1Y>|0$~j4sG>_{kC6Q>MOR)rGwTwG{^SO6rXi0{>e5*bq%r{9$l{L zXB!lM%E{JVhQ(5x0nCOvzB%ld+@ZHiYyFg-LHQ|ocIknD(R%RrliKiud#+KtG)VGC z$&hfG>_YQPzdN&CVe&YJ21xwIz%EX(l5*lbuNMpnO4~$!;gT zs3{`#oyR09V`T39&8odI=oHEIi&>aBIt`D_@7{U3t{CzKY!O|p%NxHIN3!26_6mDF z1j_(3s|Q5`g^fX2@tOA!JeW=%_!2IHcjTRa?l2M|;>;cQAZbu;{t4~7A+P7p8C#nl z+2J~iShh04f)ENtXGF+zZsASTTJgA^80WvO_&1xh+Lgqob*#H-6IEOT(vGmKxRtM;Hk<+xA{nfwVLTTFC^K&b*{X&zKn}2N^{Gdt@4o zc7hfIeOF2gUs7>QWqcDJcIuZsf?!yjC<(TfK+_2+b|#cuZ9dCv@?uC?5MqQZ>QAdo z#U*dLbIWov%ZXp1iMt83;q!$E-a8)JMcq&At%#7UW9hp8a@S4cVC`5kQFJTawu|haQK$Jg!7A$ zMZwfgw%yxHPqJ^~P^pVg*ETfT|d~2f?$BB}04g>u|H? z?GvN&O=U5QL>F0PZ4H5U57&jos4X79m%2H`Ff7{)a&5QMf;wYe_6{V$JZzPr>YbugM*O*HQFFj2c@qcM%Iqrzz*Q<( zrkKy^EH^9zpkR@{&D;=SM#0E9H?Ah*P}#fJj~$b8wjr8?723gF*=MLz+l3^g38inB zNjNVWx#;ZkTva1=?L@~x87~*!Zdam^*~l(l=o&VH%^1QXutd#BsO$AY7H!|WrH%g$ zNr;JPr$@e-Jcud~&n>V(#+RC!S0L7`FD}4qhzpJf?DhSSW_uIBEE-(}Ed4O4_ww*k zc7%PTYlUZ}I%JgR3I>*&#?_GW#)wE9ova-n2_d7$a~kdRicl!-6_hM5jH?6WjU$mb z_Kw?mTH@~JhIldFk9#c(Y)y)6Vz<)R)M$1*DQQHRuymv0ZaWcv&^6-QijbPPtn}{k zP-%w%Dn^!uQ2FAy`4+JLY-n;2^BBWM+gu0aJ4de&rknCKIl2C-4qzXk@apZ_Qy{2$e5fqE&HI$wOXl!>s6n zPnSaa9JF^Xyt&mr#o&q+<(fd4+NL(-1It&&meK!TcX#JPZKK$L8fFsW(Ok9J-il2B zEMOGh4y}kLqCjpNQv5VgJVG9o94^v2Sffxs{~3R^yRa`gpDHP97l*_aa3q}2nV@Ga zL|w9E;ANp1RoVMsHQ%q;2XXqc0l{zs^FU#mZ$M#%)E0MLqFcq_y`e#U45Kk_QKNAX z8bPSu*pR&`jeVDRdEhNY%u~ZrxAI5k(6BS-p-pqBq`>rd_8+AwCKvPF zFRvOkdog#Eb0fxn^griTfE3fwvXHqEiU)nIj_(9W7WHMbrA<4RA?yxENEX(zwR>}- z7T?k4R-EO$V=gMc)0U>NCw}6u`Yv~1@YitV&EB#r1?lW53l)#$>8P2gnQOm4B@J@)q*T>n10K2^3-5-#^G=Q!cNZsFfp`R<4 zO9?B+!t0&q6OF`|+WJ2L1FO>>6+m7oQASiy=he+yc z7}(L=U0~s0#gRy}F7T68qdxKH`08ER&gUKnhS-nzV8#1yQ|Cc#x0PwO_+n3yp8jJ= z#Pr6lJgHX%%a9ddEV{i&S7*|xla?3{%5%1kWuds!7SV*wqLIxi1XrD!Sg~gJATLh$ zj>`Ipw5)9z{MMLB^6GFoz&J9}N_ZX!P+IbV<{KW1xRQ#=_)U9>ul0r>R~iRbO9)+X zB+imY-$d;+<+Z#N@^PF|&L8lBF95KZH8JHCcYT16=c)%YQ(~Njn%zCbM0#9ZUO+8x@x)SY=+0 zLbZ4x2k`6BN#^*7=1ycu@sT)iM^(Z$(7rSfFxff&X!G<}MSX?DnTIi$gw@QEnh@Qc zSb(hc;BDPa+PL_^F*IIRwGWAd38Q5iLL-D0FJg!`p?dfB=S!d80LRD}S*o2@G^Y(5 zx%FG+Pc6j5P5teB;EiIyUE}jQi*IKS%NJy11@two+bo?<@5wo9{W@9%8Cx>>TG@37 zed-WGUK9^;EB83?yG=*Oc3)-TV8HjIF+htqG>q*r(qrDbAzh}TAFo5wnGj?vZH^k0 ziLbPCvnz1hqM7y|WrzOUaFGegcDEW&K_=~&`BAbQrhWod#gBq!pMyj4>um$GB--RO z3qZqZZZZa2-@Y;+%%VtcnPYF6y>gHO&>fKCta7*?x7I_af7v!S9Jc!Rh_Q{MUYzp6 zF;LM~*9Td*4{7?bJX;U3WdGVy*mck{n(`4$in9;q8$H0X6_I90{FnLc5ZTFN2S&V^ zg5qY*($Or@!-3@x-ecO7%0cbO2w8oH2z{uCe$u5viXwbI$_djs{Qr73_N4xd^B9v2 zk34yAZo2ZbxYbTmrYvsY(#jxla*;cS3O25czQcMz;4;(O+T@a_WIVn>DV_2ed~)Cb$Z8#+cL13w(8jcG{FV{jG=0A3J7VJzf{V^q zQw)2&kSClbCh}A%NZXYVWX`i)7cTWkhVMap_Y2Shk8eLtXx|h4@XRIC<^3Udp6#=+ z^@i!pAw0t6xbY){zbQ2W)y)clr!$!5TiCzp*b=S19;I`dWL2JYoho%+7sx^LEF}AH zzU}8YFFU)7?*ZQElcIR0g-`QW#%X#15Wa50#T)giLh$T=eG#L}<`$GNYjY+}KPQxe z>o`Aomic$xfQpW~;m2P}nP~h$DbHVM)42u1_ynXR2^w;oXv#qH=izdD_O_NWGuFZF zJrq&X9Xvo4cy!{2>T>j%OFA20{`veM+WZ^c8Z#27`s6_j`PYz%i{IHY1i2cLboC%~B!Gh?cySdUFng+5PtBV50IR z7AJ=?>8^~%IZbrF4tZ3KdU?>EaEMim-zqe6!53tunez*kQwE;S0=(#HC=?eE;e2^6S|jAr&i+VK2u-If2$rG5XL-Gx z!b(~G%qn1yDkqG^0sZrXGZp23ZTFigDYmpRCOR}l(^jJ7p;w&BvuTE@dmjz|oU{+B zCZ7Ks=GoAm^Hw`5W_hIm?xYYP*&mpzX`Wr0r(r=ky=nq8 zoGR8(2SeY?KA9uJJ;i_V^P=%Uh+UXI)Fkp<0%w@GlRi7BB1fzSfKyxY$`#5<>F>_L z*F+;A&z09UqlcrrebkEh%rDECLBf-qfb~rT*6A$L`11tC#Cd^$YjXpxK=UV7Pq8&m zWV&r>BQMyx9OEJ&l#1gVC4xbFrQd;*e1>Sa+(A}aV+|6Y^2U~`jslKn2Ku?^#^H`4 z>7(hz7_GmF^s%-epp@|E91gWv-XK{Gw3icUwH4nYpz;MdcPwpQRA(?BttC|1W`RLt z=B-%0@%$*O4c^9921OX5otk0f2Xn*m7taF-bK=`Ci;dQ7to*mXN|MMvGdN#=TTG%5 zU#0q-aB0{@t3q%mWs;+kDA^XOI!aO6{6zc(J1UGIzpJSo$fiwkUUJHpUZt?mbhOA3 z3w}PeUfhwoa@DSV$PI~#QKQ`QpJuXR=I4DhaiEPa*BM>G3@)zT2!_qKxs&BdPIC5X ze;)J-Y!yl!zO1t{b#Yv5FIG$R3`jeh|7mIUmUdp1`J3s`LidTzwVoWAG`cy}kQIJX z!q)8n%@)Albn$y%v*RPdThBwKH&>p57A<+PHV?u7FU4En=<9av!6l!|&pU+WGjbwy zPR#FrGyU6aEklm4kgWY3-kojY$g+rUa9JG9bzAaCTY5Q+?F<>Js)F4g%5JihXQ}FF zq%1JM#UK36r?#{FmR7l0#NNso09kuBUp}u?JTW}oaW;Urt7HHANi*Ii=S^UjRSAMd zn`oA(rR^hKqT)@Y@#?ZrX^&8)u==-?B_m4x3TR$jqFBXs@27Z|n+{?-Pv&cMiWEyt zG|t%)!p93jYR)gq^g*N?$D-b8T8%b=<3uUP>1%a%L&kPn`v5B7{h~JO<==K)ncdW3 zSJDb$DL`|Jy_~2E>T4?nO>iH@MG8GmfuOEHP6SPC(_2oAx5>4;sSNyQY|+B`_Mcu~ z8i<&eipl)=bq1w&_2yodpkQt;`&4vLNUQY#(yP;%eEZltG5#e)3ieEI@gj&a%?-_~ zM@|1iT6kL8Rw8&<{I;uUQlb`dh)YToE6~r8I!c{MJjY>+>!s8GhBk|w5D@u&EWyDm zxs9!%<#pzQ%j0idXu4mgj5_%FmE`!M-rUKi$j!#_ew4o( zjqS}P&c?X4Zxc*3zU9SCH+n^K(;RzK%MY4&FCCu|q~B=HQ8CaaMmdp}=DKF_Uw%dQ zftIJo;*CMkX|d^&!i>0<4J^aJVW3pc|HIyb`+il;yYl5MLYYo{WHCoU`fgmY&~tA zKVBm_x%m%I)uNMa9#gTHdzcx;Gqf+iI;266@j4P{v7TSBDHK(gP~bfd9L{QP%vJ+P2~h7jPmUZ`8tCPBFp>_<|{JBW}>*ZI%>F62%V zzhEz7}2Ik`ep|@u=`Uo?qn$YR!YeAB@7@>KNk;!z!k>6BG(y18Nzm zlhMh?G*@@&cu~^W5}>!k(=F6_45ndm`t5M{nVEa0Js)kdXtu8=n6f!roRadb>FW-w z3p=)9XhHHD;B*(UD7QKa-TP&?8S+$1WtT|2`PSLP*Gco<#Fi7iiCu|HRgPU=nwE`D z4HmBIlQ8VMfslW-z&A-M4WJksron9Rq2Q9vW)do>>$`GHrps1N&h?Lol6!PD^N{ce zB67C@HI3Y8=#+R$m`}v?=)9fp?Fb--{WY&QS&G79MGYbL(Dggd!UaKtgwoYQ*)2`pI*QAYM z3C!cfI)1p#s_D0iJSiv3)BNys#>TmeXEAs?g&7}i`av@eqexdl4fkDO^X{7S=N#o< zk*>MT`OYlqzo(_P-TuWvU~~RUC7~PA_WSXhaLZP;;{Q)N^~vKDO0)rxxU|vJ`T9 zZ9VEXp_ekG&zFQ*iRmvlW(oC6dp9Ij7bpGE#)2B=-I&vl(@R@wFWUl(eA#4}4F|x;v0+X>MlJ2jqPZwz_?Ar=QlAUK%Ruy<8!VP5#^Z9mxCM{p(JjG}-hB z>&Bo;O(_K*5B)h#itY>l=*nA!KE2Z3WID#KPFlCiiqbdFIjltcG3ZX~>H>>bZqd0} z380hi>YcRk4;XGYu>71a@1MYwY~g7b;Cg3VciVO&ZUcf?%@@)Ov3r`yuSBP`g(_;X z&AG`Kq`lgn0lLU%`@bjd6_fdE%oUoAL844ht}hWEMf@msclC{T6e_nE*fSg}4$+uP zgtuDGt&)E3dWAi>8kIwb-!Co142QTnxGW$BK3-0Br_y=(NK;7AO4cIf4HtX42zC@B z9+rZ5Q6yw^3t~M{5!y_y^YP&3m+u#T?h-rfZ@~MjiLi{z!|c|LdvL*3&cwA0aewE+ zx!r^6;2feQ$#Yh14sPx|i;om@0n(TccJ(a^|FS6Dnn7CWaMfFZ_0WBp`INWfiStK# zRDBzuE;mV=G3DIip`DXwaXh!N`O4}g$O6@xzQ=d7!)0*jhy4vDVp}hs32nxWx5xa0`UnJT~O3%mm*k;js|e zMB3&ReZQ_v{+fttHp7uNnC*n&^gB!7M$&95q}zqfzx<~#EJF9L3y|GY zURSkNMzrg)smAf#Y&;f)<57CseuEY4571h+ir|?u8>*Rfc9EZJKsGM;%23NHR3f%4 zq_-|q-ag_Orw87_S~83FVRX(C^uMwR2(m)D$wIr3r}GJJ3`>R?`f8rpD@wm};Hy%K zBH2BN_K{j`zoS!I*$Tp{|KkPu0OQv& zY^B`7&Vp?C&|%B!-y1hg8mmcW35AlXu^Fu>RXLZ_mxxI9NE()PJSZS^M3Mtx(9+so z`0bIf`u42SD%JF#>SR>oByu4k(yLplZA7e2&DsBi zIR1gN<+*J>hkpamKktYaJ!=IufOtJdBt0Oq>N8Zk886AjC0jBgCo?=zTM|lbNmyx$4aX=R3n*u4#a;L zYvk=YrSd6EmVJ-F%UPsuI9ZA&OF`G1+6?%ZX{7% ztnm3;CEq@oO1c#IBYZ=mujiT@9P=@A%Yt3AGLv!>>e4W>*ES_=> z%s7amd>Hf^6%I7rC8}TWGGnh_1)Z+LVIsb#chrpR9Toozr}J=9!jd2>5Nhn8kUi!O zh)_t~5v~%)0%h>gDUgWytj~`SfCi4Bzz%U^U6kl$G=Kex;ZZxKvazkM{+WQ=RYr_} zh7Kn2ZAeRP->@2%c265_Dl8k2myG9Q728%POw3Q70oBDl7uko>rK$$GJZ3bpis{wg z5$f`}?s#p4C-xq0^zx(BPP&Tkb9>xHtOcI$#$GkUsO5|jWYyL@+qi`ocJ31h-e1-y zij}bJxxn?bniJJGmtTn;m(VxFZM5Ga3JCVWFU@HDto?>;O*_286A03*vM%E?(pOIS zg;9t$pcsGS{cuh)3E5Lk|0_+BqH92Oi^#o!T~q5G<&eUb4Aodam`KNqMVDHC63h*Q z-zm3zDYaP^B7@hEY4)G}bCrL=JMQG{HOUaD#X$zS%xFF-rsKI?US$_R$R3(KCQ439 z@6iR#*k$fh;F&EbmwsDI?BapYyizQ)dyQSBFbg8-KSpZ*UR%KDpl1nV9avMkd>>BI zbc|H!Ys=)jC04s9Q7TkV(TBuGypMOhCn^k?2tC^@Rgi1d>Gc0C{cmf+rqtH3!wsl% z0q2C*u@86yYuGf!KcF7U2xOhyqcIn8cP{L-q6t#04OR7i(q9@)VZWT8z z_}*EhYb-tXssyn{8mD3(#vt5p{u!em z7efQ0h%;4Ai7F>d($4l(Qm^L2=M#Q0t262Z+5y(UoJQi0rAVEPUMZFx?-$Bv6zLLq znyz+(uyeNGJ&~Q+im6LYC0H+dXbBWC&UIV88 zt}fL3XZajD9%jqo@5Xla#6f%YtH_eb&qq2pvPKEFaM_afM(47DjFZ|5K@wZoLU9Nk z5M`y=soQTy)O*!`JedS0o__5l=~Saxa;ZM^n7nYB0!8LTO9UOtJ1OZ;o^?#ic}_-P zWnPb-6Ey%P;VF^-n}o}Oa9rP7iv~$E4f%=$bpkifB7|LjtiS2Kt&re0LzbjbDPmw? zZgj&Ma4Fec&*)7uc8Gh}2Wo&2YLBbMA{I&fewf{G97mF+p31s}zin${K@j~U`SstAKe0CojpPI$^(0y`K?Un_DJEQmh>bXjenez)=pPC z2h7Hx)Rfir`=qHoM2%6bbO#Z3HH}~%zw?Y2n^<{s$j!bHd%apx@_4JT_9vq;QOz!a^Zf@I2G)ORm}O1t}d9|(h< zoIB$IGDd{Sy(FYF*}c09wym?}-A*kolLxWPf=m3=PQYQ*6B^RzP0TPbOu>~V?vJk6 zFh_j;(@@5~y0t_A&D?5pB4tTg393H;cNG7~O_ky~hh!{{ogS~6pYh}Vao?aX;1X5- zR#6J$DOw&UG<#xbNUAZu=P`)p$spo_grGy+lX<$PZAq40x{6QM?;fdp!nznn&mUr@YsySKG7eC&VHEHrnw*RXB-(t$E zRhTWC$#=BU`fCIG{)Zcx%G1SO)O5VOc{X;zy>?Z!%WrXcF9w|r1?@i{ZR-a0A@l26 z+YRxO4jJ~r8>2}Kp)W(2$ihk5C1ffRY8j7CijPc2N0gZv*TcspNFa}a<1~gqA0zj@ z%e3B)#Mvi4v*d5g2&I8|nRNyGkA)AiIrOlfqf0q(3--9KlzkevjgjMTZ4Ghx^h~*K zM;Ceh&<8&b-`gLQ%*=L4nFEEUrmE+xyVoj&>t9+&N?R=o{!F~@C;u&7ql5H5reL@I z3rTJYnp1_^VAbk57ZH-7$0Kr%hdOx0M0{ksNcCyBj}TJ^i8?+3vhw|f>rq#)?5q1z z)P9687SOBHC{RHoPQ$Oem?-X(*;&~TL8D~o1gUy1+@Sig<#(du@Y+0WJ7Oqz3@Gg+ z>B*d=h(=#s3u>44{`JV3a|?<>$;IBxw$8g2Q?H;&B&{1rzML+-i6A$K9XFh z+i@1b1cK#HhuwZMuRNb%h+4gAr6^9st@PY@0N6_Mt#Ipx6du=9dP_& zn@f(3PswXWk)BcnlEQl%SUS?)AhgmYT+Zi;l+?xr-2CN(vq~;YKYIk#A{A1#;x;{xA)iHWPZ^B zt8yd|4;(+sGJ=M@a-f=ZchPmHzrc)llQ4B)HB1t`snV9;c&Xiam52{V~GQ@Ladu!mD?0Kxj9!GHTDUO z5Zw88tFyS%JMVv82pZ~#3$xn~9huV2>-6K)ooy3mSu(y;!5MKKORDpu7eS$cn5KDJ z+OEwb|H)N-Wz*j%4egn)bi%v~UfQKtPw5V7P10uzrGJk=+dTkYGfhcVV_Q&86z^%X z5&BIdM0-NuQdikt-Q$*n^hFfrYlvB_X?&;LMLizj5`NNBPEmn1_ZnW#5x#1-_P;#= zxt`(OV31}EP5jQsQ@hJMaUQv<0|)XPv6&&#v*SX!_+oDz$T4juWeUm!sKcvOSGaY6 z1Wr&Lh8K;6%-~~kKa_U6?&fxlU*Vm&h+MV8cTqgsdQ7IG^?HJU;V6%nK7J1;3S)!4 zwzf(jq|*f~;yFke$KyVyS-Nu`lP@P}J!`CJc{9#X4^L?-{$8JT`X~|LF?0P+n)b>LEF`0pI{@4NU4QR%3L4dp3UefM zJS{E(|Y~RXRY2`1`FbdZbtO1Sq_wI)1$LA?Dc9jn)rZAfPCu`2cqb&IR?B4uhH7&U2q?t=82|OOJV!^v zmd;z8m&MsPAwDZIt^el^KI2USuGu_Kdksm4UmL$+pfMTxnEV)V*98bYk-aqk5cEE! zI?~vdKMB;`0IpIG7u~#*7RH)+ZGMQLW}z?oU`FtNPj;sKZI5&_>lpgkGmHIeaz5OM zJEL*+%TB~ZNRH$zrO}_*^9L83z{heuxKo1b3-4nxL4X+ zbI7jc3$Kuy8S zpOy!Ac0T02@cj)DqL)Pi<;1tjPY2Jyda(f0e-%_%o_jF!Wf6GMpL4-3?P*t@W9f02 z^ch&tcqhsI`kj*iik!nK;=9ItAG%gw2RA$b=K@|^Q}!YixLkSC7_^qOMA)~*ZT@+n zUAI_eb!IrBhg~p+*7VYUK>6m0t0bntQad^7X`LzlZCbU%Oymmhz(Eo7i44jEyGyku z*$9-MvoF44>L3&lJdGB&fBO-9^~P9QaliXx@MrOxsWHSK0Tb_jicFoW8yVj?eU$O+ zr+P9%7xvE55eXn%-e!*%4(Zvb(o#M&^5{rn@eW#hjN$r@5qjYBV96<=J$mwqB2=<* zNdOoj~T5>x|z+VyF!x!zvAxE zt!6|u(dPNtU}ASa(vRm83_~a5J%N9TUJNfMxzf|*cL4FfuYrA8tXtMk6q+JC+<7EF zmGwfm)$)kA0?p`tX&(t$7s{YeTd`|}&~pF4lw}S_xXMnHcP92#Wm4?#q4$h~Y! zcRDz;l=cv;{5lcXjU-pNyoMwg^r_4XYvg>)Sx2Z6MKx>aWoMuiIIhH#;vXetw_h=w3@&xy< z^FZWTq6qzg6Q+F%IPeDXe8ORROSobyNvyt{DVk@Af&xU(Q;^^@-vxBNSS21@t-df@ zspQPN8b(oC0!RJK=fR;<0u1)$sEL^Tx8O%AqyYuAiRt7TY$cXe>6YPmvga)ngb17o zh%#~rr|rvmGsyEhPMI+6q)H#j;`s=X;}{`5M83s@R!1^Cr+6$@w+8$TKIk$G2JWJ(sC*RASBJUB$$rveH$9cmO~uoDPe z#6%9c*p#}-brT=p+%s@9M( z%-(UCIdO5%AM;mk@$}LVZqMB1xTYi zWD%5&tPZY^qlfvP0DKmqY9qge8eIkx>6%TDFgE`i)#xvu2RO~=NEIuD7VCfs)WF7SwHEqibR&dp>KYx(;4KJy}6-1yB@20k%&gW=#*wh z`fn>1Se939YydI4F~&(cv#<>G(kUOL)LIPwZyvCJ^J6D>@I#g{1rp}y986okhJ@kx z4vgSF4~Cr*vS43Ej9Xk>VpQ_YZ4;ZMJsr>BD=Tf-_x-;$hrYneZS3%4e#c&`7->tn zD9+kgu`wu~vYyq!kz{*{qa`Ox6#&b*@7eW|$(P0MaGhgKA+vW(fMp)<+iJ+uWa4}a z%^jyN($35X;P+l|lWO>aAE+F#p|-lnn;o9Q!fk4H1WMZ{1y&-Lxvh4^M(&qCMl3V5 zXG~oyXvrMR0GgYPmO8TUq%J&78OzPSaYy6$H%P>n{wz@CfJwF0NnUEm8Yi^fJ?_>8sTY0f7eAOb!et|Yh%)qQLuIH~u|GPe7M z=3{BXJ*(f9NfulYDO3-FCBmq^2x-+Op4vKbHq@WvFCD=cUc6{oK0bpjP_Qe5oV{OP z*&xm~h0KW3rO+-iL6xzGNA{64? zN`X1j93(5FBvR*Uj4DY6>V{aJ-=t8qM@fYwI<|Cl0zr}L3f{t*{R8b2^`!w-1sP=u zSyiEo{<&aP!w>Y>#%?BFdew$BFU8f`xNw%Tf{fY$?n3z0#6cGkBtxzqa!E8iq*nb8 zpA2;foppA(>q#=060fPEOz41%a5MmT+xU#ZDhT($*nQKDg-d5qRdq>aUB6&F!CsA$ zU!9Nl;iep)zDrzht@kPG9_30*19X{Sa+1P-3Z*QR@ow@cjfs1^NprHTjgm@isf)_E z+!`Ua_aIpqo4d^aXYwEV1Z-B zLg?W!p54a0+c?iHip=OUt{zBBNg65cwi$gNX=XK)A&cda>pV%fihn)cG>;i{AF4gKL1g~Fy~k+-3v zv#FhzBNCy^9o&(=m~D{Z=Qs8sNr4hP*6+`)T0i_Xg$0iIU5+NfZPfE-KHa0%1Ee-9 z{WuS~Y?P$Z>M`S+cIeEuNI*CN5BC+U55nur+r71TYm?~Fi&?HwIh`>KdyvhtFfs~y zGwh^>>q5Zi!-KKIgwq%_1VkBrn1rt@E#722DTs8n4a%=Q?6pI1 z!UCO9tz&K45b=Dr8U3P%9HoF>=Wu7+!EL%KlLyx1QM*s)2Z)s@Ij#D@+YbkBV~yBK zB*{}-ewaie@<1Uv_L4~MqD22VPxa>$LD~I#75CHap?eArz1kcosGKL*I{$UAQ?W8x zlyAoGvQ6xrrFHtZ&NahN;6!t)^Km~!Px6?O8SMmSV8O|PNv?&lmB!~Mf^B=P`v~yh z+DR$qFv!M41b;ZG+^--8=_c~Hw_xrFM!mo7#H1l=J)veCEsZw#={~u%%NK&|g^v;o zNr-}u-#QF3nN5QU$7F)Q;uSk&D!LahhR3g7%*f7yJ27tF0cyT%H z{5%@%^h%s4?&qk?9*82g5&l9kURuu*(Jv;7(9xHZ@fq#b+?*3pWi{CH#T2qF!^CKt z;_N;kagF}6h-JVdxOo!Hlf-7p1%98HGp3?kVEn(?URp)p6(dRBGpyz1g}191a{ov; zf96F1WWTh{5*tQ>dPWN_nAVL3Uh50|5T>!^=af}?`o)5Awie~jc;|-# zdcGN+bo3W!)W@xwbbN2%7nG>tiTNT=aAr)s+L6FO;Q7Cij_X%fs6<&)E zJmUVho|bO9wDowxyAz59IR%tN-=99(Lrpt{E_9@QEzUJ2YyCY=LfU17`m_{Hdejcp zmP4VJgr?SaVx?f={{KLq5MfH?lhRPn5+j=xo$aQ1AXS)!TsFn_#z=}h3K4Xe(mG-W zXm2kdovvf}PnIQe{BuF9dss|FiT-Wwj_X@m;E7w!CrCs}}pB$`UbZMOY zp^C6C%UBEjeCGYy(^y^zq$UfGc*iV8Dg;YbK6#MKtl<~v%8p9xBW4oIe~fE1zODX3 z2aIR*0L!O)txX|mDiaVfN+%0u-8@7hrBKC8DJz}R!YS##IreGSA-jgiA7K{~&x4$c`Wxb~AhIY{*6NYf4+2li3?Cx}7TfZKR@ zu3{yy$fufkkSIjI7}9<~N*+`c^Kp)-1auIOkU#UJwrnj()KBG1YvWBv$HmX3M>9Rs z4~PQsvcfxl?x2F#9*+(oq|!Y_eE1A(#3M*iT?174cg!*bJ+)zkrpW($_+Y?EK=c>teXkp}pL5dNL$8|?4t0y_@y|MpAP0zeaCS-eVog9x+Y!=x zB4w(XsB&V#`r7iF^$?{8yEdogkKvv)c0jM0|5aV|?uP-r@Nh><`H2~aJes$qqm+2v zDLtPR-oK1DXl@iJ0Q;@cRGn>!7+woy`7|E#TL5wCcPB||$J6~LQe}3|>P;ygons3c zGevEk@ly|7ya=#+m#_`r_fw>S`~1hOD8iZ!bXWsxI2cp!WyK_2TAc0gd1hfO0R_Fo zc2bI$kZ$umR{>J*>vinP-tD}cHBAk-Mpyr#Nsz$%45_USbrg3Km+Y;@R)Fen|G?$A zc1b{0x%xrV>%TxR1lJJi=W(t)bra)rBax;8d4JPr{<4Atwv zpUwyVB#XyYDIS>mch}x?U|H0D`;1W=?SB_5nR0ArK)}keT$w-UJ#`P>+g!(-I!R z7PaZzGC($KiH;7GYWX6i@&>c~x4%oEfu9u^%#%h;w+)vqbJM@kk-hu$kJB+MEVgDJ zL)wy9oU5lR^VFNYjwuP-aAlVnJ2u$v&$~X8N>p%lj*6+6z`uEU(jf&gz6(8dJ0O+R zWicg9u1L9OCvt_oC%}hZT6~QP2v!q}pG*nq(W$PxsZsL6Q`7I&*@p}P?>{Uwpt-2? zlvjTTq36ke(DO03X1)9{xZ{(wVjXlYG0iO4O0xcCCHbWOCm-Rc6v9=CmoAinRP|P( z5Uu>r9Qvvf_V_5;aVQXlS0OV>TOO^n0ti$2FTqG+L^6^cT7+Pe2Uro=u?^ z!j!j~M+Ua7{LE4E5wtZ46a7)FT*%lsf~mgM6>zq4i75GO$F&WwdT_)?kB9&E5_N6j z>gsx-h2#vz2foGZ-P(@+Uahq8cO|IJ)(j=T5bq=xf(N|=UgWap5~7zG*g$&wPBd1Y z_O(`=X%N!UL~+n>#6QvtQJJAeM3H{fokhLO&iq{2pe@H9Da4Yf-E5t!gqYv zixk~JS;lNlVSqH~Msx=j0jl{(D6 zk90H7Qu{^G!}+yAp>E|(*!ambs`lAyJl{Jy%(^{=IcMHSU8&wGMDk>69HX=*uY@47 z8anulSP2nY!p@CeKwMb|=pWI-XG?8-YdBR&NZY3~*RNA?q3*uC`omE1MChTRmr}%u zEmXB71`0hU80l1KJtfNd2V%^pcO2zMJ7?Zc?*vPk_2WMontTPx__r3skhNgDI9ASh z#>Ly(qVI#s0zhhbhff?O!g#vH2&dcK0B77I@n6WOP-})AQT_(W0i!rw9eLI#!(cMi ze@_3tj@X=^=*elW8BuIM_LGD9od59aPhe^|yDJ%jEt}l19eXhCZt!h8ZkhkD3`C-O z8!Op4x9N8uX<;fiwL=n3IiR#>v`jn;_pc;pegVM(ZE;ZV<6$|k8+T#J4$m#p`764@ zz7RbJ4;fMf^JqFex9h26s+Vhv}LXKtzuTZ8EF!z zc3$#TyC3HMrE%-bwF*kZ^!>oK$~rIES=G^2GwHDv2Qp9im~pX5gM3kLhr5rN`YJon zL#ekgDkOOQTgoJhFA~((C{$|Ej#>z*yn{$-@lxwqTSCEIJ4H#-1I%*ZQ%nLID9v`$UiH)!dURRZ{bE2b9 zTl3z+_HtczOut*ipEyfUS`~S6SV^Hy{_Nm|gXUY;k1O)pVQ!W2ipvqRW6XVw3nr=@ z%N3Y#k;m7VFH|+>%G)SOS6bVQAoeKtb^CAkWa;tOqhttwM5dK~6PJD>n=m5|0gWQ1 z1}VVpO=96irqse#$**kbK?Ya_MPn zR|3OGkXLgQ)s4Hc$VDv^Z}{xH3GDAk=}Qh6gIHGoUYs@f=EFIv_ZyLTqvmb-%b=<7 zJ&s)lC#w{2o3k8Tzy2#5O9OHTknYVFbTdNph8n-!wfdUy4<-q#rp_$>Lb~WLjnYy3 zj&?ykQ?EhYd1v@(iBV}!!QsDzLEY&ppoy(IN(VY90xaoFM0m~WWb5aZOfi&QWJ-wj zCG5QDJsn4_wC;w{yAqRVgTrI9;RTii?wAESt21Um@$g^1^teiwev>r^@DfTegjAMKOy*ic!g%_`XXKtDN9vMHI8|}zLCj2IUSxg6@aT$5Aw%8VSKakp zb{@y?m1TK7*g|vWqlUu(8Wr-M@nz97^8>r@=>yi6ktfm=DuIzVyTZbk2}ibw;JyjF(JcEuLBJd@gC zQk2QPyWX5dEMjiUjj8-Jd56~%RCUcw=h`Ly=pDpCj*sOvi#NW(b`6z&=pSoas9S51 zDeB=6W!R)G$~0+f7Aq$aR4tv8&Vf~kvC>+g?rAA6Oyba^s66fSV70hUcbS(K=$d5( z%A?uokbogl7mnuYw>!I8D%*X{V-NM>D3AM}UgT5OlQnn~v|`aDFl7@0U&u&xfAoUj zY{;^CrTnyMfO5;}p>io7b<;fdt17ie9zqTNH5x7~$BCLZL)#>o`sQs~KS61E(m%i4Y{j!ovzR&4NuDZY|Lq{VBB5y~?m>8bhB) z1#BG^18I4u(eP?%!|9Yjml5GkYdc1<;N^)~&LXo)XliWv8Y_tD2K#QyWFv|SCkwpP zW)zknk(Z|{hN9pPxqhF0`7eC;C$fC!r*QKSO^WS(Gfo7gqH=Epz3X`ZzgH?aFL1y3(Pu53w(g$MA0#11|<`$bN!u3gw1*29ttSeF)PA!rHupChq z<}KsJLf}&m1Vu)!q+SVc_^Lh-!;Fo$IpLFmMYCb7je+`0_6|CeHW3{PV7ins!DZ+L zT`u*}6m|5`MBL5Gn@NVV_d7eOxmpdjTB7JG5_wj2Db$czignHfDZu(GlTbXCw2 zf}z(zABJAz!DV4s#K33nc}}>YBzLmb*dEHiHHDRX?`S|C)!3zUzyj6D|4v zbKuII-2fpOp*(NBm$Vj&dTe8W5|^-)07!ZjQG9y6ziw zxbY*ns4SiL_PqH0f#@dk;_#B~)Zli);N~Jo1aLXstpQKk#$K4a-khz*fWbVu}Jmhc9>3?FuS?V!4gyA{2FvDI!-nVpsdo&(gOe6 zIW{`ln2YN=_uWCLV2;du7^6|&`ef|)+UT_+_O09P6|Pn(PmAD{6z$d=xp|nE_tmE9 z^#Yq>+BiMw{O$Ge(a|x_b!i&;9^gvBbg~!DS?}%X?mm1=@o94UdT(j<6g*#fF52{R z@6f>LXu9p<>P%FjbgEYf97U@5bI)6;z>6A>_K-+Vdqp*NM}zQ&V< zm-aQNNu1Qf*0=Lja~1)VD>SFcmvhmwM`L0WJv_XnM5+{tI59prp=u_Y=@S+y^BEmz z*3_lM$f*3jl0`=sj0ABZovoFY%(Wl`k2Dg*g^FH2Vs4-OBxJT%x$#_imRsT1qf+Z2 z7J@WSG}qVNNS45T-J@@IXmYz!5_H*5o{f0d)uTy$$he0^>ng|b5okh8J|Q4>H(vh9 zNMhwV%CHy1@|_}V&rdU}+-l})%IS-D-X9lu6xps-RgLTQ&_#_|QE?x-n&~FMHfdN( z)`TI;VKo>l*DtmREL4u|(C&9r-+L=QTY1C{xPBea-*NuJ9Azv+fJgaNgnX`BGe zK@#}DiXtK)C?g>t;DG1b|M%k=9*y}$2=Q06H28ZUI_QfUl3H~1+!v~QxN-1L{XgzI Bo00$k delta 31036 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 z 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 diff --git a/SpaceCadetPinball/control.cpp b/SpaceCadetPinball/control.cpp index bc92071..565d6cd 100644 --- a/SpaceCadetPinball/control.cpp +++ b/SpaceCadetPinball/control.cpp @@ -528,10 +528,45 @@ component_tag_base* control::simple_components[142] &control_soundwave7_tag }; -int control::table_unlimited_balls; +int control::table_unlimited_balls, control::waiting_deployment_flag; int control::extraball_light_flag; int control::RankRcArray[9] = {84, 85, 86, 87, 88, 89, 90, 91, 92}; int control::MissionRcArray[17] = {60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76}; +int control::mission_select_scores[17] = +{ + 10000, + 10000, + 10000, + 10000, + 20000, + 20000, + 20000, + 20000, + 20000, + 20000, + 20000, + 20000, + 20000, + 30000, + 30000, + 30000, + 30000 +}; +component_tag_base* control::wormhole_tag_array1[3] = +{ + &control_sink1_tag, &control_sink2_tag, &control_sink3_tag +}; + +component_tag_base* control::wormhole_tag_array2[3] = +{ + &control_lite5_tag, &control_lite6_tag, &control_lite7_tag +}; + +component_tag_base* control::wormhole_tag_array3[3] = +{ + &control_lite4_tag, &control_lite2_tag, &control_lite3_tag +}; + void control::make_links(TPinballTable* table) { @@ -847,6 +882,28 @@ void control::table_set_multiball() control_info_text_box_tag.Component->Display(pinball::get_rc_string(16, 0), 2.0); } +void control::table_bump_ball_sink_lock() +{ + if (TableG->BallLockedCounter == 2) + { + table_set_multiball(); + TableG->BallLockedCounter = 0; + } + else + { + TableG->BallLockedCounter = TableG->BallLockedCounter + 1; + control_soundwave44_tag.Component->Play(); + control_info_text_box_tag.Component->Display(pinball::get_rc_string(1, 0), 2.0); + TableG->Plunger->Message(1016, 0.0); + } +} + +void control::table_set_replay(float value) +{ + control_lite199_tag.Component->Message(19, 0.0); + control_info_text_box_tag.Component->Display(pinball::get_rc_string(0, 0), value); +} + int control::cheat_bump_rank() { return 0; @@ -981,6 +1038,8 @@ void control::LeftKickerControl(int code, TPinballComponent* caller) void control::RightKickerControl(int code, TPinballComponent* caller) { + if (code == 60) + control_gate2_tag.Component->Message(54, 0.0); } void control::LeftKickerGateControl(int code, TPinballComponent* caller) @@ -999,6 +1058,16 @@ void control::LeftKickerGateControl(int code, TPinballComponent* caller) void control::RightKickerGateControl(int code, TPinballComponent* caller) { + if (code == 53) + { + control_lite29_tag.Component->Message(15, 5.0); + control_lite195_tag.Component->Message(7, 5.0); + } + else if (code == 54) + { + control_lite29_tag.Component->Message(20, 0.0); + control_lite195_tag.Component->Message(20, 0.0); + } } void control::DeploymentChuteToEscapeChuteOneWayControl(int code, TPinballComponent* caller) @@ -1113,6 +1182,11 @@ void control::LaunchRampHoleControl(int code, TPinballComponent* caller) void control::SpaceWarpRolloverControl(int code, TPinballComponent* caller) { + if (code == 63) + { + control_lite27_tag.Component->Message(19, 0.0); + control_lite28_tag.Component->Message(19, 0.0); + } } void control::ReentryLanesRolloverControl(int code, TPinballComponent* caller) @@ -1273,6 +1347,31 @@ void control::ExtraBallLightControl(int code, TPinballComponent* caller) void control::ReturnLaneRolloverControl(int code, TPinballComponent* caller) { + if (code == 63) + { + if (control_roll6_tag.Component == caller) + { + if (light_on(&control_lite27_tag)) + { + control_lite59_tag.Component->Message(20, 0.0); + control_lite27_tag.Component->Message(20, 0.0); + TableG->AddScore(caller->get_scoring(1)); + } + else + TableG->AddScore(caller->get_scoring(0)); + } + else if (control_roll7_tag.Component == caller) + { + if (light_on(&control_lite28_tag)) + { + control_lite59_tag.Component->Message(20, 0.0); + control_lite28_tag.Component->Message(20, 0.0); + TableG->AddScore(caller->get_scoring(1)); + } + else + TableG->AddScore(caller->get_scoring(0)); + } + } } void control::BonusLaneRolloverControl(int code, TPinballComponent* caller) @@ -1423,6 +1522,59 @@ void control::HyperspaceLightGroupControl(int code, TPinballComponent* caller) void control::WormHoleControl(int code, TPinballComponent* caller) { + int sinkFlag2; + TSink* sink = static_cast(caller); + + if (code == 63) + { + int sinkFlag = 0; + if (control_sink1_tag.Component != sink) + { + sinkFlag = control_sink2_tag.Component != sink; + ++sinkFlag; + } + + int lite4Msg = control_lite4_tag.Component->MessageField; + if (lite4Msg) + { + control_lite4_tag.Component->MessageField = 0; + control_worm_hole_lights_tag.Component->Message(20, 0.0); + control_bsink_arrow_lights_tag.Component->Message(20, 0.0); + control_lite110_tag.Component->Message(20, 0.0); + if (lite4Msg == sinkFlag + 1) + { + if (TableG->MultiballFlag) + { + table_bump_ball_sink_lock(); + TableG->AddScore(10000); + } + else + { + control_info_text_box_tag.Component->Display(pinball::get_rc_string(49, 0), 2.0); + table_set_replay(4.0); + TableG->AddScore(sink->get_scoring(1)); + wormhole_tag_array2[sinkFlag]->GetComponent()->Message(16, sink->TimerTime); + wormhole_tag_array3[sinkFlag]->GetComponent()->Message(11, static_cast(2 - sinkFlag)); + wormhole_tag_array3[sinkFlag]->GetComponent()->Message(16, sink->TimerTime); + wormhole_tag_array1[sinkFlag]->GetComponent()->Message(56, sink->TimerTime); + } + return; + } + TableG->AddScore(sink->get_scoring(2)); + sinkFlag2 = lite4Msg - 1; + } + else + { + TableG->AddScore(sink->get_scoring(0)); + sinkFlag2 = sinkFlag; + } + + wormhole_tag_array2[sinkFlag2]->GetComponent()->Message(16, sink->TimerTime); + wormhole_tag_array3[sinkFlag2]->GetComponent()->Message(11, static_cast(2 - sinkFlag2)); + wormhole_tag_array3[sinkFlag2]->GetComponent()->Message(16, sink->TimerTime); + wormhole_tag_array1[sinkFlag2]->GetComponent()->Message(56, sink->TimerTime); + control_info_text_box_tag.Component->Display(pinball::get_rc_string(49, 0), 2.0); + } } void control::LeftFlipperControl(int code, TPinballComponent* caller) @@ -1436,6 +1588,11 @@ void control::LeftFlipperControl(int code, TPinballComponent* caller) void control::RightFlipperControl(int code, TPinballComponent* caller) { + if (code == 1) + { + control_bmpr_inc_lights_tag.Component->Message(25, 0.0); + control_ramp_bmpr_inc_lights_tag.Component->Message(25, 0.0); + } } void control::JackpotLightControl(int code, TPinballComponent* caller) @@ -1674,10 +1831,52 @@ void control::LeftHazardSpotTargetControl(int code, TPinballComponent* caller) void control::RightHazardSpotTargetControl(int code, TPinballComponent* caller) { + TPinballComponent* light; + + if (code == 63) + { + if (control_target19_tag.Component == caller) + { + control_lite107_tag.Component->MessageField |= 1u; + light = control_lite107_tag.Component; + } + else if (control_target20_tag.Component == caller) + { + control_lite107_tag.Component->MessageField |= 2u; + light = control_lite108_tag.Component; + } + else + { + control_lite107_tag.Component->MessageField |= 4u; + light = control_lite109_tag.Component; + } + light->Message(15, 2.0); + TableG->AddScore(caller->get_scoring(0)); + if (control_bpr_solotgt_lights_tag.Component->Message(37, 0.0) == 3) + { + control_soundwave14_1_tag.Component->Play(); + control_gate2_tag.Component->Message(53, 0.0); + control_bpr_solotgt_lights_tag.Component->Message(16, 2.0); + } + else + { + control_soundwave49D_tag.Component->Play(); + } + } } void control::WormHoleDestinationControl(int code, TPinballComponent* caller) { + if (code == 63) + { + if (!light_on(&control_lite110_tag)) + { + control_lite110_tag.Component->Message(15, 3.0); + control_info_text_box_tag.Component->Display(pinball::get_rc_string(93, 0), 2.0); + } + TableG->AddScore(caller->get_scoring(0)); + AdvanceWormHoleDestination(1); + } } void control::BlackHoleKickoutControl(int code, TPinballComponent* caller) @@ -1747,30 +1946,96 @@ void control::GravityWellKickoutControl(int code, TPinballComponent* caller) void control::SkillShotGate1Control(int code, TPinballComponent* caller) { + if (code == 63) + { + control_lite200_tag.Component->Message(9, 5.0); + if (light_on(&control_lite67_tag)) + { + control_skill_shot_lights_tag.Component->Message(34, 0.0); + control_skill_shot_lights_tag.Component->Message(20, 0.0); + control_lite67_tag.Component->Message(19, 0.0); + control_lite54_tag.Component->Message(7, 5.0); + control_lite25_tag.Component->Message(7, 5.0); + control_fuel_bargraph_tag.Component->Message(45, 11.0); + control_soundwave14_2_tag.Component->Play(); + } + } } void control::SkillShotGate2Control(int code, TPinballComponent* caller) { + if (code == 63) + { + if (light_on(&control_lite67_tag)) + { + control_lite68_tag.Component->Message(19, 0.0); + control_soundwave14_2_tag.Component->Play(); + } + } } void control::SkillShotGate3Control(int code, TPinballComponent* caller) { + if (code == 63) + { + if (light_on(&control_lite67_tag)) + { + control_lite69_tag.Component->Message(19, 0.0); + control_soundwave14_2_tag.Component->Play(); + } + } } void control::SkillShotGate4Control(int code, TPinballComponent* caller) { + if (code == 63) + { + if (light_on(&control_lite67_tag)) + { + control_lite131_tag.Component->Message(19, 0.0); + control_soundwave14_2_tag.Component->Play(); + } + } } void control::SkillShotGate5Control(int code, TPinballComponent* caller) { + if (code == 63) + { + if (light_on(&control_lite67_tag)) + { + control_lite132_tag.Component->Message(19, 0.0); + control_soundwave14_2_tag.Component->Play(); + } + } } void control::SkillShotGate6Control(int code, TPinballComponent* caller) { + if (code == 63) + { + if (light_on(&control_lite67_tag)) + { + control_lite133_tag.Component->Message(19, 0.0); + control_soundwave14_2_tag.Component->Play(); + } + } } void control::ShootAgainLightControl(int code, TPinballComponent* caller) { + if (code == 60) + { + if (caller->MessageField) + { + caller->MessageField = 0; + } + else + { + caller->Message(16, 5.0); + caller->MessageField = 1; + } + } } void control::EscapeChuteSinkControl(int code, TPinballComponent* caller) @@ -3284,56 +3549,779 @@ void control::ReconnaissanceController(int code, TPinballComponent* caller) void control::ReentryTrainingController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code != 63) + { + if (code == 66) + { + control_lite56_tag.Component->MessageField = 3; + control_l_trek_lights_tag.Component->Message(20, 0.0); + static_cast(control_l_trek_lights_tag.Component)->Message(32, 0.2f); + static_cast(control_l_trek_lights_tag.Component)->Message(26, 0.2f); + control_r_trek_lights_tag.Component->Message(20, 0.0); + static_cast(control_r_trek_lights_tag.Component)->Message(32, 0.2f); + static_cast(control_r_trek_lights_tag.Component)->Message(26, 0.2f); + control_lite307_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + sprintf_s(Buffer, pinball::get_rc_string(112, 0), control_lite56_tag.Component->MessageField); + control_mission_text_box_tag.Component->Display(Buffer, -1.0); + return; + } + if (control_roll3_tag.Component == caller + || control_roll2_tag.Component == caller + || control_roll1_tag.Component == caller) + { + control_lite56_tag.Component->MessageField = control_lite56_tag.Component->MessageField - 1; + if (control_lite56_tag.Component->MessageField) + { + MissionControl(67, caller); + } + else + { + control_lite307_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(113, 0), 4.0); + int addedScore = SpecialAddScore(500000); + sprintf_s(Buffer, pinball::get_rc_string(78, 0), addedScore); + if (!AddRankProgress(6)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave9_tag.Component->Play(); + } + } + } } void control::RescueMissionController(int code, TPinballComponent* caller) { + char Buffer[64]; + + switch (code) + { + case 63: + { + if (control_target1_tag.Component == caller + || control_target2_tag.Component == caller + || control_target3_tag.Component == caller) + { + MissionControl(67, caller); + return; + } + if (control_kickout2_tag.Component != caller || !light_on(&control_lite20_tag)) + return; + control_lite56_tag.Component->MessageField = control_lite56_tag.Component->MessageField - 1; + if (control_lite56_tag.Component->MessageField) + { + MissionControl(67, caller); + return; + } + if (light_on(&control_lite303_tag)) + control_lite303_tag.Component->Message(20, 0.0); + if (light_on(&control_lite304_tag)) + control_lite304_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(129, 0), 4.0); + int addedScore = SpecialAddScore(750000); + sprintf_s(Buffer, pinball::get_rc_string(78, 0), addedScore); + if (!AddRankProgress(7)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave9_tag.Component->Play(); + } + break; + } + case 66: + control_lite20_tag.Component->Message(20, 0.0); + control_lite19_tag.Component->Message(20, 0.0); + control_lite56_tag.Component->MessageField = 1; + break; + case 67: + if (light_on(&control_lite20_tag)) + { + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(128, 0), -1.0); + if (light_on(&control_lite303_tag)) + control_lite303_tag.Component->Message(20, 0.0); + if (!light_on(&control_lite304_tag)) + { + control_lite304_tag.Component->Message(7, 0.0); + } + } + else + { + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(127, 0), -1.0); + if (light_on(&control_lite304_tag)) + control_lite304_tag.Component->Message(20, 0.0); + if (!light_on(&control_lite303_tag)) + { + control_lite303_tag.Component->Message(7, 0.0); + } + } + break; + default: + break; + } } void control::SatelliteController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code != 63) + { + if (code == 66) + { + control_lite56_tag.Component->MessageField = 3; + control_lite308_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + sprintf_s(Buffer, pinball::get_rc_string(132, 0), control_lite56_tag.Component->MessageField); + control_mission_text_box_tag.Component->Display(Buffer, -1.0); + return; + } + if (control_bump4_tag.Component == caller) + { + control_lite56_tag.Component->MessageField = control_lite56_tag.Component->MessageField - 1; + if (control_lite56_tag.Component->MessageField) + { + MissionControl(67, caller); + } + else + { + control_lite308_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(133, 0), 4.0); + int addedScore = SpecialAddScore(1250000); + sprintf_s(Buffer, pinball::get_rc_string(78, 0), addedScore); + if (!AddRankProgress(9)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave9_tag.Component->Play(); + } + } + } } void control::ScienceMissionController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code != 63) + { + if (code == 66) + { + control_lite56_tag.Component->MessageField = 9; + control_target1_tag.Component->MessageField = 0; + control_target1_tag.Component->Message(50, 0.0); + control_target2_tag.Component->MessageField = 0; + control_target2_tag.Component->Message(50, 0.0); + control_target3_tag.Component->MessageField = 0; + control_target3_tag.Component->Message(50, 0.0); + control_target6_tag.Component->MessageField = 0; + control_target6_tag.Component->Message(50, 0.0); + control_target5_tag.Component->MessageField = 0; + control_target5_tag.Component->Message(50, 0.0); + control_target4_tag.Component->MessageField = 0; + control_target4_tag.Component->Message(50, 0.0); + control_target9_tag.Component->MessageField = 0; + control_target9_tag.Component->Message(50, 0.0); + control_target8_tag.Component->MessageField = 0; + control_target8_tag.Component->Message(50, 0.0); + control_target7_tag.Component->MessageField = 0; + control_target7_tag.Component->Message(50, 0.0); + control_lite303_tag.Component->Message(7, 0.0); + control_lite309_tag.Component->Message(7, 0.0); + control_lite315_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + sprintf_s(Buffer, pinball::get_rc_string(114, 0), control_lite56_tag.Component->MessageField); + control_mission_text_box_tag.Component->Display(Buffer, -1.0); + return; + } + if (control_target1_tag.Component == caller + || control_target2_tag.Component == caller + || control_target3_tag.Component == caller + || control_target6_tag.Component == caller + || control_target5_tag.Component == caller + || control_target4_tag.Component == caller + || control_target9_tag.Component == caller + || control_target8_tag.Component == caller + || control_target7_tag.Component == caller) + { + control_lite56_tag.Component->MessageField = control_lite56_tag.Component->MessageField - 1; + if (control_lite56_tag.Component->MessageField) + { + MissionControl(67, caller); + } + else + { + control_lite303_tag.Component->Message(20, 0.0); + control_lite309_tag.Component->Message(20, 0.0); + control_lite315_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(115, 0), 4.0); + int addedScore = SpecialAddScore(750000); + sprintf_s(Buffer, pinball::get_rc_string(78, 0), addedScore); + if (!AddRankProgress(9)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave9_tag.Component->Play(); + } + } + } } void control::SecretMissionGreenController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code != 63) + { + if (code == 66) + { + control_lite6_tag.Component->Message(19, 0.0); + control_lite2_tag.Component->Message(11, 1.0); + control_lite2_tag.Component->Message(19, 0.0); + control_lite2_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + char* v2 = pinball::get_rc_string(144, 0); + control_mission_text_box_tag.Component->Display(v2, -1.0); + return; + } + if (control_sink2_tag.Component == caller) + { + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(145, 0), 4.0); + int addedScore = SpecialAddScore(1500000); + sprintf_s(Buffer, pinball::get_rc_string(78, 0), addedScore); + if (!AddRankProgress(10)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave9_tag.Component->Play(); + } + } } void control::SecretMissionRedController(int code, TPinballComponent* caller) { + if (code != 63) + { + if (code == 66) + { + control_lite5_tag.Component->Message(19, 0.0); + control_lite4_tag.Component->Message(11, 2.0); + control_lite4_tag.Component->Message(19, 0.0); + control_lite4_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(143, 0), -1.0); + return; + } + if (control_sink1_tag.Component == caller) + { + control_lite198_tag.Component->MessageField = 23; + MissionControl(66, nullptr); + } } void control::SecretMissionYellowController(int code, TPinballComponent* caller) { + if (code != 63) + { + if (code == 66) + { + control_worm_hole_lights_tag.Component->Message(20, 0.0); + control_bsink_arrow_lights_tag.Component->Message(20, 0.0); + control_bsink_arrow_lights_tag.Component->Message(23, 0.0); + control_lite110_tag.Component->Message(20, 0.0); + control_lite7_tag.Component->Message(19, 0.0); + control_lite3_tag.Component->Message(11, 0.0); + control_lite3_tag.Component->Message(19, 0.0); + control_lite3_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(142, 0), -1.0); + return; + } + if (control_sink3_tag.Component == caller) + { + control_lite198_tag.Component->MessageField = 22; + MissionControl(66, nullptr); + } } void control::SelectMissionController(int code, TPinballComponent* caller) { + char Buffer[64]; + + switch (code) + { + case 45: + case 47: + if (control_fuel_bargraph_tag.Component != caller) + return; + MissionControl(67, caller); + return; + case 63: + { + int missionLevel = 0; + if (control_target13_tag.Component == caller) + missionLevel = 1; + if (control_target14_tag.Component == caller) + missionLevel = 2; + if (control_target15_tag.Component == caller) + missionLevel = 3; + if (!missionLevel) + { + if (control_ramp_tag.Component == caller + && light_on(&control_lite56_tag) + && control_fuel_bargraph_tag.Component->Message(37, 0.0)) + { + control_lite56_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->Message(19, 0.0); + control_outer_circle_tag.Component->Message(26, -1.0); + if (light_on(&control_lite317_tag)) + control_lite317_tag.Component->Message(20, 0.0); + if (light_on(&control_lite318_tag)) + control_lite318_tag.Component->Message(20, 0.0); + if (light_on(&control_lite319_tag)) + control_lite319_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = control_lite56_tag.Component->MessageField; + MissionControl(66, nullptr); + int addedScore = SpecialAddScore( + mission_select_scores[control_lite56_tag.Component->MessageField - 2]); + sprintf_s(Buffer, pinball::get_rc_string(77, 0), addedScore); + control_mission_text_box_tag.Component->Display(Buffer, 4.0); + } + return; + } + + if (control_lite101_tag.Component->MessageField == 7) + { + control_lite101_tag.Component->MessageField = 0; + missionLevel = 4; + } + + int missionId; + auto activeCount = control_middle_circle_tag.Component->Message(37, 0.0); + switch (activeCount) + { + case 1: + switch (missionLevel) + { + case 1: + missionId = 3; + break; + case 2: + missionId = 4; + break; + case 3: + missionId = 2; + break; + default: + missionId = 5; + break; + } + break; + case 2: + case 3: + switch (missionLevel) + { + case 1: + missionId = 9; + break; + case 2: + missionId = 11; + break; + case 3: + missionId = 10; + break; + default: + missionId = 16; + break; + } + break; + case 4: + case 5: + switch (missionLevel) + { + case 1: + missionId = 6; + break; + case 2: + missionId = 8; + break; + case 3: + missionId = 7; + break; + default: + missionId = 15; + break; + } + break; + case 6: + case 7: + switch (missionLevel) + { + case 1: + missionId = 12; + break; + case 2: + missionId = 13; + break; + case 3: + missionId = 14; + break; + default: + missionId = 17; + break; + } + break; + case 8: + case 9: + switch (missionLevel) + { + case 1: + missionId = 15; + break; + case 2: + missionId = 16; + break; + case 3: + missionId = 17; + break; + default: + missionId = 18; + break; + } + break; + default: + return; + } + control_lite56_tag.Component->MessageField = missionId; + control_lite56_tag.Component->Message(15, 2.0); + control_lite198_tag.Component->Message(4, 0.0); + MissionControl(67, caller); + return; + } + case 66: + control_lite198_tag.Component->Message(20, 0.0); + control_outer_circle_tag.Component->Message(34, 0.0); + control_ramp_tgt_lights_tag.Component->Message(20, 0.0); + control_lite56_tag.Component->MessageField = 0; + control_lite101_tag.Component->MessageField = 0; + control_l_trek_lights_tag.Component->Message(34, 0.0); + control_l_trek_lights_tag.Component->Message(20, 0.0); + control_r_trek_lights_tag.Component->Message(34, 0.0); + control_r_trek_lights_tag.Component->Message(20, 0.0); + control_goal_lights_tag.Component->Message(20, 0.0); + break; + case 67: + break; + default: + return; + } + + if (control_fuel_bargraph_tag.Component->Message(37, 0.0)) + { + if (light_on(&control_lite56_tag)) + { + auto missionText = pinball:: + get_rc_string(MissionRcArray[control_lite56_tag.Component->MessageField - 2], 1); + sprintf_s(Buffer, pinball::get_rc_string(106, 0), missionText); + control_mission_text_box_tag.Component->Display(Buffer, -1.0); + if (light_on(&control_lite318_tag)) + control_lite318_tag.Component->Message(20, 0.0); + if (light_on(&control_lite319_tag)) + control_lite319_tag.Component->Message(20, 0.0); + if (!light_on(&control_lite317_tag)) + { + control_lite317_tag.Component->Message(7, 0.0); + } + } + else + { + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(104, 0), -1.0); + if (light_on(&control_lite317_tag)) + control_lite317_tag.Component->Message(20, 0.0); + if (light_on(&control_lite318_tag)) + control_lite318_tag.Component->Message(20, 0.0); + if (!light_on(&control_lite319_tag)) + { + control_lite319_tag.Component->Message(7, 0.0); + } + } + } + else + { + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(105, 0), -1.0); + if (light_on(&control_lite317_tag)) + control_lite317_tag.Component->Message(20, 0.0); + if (light_on(&control_lite319_tag)) + control_lite319_tag.Component->Message(20, 0.0); + if (!light_on(&control_lite318_tag)) + { + control_lite318_tag.Component->Message(7, 0.0); + } + } } void control::SpaceRadiationController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code == 63) + { + if (control_target16_tag.Component == caller + || control_target17_tag.Component == caller + || control_target18_tag.Component == caller) + { + if (control_lite104_tag.Component->MessageField == 7) + { + control_lite104_tag.Component->MessageField = 15; + control_bsink_arrow_lights_tag.Component->Message(7, 0.0); + control_lite313_tag.Component->Message(20, 0.0); + MissionControl(67, caller); + AdvanceWormHoleDestination(1); + } + } + else if ((control_sink1_tag.Component == caller + || control_sink2_tag.Component == caller + || control_sink3_tag.Component == caller) + && control_lite104_tag.Component->MessageField == 15) + { + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(121, 0), 4.0); + int addedScore = SpecialAddScore(1000000); + sprintf_s(Buffer, pinball::get_rc_string(78, 0), addedScore); + if (!AddRankProgress(8)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave9_tag.Component->Play(); + } + } + } + else + { + if (code == 66) + { + control_lchute_tgt_lights_tag.Component->Message(20, 0.0); + control_lite104_tag.Component->MessageField = 0; + control_lite313_tag.Component->Message(7, 0.0); + } + else if (code == 67) + { + char* text; + if (control_lite104_tag.Component->MessageField == 15) + text = pinball::get_rc_string(120, 0); + else + text = pinball::get_rc_string(176, 0); + control_mission_text_box_tag.Component->Display(text, -1.0); + } + } } void control::StrayCometController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code == 63) + { + if (control_target19_tag.Component == caller + || control_target20_tag.Component == caller + || control_target21_tag.Component == caller) + { + if (control_lite107_tag.Component->MessageField == 7) + { + control_lite306_tag.Component->Message(20, 0.0); + control_lite304_tag.Component->Message(7, 0.0); + control_lite107_tag.Component->MessageField = 15; + MissionControl(67, caller); + } + } + else if (control_kickout2_tag.Component == caller && control_lite107_tag.Component->MessageField == 15) + { + control_lite304_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(119, 0), 4.0); + int addedScore = SpecialAddScore(1000000); + sprintf_s(Buffer, pinball::get_rc_string(78, 0), addedScore); + if (!AddRankProgress(8)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave9_tag.Component->Play(); + } + } + } + else + { + if (code == 66) + { + control_bpr_solotgt_lights_tag.Component->Message(20, 0.0); + control_lite107_tag.Component->MessageField = 0; + control_lite306_tag.Component->Message(7, 0.0); + } + else if (code == 67) + { + char* text; + if (control_lite107_tag.Component->MessageField == 15) + text = pinball::get_rc_string(118, 0); + else + text = pinball::get_rc_string(117, 0); + control_mission_text_box_tag.Component->Display(text, -1.0); + } + } } void control::TimeWarpController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code != 63) + { + if (code == 66) + { + control_lite56_tag.Component->MessageField = 25; + control_lite300_tag.Component->Message(7, 0.0); + control_lite322_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + sprintf_s(Buffer, pinball::get_rc_string(146, 0), control_lite56_tag.Component->MessageField); + control_mission_text_box_tag.Component->Display(Buffer, -1.0); + return; + } + if (control_rebo1_tag.Component == caller + || control_rebo2_tag.Component == caller + || control_rebo3_tag.Component == caller + || control_rebo4_tag.Component == caller) + { + control_lite56_tag.Component->MessageField = control_lite56_tag.Component->MessageField - 1; + if (control_lite56_tag.Component->MessageField) + { + MissionControl(67, caller); + } + else + { + control_lite300_tag.Component->Message(20, 0.0); + control_lite322_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = 24; + MissionControl(66, nullptr); + } + } } void control::TimeWarpPartTwoController(int code, TPinballComponent* caller) { + char Buffer[64]; + + if (code != 63) + { + if (code == 66) + { + control_lite55_tag.Component->Message(7, -1.0); + control_lite26_tag.Component->Message(7, -1.0); + control_lite304_tag.Component->Message(7, 0.0); + control_lite317_tag.Component->Message(7, 0.0); + } + else if (code != 67) + { + return; + } + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(147, 0), -1.0); + return; + } + if (control_kickout2_tag.Component == caller) + { + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(47, 0), 4.0); + if (control_middle_circle_tag.Component->Message(37, 0.0) > 1) + { + control_middle_circle_tag.Component->Message(33, 5.0); + int rank = control_middle_circle_tag.Component->Message(37, 0.0); + sprintf_s(Buffer, pinball::get_rc_string(174, 0), pinball::get_rc_string(RankRcArray[rank - 1], 1)); + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + } + } + else + { + if (control_ramp_tag.Component != caller) + return; + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(46, 0), 4.0); + if (control_middle_circle_tag.Component->Message(37, 0.0) < 9) + { + int rank = control_middle_circle_tag.Component->Message(37, 0.0); + control_middle_circle_tag.Component->Message(41, 5.0); + sprintf_s(Buffer, pinball::get_rc_string(173, 0), pinball::get_rc_string(RankRcArray[rank], 1)); + } + if (!AddRankProgress(12)) + { + control_mission_text_box_tag.Component->Display(Buffer, 8.0); + control_soundwave10_tag.Component->Play(); + } + } + SpecialAddScore(2000000); + control_lite55_tag.Component->Message(20, 0.0); + control_lite26_tag.Component->Message(20, 0.0); + control_lite304_tag.Component->Message(20, 0.0); + control_lite317_tag.Component->Message(20, 0.0); + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); } void control::UnselectMissionController(int code, TPinballComponent* caller) { + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); } void control::WaitingDeploymentController(int code, TPinballComponent* caller) { + switch (code) + { + case 63: + if (control_oneway4_tag.Component == caller || control_oneway10_tag.Component == caller) + { + control_lite198_tag.Component->MessageField = 1; + MissionControl(66, nullptr); + } + break; + case 66: + control_mission_text_box_tag.Component->Clear(); + waiting_deployment_flag = 0; + break; + case 67: + control_mission_text_box_tag.Component->Display(pinball::get_rc_string(50, 0), -1.0); + break; + default: + break; + } } diff --git a/SpaceCadetPinball/control.h b/SpaceCadetPinball/control.h index 06a3cb9..e00e237 100644 --- a/SpaceCadetPinball/control.h +++ b/SpaceCadetPinball/control.h @@ -65,8 +65,9 @@ public: static TPinballTable* TableG; static component_info score_components[88]; static component_tag_base* simple_components[142]; - static int table_unlimited_balls; - static int RankRcArray[9], MissionRcArray[17]; + static int table_unlimited_balls, waiting_deployment_flag; + static int RankRcArray[9], MissionRcArray[17], mission_select_scores[17]; + static component_tag_base *wormhole_tag_array1[3], *wormhole_tag_array2[3], *wormhole_tag_array3[3]; static void make_links(TPinballTable* table); static TPinballComponent* make_component_link(component_tag_base* tag); @@ -78,6 +79,8 @@ public: static void table_set_jackpot(); static void table_set_flag_lights(); static void table_set_multiball(); + static void table_bump_ball_sink_lock(); + static void table_set_replay(float value); static int cheat_bump_rank(); static bool light_on(component_tag* tag); static int SpecialAddScore(int score);