From 069abba3795b712a2f783d982b20d736cb0b9003 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sun, 11 Apr 2021 21:38:02 +0100 Subject: [PATCH] Simple wall collides --- !TheEsc/!RunImage,ff8 | Bin 20016 -> 20440 bytes !TheEsc/c/Mission2 | 53 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index 8d7c182f301e0a3829a7b086d311b31e946af0e5..97e2ec9fb86e336edc19a6e12652301fd561418e 100644 GIT binary patch delta 3207 zcmai0dvKK16+idx`^!GQeT2MVHzahEY?3uBm3ZH(9GQ{llF(d+zU^ zd(U_7dENWoPS&@JGQiLGL6UvZ6=rjgybEVx^{l*IRME#-ovGmj-h*d0cPBJsLMJvEms`m$pxa zfu0CHti4-%oQ5YN_zn#Z(vS}RrPj^PV~(znb1UAhYvoZA>$+GsPS#K7Gi2PVFJP`-g7uP{GZ|Z@0v5rSr7U(F{~+b%bd%IbYrC^t3P6X_QzUpOaR@I-Q>48l zO?%Uu;bT3xB%_dR!Ojeq;Us-TEc_bxWt6g~@Ipo@@9Raa(UaRkyBwokiVB{)mOYaA zpv!kDi!C_K=;O03_>6HQzY;;o^ei`9aFfX^m0RF&E_u7gf*+fv<$FoH{_IO}<`2dL za9?5|mAWW`Q9^8PoTe}{uzbN>g2WN@EPmfj9oyJ{VA?8<3_uu=C(=r z=_Q53s5r=PC|n*HXAp>vCsja>F;JzxE!I$Cs|o*JjQvCNV*PIX+Wv`@eGcIBGXV6Z zQw|SbYzlwlDA1VmX{w?Zpn<6GZ|Kf-bAvHFGq;Pe-Kga4V86wV;dA-UGk9_MRbG~X zM@P(d&dH!^AaX!QTn#EO7D0nho&-ar;=GZeA4?2yBz-3TgXH>oE09n5vNuZvQB)Y;@75kwL?Kukv;9W zzv5Be&>MD-_A;*1;sZXP*-i`YnL4Cg)`q)$->IlTUalNtR%N)^63v4F9QXs9k)|0Ug7&2lg zK0(-##sh?>yMl3N8eb)x;|#`&(>PA}X_EWW_%h)x!c}Q}k?^~O>(lr=VIS>p9Kt;D zDekYfYa<*6#{L~oRTr?|;lHZy_?4at%0MI$We`=#p@dQHQA{-U(b!C53)cAU>kpB} zX42M7)~85vknoA0;RA#X)bcj{kV@JpAS^o+t09uJG(j{G+^I{a(X*a^1q%GENoV zM7K1RSi=@_v_F*SZ0n3_)^3RE+NdXVbVi#iLJ47H&>D=YZ5>f&4aIcSwJcEHZ-(uI z#z^w^{~74NYf03Yzg^+Qp_o1`7sl2WH${2(cExxi6l=&{)e(gsfj$uZ_={9hriL$W zUkN~}qeli%uLv9oM1j8;?Y5F}tRwmYwN5orGn`cdASYN8wR5^8B)TL%OQjC6M#=}c zKXIDIRQa(Re_YT{x8FN{57iwUzOP0k(>6u)JwJ6R4RKCbo5nig;~4+Gk3iWwvyCO(xZcV?Zn##FN%tUj*g=iK}+vs z#I=NZ8mox^l1)$0mx{j<7f(fk0!bd~qUwA_Vc?Gj zm-YYqqUwCn)+o8aj|*x?%+~|F9i%-#_KViSh|B4-$?3CMiI=3$M(#EI(%D1^sDtgP zEf^PIa9DqKM%*!l!azA)MUO?%WRTukq9fdMGnM>)l1q_ECURXkU8K%dWRr@xoQa-E z-kjxET#6CiRP^$jgNsDIne*RNBy5{h$a}A2*CbzN-&mm;2N&o86@PX|)QFcRWtjv5 z(&^VfOEau4uXf+{pK?zGt18o_IJO+2BzZ&01i?eGVZ`ewVX}z()gp<0%FViAxTwxI zqK{Ix(zW@mJ6)R(G}D1}Zm}EwOSu!?5;)Kx@x-4uFP5=uw?`ss@1KIZA0SkRx%xRx9ekSn>`oejQ`BZIp00! zo}7E`IrrYLo7m|?EET}tBgg;{S#N=e1>j-#41mhU)Gu;>vOvpN4w1Ks#t^M1dYvf6 z)1*|uUd5dNk$J>j#9xQc6nRDZgHZ|4+uea_%&J#t`bKC{99Y2S7M92m0dR$1M57WT z{*?HBu#uw%MN1ASiZC=Ue9-L$uy+E?tyv30i5IV~UJvvQ>%?2k$SR;zU+j5kuh6s z_D+0LJ6XGk#G##dio`M!Y2p9TI@l^qjmzW*WSksV&GSedw~sBrsk#~bo*CcQWiT!N zRhQ2@%=kp-unQ@NZ!B3cRv);;&n(-sOlV399RlSq##OL}E`fX;2BvJ~s zct%RpZZt#h_)aXA9DKhStECK9g^f}&TZG4@^wb5UHIVJaWSas|tF&eb?hnt#Z=@0_ zpR}=TI^*4JAuf*3WLa1jZ_`)Op9sTU_-XtImVme8M{w6Q)EctWUYMXaX^c%#!5_X) z8A7}-H6HYg{`2!QaW7x?(ohTXK<$p5a9-~ugH9<=nW&3Lr{?j1C5yW3FO+gQn+?EC@@W385l_et9yQ{1dAdkoKbymsqBA7j2!z%5NJ3*DRA6t3hMp7XFbDcP3^R z)YBAz-3o`HA&?I%Tpki);0=B$#wjs+>eK=uQ(>zKPZqMLe_Yt-;{Osmq?#K5)4HhF zI`L{!Hh*FWJW0yXn0`;qw2OwDh3Yyw(j43$A1F`T$5<{Z=?7UN)(%?0pLOD$LHGF; z2`>+xW9^k7a+oLyYC~#hRqm54BGDN9;gb@&tvUQPs#8ueq*|J9Mpz&OxtMrFig+Hu<+2N#0-_4{7U)#tEpRz4BuZl{r2)k@! z*=l6=OtzeUlQGY}-Z&*@p(P6){=;6+gL*6%z6e?uflFAMW6{;sS3E z*K#%ww~qLbIdQQ(D~Ye1~laJa=X?u^m=dHXDMau1q!vSGmR+i^))Inu_9y$1|>V zytymj7~^F8hz94o-Nq9dh)gT(cm4@}nUfs&v-_TkdZaODtm&YdD!Z&-xnCW)p7SkZ zad>9@f&q_J(9%AOH1b{r^n!a84Gy007Ogk1bApMPmZGj zM2o4D=8B9~Ps-s}IUbwjHr=AjX``n<)Ehi-e^LfxYfzt`we3C9RLQ=O1a%?F?hn@y zZYP`+!?lEG*nA;t3~wczYW0PN#qcJ=TS@PZ;SGfM5zdR@HH7~{xHyJa5q8u3ihj() zEAdQzqPB`d@2;D8H9v!m#~<=X|4Q_fhDb{kN0cX10m`k4o@6)463Ovc;7NRAHhHWf zZ&eh1lr&|8+h4(@g!Odl?fE4dG0}#w6gn%240J(*&fnu95+~vZ(P(eVHGows*R5N* zy4nqZ7YeeoerC`zfwtnxf1{Ce4b(%2-V0TE=}NBghZ~mKlt0dHQmQ;Q99>wNY9f~s zcta)%(nIZQCO(|zevFNU3kI3sebRbJdpV}PtZX9f4)Tny!W3LF#g#9j5-toe7e?Z# zWK>N?;+62|KT(*I3~h z`wY~8iYKKus1uyL`OV(oMY%S}?WhzE6UQUQw&~rV4v$YwFHC+IjmUJZiFCvPNP81) zirjEXQNv++Sqbj%Ng!TCOH3p_h&54a8Wis(ZxHyd;Grbc7Q46Ir5D&ZTm8`-Tm9K( zw8S_&o!)d9w9@#tN70D5H6^+=k3^&AS><+;=ZEV_cF|$;G6iy93TlI*u0%>|FVzNF z!mc2*c!LSC^t}9Au+#=cPbbMfWqqzqrL+&j^TlrV9sW?9K2SpyI-34fScp9tPnXhH zU6@v~M7vwXpt%FzE!obOT?2Dd_>|CUfYQ}iMrcyarv8pyJgSV{{aY9 BIimmo diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index 7518e8a..2e06537 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -30,6 +30,7 @@ struct EntityLocation_s { struct TilePlayer_s { struct EntityLocation_s location; + struct EntityLocation_s lastlocation; struct EntityLocation_s hitbox_bl; struct EntityLocation_s hitbox_tr; struct EntityLocation_s mapoffset; @@ -216,9 +217,41 @@ void game2_setup() game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y); } +int game2_check_collide() +{ + int x,y,hit; + + hit = 0; + + for(x = 0; x < TILESX; x++) + { + for(y = 0; y < TILESY; y++) + { + // Finds any tile we collide with + if(game_hitbox_collide( + (TilePlayer.location.X + TilePlayer.hitbox_bl.X),(TilePlayer.location.Y + TilePlayer.hitbox_bl.Y), + (TilePlayer.hitbox_tr.X - TilePlayer.hitbox_bl.X),(TilePlayer.hitbox_tr.Y - TilePlayer.hitbox_bl.Y), + x*100,y*100, + 100,100 + )) + { + if(((map[screen+1][x][y] >> 7) & 0x01)) + { + hit = 1; + } + } + } + } + + return hit; +} + void game2_tick_input() { - int x,y; + // Store in case we have a vertical collide + TilePlayer.lastlocation.X = TilePlayer.location.X; + TilePlayer.lastlocation.Y = TilePlayer.location.Y; + // Up arrow if(input_readkey(57)) { @@ -240,7 +273,17 @@ void game2_tick_input() TilePlayer.mapoffset.Y -= 10; } } - + + if(game2_check_collide()) + { + TilePlayer.location.X = TilePlayer.lastlocation.X; + TilePlayer.location.Y = TilePlayer.lastlocation.Y; + } + + // Store in case we have a horizontal collide + TilePlayer.lastlocation.X = TilePlayer.location.X; + TilePlayer.lastlocation.Y = TilePlayer.location.Y; + // Right arrow if(input_readkey(121)) { @@ -262,6 +305,12 @@ void game2_tick_input() TilePlayer.mapoffset.X -= 10; } } + + if(game2_check_collide()) + { + TilePlayer.location.X = TilePlayer.lastlocation.X; + TilePlayer.location.Y = TilePlayer.lastlocation.Y; + } } int game2_tick()