From 630f0c61184249d72bccf4d6b7af2f13d0b79f59 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Wed, 2 Mar 2016 01:20:22 +0900 Subject: [PATCH] =?UTF-8?q?Temporal=20fix=20to=20collision=20detector=20?= =?UTF-8?q?=E2=80=94=20Full=20quantisation=20of=20float-point=20hitboxes.?= =?UTF-8?q?=20"Jump=20to=20teleport=20to=20ceiling"=20was=20my=20shit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Former-commit-id: a3421b000b9ecf71ca5f03f79f11658cf57a17db Former-commit-id: e4e540ed339161d3c89228077f217fcb57d01c06 --- .idea/libraries/lib.xml | 4 +- .../Terrarum/Actors/ActorWithBody.class | Bin 15120 -> 14314 bytes .../Torvald/Terrarum/Actors/PBFSigrid.class | Bin 5220 -> 5220 bytes .../Terrarum/Actors/PlayerDebugger.class | Bin 2589 -> 2586 bytes .../com/Torvald/Terrarum/Game.class | Bin 12409 -> 12409 bytes .../Terrarum/GameControl/GameController.class | Bin 4041 -> 3993 bytes .../Terrarum/MapDrawer/MapCamera.class | Bin 10116 -> 10116 bytes .../Terrarum/MapDrawer/MapDrawer.class | Bin 3213 -> 3213 bytes .../com/Torvald/Terrarum/Terrarum.class | Bin 6006 -> 6042 bytes .../Terrarum/TileProperties/propdata.csv | 4 +- .../Torvald/Terrarum/TileStat/TileStat.class | Bin 2715 -> 2715 bytes .../UserInterface/BasicDebugInfoWindow.class | Bin 8028 -> 8025 bytes .../Terrarum/UserInterface/Bulletin.class | Bin 3529 -> 3529 bytes .../UserInterface/ConsoleWindow.class | Bin 5465 -> 5465 bytes res/graphics/sprites/test_player.png | Bin 21104 -> 21115 bytes src/com/Torvald/ColourUtil/HSV.java | 2 +- .../Terrarum/Actors/ActorWithBody.java | 243 +++++++----------- .../Torvald/Terrarum/Actors/PBFSigrid.java | 2 +- .../Terrarum/Actors/PlayerDebugger.java | 2 +- src/com/Torvald/Terrarum/Game.java | 12 +- .../Terrarum/GameControl/GameController.java | 13 +- src/com/Torvald/Terrarum/Terrarum.java | 14 +- .../Terrarum/TileProperties/propdata.csv | 4 +- .../UserInterface/BasicDebugInfoWindow.java | 3 +- work_files/Tools/b24_col_to_40step_col.py | 9 +- 25 files changed, 141 insertions(+), 171 deletions(-) diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml index ed64fcc7f..db5f1ccdf 100644 --- a/.idea/libraries/lib.xml +++ b/.idea/libraries/lib.xml @@ -17,7 +17,9 @@ - + + + diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class index 5f0b0832b9bf27722e704e334cc35bfb2b7852ba..539133592c4162f8e43a3f8006199798e3e7f06a 100644 GIT binary patch literal 14314 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 literal 15120 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 delta 18 ZcmaE&@kC?86#-U30X+fE%{K+QnE^yG21Eb= diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerDebugger.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerDebugger.class index 46e4708d8f422ced2a28ae8a633e5dfd17149e37..5fcbfb11ca3d416331318b888ce700678c6b0a0f 100644 GIT binary patch delta 25 gcmbO$GD~E`D<&T9)UwpP65sr?%)Io?Kbch60ewmdegFUf delta 28 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�O3M1TP!- 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 delta 2655 zcmah~Ygm-m5q@WP*>CsbD9finmH;9M;&NFBTlp+5+uLrCQshw?rFzjcuAXy`*WM{!FWBN@L%%prw8Kv_E#{ocU(v zyyu;nvm?RFMUfZYIeivDiS(H0z|$rY@dYiO(c)PHUo;ViFB$l<2?L{E8pjNbn=mnI z;w$*7i6~BK^Mr}7;dDGE@pS`dTxI9aU(lPg2EJip{&eU$o%EXqzU9Gldik^&!3}s` zhkx7T>N{F|SBvjy@qH~`(Befc&KtO3;sS|%Q5P~Z*|1)Or$Kw?>%^3TmPV4-tgd$9{kB;CrW0s zHvHAVWfRq!nQC0o;w=yUruExe{M~~o6aT?NcU5KemZ}yf;J9cna=ht~4m-*DqH)HM1hQ_w;e16d*w49k%Hwuc+%t07 zekm?ccnF6T9>r0G$Fw+sqk?(;-3PmaeS^X3hRQp7Li>mN1_zY*aMaFq=fxk=e*1B| zAj=LqlI#I@LUy7OOXe9eUrCZAD;&hT4M|aQgZK?eRdS;w+fTT&+-Z_7@H5PBD(u0n zN-|`D{bzS^{vpX!=*BK33nfcQwk%STBe_ZzYmukL5^W0*MV*neJ6}nG6dF>bBq&P_ zS*D~|mMbZd6#`>$sA!;jU&xS^N>)j!LLd6cB+Umy;URq;+=hMy@mQ zHH_u5qM@x>VK4gaOGa+SS|*S(StsxYTSDP*clf|QCF`Y7VIN)6JoiNgbb57-w#|Ke zLrOMCxsr`i&JV$!!GYaLqjuPJ9|UByASLgj(HifS;-cu znpKR(aNodiTexpH6jnGS)rM?UQX{nj-`b6XgTq6^;qLu)q2XHxdxsL-Qs(Ab1yd4(#NOP_q+|TtqIIc3( zVc-D+?}He4zY7oYgNqJ}_*Hzp3+zX3>C6rd5s*hVx> zv}{8&T1k8xda)yhC%}}+*YT8K0X{$uG_ufjWFdSIM`n;E!o6LinX^Hr_!Pa3j2NyP zr-6C#A$*vg8raL^Lg(qS3+JUooaYi97oAb0k0H(18$|}SD~bhFv}R7Lh5DlzMHY1w z*(Wi-)=G>bX9BrnSSaTyIqM|5UC3km1ld3<**;~wXC-e^ z6Ct(r?3V`iN+)Msmm-<)8sNi6@X=V(E_@6&?YaP7IIf`Hz#~4g$>(tTPVy*2c)s|o zB@+mYBi|~B>B87PilUl;6^vr(G2~dw#!)TRKn1MwnUgmDm*`Ei4yp@Sk%}4L%Kzh=Wo`bS z9y2!@!)lFe%e7OgMoHRqJ?dErV1QFFNOEtFO<7h1Ls-o5s^Cb~aj2T0N9r(}?Jn|v zH=gA{L^%?ZY`ROVz^ixwSMZ=Du+w#|6lwR<^6}UJ>k7?*dkPhtj*`TMfecoO|5wvh z!YANn?*XN*GpKHNPEth1P<0Ahn`;8K`De?V>(bMnLRx-$@oJZ!U05>$uhz9~_dDg} z)z|-ZnN+3%+utI}Z1zb$dt@2ctJoCRdMKNNehecVA`7`Z{BcHTgh_B-C1{s{<3 zg^iQ)7J-@iUzLrdhvXuo_z#Wk8sxuoTQ|)uQP;2^YL2nuQPg`M89{)HhBm8l0^4dQ z(bOI|h32~ag7zp{+D>CT$Yg6l6m9w%uGox_fBif?hIHaAB*tQ*EX8p?3n%zMd=f2q zGIk&RJe4AimM2JNIZOE@o+8$CT0g~D;M4r+YD{~5hAVwn&dU@E4SY8D`ZE>BBTrtd zNeh|LgA16}j&Za*$1zvKlNdacCxE=hF{=}w440~bRiLlldPWy40hSS|ogfCfhZ delta 23 ecmbO&I$Lyt5l;aF0~bRiLlldP3ByLaSS|oVA_Xo0 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class index 16afe0bf3820e4251ab53aad2c56474d9e582c4e..ea10ee23f56d30e55c29a58a5fdf16e136bf0372 100644 GIT binary patch delta 615 zcmXZZNk|n?6vpxYx%XO-lJvkdho|zIG)mGmiF`RUKx$@@nn;-gQHCy3$;c!mOAE^G zA}PqsAj?4WX#)x^T15keE|QX>KsRnA5K6)>(dOfKzQb9aFaAmYV7*9jpg}5@hXhwQ zR@c_&*EOD~Jsy}2U8WMu>JfC}3N<}~c>*X-yYygOdR@j6Oq`qJ1FJm!rezIFSj$Qh z-Esr#*+@1?l#xs&Tc{z`oo}U;bS&HGbM7aDQT)6ilW)#H$Pvv>@v%#C*ezA;kq-7s z7kSb{zVxwA1}KoH?3cF`$|MJ5nu9XWVfodu}ENSX#7?b2^C&I)x^k#zpO? zP3Lh*mvC8E(5`Ff&<$MCEzMljt!~lAHQmm2-ASju%?;g))dQ{@;-(&>OTXim{^&fx z9sQYZJ;Pl+N00u^J!9xKA>20}x=k1lOay%SzO%78VVPk&S3sfo8v$nS?mD5Y1Wm6B#y+q%M4=3wDa0McNIitSOuKsXVyEvzl2x$-JwU-XPnG4!SyUwFa z`?;vgxTGuT*0uEL1}^JXuINw)S9Padba730)2n;w(*qbi%ym6(vxoHSS#Iii2J~y| z5pL_Z4C;>z=`Y;TzZiBL?m8~+Iq?iS35+<&j5-sHkaN%$V|&6H&AFGf&K9N|nqRm%C7&nlg93JTsouBy-E1D=)2OnH9HJ zBG$@e!OW-bFr%qnd2g*omP}4sg?zH~ndvmId^U?|#q!m7(#zzBWtO>-?v>wWCcQ)n ReVzh|>hmN-zxiL3$UmP6n<)SQ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/Bulletin.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/Bulletin.class index 40d4bf94362af4cd6a54dfb7927f53452ba76a3a..680b9162f6618d61c6975c884e428ad343c01b9e 100644 GIT binary patch delta 19 acmX>peNuXY6O(1bMi(Yt#%Gh=d7A)6IR>f# delta 19 acmX>peNuXY6O#$UMi(Yt#tW0(d7A)04+aka diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/ConsoleWindow.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/ConsoleWindow.class index d65b2d1281f320ce38db51deffead901f06673e6..b5285ea052d6da63fc7595de96a1e393a3c9f9db 100644 GIT binary patch delta 15 WcmcbqbyI7Dxd;=B%4SOu1x5fYT?9=4 delta 15 WcmcbqbyI7Dxd;>Ufz6g83XA|R{sia% diff --git a/res/graphics/sprites/test_player.png b/res/graphics/sprites/test_player.png index 139518041a42fa1672868b12e00507a928facf52..e50d61a9ad10ff57e01004af88c8f23de9e964a4 100644 GIT binary patch delta 3232 zcma))cQo6J1I5j%AP7|zyQ+9XLJ*_W6ICr}PzI9x|vO9!b* z80FLZd%ObvM|1}3%4s7!G&B%M1WXHwQimbcToEu=H#aw!8Wx2^pfokz-PJq@9bhdv zq??vDR$I#*hExB`kgl3Ym@6Ei0n=93#<^;_Vcp?K9N`MT!M_7z`04)+1O#;dzTh?l zARI$P2uxuRfyS>(C=oRLcN6~E({vm14$1L}gDOrqzoiOjo1zV^BdIS6y#1Ue!pOjK zhr0)g=l5^2skt?=)vNdNl{+!>q}L4j+YjDfbdn3;MH#0{?^jm^@d=x!b66yx!gENs zsZ~J|ovaC(&DrHdT2-^nxf#J+ zF4;9$)(42=!POIUbGUJAXOAdHPw??~nJXWc`Rj->tD#(hr$4paDm@o1;u6{U9V;Pz zv@?807~+cnl1;w8giS(V4CEH#yF!1THTb&)mY|r~e$ZU}d1JjR`GOQtmrJrI#Ulp$ zWD3hl_y0E65Cd|D^?p@0{*YAo16daUtqo!C1-3tkiboHT-0bjs{Z_$_posNTSaDEH zs5RMtRko1Pl~S%wH)0;IzxbqPSOudjrdLlkGlgF0977EKlbdxV-A>nj>B(a#NPHb> zB2<`^Jm=@wm^{dqn8X|4DmLfeAH1t-FTQ;=BwUr!>)zquN;~#P&l7yt=YRC;9>UfE z>$D2=Gss!1!SG(*hu4(0rzQyTy@vGS=WHYFrS6+ATZN{Xm-fbA^@JR8q{{Ce~ zBL?~|WcP9Mb=A=Vsl|4or*6hcMy>k3)xUhQ;@BFWV-={TaUjXXe|{nH zL~;&bGNK?la}hwGI^_oQ8i_3e*0DKzgKM%Qd~N(@+|@v4#a{T^<9ai-*RDmom{bSR|2d8%Z9!-P6-(H(&u>xDess`Q$e^NK5 z&QfR{>kqM&Uh7l+NkU9hlCS#N8C0~iaB02;7b#!fT1V)n=pD!R$+RGqisz^4ha$h} zorT%UcuSIeqbCTPe^e|KIJoj^jrLaUpS{q>=VI~s(cWqBn$hvu2uISPzF%*)kDzA2 z%uq}V`bLe=kGN-0Kr=Y{5Y@4XU+jW2PDt51dLXOrPXY&P^wWKaUttvBwuPCV&G+m; z{pKYO8Ia>ygv9zzj1*ZQPG_g(XmOSZ*^53aW|^axDRjs|Q$^qmhvS7@6uMW;mp3z5 zL4=2QV~Vn};$Ct%FFiFB>o@g2wJgzDda=63I_;FqYy&d;cg8*I7PHR3XQg^BuO;OO zhR?MATngCE>7-1RWLhNL>M3e2E>s$dx0%rhRkb2J%MmOf$%vfmF(-pr+r?Q1ciU~N zsspnFZ#P@HkXh0TuvNp@GW<&vgGV( z_vswjq`zu3uB@rX+(_gqfQhiwjIr15v(#z8 zV8i}W+YSR$jQdYQ+Z<(^#7q^%*bu%j5&N}nr&MkXeg z`+C~8sdPMZ_9QiocRc8O-2}>xCvx|T_;!n;gYHD5O&zwnDW?gOAhdWfuE}#*w7^RS zSdGZ3zetffX5H;XH-Z1Us(m_RZ=&mD>BwY-MnYy!6gQ;e;x9^ECzmu|1xF&cBq zEkFGcR4SuwD{sGriXFK*q4cV@#+{A2^QLhoNd4#GsubvRM?7V^<%q3r{XvE^)R`@^ zq)YT!=?+Ulv1Ek_6!hQ!jfV+jm@PdtJ3X^XmCd z!1mIrk)`tRoVH|wj4LEvhR>UWwK=-ts8!A4dzZC;^3JwZ?h7@%f962sljwCoCsV_0 zHA*QUC%BHKKRD^r83S;w_N<@RR;j=(6USx!(`Rcn9H2gYtt-+9d~*V^D7kpf;T!0V zFh>GmSWy1bM?G>);K;}Lmy_-8T>hyKb*0RZJWR4`tg&rGeV+}uWBK{uB3$HP?L=Z$ zJ476wBDyh)xcSBV>Q_Fj&ct9{YhdZU{QxJ+E57F9WR{^^a%$*J0qfTVpepNRv*bVVc%0O86?{ei%KzZHnt_I@ z8%(ubi)ck&FjY+aT0d5Y3zLG9r2gn_6nmd~udFMDKLBKt-iUruF9Wy>-G}1p${q&J z>G-sCow1iTVeVC4ok+6;`F@)@iYO|qy_x`bvb;E#GCiY*Pc$XU07RGncLlc@Et0(;w{4b32nZ3DQnVd`VqldNEq5jL7@GjnASoaDsee zhkYdvIzp3jcq+`K9_0a%;eV(k?Ug#8hp?g=8LrS|o6xu3j1_s_M0vSyaieDVYhe3T zxe6VxP~H9*Zhu_D4zG$n_yR^U0Uo;gpQ>+5-Akex6C??5MwYe}t${2l*n)mBwyy3zorX&z9xvy@n8vW1sj~XHV-a zWMxTthCLRl&ZMKxq%pZlvUarGo6;Ft0kp=|dwWj$8#{^Gn>0KIf%o zhE7K4pxmb1VOemW*w9nX1Y<>G(J}lBV@}y85SLelNZDcHJA1H4p%6_Iz7R&u^y6n4 zi@rj!*Nf;8vr@r@Hg!Atj>yZ8%MeqE<8EJz1_;59>k_PdVmR}VtROG*<;(4uEp~gQ z<0{xpK{G5IQ#Uj9^Q%Y$%|}S4e9Ibg4LpDrqg_n#eUi?*evuW%s`*V!?Z}H$ ZI!j)8vP6#Q9T3Z3GBvh9*Z=C0@P9Wj9&i8v delta 3221 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 VELO_HARD_LIMIT) veloY = VELO_HARD_LIMIT; // Set 'next' positions to fiddle with - // updateNextHitboxYFromVelo(); - // updateNextHitboxXFromVelo(); updateNextHitboxFromVelo(); - // do horizontal collision detection first! - // updateHorizontalPos(); - updateHitboxX(); - - + updateHorizontalPos(); updateVerticalPos(); + updateHitboxX(); updateHitboxY(); @@ -269,12 +264,12 @@ public class ActorWithBody implements Actor, Visible, Glowing { boolean colliding; do { - colliding = isColliding(CONTACT_AREA_BOTTOM, 0, -newYOff); newYOff += 1; + colliding = isColliding(CONTACT_AREA_BOTTOM, 0, -newYOff); } while (colliding); float newY = nextHitbox.getPointedY() - newYOff; - nextHitbox.setPositionFromPoint(newX, newY + 1); + nextHitbox.setPositionFromPoint(newX - 1, newY); } private void adjustHitTop() { @@ -286,136 +281,92 @@ public class ActorWithBody implements Actor, Visible, Glowing { boolean colliding; do { - colliding = isColliding(CONTACT_AREA_TOP, 0, newYOff); newYOff += 1; + colliding = isColliding(CONTACT_AREA_TOP, 0, newYOff); } while (colliding); float newY = nextHitbox.getPosY() + newYOff; - nextHitbox.setPosition(newX, newY - 1); + nextHitbox.setPosition(newX + 1, newY); } private void updateHorizontalPos() { if (!isPlayerNoClip()) { - resetCollisionEventFlag(); - collidedRightAndAdjusted(); - - if (collisionEvent == EVENT_COLLIDE_RIGHT) { - veloX = 0; - walledRight = true; + // check right + if (veloX > 0) { // use TERNARY for L/R! + // order of the if-elseif chain is IMPORTANT + if (isColliding(CONTACT_AREA_RIGHT) && !isColliding(CONTACT_AREA_LEFT)) { + adjustHitRight(); + veloX = 0; + } + else if (isColliding(CONTACT_AREA_RIGHT, 1, 0) + && !isColliding(CONTACT_AREA_LEFT, -1, 0)) { + veloX = 0; + } + else { + } } + else if (veloX < 0) { - collidedLeftAndAdjusted(); - - if (collisionEvent == EVENT_COLLIDE_LEFT) { - veloX = 0; - walledLeft = true; + // order of the if-elseif chain is IMPORTANT + if (isColliding(CONTACT_AREA_LEFT) && !isColliding(CONTACT_AREA_RIGHT)) { + adjustHitLeft(); + veloX = 0; + } + else if (isColliding(CONTACT_AREA_LEFT, -1, 0) + && !isColliding(CONTACT_AREA_RIGHT, 1, 0)) { + veloX = 0; + } + else { + } } + else { - if (collisionEvent != EVENT_COLLIDE_LEFT && collisionEvent != EVENT_COLLIDE_RIGHT) { - walledRight = false; - walledLeft = false; } } } - void collidedRightAndAdjusted() { - if (getContactingArea(CONTACT_AREA_RIGHT, 1, 0) == 0) { - resetCollisionEventFlag(); - } - /** - * seemingly adjusted and one pixel below has ground - * - * seemingly adjusted: adjustHitBottom sets position one pixel above the ground - * (stepping on ground in-game look, as the sprite render is one pixel offseted to Y) - */ - else if (getContactingArea(CONTACT_AREA_RIGHT, 1, 0) > 0 - && getContactingArea(CONTACT_AREA_RIGHT, 0, 0) == 0) { - collisionEvent = EVENT_COLLIDE_RIGHT; - } - else { - adjustHitRight(); - collisionEvent = EVENT_COLLIDE_RIGHT; - } - } - - void collidedLeftAndAdjusted() { - if (getContactingArea(CONTACT_AREA_LEFT, -1, 0) == 0) { - resetCollisionEventFlag(); - } - /** - * seemingly adjusted and one pixel below has ground - * - * seemingly adjusted: adjustHitBottom sets position one pixel above the ground - * (stepping on ground in-game look, as the sprite render is one pixel offseted to Y) - */ - else if (getContactingArea(CONTACT_AREA_LEFT, -1, 0) > 0 - && getContactingArea(CONTACT_AREA_LEFT, 0, 0) == 0) { - collisionEvent = EVENT_COLLIDE_LEFT; - } - else { - adjustHitLeft(); - collisionEvent = EVENT_COLLIDE_LEFT; - } - } - private void adjustHitRight() { - int tX = 0; - int contactArea = getContactingArea(CONTACT_AREA_RIGHT, 0, 0); - for (int lim = 0; lim < LR_COMPENSATOR_MAX; lim++) { - /** - * get contact area and move up and get again. - * keep track of this value, and some point they will be set as lowest - * and become static. The very point where the value first became lowest - * is the value what we want. - */ - int newContactArea = getContactingArea(CONTACT_AREA_RIGHT, -lim, 0); - - if (newContactArea < contactArea) { - tX = -lim; - } - contactArea = newContactArea; - } - //nextHitbox.setPositionYFromPoint(nextHitbox.getPointedX() + tX); - nextHitbox.set( - FastMath.ceil(nextHitbox.getPosX() + tX) - , nextHitbox.getPosY() - , nextHitbox.getWidth() - , nextHitbox.getHeight() + float newY = nextHitbox.getPosY(); // look carefully, getPos or getPointed + // int-ify posY of nextHitbox + nextHitbox.setPositionX( FastMath.floor(nextHitbox.getPosX() + nextHitbox.getWidth()) + - nextHitbox.getWidth() ); + + int newXOff = 0; // always positive + + boolean colliding; + do { + newXOff += 1; + colliding = isColliding(CONTACT_AREA_BOTTOM, -newXOff, 0); + } while (newXOff < TSIZE && colliding); + + float newX = nextHitbox.getPosX() - newXOff; + nextHitbox.setPosition(newX, newY); } private void adjustHitLeft() { - int tX = 0; - int contactArea = getContactingArea(CONTACT_AREA_LEFT, 0, 0); - for (int lim = 0; lim < LR_COMPENSATOR_MAX; lim++) { - /** - * get contact area and move up and get again. - * keep track of this value, and some point they will be set as lowest - * and become static. The very point where the value first became lowest - * is the value what we want. - */ - int newContactArea = getContactingArea(CONTACT_AREA_LEFT, lim, 0); + float newY = nextHitbox.getPosY(); + // int-ify posY of nextHitbox + nextHitbox.setPositionX( FastMath.ceil(nextHitbox.getPosX()) ); - if (newContactArea < contactArea) { - tX = lim; - } - contactArea = newContactArea; - } - //nextHitbox.setPositionYFromPoint(nextHitbox.getPointedX() + tX); - nextHitbox.set( - FastMath.floor(nextHitbox.getPosX() + tX + 1) - , nextHitbox.getPosY() - , nextHitbox.getWidth() - , nextHitbox.getHeight() - ); + int newXOff = 0; // always positive + + boolean colliding; + do { + newXOff += 1; + colliding = isColliding(CONTACT_AREA_TOP, newXOff, 0); + } while (newXOff < TSIZE && colliding); + + float newX = nextHitbox.getPosX() + newXOff; + nextHitbox.setPosition(newX, newY); } private boolean isColliding(int side) { - return getContactingArea(side) > 0; + return isColliding(side, 0, 0); } private boolean isColliding(int side, int tx, int ty) { - return getContactingArea(side, tx, ty) > 0; + return getContactingArea(side, tx, ty) > 1; } private int getContactingArea(int side) { @@ -429,7 +380,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { ; i++) { // set tile positions int tileX, tileY; - if (side == CONTACT_AREA_BOTTOM) { + /*if (side == CONTACT_AREA_BOTTOM) { tileX = div16TruncateToMapWidth(Math.round(nextHitbox.getHitboxStart().getX()) + i + translateX); tileY = div16TruncateToMapHeight(FastMath.floor(nextHitbox.getHitboxEnd().getY()) @@ -452,6 +403,30 @@ public class ActorWithBody implements Actor, Visible, Glowing { + translateX); tileY = div16TruncateToMapHeight(Math.round(nextHitbox.getHitboxStart().getY()) + i + translateY); + }*/ + if (side == CONTACT_AREA_BOTTOM) { + tileX = div16TruncateToMapWidth(Math.round(nextHitbox.getHitboxStart().getX()) + + i + translateX); + tileY = div16TruncateToMapHeight(Math.round(nextHitbox.getHitboxEnd().getY()) + + translateY); + } + else if (side == CONTACT_AREA_TOP) { + tileX = div16TruncateToMapWidth(Math.round(nextHitbox.getHitboxStart().getX()) + + i + translateX); + tileY = div16TruncateToMapHeight(Math.round(nextHitbox.getHitboxStart().getY()) + + translateY); + } + else if (side == CONTACT_AREA_RIGHT) { + tileX = div16TruncateToMapWidth(Math.round(nextHitbox.getHitboxEnd().getX()) + + translateX); + tileY = div16TruncateToMapHeight(Math.round(nextHitbox.getHitboxStart().getY()) + + i + translateY); + } + else if (side == CONTACT_AREA_LEFT) { + tileX = div16TruncateToMapWidth(Math.round(nextHitbox.getHitboxStart().getX()) + + translateX); + tileY = div16TruncateToMapHeight(Math.round(nextHitbox.getHitboxStart().getY()) + + i + translateY); } else { throw new IllegalArgumentException(String.valueOf(side) + ": Wrong side input"); @@ -466,10 +441,6 @@ public class ActorWithBody implements Actor, Visible, Glowing { return contactAreaCounter; } - private void resetCollisionEventFlag() { - collisionEvent = EVENT_COLLIDE_NONE; - } - private void clampHitbox() { hitbox.setPositionFromPoint( clampW(hitbox.getPointedX()) @@ -484,30 +455,14 @@ public class ActorWithBody implements Actor, Visible, Glowing { ); } - private void updateNextHitboxXFromVelo() { - nextHitbox.set( - hitbox.getPosX() + veloX - , hitbox.getPosY() - , baseHitboxW * scale - , baseHitboxH * scale - ); - } - - private void updateNextHitboxYFromVelo() { - nextHitbox.set( - hitbox.getPosX() - , hitbox.getPosY() + veloY - , baseHitboxW * scale - , baseHitboxH * scale - ); - } - private void updateNextHitboxFromVelo() { nextHitbox.set( - hitbox.getPosX() + veloX - , hitbox.getPosY() + veloY - , baseHitboxW * scale - , baseHitboxH * scale + Math.round(hitbox.getPosX() + veloX) + , Math.round(hitbox.getPosY() + veloY) + , Math.round(baseHitboxW * scale) + , Math.round(baseHitboxH * scale) + /** Full quantisation; wonder what havoc these statements would wreak... + */ ); } diff --git a/src/com/Torvald/Terrarum/Actors/PBFSigrid.java b/src/com/Torvald/Terrarum/Actors/PBFSigrid.java index 06c1b9781..a66d7a175 100644 --- a/src/com/Torvald/Terrarum/Actors/PBFSigrid.java +++ b/src/com/Torvald/Terrarum/Actors/PBFSigrid.java @@ -62,7 +62,7 @@ public class PBFSigrid { p.actorValue.set("luminosity", 22819); - p.setHitboxDimension(17, 46, 9, 0); + p.setHitboxDimension(18, 47, 8, 0); p.inventory = new ActorInventory(0x7FFFFFFF, true); diff --git a/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java b/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java index 12c689581..123e08241 100644 --- a/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java +++ b/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java @@ -42,5 +42,5 @@ public class PlayerDebugger { public ActorValue actorValue() { return getPlayer().getActorValue(); } public float mass() { return getPlayer().getMass(); } public boolean noClip() { return getPlayer().isNoClip(); } - public int collisionEvent() { return getPlayer().collisionEvent; } + public int eventMoving() { return getPlayer().eventMoving; } } diff --git a/src/com/Torvald/Terrarum/Game.java b/src/com/Torvald/Terrarum/Game.java index 7f310ad5d..0a1ca08c2 100644 --- a/src/com/Torvald/Terrarum/Game.java +++ b/src/com/Torvald/Terrarum/Game.java @@ -145,11 +145,7 @@ public class Game extends BasicGameState { TileStat.update(); - /** Placed before actor update to give some dynamic view of player on screen, - * or else player will always stay same spot, which is somewhat dull. - */ - MapDrawer.update(gc, delta_t); - MapCamera.update(gc, delta_t); + actorContainer.forEach(actor -> actor.update(gc, delta_t)); actorContainer.forEach( @@ -163,6 +159,12 @@ public class Game extends BasicGameState { } ); + /** Placed before actor update to give some dynamic view of player on screen, + * or else player will always stay same spot, which is somewhat dull. + */ + MapDrawer.update(gc, delta_t); + MapCamera.update(gc, delta_t); + uiContainer.forEach(ui -> ui.update(gc, delta_t)); //bulletin.update(gc, delta_t); diff --git a/src/com/Torvald/Terrarum/GameControl/GameController.java b/src/com/Torvald/Terrarum/GameControl/GameController.java index 9f9510dcb..105cdc73f 100644 --- a/src/com/Torvald/Terrarum/GameControl/GameController.java +++ b/src/com/Torvald/Terrarum/GameControl/GameController.java @@ -26,6 +26,12 @@ public class GameController { } public static void processInput(Input input) { + int mouseTileX = (int) ((MapCamera.getCameraX() + input.getMouseX() / Terrarum.game.screenZoom) + / MapDrawer.TILE_SIZE); + int mouseTileY = (int) ((MapCamera.getCameraY() + input.getMouseY() / Terrarum.game.screenZoom) + / MapDrawer.TILE_SIZE); + + if (!Terrarum.game.consoleHandler.isTakingControl()) { if (Terrarum.game.getPlayer().vehicleRiding != null) { Terrarum.game.getPlayer().vehicleRiding.processInput(input); @@ -42,16 +48,11 @@ public class GameController { } - int mouseTileX = (int) ((MapCamera.getCameraX() + input.getMouseX() / Terrarum.game.screenZoom) - / MapDrawer.TILE_SIZE); - int mouseTileY = (int) ((MapCamera.getCameraY() + input.getMouseY() / Terrarum.game.screenZoom) - / MapDrawer.TILE_SIZE); - if (input.isMouseButtonDown(Input.MOUSE_LEFT_BUTTON)) { // test tile remove try { Terrarum.game.map.setTileTerrain(mouseTileX, mouseTileY, TileNameCode.AIR); - Terrarum.game.map.setTileWall(mouseTileX, mouseTileY, TileNameCode.AIR); + // Terrarum.game.map.setTileWall(mouseTileX, mouseTileY, TileNameCode.AIR); } catch (ArrayIndexOutOfBoundsException e) { } diff --git a/src/com/Torvald/Terrarum/Terrarum.java b/src/com/Torvald/Terrarum/Terrarum.java index 79268719b..600d3c6fa 100644 --- a/src/com/Torvald/Terrarum/Terrarum.java +++ b/src/com/Torvald/Terrarum/Terrarum.java @@ -36,8 +36,11 @@ public class Terrarum extends StateBasedGame { public static final int TARGET_INTERNAL_FPS = 100; public static AppGameContainer appgc; - public static final int WIDTH = 960; - public static final int HEIGHT = 720; + + public static final int WIDTH = 1060; + public static final int HEIGHT = 742; // IMAX ratio + public static boolean VSYNC = true; + public static Game game; public static String OSName; @@ -93,11 +96,14 @@ public class Terrarum extends StateBasedGame { { appgc = new AppGameContainer(new Terrarum("Terrarum")); appgc.setDisplayMode(WIDTH, HEIGHT, false); + appgc.setTargetFrameRate(TARGET_INTERNAL_FPS); - appgc.setVSync(true); + appgc.setVSync(VSYNC); + appgc.setMaximumLogicUpdateInterval(1000 / TARGET_INTERNAL_FPS); + appgc.setShowFPS(false); appgc.setUpdateOnlyWhenVisible(false); - appgc.setMaximumLogicUpdateInterval(1000 / TARGET_INTERNAL_FPS); + appgc.start(); } catch (SlickException ex) diff --git a/src/com/Torvald/Terrarum/TileProperties/propdata.csv b/src/com/Torvald/Terrarum/TileProperties/propdata.csv index d13d28246..988a3c4e6 100644 --- a/src/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/src/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -40,7 +40,7 @@ "34";"TILE_PLATFORM_BIRCH" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "34"; "0";"16" "35";"TILE_PLATFORM_BLOODROSE" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "35"; "0";"16" - "36";"TILE_TORCH" ; "0"; "0"; "0"; "N/A"; "0"; "0";"63680"; "36"; "0";"16" - + "36";"TILE_TORCH" ; "0"; "0"; "0"; "N/A"; "0"; "0";"63412"; "36"; "0";"16" +# 63412 (ffa44e) : real candlelight colour taken from properly configured camera. "239";"TILE_WATER" ; "6522"; "100"; "1"; "2"; "0"; "0"; "0"; "239"; "0";"16" "255";"TILE_LAVA" ; "62358"; "100"; "1"; "2"; "0"; "0";"48320"; "239"; "0";"16" diff --git a/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java b/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java index 12a98ad73..c3f0a864e 100644 --- a/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java +++ b/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java @@ -6,7 +6,6 @@ import com.Torvald.Terrarum.LangPack.Lang; import com.Torvald.Terrarum.MapDrawer.LightmapRenderer; import com.Torvald.Terrarum.MapDrawer.MapDrawer; import com.Torvald.Terrarum.Terrarum; -import com.Torvald.Terrarum.Game; import com.Torvald.Terrarum.MapDrawer.MapCamera; import org.newdawn.slick.Color; import org.newdawn.slick.GameContainer; @@ -105,7 +104,7 @@ public class BasicDebugInfoWindow implements UICanvas { */ String[] collisionFlagKey = {"top", "right", "bottom", "left"}; - int collisonFlag = playerDbg.collisionEvent(); + int collisonFlag = playerDbg.eventMoving(); printLineColumn(g, 2, 1, "CollisionFlag : " + ((collisonFlag == -1) ? "none" : collisionFlagKey[collisonFlag])); printLineColumn(g, 2, 2, "Env colour temp : " + MapDrawer.getColTemp()); diff --git a/work_files/Tools/b24_col_to_40step_col.py b/work_files/Tools/b24_col_to_40step_col.py index ca3f99210..bc46bf745 100644 --- a/work_files/Tools/b24_col_to_40step_col.py +++ b/work_files/Tools/b24_col_to_40step_col.py @@ -23,9 +23,14 @@ def getB40(raw): def intFromCol(r, g, b): - return r * MUL_2 + g * MUL + b + return int(r * MUL_2 + g * MUL + b) +def intFromRGB24(r24, g24, b24): + roundR = round(r24 / 255.0 * 39) + roundG = round(g24 / 255.0 * 39) + roundB = round(b24 / 255.0 * 39) + return intFromCol(roundR, roundG, roundB) def colFromNum(raw): return getR40(raw), getG40(raw), getB40(raw) print(colFromNum(9979)) -print(intFromCol(3,5,9)) +print(intFromRGB24(255, 164, 78))