From 29eac6b69d0813ef901232d8bc4528e1af09e8c2 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sun, 21 Mar 2021 21:30:44 +0000 Subject: [PATCH] Weapon targeting --- !RunImage,ff8 | Bin 12328 -> 12896 bytes Spr,ff9 | Bin 92132 -> 95668 bytes c/CTheEscape | 65 ++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/!RunImage,ff8 b/!RunImage,ff8 index 75d3fa3b884344bd622b7f82041d57b0a60c785f..5f0b5b4d0830f9cd82a4c11ac51c6e14f63f8569 100644 GIT binary patch delta 3680 zcmZ8k4RBP|6+Z7}H@n&FhPT;dlO;d9l8}THlNCWD3T%kdnji#?OpyWs!;e)7#`psx zWH$tiGi2C!la$VYc~+=Vk!B%8%Z~+wsZiPiLxpOrZ};^ousGH-?bL{--`(tL#+^C2 z=jS`;o_p`P=f3pSYYi?UH7v+V6dkls)K2u}WiL^Cr>mvl={1k7Th`pPx|xU?o@rX! zxJ+oKQ0(uhq4Twl`wLR(F!@y7K&n15g`%Ijw?`!Kw}Kx6FM}@y|99|7;ETb32wva| z!Pf|R-1f-F>?_HUG9S`8NEg|8$zl5$qz`@fu=WRcR<4+?TFc}kcQ#k1x--c zZ3bv+;L!n1yTI6Qnkl*z7^$W$vIW`}for(|Z4)w2p4%2#5ACz?Baa%!s>3z2R6R*i z^=rU93tQulYzEkL*rvnZ1pl?btQv#K@M1P#J_6?B_{yKG0Xh#*{sXGM z6o7|gshx&qDniRhcpp+h4NTP-Og=DT`gee7i(~EsX8IURBF;Ww z2IH7Jfx+>#e7_F@Bm(UL=t>+^4p7OMKn=i%z1j)PMA&ZmkxlGXH*7_)xyn@Cn5XK0 zH6eLa^JmcCDe&agmA=I(%c1+yoI%kQr0SxOgh4Y?PFV^YH1x>17Bx7Ny(cfAA37F$FlPv(NKu! zazDF}Tq^amZ<7o1OOVPDhN7K}+mXC(6DqPKA&8-i`83>1hILN1it z*n?nfk(pS(7qS`hN%mAqjk5;PrP?hKBR#C|9T_?FueTOo-8;Z8q?Fk%nn%0Mz@u(H z#B7$k<*H;>ZMj1lU;#^(w1NHFQY?MJj$5))>h}}*Q6B9qY`I-(V410lQ%TYEsfwRh zC@O1Ay|w6P1Q z#lmfIgpe=9CasKEZH4VROkzI-EW|p~8l_GqjjPJ^i`=pOH`lm%*E6VB zsRt7*8ut$FkXu$DaO_E?$~F;x+uGeIpB+5Njw(5>O9sr~ z?dE?#ANZ_X)p5YOloN>jmVKoZyZ#ur?uRuz#@fSfv%96=vjz4nV>>Wb_AO$)6-Vy` z`qCKm2KFk@yV!A{p8zI9pr>t*qhAF2&tuR_q0dHs;)G^5(VkV!ew^5sBaIq8V zbEMZL6!m#JFDx{Mvl;xgy zxt~b1-qp*WT)AxB6U*1HY+Ba5ylM5y=BJl6KlbS3gkLT@Zg#X(8|koe?tzF8S;|U~ zS7xi>BHZ`c*#WK88{}0LC|Hjger?uf?R{@RGb

