From 4facb99fdab4457f3eda5af0ee77caa17c919ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Sun, 9 Aug 2020 13:09:21 +0200 Subject: [PATCH] Fix HUD card bug --- assets/levelE.gif | Bin 3801 -> 4556 bytes main.c | 42 ++++++++++++++++++++---------------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/assets/levelE.gif b/assets/levelE.gif index 8d0e487bd727e6984cc724bd2b2683814f499840..98a5bb46624633cf44415ae06593396024af36af 100644 GIT binary patch delta 3687 zcmV-t4w&)T9n2%Ji35L?tFEtL!-^dX7N6O(XwNFFS~V)$w{S0ZjROEcoUT|g>5aqp zmo5{40sjq5xG>>$h!ZPDjBjmRr*0ohc6ya7CUD>YVEToLZ{5$J`Re*a`jfT4pi`>` zu(SC@Nr!;9-CIDbr&b)uQbJvSuBdk4}dhOec z7`fpJ0JvSPbU*%MGX4oQmfotNE0#VGq;=ZX<5ot+=$D%#N3?SAN_KEy^8gqopn8e1 z=Mq!0!580K^J$e|R`_i-8hPb?lOV8y|H+8yD> zc3DkGVQCmD7a)I!WqAmqPCP+1Vu_F4_6v$CqJm0R*~J*nk}$x)p$UFOxfzbSc!`AwtDvTYP^qh}EBf`m*ARgbtbFp=Ywf z3Y&nmy5yVwQEph57b?_h>#exrYL7u$LbfSYdv;n8R)Cs1DhDYRi)uK_EW@g+h(Z~w zF0>8ViccK9*Zj(ZL0(=^w2~PU0HVKii+^Lhc-H4 zv&)bM;D*$CA&Skp=B)8S;`$q|mvI4I^w>mS^}g2Dopzmjy?YPV-KRFsmhAf zFazew{>&9;y)Cy}b5xVBUi-yC*I(=T^XU{Vu6W}Q5*w;7f~=p8 zy5WCeEB}w{WM4HZSJHg?OQ~+dE%)V3!q9tw63=`ytrk~|t?>lW<`(Mkt-t!F(2rf& zik#I|Xm<6L+U~0}PW`*z`O2Ek5Td@>EU!B50~zb!7r(M)1pqkkO=ggEJ^eL{6^AH; zlT5?A(g22Y)DmB=hL<(;4Wwu5JKzEl2r_@fMWulb)Jkx^^NTNVz;R9(zsO_tzM{h!{c#0>RLvl@m90Z2l6`Arqza+P#wgOU zGBd2p3^$WWJ#LYUpYY-zKGn1(T7(TwWtr={$d8D)TDAdFE%r!vSdyW-J`MX5O;d%Q9lko74V5 zq%akUN>%bRT;nXJ(w_J#qwzqZ8XSbD zqjkZ-FCzF49GLW^m$^rGPI?a<+z}HIL=SqdQqTu#MWI<~DAn9Vn(loMkfwhKswnLt z3VRgM3q&>H;Mk%-VS$986T}K8d4q|tIFzTkRMSsE8JM94!k$Cy)>kvdDW?W$qz26k zEoFJjuV6KEKlO*o1OUpo>E##P3~Q|p**vq#N2-XPfat(~eCIb`3l0Aik>E$?{+h)ulMZ3Ck+ zc$oOP6y7UYllRD9HL}I~Y${cPD;$yjqA9v~uuOXcL{~g`v8u5rh1aV(7{8H;#3b;7 zf=d^0h?F9Ap$Ky`nW-*iO-uT?6$>7+`{y#wTj~v5n z$Ew+oeF3rM&s;1JqCjtjrvo-(in*WQWO0Ef)8XM@WzC?_7%DMqtu{8^{Kxy=aspd7_fhaH6Q>0h*-lqz#2|r zrd8R`a(+$5!-}O|Y%FR3w0WLXqLQs+{TY2U`!mEKokf<2WI*#8mH#Xtp`qHHVLuts zibi&S82uk&P~+U^CdRYt;_SLan@1NBr?uxzZzc}3rgs!+Zj2r75gP`?0@8)K2S9LY zsGHsE2Ee-sNbi4!JG__!4UT1Bs+ZmPC2z-{cf9a}1pVro<`U646Vr7f{o*5jr#6Bbn4pf`6lH%m1u-Vdc3aQ7F13y|$+1p% zt*0Eb@m*(N!45>h2u2$d{meuGZ{E60^y8}eIO6ACcdQfLq!M%{XfQ+SEdPBq+E@+Z zQ=@p$Fuw6Yf4pj(N&5QroiMt{ylPa>dGvJtGoJ^&$t^oS{y6+)9pEPx@+W`v2YaM*f3tUY zma%?nr3;;b1(6~au0{>6R)Ex(B^A+8AC(%cWm11>c2XdiQY+O=EyY?eWq|-dMR;K* z3pN(6_JSyAe$uuSG+2W+NDvSdSm2Nw9N;31z&6q_4kmyFeo!9P@ER~s28X~3%kVaG z^#y=XUfKW;`am&wMhw~D4*5U=VL%9{U<}?65B;zKOE3qL01L=)4eam%>ClF5_=a#8 zhjM>7hjdtnbSP~V5Cm!<2%K;W&9Ds@U<7QS2&2#o(_jw%8Bhdp;0US!4AgKA3m^kT zFa~w72$rx47@!1g5DBdi4Ar0xF3<&qkP64Z4f4PbB0vRukO{T`4dp-&B@hLAa0#{G z4B{{kY-oqNxQo2Fi_&%iR?r8VfD6xn4)uTF05wnrZ(sX21uK;0d!Z01aRPEU*JYAO%@K0X?7vckl?IkPFK20%9-- zq)-gq@DBTsi@g|-0?CU376MaX2bCZT%f)25Ddb z5HJEa00d9K1!w?}19_B4`G(T=UO-}$N%@olxnfLd8&Fx5QOP5v17%Yw8BS@HUO9)n zawi&*Xj=&;UwM{yXkkm08fD2KX!(DZaJXXp)|ROSmv)&BxYiVNNtZKrm+8O=Xt^(0 zxn_J>mwp+T@Frk|X_$xkl_3&kQAU`ONtRG%Y?euwkU5!<8JUr3B8_>LyTugzHkz3U zZZu(;mx-F2X_}q6mwkDb*>RUk$(pGNZizOUT6vqfshXH+nv7|cfa#ZlshEFn;hOK& zm7kfEQn{F~nVeNQoXi;{&S{ll$y?E>mmo2n&;E&(EK!=1iJ6bs-bnrq3hY3omnCwDxzRXq154_ z2x?|3dX;=up`IC|y-1>uVVq8(qg-jDH_D=tL4PnRp+_)~I2so`YN12wqq=ycG@7DJ z+J;VAp->v7Q+l0M%A{8somuLmTgseWYNKDem|+^DV_KMH>I-xjoWg$zq%?Y=Udg6* zd8T|>rm)$I+90KF`lbOYp>j%)d-|q!Dx&^$3MNOqRJPfiW#OFrFMV#nEz>@q*#yXd{iLVVCB@Zhf zNr?s~0G9>Zs3U=~k{YS%daTCw0S*hdukpH}fodJ_CbKUKv+3HZFB&AU=dv|Rvho?O zzR8t4yRSX#v-5hf?W(hN(XnP(w0b(DPBpXCF{m0^u?hR3_nNaG04PlBmQIV8CEKp9 zs-&&iCtS<3yf|O723xYl>aCJ_ph>&6DAKjR*|PwfS^`V6cKHu)dAD0hwGw)Rf;+f` zTeyYm9)iOXVyU=;V-kk@xH3@@D)IsdlCTw F06WMW{IUQ5 delta 2926 zcmV-!3z789BiS9Wi35MN>sDQ0!-^dn7N6O(XwNFFS~V)$w{S0dotqVt-8gu$n%KKn z7vH~t0k0cOxbR?nYvVd~tGKb#t8}qq!V93XWy^U1`@PJ$GXTS&*C8J1m?GoSr6K>i z_wOFp%izHMvRgTJ-H4xcXApQ#LFizFl|Xx}&0tj@TfPkWz(bo>$#7 zD4Bn@w+DWZi-L6Yw*GDUbW$Q6b}0*D)w@v3%;yW%rA)H{tLjZ`IS5HicKLbGQwAB znAMnW^cmU2pB&=y#o*Gaab*W}WTa`jMhh}cBln!}F9M$2r!V6a-66hZBn`8HGSAF0 zR5<4>ZNWZQo$ghCawW~4zXW>kCoqJ)w7)acoX~%1Zsn}Am*`quHDnjgRvDVho#(a0 z_~t!!{>J|*gm%;)N0s(J;<^2HRsi4tfNf3MefL*-=e<|VWt)xAz-gJOzZMe^> zNp{=TOd8#xHIaWZIn$MIe0H>%OU?P0HHG|8v5*a#7BoQl$Gh+`~rmtmGk}sG1B0*4u$V9>= zba=r5ZE$$3LPhdhOtT~=pB2V)5zLiMQO*8jIT`-dC{{R%qb^mcrMN(7ll=L>J#;rk z$uzQu$m~?imN~~mnrdyE17VTu7U%?J=R=QI8^o4kIR36}HH#_FZ^NfoF$2HdoB4!;3EHHodrk7&) z&=^AVj)*H~LBVxUgUXSeF=dPlWye8II&!BxjTt^Y^gbbZB!1j8o>(!bNmX)FYtXAw| zpvxu}wU$xsYX90=(AGt9C2XWJF^gNv9b~ti?d{dF0$khNrhI8_8NA>HycM?adoi40 z`EI4K8}4u%{IU)TBiMx`{;!ESEZgVkVlr6h(Nl{%M9vgZJH%{a1f59a@Ivo*Y27hy zUAUAcJNd~4NgQ;+!5V)KXowLIlg2nqfCWFm(Hf$GK^YFgie-eu9{yOt{ucmYieYF2 z9{Ny$7Xl#)Vr0V|`5-|U2yqHycq1PD*uWCzAPHC?;~MPvKspx9=tevG(U6X`q$e$D zFn*u{K~RGrIB|<+Y~un(V1pt?(Ti!ABLhW%gCkS{3~HQX0WyCe!WinX2urL214?K^ zBw7)SYN*2nT_{8Fi@IwSt*h4040gZCdqXbdV!zF6r3~|gu(Ui`%wzsWqOP|0B zeb@vpo`H^fIG_eqc!MD{5er@%zymyR!Wr=J2TCNM1xO%69um=sS1=$3OfUlT$YBz$5C%5VApsq1fewuT1uc>x00c|`1vBu$5Uvma0w~}C z8b|>Ra!`N>e82`jfC3oOU;qe=;08c=0vFKmagm$-?2Ui6v^aZ(_O_#)Tx&;8+1*a} zZVQPcGyy=|Q&ac8+kKT=(uigDen-C>zS7Oi4`&EZp2Iud(Qwy0;~W3@%C|G`lc#*; z8FBbV;a%{Ve`Vz@@6}$0zCWXXe1j^JN{UGS^{f}X-e-Tw*3&+fvyXl3C6s!{XObze zcRlN2Ur2x3*ZwlLC%)@NZ}{bmUhSX)}l#x<`F1vVb}GcbUW@+ZTO57=-y3Q^?VSMHo#; zXm&eDgOBlqA{T{sMA!mhfQ7hvCgj@(|UigLM=Y(T8a!M$LR*{BkC{%1H z6=HwrhKyE*Y&eH>m=1O*g?LDZdq{(Q=!Snte}R~WgZO^_g_v#M2Yzc9hcuChir9OH zIC<$}gWe~JjmUTv`gP+0SH z4M@IUQH!^@9Jv@HyoeXRcp<{*NBafmx<9-ilO*~5Xg$fD181m6(8U- zhai56#Ey>!f%bTUpy!SFsE_=pdH%R)^LURDn0(py7zP<3@rZ<@*dHAghGw^jAvk}J z*yoBq=#g0X0dI1U%m;Fu=X@KPiu_lE)3=fWc@ZNi!I24>b|WZz{HwEk~>0@ z>nCz(kb@ODDHkbsGg*fXFsmQKlS8X1FS`Hf52jZLVQ6vCF> zca`oKhGDsdURjuNIF>>QWsdonkQtef2_AUI5`kx#xMC8LxtTIi5i8-Dj|iHU*-xBV YnkRuGO!1ki`4cu{ny&epG7%5}J2NqsJpcdz diff --git a/main.c b/main.c index 69f0471..e3df711 100755 --- a/main.c +++ b/main.c @@ -297,6 +297,7 @@ struct uint8_t soundSettings; /**< Sound settings: LSB says whether SFX is on, second LSB says whether music is on. */ + uint8_t blink; ///< Says whether blinkg is currently on or off. } SFG_game; /** @@ -457,11 +458,6 @@ uint8_t SFG_random() return SFG_game.currentRandom; } -static inline int8_t SFG_blinkOn() -{ - return (SFG_game.frame / SFG_BLINK_PERIOD_FRAMES) % 2; -} - void SFG_playGameSound(uint8_t soundIndex, uint8_t volume) { if (!(SFG_game.soundSettings & 0x01)) @@ -2389,8 +2385,8 @@ void SFG_updateLevel() reasons we only check a few doors and move to others in the next frame. */ - if (SFG_currentLevel.checkedDoorIndex == 0) - SFG_player.cards &= 0x07; // stop HUD card blinking each cycle +// if (SFG_currentLevel.checkedDoorIndex == 0) +// SFG_player.cards &= 0x07; // stop HUD card blinking each cycle for (uint16_t i = 0; i < RCL_min(SFG_ELEMENT_DISTANCES_CHECKED_PER_FRAME, @@ -2403,6 +2399,14 @@ void SFG_updateLevel() uint8_t upDownState = door->state & SFG_DOOR_UP_DOWN_MASK; uint8_t newUpDownState = 0; + + uint8_t lock = SFG_DOOR_LOCK(door->state); + + if (lock != 0) + { + lock = 1 << (lock + 2); + SFG_player.cards &= ~lock; // stop HUD blinking + } if ( // player near door? (door->coords[0] >= (SFG_player.squarePosition[0] - 1)) && @@ -2410,20 +2414,16 @@ void SFG_updateLevel() (door->coords[1] >= (SFG_player.squarePosition[1] - 1)) && (door->coords[1] <= (SFG_player.squarePosition[1] + 1))) { - uint8_t lock = SFG_DOOR_LOCK(door->state); - if (lock == 0) { newUpDownState = SFG_DOOR_UP_DOWN_MASK; } else { - lock = 1 << (lock - 1); - - if (lock & SFG_player.cards) // has the card? + if ((lock >> 3) & SFG_player.cards) // player has the card? newUpDownState = SFG_DOOR_UP_DOWN_MASK; else - SFG_player.cards |= lock << 3; // make card blink on HUD + SFG_player.cards |= lock; // make card blink on HUD } } @@ -3260,6 +3260,8 @@ void SFG_gameStepMenu() void SFG_gameStep() { SFG_game.soundsPlayedThisFrame = 0; + + SFG_game.blink = (SFG_game.frame / SFG_BLINK_PERIOD_FRAMES) % 2; for (uint8_t i = 0; i < SFG_KEY_COUNT; ++i) if (!SFG_keyPressed(i)) @@ -3375,7 +3377,7 @@ void SFG_drawMap() uint16_t x; uint16_t y = topLeftY; - uint8_t playerColor = SFG_blinkOn() ? 93 : 111; + uint8_t playerColor = SFG_game.blink ? 93 : 111; for (int16_t j = 0; j < maxJ; ++j) { @@ -3698,8 +3700,6 @@ void SFG_drawMenu() uint8_t i = 0; - uint8_t blink = SFG_blinkOn(); - while (1) { uint8_t item = SFG_getMenuItem(i); @@ -3728,7 +3728,7 @@ void SFG_drawMenu() SFG_drawText(text,drawX,y,SFG_FONT_SIZE_MEDIUM,textColor,0,0); if ((item == SFG_MENU_ITEM_PLAY || item == SFG_MENU_ITEM_SOUND) && - ((i != SFG_game.selectedMenuItem) || blink)) + ((i != SFG_game.selectedMenuItem) || SFG_game.blink)) { uint32_t x = drawX + SFG_characterSize(SFG_FONT_SIZE_MEDIUM) * (textLen + 1); @@ -3756,7 +3756,7 @@ void SFG_drawMenu() - SFG_FONT_SIZE_SMALL * SFG_FONT_CHARACTER_SIZE,SFG_FONT_SIZE_SMALL,4,0,0); #if SFG_OS_IS_MALWARE - if (blink) + if (SFG_game.blink) SFG_drawText(SFG_MALWARE_WARNING,SFG_HUD_MARGIN,SFG_HUD_MARGIN, SFG_FONT_SIZE_MEDIUM,95,0,0); #endif @@ -4060,12 +4060,10 @@ void SFG_draw() SFG_FONT_SIZE_MEDIUM, 4); - uint8_t blink = SFG_blinkOn(); - for (uint8_t i = 0; i < 3; ++i) // access cards if ( - ((SFG_player.cards >> i) | ((SFG_player.cards >> (i + 3)) & blink)) - & 0x01) + ((SFG_player.cards >> i) | ((SFG_player.cards >> (i + 3)) + & SFG_game.blink)) & 0x01) SFG_fillRectangle( SFG_HUD_MARGIN + (SFG_FONT_CHARACTER_SIZE + 1) * SFG_FONT_SIZE_MEDIUM * (5 + i),