From eb53f7664b8b901f9712bf33c8fed483864741b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Tue, 7 Apr 2020 21:24:41 +0200 Subject: [PATCH] Update level --- assets/levelY.gif | Bin 3976 -> 4339 bytes main.c | 79 ++++++++++++++++++++++++---------------------- settings.h | 4 +-- 3 files changed, 43 insertions(+), 40 deletions(-) diff --git a/assets/levelY.gif b/assets/levelY.gif index 606fe3914ba6d287db1548b639f30f6f593c62db..31ecdff3f42203fbce13f6679715af725e9a266d 100644 GIT binary patch delta 3474 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 A*8l(j delta 3108 zcmV+<4BPYbA&4Kagadz2vufS?)B}L8V8erRc6zwMXUCP+qZ7j-h=yAA=j)@ zscN*k7wg@>TfLGU3;>+r!-iL(y>VFas>3(#DK<;@t=!5t>;mT7cduToem9FQB$)76 zaP?B7R*kteIJ02sUaqWpbKa_-r-mL4xU}i8t5XYC_ST*~y2gLszP=Y5?rgfX0pIp~ zbt>=8zJGrW&fP5lLuA4JyInr`Ib4GvM^E=#{W^B-V!0old*gd}0C8cHHD6aJM)lRP z*O`00!3Ugh;DB`xIQ5yvSX$+&MOJiwt!G_(1m2aMc8DeTm09+1Ko|%1NVuPgVxd}trS#3CDSq%R6pngYwh2DQZ26*9s zL~3PZlK{}CWMoV>N#R{U=B8JbR$@ukD&9GG16yVSpyEX=zUZQmWER<`SgROE<7CX4 z`6X9jVpykB9z1YFwybg{teQyxwWxpIfcxl%Si&IxAcNToTqdx#r62 zs9~ML!L+CN8Wylx2^*xVuNq6%C6F5O%@yP_`_(tkdeTonU!7vayVU~l?!5HYYlJ%0 zS8TDx>g1yFzF-}+(W;*X ztm&(y5iFLn-%V@dSm=)0@WT;LeDTZ`3KXabQFni+Cc= z(l0w4a~l-XOmoH?<9ravo{72Jpg@BqG|^xgjkJH#On+1H(@{%(vCY+R>|{b%hej;d zCI@Yr*hw!fPX5yXxC`%B>w*cD0=q;M{^1Iwlb``uA$P~-Yn+60;Vs0p1WQ_vKJNmaqo7x+aImO@(sO_ zO@Mog-op&Iz5}i=ehMrJ1D~?J3n4Fgo@#&1`YedS-VxA)?StX_5*WLjRpdyQfCB(@ zND;ePOFRCtN}&qh$HEpi&0!pjVFy2`F~o(CC{l@{6sIUBDq8W17wOax+s7*adQpSt zlVK8PXuTSG42!IiV#v_QMk#vWi*VEx^y2ui!nKKpZ$k(ha}&iiw(*Y@Q65-2MaX|z z^$spHv*V0_2fI9;5sQ2j79asxsId^TQ-)+3B4?&Z12M8~3Ixd>t?0)|vayoMGT0?9 zX()yr@-2yMUFBW}N;3}RBaKrdDUD}JEE;QagSmmijGn%695o7(UPZnj~InVEk`E~80BZcWpd1OsNf!h+3g!V(UhoRK%X3C=fJ zWSkcMB4^Le>Be+^1#hQlr$Dv&!+QEBBlwh(K7+*1C{_~y02OFE32H5a>M^01TIe$y zT9F2!ETR&1r(4YT!(*vXAPCN<4#s_z zA!$Lkh|-)wQ&TME=|y}>mMsc(Fsj^LDx)gFAr_T7NCfbRGz*xtP_N*3ZJ^2Q(4Pn2*v7c_{diKaTO$9rHhR?Al6RGrB6S!r|2?8 z9lnliqa1zdr{vn2r!L2?*erh-5XE`FK0a_jZEdM!D-)uBvX7X;e3=~&3md#$vkgXA z{#jYaa@Eh`hOw^l>tC0O8G8&yYIb}LTOj1xMZi|Jo4siL9)~{%S_QJ_94+|BVlg!h zS2AnT8=BCf%H-m7xxpggu%ZH8Q%X0kVyW(Lu6q{kLg-hVB_RaIOJ9Hd(T=O`48l!a zlUgRcv5sG18qaFAd0T>2h ziehvF9{kvV666qxR~*9{>+k?N*3IsAyZhbnj<>w$EpNPfpaMWhLm)O`3ub8J0!3Iu zB1FLpX_O-aM0kHgBU15;X_#XHF&Kgv=%9#7r~(5?U;`vr0Ss!SqXk?b1S114(m406na1W?F>C1}x%aL7a5^v=1?cdm1Lo1hAO(8MjAaSnPofCf}>Lm@H& zi(MR`13PGf8SdbRNhE*;M;HSh5WxvoFaQQiD8n8e(FuQ944?rPSb+|L5CtqyfCpKy zgCjtJi)6SU41yR1F}UFlec+tufDio6?Fj-Y)PWMQScW&)0Rkkb;Si+I1vJL-0Vc#j z60HcvHP9h}9B5$d``}MMyT#9v9)`vI=2gG^-5q_JY#;vdpTGVUE0z1>pOX5wf7sW4+V_8x zgnj{7ef(#D(UpMmSAXSKe*SQO6exl2H-Q+qeGz|%ffE>k5@>oReh=LrLgFCo_V8MbQ7=knSeJYZDf8>7#h=4;V zc=gACy`+RWXAeubego))4Oo38Fof)9g@ELLP&kEySA{-UfI#Sh_g8zjmwUU{d%qWa z!)Jd=68MGd)(c=*ZzHjREtrQN=znO4d%DMaz6X55cLpceB+XZc{?K=a7pQ|3h=ONm zdw#fvf#`;WI7xAch>562T-Zilh>7!d3U;W8E%kwUC|aIqd`;L;jtGO1b&5 ztJqL-C~s0Yf1ntCu(*kTREw^de7kr~NH~8*!-tr;N*pMa6i4 z;D?L>2#vgWMZV~a=zxvcNJZP|jNbT-Zp4jYD2n7LgXWlX4^wwUPqCS@TiNL_=A5K znSnQ`hkM9dnW0J^a0((BL~j%-9)L|AU>x><5%Wfn+z5dw82*E@XoLQDf1~9AASsfk zK$5z0lGl`y#=(*m8H$h8h%C5+8;OxNSr<7ulAThL-{6yr0F*09kwb`0sK}6RHIWaA ziP2|X@YKfmu)$Vj;S$_X^ehJg%>H7 zig}cFiGm*Rm}dEzp!rCMnyT52h&h(5Xq!%go2q|VnPupf zzUd~w=?Q)bn3N=#ubG>|$&rgWnmSk!y-=Np$Hrb6h+~n7@86`(S8xip+C_P7n-3WI-(E}5CA)59oY>4 diff --git a/main.c b/main.c index 1c37ad6..89f744e 100755 --- a/main.c +++ b/main.c @@ -1086,6 +1086,44 @@ RCL_Unit SFG_floorCollisionHeightAt(int16_t x, int16_t y) SFG_getItemCollisionMapBit(x,y) * RCL_UNITS_PER_SQUARE; } +void SFG_getPlayerWeaponInfo( + uint8_t *ammoType, uint8_t *projectileCount, uint8_t *canShoot) +{ + *ammoType = SFG_weaponAmmo(SFG_player.weapon); + + *projectileCount = SFG_GET_WEAPON_PROJECTILE_COUNT(SFG_player.weapon); + +#if SFG_INFINITE_AMMO + *canShoot = 1; +#else + *canShoot = + (*ammoType == SFG_AMMO_NONE || + SFG_player.ammo[*ammoType] >= *projectileCount); +#endif +} + +void SFG_playerRotateWeapon(uint8_t next) +{ + RCL_Unit initialWeapon = SFG_player.weapon; + RCL_Unit increment = next ? 1 : -1; + + while (1) + { + SFG_player.weapon = + RCL_wrap(SFG_player.weapon + increment,SFG_WEAPONS_TOTAL); + + if (SFG_player.weapon == initialWeapon) + break; + + uint8_t ammo, projectileCount, canShoot; + + SFG_getPlayerWeaponInfo(&ammo,&projectileCount,&canShoot); + + if (canShoot) + break; + } +} + void SFG_initPlayer() { RCL_initCamera(&SFG_player.camera); @@ -1118,6 +1156,9 @@ void SFG_initPlayer() SFG_player.weapon = 2; + SFG_playerRotateWeapon(1); // this chooses weapon with ammo available + SFG_playerRotateWeapon(0); + SFG_player.weaponCooldownStartFrame = SFG_game.frame; SFG_player.lastHurtFrame = SFG_game.frame; SFG_player.lastItemTakenFrame = SFG_game.frame; @@ -1439,44 +1480,6 @@ void SFG_init() #endif } -void SFG_getPlayerWeaponInfo( - uint8_t *ammoType, uint8_t *projectileCount, uint8_t *canShoot) -{ - *ammoType = SFG_weaponAmmo(SFG_player.weapon); - - *projectileCount = SFG_GET_WEAPON_PROJECTILE_COUNT(SFG_player.weapon); - -#if SFG_INFINITE_AMMO - *canShoot = 1; -#else - *canShoot = - (*ammoType == SFG_AMMO_NONE || - SFG_player.ammo[*ammoType] >= *projectileCount); -#endif -} - -void SFG_playerRotateWeapon(uint8_t next) -{ - RCL_Unit initialWeapon = SFG_player.weapon; - RCL_Unit increment = next ? 1 : -1; - - while (1) - { - SFG_player.weapon = - RCL_wrap(SFG_player.weapon + increment,SFG_WEAPONS_TOTAL); - - if (SFG_player.weapon == initialWeapon) - break; - - uint8_t ammo, projectileCount, canShoot; - - SFG_getPlayerWeaponInfo(&ammo,&projectileCount,&canShoot); - - if (canShoot) - break; - } -} - /** Adds new projectile to the current level, return 1 if added, 0 if not (max count reached). diff --git a/settings.h b/settings.h index 6a78749..3a7e5e5 100644 --- a/settings.h +++ b/settings.h @@ -204,12 +204,12 @@ /** Developer cheat for having infinite ammo in all weapons. */ -#define SFG_INFINITE_AMMO 1 +#define SFG_INFINITE_AMMO 0 /** Developer cheat for immortality. */ -#define SFG_IMMORTAL 1 +#define SFG_IMMORTAL 0 /** Turn on for previes mode for map editing (flying, noclip, fast movement etc.).