g@nFpc%l6-XNE#;n|=f_)GAw z%x=|66Z-amHr%4>!;M%sk`;YN6nh0m^q3Y+%SQ#L<7Rp~zYmllHrK3%edbn8_IC0l zBq0)U9_!@R57hA7ip^R!Ha;<#nH~z~5`AR$RcTVtuf5Uxl6E>MzUX%G6!K}07=L)J zjM!j1WKwpaY1h?;)8J@`14U~?$NtDfbz#FgH8h!e4^FLB51Pl=lc_Fbs8>S@Y!$F2 zdi0;-H8m7s7qY5dsaT|DM?v4x$t~X2h^X1?Vcc#uExX*6N(*%(o(L<(*b`B|HDajW z#;t5)_T%h&cE9|K)$A3QQ_g;l4Z5bJ?tVyIjc#5z+s$scZjp_7%sIYDN@g?0&zI)2 zj`78k5quUqJHEs*`VJD+tX%(SW5deno{5jK)SO9`ZUY@QVEGedicVH~v3z`#f=@x^ zin=QXp9)^oWg++^@B&Y3a;|!0x;Dg~$*HNlnM8-@;hMjXYc4)K)=L!CYVndO-F(OW zI809$u6sA%2R(VaxcDk+_22_$a%-dp_>D};b+kMmx6Xof&KPS`Tz?PrXE1~CcoI4T zBE}+PmM+L`4Q`&{>ETBfx$$bN;oFhxHCzJ0CuaK$z9NGqzzcmY@RNYkl8CWf`;t27 zt)35K{vPNr#r+fcB>by^8y<%b2xX8T0tWXtEaExfb0+R1a!ugZVZUZDDR1%gZtPY2 zHzU!tBO}qJ82>#y68#!uAH2L-I8y0VPJN57-UHs47r@SUUXeUL?PMnF$y@R8TDTAV zRKU8>6x;Y_xcQ{rd@d4N0QxV&z5Crr^b*2< z^PpT3I*^1(q6M*63_bjIm6ZIp6Uu7ps zTBU*m_f2|8nqz&N=qza95Yf4#L^9?OvOo$s`!vxAet!R`P9!08iJy?`_aFF2>Hehr z>u=(pH_$ea_=z~@Ko>!m-)5cV3z?x@nb7YiIs!Ti8UkGh-2_v8T$P nW5>$O>`J-f-MI%}n4sODKG0rJKWG5-F6ap880aME1JM5g@Fuq} delta 3200 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 NPCS[i].explodenextframe) { if((NPCS[i].sprite >= explode_shp1) && (NPCS[i].sprite <= explode_shp4)) @@ -342,6 +351,8 @@ void game_setup_player() Player.phaser1.Y = 75; Player.phaser2.X = 41; Player.phaser2.Y = 75; + Player.targetleft = -1; + Player.targetright = -1; } @@ -565,6 +576,7 @@ void game_collider_tick() ) ) { + sound_play(2,-5, 20,1); Projectiles[i].active = 0; Player.shields -= Projectiles[i].damage; if(Player.shields < 0) @@ -576,6 +588,54 @@ void game_collider_tick() } } +void game_player_targets_tick() +{ + int i; + int NoseX = Player.location.X + Player.hitbox_bl.X + (Player.hitbox_tr.X/2); + int NoseXLeft = Player.location.X + Player.hitbox_bl.X; + int NoseXRight = Player.location.X + Player.hitbox_bl.X + Player.hitbox_tr.X; + int NoseY = Player.location.Y + + Player.hitbox_bl.Y + Player.hitbox_tr.Y; + int LeftDistance = 1000; + int RightDistance = 1000; + int LeftCornerX, LeftCornerY, RightCornerX,DistanceX,DistanceY; + Player.targetleft = -1; + Player.targetright = -1; + + for(i = 0; i < MAX_NPCS; i++) + { + LeftCornerX = NPCS[i].location.X + NPCS[i].hitbox_bl.X; + LeftCornerY = NPCS[i].location.Y + NPCS[i].hitbox_bl.Y; + RightCornerX = NPCS[i].location.X + NPCS[i].hitbox_tr.X; + + if(LeftCornerY > NoseY) + { + DistanceY = LeftCornerY - NoseY; + DistanceX = abs(NoseX - ((LeftCornerX + RightCornerX) / 2)); + + if((DistanceY/5) > DistanceX) + { + if((NoseXRight - ((LeftCornerX + RightCornerX) / 2)) > 0) + { + if(DistanceY < LeftDistance) + { + LeftDistance = DistanceY; + Player.targetleft = i; + } + } + if((NoseXLeft - ((LeftCornerX + RightCornerX) / 2)) < 0) + { + if(DistanceY < RightDistance) + { + RightDistance = DistanceY; + Player.targetright = i; + } + } + } + } + } + +} + int game_hitbox_collide(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { if((x1 + w1) >= x2) @@ -756,6 +816,7 @@ void game_tick() game_tick_npcs(); game_collider_tick(); game_projectiles_tick(); + game_player_targets_tick(); game_draw_stars(); game_draw_player();