From 4ddd020d0797d7159e488890b596f8fdba9dcfc9 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Sat, 6 Feb 2016 00:48:25 +0900 Subject: [PATCH] implemented tile connection draw, frosty area in map gen, fixed too less floating islands, ocean water now generates properly Former-commit-id: d280e2f95c10f1060bfaa794b31d91965badc373 Former-commit-id: d0881343a802658b1fe0b2ad59561ca6ceb7a805 --- .idea/vcs.xml | 6 + .../Terrarum/Actors/ActorWithBody.class | Bin 9115 -> 9337 bytes .../Actors/CreatureBuildFactory.class | Bin 0 -> 5171 bytes .../Torvald/Terrarum/Actors/PBFSigrid.class | Bin 2355 -> 2291 bytes .../com/Torvald/Terrarum/Actors/Player.class | Bin 7645 -> 7720 bytes .../Terrarum/Actors/PlayerBuildFactory.class | Bin 5105 -> 1041 bytes .../Terrarum/ConsoleCommand/ExportMap.class | Bin 5359 -> 5515 bytes .../com/Torvald/Terrarum/Game.class | Bin 8368 -> 8299 bytes .../Terrarum/MapDrawer/MapCamera.class | Bin 6732 -> 7979 bytes .../Terrarum/MapGenerator/MapGenerator.class | Bin 12792 -> 14549 bytes .../com/Torvald/Terrarum/Terrarum.class | Bin 6785 -> 6785 bytes res/graphics/fonts/ascii_majuscule.png | Bin 23887 -> 3660 bytes res/graphics/fonts/ascii_majuscule_black.png | Bin 2161 -> 3459 bytes res/graphics/fonts/ascii_special_ef.png | Bin 20358 -> 457 bytes res/graphics/fonts/ascii_special_ef_black.png | Bin 335 -> 330 bytes res/graphics/terrain/terrainplusplus.png | Bin 62828 -> 96073 bytes res/raw/CreatureHuman.json | 7 + .../Terrarum/Actors/ActorWithBody.java | 83 ++--- .../Terrarum/Actors/CreatureBuildFactory.java | 122 ++++++++ .../Torvald/Terrarum/Actors/PBFSigrid.java | 10 +- src/com/Torvald/Terrarum/Actors/Player.java | 8 +- .../Terrarum/Actors/PlayerBuildFactory.java | 95 +----- .../Terrarum/ConsoleCommand/ExportMap.java | 48 +-- src/com/Torvald/Terrarum/Game.java | 3 +- .../Torvald/Terrarum/MapDrawer/MapCamera.java | 101 +++++- .../Terrarum/MapGenerator/MapGenerator.java | 291 +++++++++++------- src/com/Torvald/Terrarum/Terrarum.java | 2 +- 27 files changed, 490 insertions(+), 286 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class create mode 100644 src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file 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 58820e8e9d7897dd59ba299bc375e4e3edd04505..b94cc596752749b09ed086500855da0f7c052d63 100644 GIT binary patch literal 9337 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 Xe2SWxmynMV<~^|qqrV2uMc?{A<(+oX literal 9115 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 Pm&z+J`X=T)^sWB|im4ko diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..116a28557346315cfe2096906786d222a92dd6b6 GIT binary patch literal 5171 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 delta 1116 zcmYk5-E$OG5XFCYW|EoA4zN3$PxDDgAjue(4+$WM8;C?Oh#)2gQB1;s!6e2kh>Efb ziYOr9@E-pFAG9zN3aTvLv@HAsw0!bK%NMP(e5LHWgRr}`=bY}I)3Y@Tv4H1DjCH0&F1u9C!{&OU9k%cY6|o!PC`GY&(V_h@)l!(I)~Y1pTq z+VAkZ%>kF1#Px#1u*(Q9>ddIak%Lw~4-PLm9MTiKY;7C5`;)^f4u`G$9bJ0W>i=8w zn6>>&&EqaPCdBIy>amX69MkPyvzgST<1W3tu1}w`nYNj^_Uq5;jVM-al^f_&v`4dM zQ#7wCO+|y~nx%td)1k*KZ+gs8i0-L1sS}*^c#Bhtj_8ch*1mdn=9tIZyyNjMr#;@| zl*jw@d7RNuHsb%$b+C9L<}x>Cd_1v4N`|*Z4xwS(-Dis-nNlO&zJZ@Mt&}&P;^61{7+y!Yza+ zh9?V?<5Qu+>N?mxe52FqH;OE0z5J87cuqGu8HO{u&|u(FhN*(};i z9^i4dNTk@x6VgP?Ml}_pP)BZKj4omh1(I374y+g_xJ{KL-33xX@mo^qru4cPFA(W3 ziCL;eh96>{@n;|Sv;X_EiC;+jYh-}h1?q~@pw6%N zZqg9*NGWLao64f*@={9>(>mg}mDQJ**W3LSWu*?kvn*QauPTeWtebSpiOKmr8SA$s zE=>?*%s=jj>FRVYZJRNV%Fw-|NjYZq9da>itVPx?urB!e!S$S_P4p63{AKdZP)(Lr z!5&%p_0-A*)v=R$_Rzoq8Yv#8iQ_a=phY&cmGjczvMj}QI+&-EuUN?~R`ESu{6aUs z6Ywv+$|R>UtW_=YlJv4sZDq3>WQ!V?BlK?6Cij1THym|{Z9FMEl9!q#+%LcFS{m&5 E4@z9fP5=M^ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Player.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Player.class index cc9007d5b459bf5e984eb2967fc722d6c2dbd636..04914512e2377f864edc7550584c7a9d9f5786af 100644 GIT binary patch literal 7720 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 MtWtc&DE*1w08qHgQ~&?~ literal 7645 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 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerBuildFactory.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerBuildFactory.class index 42c276dd2b9a8136d5c95ff8e0e8a3555256d221..55228ea949e93a3cefb9f627293da88acf5ba84d 100644 GIT binary patch delta 504 zcmX|7%SyvQ6g@L-GcirIHP&aVefVx|D(Fg7tSD~8WpNp6&`M1urao5v2FZ^of`Wp$ z7QwA6!B6l9#5<`9!`!)N&N=tYd`(@ci!a{~PXHEB)(}NrU|a)7Ud4p0lLAu$(;5Ww zUC=NiFe^~-W2_ufQS_JDyT8H<32oz|W}kTVrgJJVCs6X8@Pd*+FGJb?WU1o1Yg=B+ zwJWW9V}H}Cc}@3{A@&DvwT>-E#~@6G90_v%Ti8%_#1Ug;CV>y7do+GzompnXat_R$ zy(7EkF=!>zwNFjgIye0-vBXyWS2o{XlLM-C@37L`zg$9=qDSeK9K+BN14DPv^$<=Y z=o})9;?izVXHsQUBeVBlHvzSeb|nDgNYYvF5YUeS>KH{IB6}&Wg15;JNIrt^-Xqi- zzC+|03a#zpHC=E>H~GIHy@6EVnCXaq9Z61MWmJQBBgElI6JMb^iZQ6j{Kw4)PC)b# Xf(EL$X>`fdESS?tZBUmbj3f60)v8I& literal 5105 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 delta 1805 zcmYjQd2o|e5dUqi_vP!CrcFaQ8peW*N@c8$!Z?(nlcurFOw)9d)LIajVrwndwx$Is zDiJINEN4FtR1on11O>4b5EM^5K=2k14#fix4i6}Y9PUdS$Upmbe{bLJzTfV)Uwv$7 zY{&U6+W_1^4i%%Y)QXWD(qM%#d?94RXDIg#(G6+odR7dTr%*h*eJD4F$J5Y@|wUF6>e;m;&mzB5ZI<7 z3va4;3vUa&Bk-<@A$U(B1VyS}9 z<@tq*FY%RvujP04DELOfw+g-!HheG3+bgh7V85P1zL?1y^b{MJlQe?G8!RpLg`|~E zF!@8l5~({_FANqJNIipK^#=1j#SwqRCjlox@fQbtCB1eZLW-v>Ea@Y z0>38^EQyEc%i%(0`4#f2UySd30bj_|6TUx33wugSi~ON@^Z^8OBv|ShBb_t((i8AS ziYmepX}dX4fj<=24P1R;$aAwV{uevnggrg!QaMC85-f?wBR1GA9G35mY;?97rWtGp z1o8xa;I1&2dWyNp7)6sl!#uFO9t|2EN0Y#h8V=$ofuA+}0*{7Yr5KGo4TtcX!0#IV zz@GvKG#the4M%Z|kUFVyN@Y%6WqnOfeoJ$;hQIK)hJWy{e!@KHwkVEkIDu{rCvl3< z_mXqCIa*s^lRvq(uBtjJa9YC|v}^beXPN#S-_*v2XmeAJhI2Si(BkiE8**-{t>Y9? zT+j$y0{``h-eMV?5+#Emqedn&>nkl@qlJWi*fPQrC57PD$D7=P1z9yxW!+IqAs9IhUej?Ai#msDMq)!dM!;ZY{k(P&>6T-K|6$rrQ)A}Z0 z>u#N#PW@1Z-Pb>XVMDU(fL=H)Ga1cHIBSi`uv^b{=JV1_ce-Nsgo~xB*JT4!Xn>@8 z43iBe)5ViLjORL^C;Jwjn+BekHlCGbJS|;3DLZ*q4)UCwMk_DhEV>eHG#axhf;n_2 i=F&{G(-O?1byz^#v5@wnBe6M7*@=s*^F%!Llm7$Xk$`3Z diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Game.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Game.class index 21696859de2b812aa1d2089167bd1837d64e6bc5..3a3d32c091a347f752f48ce06a07faaaa11909e2 100644 GIT binary patch delta 3248 zcmaJ@30RZo9sm7F;7h)|B1Dl}oq*K@LBJbCQM|#UD2lgKgeU?+yjxSNwY9cZ`}I)i zt+lpYr-cpTQD?X5*3R0)-CNhKJG!pxx!ZMizc-1%vpvtAJbB;$`@iqxRLO@E1Fu~_ za~{A5dCtT}Tru#5i6~rg!jCr{c+14wxT-NfaNvgy{K&+Q@e@t_sRKWA;O83rg#+*C z`LSf;_++!e$T*f4E)w!+6353M*t=g@Hb0V_L8*A zuj}WBCjNwvqUjefuR2}7KGw%420k@$lXmkn6GL%DAD?U4KkMT!CYteA1AjA-i@zKA zhlxDR`%eScOpMU%1^Acd{6a(jHgG*)Vr)3tFAbrCMIweoImG4=J9#8pqhcr`29=7# z6sMS`xJ0=DanqpmaYMxIMiiftC`qOyONvQ}R8!I$2 zz>vWv7RXKd7@|=_HRN%U*Q*7x-LOlh8_`;zKn59-%LL1C8)W24Q}QHVKMR;m8KI4i zG-Q;CH8NTYk1=Gd3qBcVNTCbsq)4l9XlT4f7rUh21aW8&CmK?svvOj9yl zW>~|`OxH{$v!qPn5gf8sm{}=@aY)cRC%3t#CAYeMV{>KBre?pw5t5r?6Rbviv=uaS z9IaBWa3A(tADdHLtukBTejE_=54lj`${*A!a}>5=yOOyw&ybsyRLFcK3#3xXLhWsC zi1nPSG+_}=DD1&q3b*1mB~`LmFeF6HR|zq#GXDm1wc63ERhB5+fn7?L${gz>RTQ%u zy96HcXQ=X;mX=kuH43e=%v#=STwuAZP_j~1Dcnxgcn;4SQmy0`S#3y-k~LB*h?~R= zwfLJ?HI>)+>l#v|o%*5ZfU+Olpe5FGmD}hm=K38CGha z-M#$Msym*+=7lI3)*F4U#|ff`Or1KkQj;DNEVbswOtAVU1gPV2jeDZKHKANGpH%Xc zJfrX$URC&>J}%+A3K#K;!UcW2jPsUC94XIQlM+9$pAckOpCu+*4M~Pop5%@9b6Wy# zICLz8oYu~ygn(cN;V1;))J=gK@116~SSR1lCkhAbCa;w@fpcBIh=2dkfpLapkS&Se&vJ<1)F}e+-ZMF`K2@}SW zFfK$WY(rrWLQz$`9I$s{Jc(t|FQd51=AKYdWp_`kDED@ti9b7+rjZcsp}?oTYgdCkQdGqzX?`n9)o&oor?_m+_2bM8ynZ z5?*3M&|iF=1wRKLr+NdSC{rxO9%eEfrptx^KEY1nP>1n>U5?1$>(xUt~Ql(c@P!h>K?!E{DAE zgw@kWE|LJ*JnYX7T34L?P9mcyl7t{38$IKXLBzB5tP}?q89}TLqNeOD)>OG%UR%D) zo#eIWccQl3(}onzR$X@v`G0~UZ^FP^%-h@aiXmKvqi1_S?c%ST7;5&@i>y;^!pF;LxN8L delta 3315 zcmZWr30PFu75)!1!yDdQ5e5O-6cG_;5Cp{?+;EA48*ZpkF&IHX6cCprPK?o*n5fCi z;)ZdFS&T__XkZjgv`yNq)uc_EF19so)7o@N(sWPL{&!{+n#}jjJLjHzw)@|6&U+t^ zJw49%=9lMQ1~5ckG_e6!47_V10#~BYjQ5=QzKI{;eJ%N+6F+j|0~0^SPxR(bo%op( zS2g={Cw`&nFAZFC;zJX$_?2G&+Q4rNd}J?K3)oAB04Cz`TfOr;1J_NYFq{v+H<5;q zwe%16aj9>=qnCd)@hAM*!MuQ3%hUAg6aDzqz-K1<>oosjVgRn_$LHGiul8{lb%4L& z?|S(U6HWN1fq$9E$G;7HVPdeh`j3GxO$^nBh4?QueL|x`5kn$Oj0&DxY=+oP6pO=< zNT(Q1acY$)Ei!2$E;gH*KL2lS3+YN`-FO)1p1`}!- zVuKVeGo?_5>g6!vD#LZq5r&L3Q7xmi@n}PeTv#o|hKzBcPR42%%7yeg8K>prT{1zG z&alLgi5k5thDvl({?q8sb#>zk@;YgSe_)vQ@* z$Sq2y$}}aVQf6hDnXc(dX2?v1{WxIFHT$IH|-EyI=JY?0Xt591Ll-!(O(MamWK#9d0}$Xr9_DVZ+| zlvKzN!ntZRM?684Y^gx5?QLS1wJLqq*9O_)Jj+Jku9>|hS5y5 zC8kA|E8L6i+M--AEU1?k6>UkkgvcG(F7VtGjqMg?YmwWm(rzPtRkA|K?Xptg9tOel zIAut+k{VfM$Z93EQYVNRPskdZ8YCwrV+hvE6`v{)w#Caw6>*WL3q-2-up!$RSKV&V5PEFe_TMXHwWUoA|c{JNL*cvlw!*jc;}u-A-cKl$Ql>D%E3~$8UG)p~VMS0^fBk#iv*$b`H-t)JiW7)hw))T&%-UhE5N`NC(FW zryX8A#XA=2rs4#iW}44X%TDm0S&0opJ%yqFeVOw>E2!G$M)vH+%c0+zvQ2J6{D81#5e zVkKv>9tX1;hq3xbawh9@C4@ry@B&`slF{)EHi0lTjvbvEWuNh2IRc~}F>SYbihd9tbORInNBEO!SEvK$T}k$f^!?M-xZh<+aNFC@0bJl1#~ zWD1Wm1FgL54%Fa0@ALu>`AR1OKEiYZfz9w!RewluM1~RA#ZY#J&13aemip174aviinD1)R)A1SgRLukt=#W5%x|18-m;-qKn4 z;0gIBa(V@7U1Gmzb57&1`Sh@PT+StHTdxG)5$Z(;9lk{UHr{if zi-$NO_ZngN4z>7=H8RcAE)mVU-j+#f9HIE zeEpayZK&^rF?7tGT^w~DlkcFgc}@73{cb4Dm+OG>F>`-?sG2sg^9CvUyZd8tk(HcUoL)92c{LU_}qVTFO z2(J_G@a+-m`*B1>|I+x*XzV}}=ll9rZs#eU>aD=8>sH)OfTYY(tnJm`=rtm%P zN8qwNM{06nJ|oY|vq+Lyu8R>V`inVEdPsahnC&U?VJ=CM!(9KHvizG|fh7MA$QpsJ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class index 9423ef2d8bb5a5ece075ca1f22cac00a43a2085f..06da9bfea660404eb34cbae2cba558f54f81de04 100644 GIT binary patch literal 7979 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 delta 3398 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 literal 12792 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 diff --git a/res/graphics/fonts/ascii_majuscule.png b/res/graphics/fonts/ascii_majuscule.png index 4a9db67878b650bbf0851f702c5ae7f2cade1c75..0ebf46b8945ee3af7b3c72d8b9319e1ca8763d0d 100644 GIT binary patch literal 3660 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 X%T2utF(E$`05nvNDd#GlI{*Iw#tCn3 diff --git a/res/graphics/fonts/ascii_majuscule_black.png b/res/graphics/fonts/ascii_majuscule_black.png index 4ed95f6a0e9d312be0e8242e9610783e46c8b1e9..3b3677e15eccb6157b23aac50f3df16c50083f11 100644 GIT binary patch literal 3459 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 diff --git a/res/graphics/fonts/ascii_special_ef_black.png b/res/graphics/fonts/ascii_special_ef_black.png index b1f14a604426848ec278bf734bd71ddebe588e2d..cbc5f59b77e993d20dd657a79c15fcf8947dd2fe 100644 GIT binary patch delta 316 zcmV-C0mJ^!0?GoA7k?-S0{{R3UcQYp0000CP)t-s00030|Nj6000000$lG@d00003 zbW%=J004j&&PV2`gA)YJ!5}zu^ns1`9g}!YJx;*a9mw5W;H%Jexo5kO}UodX1I< O0000ruv28S?~Rgw zN2h=3VN3jz-Zb@J#U(D2p0=x6gWjH*X!_LAWSYE?ZI;agWr+$| zk^1h7YovXO>b&<~G~OR0B_Q}k@u&uWm%@^5d}6Dfi@tu)CAKeH_KfTzHmA>~2AMhg zIeaY-OIlThcrVD1U3Yu;qRm@eUFt;wKff`##^lCuhR0cW|2o0%XXe>f+c8?SCP>dQ R`uQCcFrKb{F6*2UngA=Gfa3rF diff --git a/res/graphics/terrain/terrainplusplus.png b/res/graphics/terrain/terrainplusplus.png index 019e10da06c60c562064aec4da0adf9bce117c50..1bc4ad56d35acd4a3cc80c1f8f0202be1079fdf2 100644 GIT binary patch literal 96073 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Ï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 QDi|2yrxF6$PhP$LUxkx7l>h($ diff --git a/res/raw/CreatureHuman.json b/res/raw/CreatureHuman.json index 64919fac5..ee06e0c89 100644 --- a/res/raw/CreatureHuman.json +++ b/res/raw/CreatureHuman.json @@ -18,6 +18,13 @@ "scale" : 1, "scalevariable" : [100,100,100,100,100,100,100], + "speed" : 2.0, + "speedvariable" : [100,100,100,100,100,100,100], + + "jump" : 5.5, + "jumpvariable" : [100,100,100,100,100,100,100], + "encumbrance" : 1000, "basedefence" : "work in progress" + } \ No newline at end of file diff --git a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java index a6a3244d6..e707d7242 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java +++ b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java @@ -16,6 +16,10 @@ import org.newdawn.slick.Graphics; */ public class ActorWithBody implements Actor, Visible, Glowing { + ActorValue actorValue; + + ActorInventory inventory; + private @NotNull float hitboxTranslateX; // relative to spritePosX private @NotNull float hitboxTranslateY; // relative to spritePosY private @NotNull int baseHitboxW; @@ -29,8 +33,8 @@ public class ActorWithBody implements Actor, Visible, Glowing { * veloY += 3.0 * +3.0 is acceleration. You __accumulate__ acceleration to the velocity. */ - private @NotNull float veloX, veloY, veloMax; - + private @NotNull float veloX, veloY; + private final float VELO_HARD_LIMIT = 10000; private boolean grounded = false; @@ -75,6 +79,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { public ActorWithBody() { referenceID = new HighQualityRandom(0x7E22A211AAL).nextLong(); + actorValue = new ActorValue(); } public void setHitboxDimension(int w, int h, int tx, int ty) { @@ -118,13 +123,21 @@ public class ActorWithBody implements Actor, Visible, Glowing { baseSpriteWidth = sprite.getWidth(); gravitation = Game.map.getGravitation(); - applyGravitation(); + if (!playerNoClip()) { + applyGravitation(); + } - //Set 'next' positions to fiddle with + // hard limit velocity + if (veloX > VELO_HARD_LIMIT) veloX = VELO_HARD_LIMIT; + if (veloY > VELO_HARD_LIMIT) veloY = VELO_HARD_LIMIT; + + // Set 'next' positions to fiddle with updateNextHitbox(delta_t); - updateVerticalPos(); - updateHorizontalPos(); + if (!playerNoClip()) { + updateVerticalPos(); + updateHorizontalPos(); + } // Apply previous fiddling updateHitbox(); @@ -204,26 +217,21 @@ public class ActorWithBody implements Actor, Visible, Glowing { sprite.update(delta_t); } - boolean collideBottomAndAdjust() { + boolean collideBottomAndAdjusted() { // noclip off? - if (!(this instanceof Player && ((Player) this).isNoClip())) { - int feetTileX = clampWtile(Math.round((nextHitbox.getPointedX()) / TSIZE)); - int feetTileY = clampHtile(FastMath.floor(nextHitbox.getPointedY() / TSIZE)); + int feetTileX = clampWtile(Math.round((nextHitbox.getPointedX()) / TSIZE)); + int feetTileY = clampHtile(FastMath.floor(nextHitbox.getPointedY() / TSIZE)); - if (feetTileX < 0) feetTileX = 0; - if (feetTileY < 0) feetTileY = 0; + if (feetTileX < 0) feetTileX = 0; + if (feetTileY < 0) feetTileY = 0; - int feetTile = Game.map.getTileFromTerrain(feetTileX, feetTileY); + int feetTile = Game.map.getTileFromTerrain(feetTileX, feetTileY); - if (feetTile != 0) { - nextHitbox.setPositionYFromPoint( - feetTileY * TSIZE - ); - return true; - } - else { - return false; - } + if (feetTile != 0) { + nextHitbox.setPositionYFromPoint( + feetTileY * TSIZE + ); + return true; } else { return false; @@ -236,6 +244,8 @@ public class ActorWithBody implements Actor, Visible, Glowing { * Apply only if not grounded; normal force is not implemented (and redundant) * so we manually reset G to zero (not applying G. force) if grounded. */ + // FIXME abnormal jump behaviour if mass == 1, same thing happens if mass == 0 but zero mass + // is invalid anyway. private void applyGravitation() { if (!isGrounded()) { /** @@ -250,22 +260,19 @@ public class ActorWithBody implements Actor, Visible, Glowing { float A = scale * scale; float D = DRAG_COEFF * 0.5f * 1.292f * veloY * veloY * A; - veloY += ((W - D) / mass) * SI_TO_GAME_ACC * G_MUL_PLAYABLE_CONST; + veloY += clampCeil(((W - D) / mass) * SI_TO_GAME_ACC * G_MUL_PLAYABLE_CONST + , VELO_HARD_LIMIT + ); } } private void updateVerticalPos() { - if (!playerNoClip()) { - if (collideBottomAndAdjust()) { - grounded = true; - veloY = 0; - } - else { - grounded = false; - } + if (collideBottomAndAdjusted()) { + grounded = true; + veloY = 0; } else { - grounded = true; + grounded = false; } } @@ -363,6 +370,10 @@ public class ActorWithBody implements Actor, Visible, Glowing { return x & 0b1111; } + private static float clampCeil(float x, float ceil) { + return (Math.abs(x) > ceil ? ceil : x); + } + public void setVisible(boolean visible) { this.visible = visible; } @@ -383,10 +394,6 @@ public class ActorWithBody implements Actor, Visible, Glowing { this.veloY = veloY; } - public void setVeloMax(float veloMax) { - this.veloMax = veloMax; - } - public void setGrounded(boolean grounded) { this.grounded = grounded; } @@ -411,10 +418,6 @@ public class ActorWithBody implements Actor, Visible, Glowing { return veloY; } - public float getVeloMax() { - return veloMax; - } - public boolean isGrounded() { return grounded; } diff --git a/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java b/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java new file mode 100644 index 000000000..e7a778fde --- /dev/null +++ b/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java @@ -0,0 +1,122 @@ +package com.Torvald.Terrarum.Actors; + +import com.Torvald.Rand.Fudge3; +import com.Torvald.Rand.HighQualityRandom; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.newdawn.slick.SlickException; + +import java.io.IOException; +import java.nio.file.FileSystems; +import java.nio.file.Files; + +/** + * Created by minjaesong on 16-02-05. + */ +public class CreatureBuildFactory { + + private static final String JSONPATH = "./res/raw/"; + private static String jsonString = new String(); + + public ActorWithBody build(String jsonFileName) throws IOException, SlickException { + JsonObject jsonObj = readJson(jsonFileName); + ActorWithBody actor = new ActorWithBody(); + + + String[] elementsString = { + "racename" + , "racenameplural" + }; + + String[] elementsFloat = { + "baseheight" + , "basemass" + , "toolsize" + , "encumbrance" + }; + + String[] elementsFloatVariable = { + "baseheight" + , "strength" + , "speed" + , "jumppower" + , "scale" + , "speed" + , "jump" + }; + + + setAVStrings(actor, elementsString, jsonObj); + setAVFloats(actor, elementsFloat, jsonObj); + setAVFloatsVariable(actor, elementsFloatVariable, jsonObj); + + + actor.inventory = new ActorInventory((int) actor.actorValue.get("encumberance"), true); + + + return actor; + } + + /** + * Fetch and set actor values that have 'variable' appended. E.g. strength + * @param p + * @param elemSet + * @param jsonObject + */ + private void setAVFloatsVariable(ActorWithBody p, String[] elemSet, JsonObject jsonObject) { + for (String s : elemSet) { + float baseValue = jsonObject.get(s).getAsFloat(); + // roll fudge dice and get value [-3, 3] as [0, 6] + int varSelected = new Fudge3().create(new HighQualityRandom()).roll() + 3; + // get multiplier from json. Assuming percentile + int multiplier = jsonObject.get(s + "variable").getAsJsonArray().get(varSelected).getAsInt(); + float realValue = baseValue * multiplier / 100f; + + p.actorValue.set(s, realValue); + } + } + + /** + * Fetch and set string actor values + * @param p + * @param elemSet + * @param jsonObject + */ + private void setAVStrings(ActorWithBody p, String[] elemSet, JsonObject jsonObject) { + for (String s : elemSet) { + p.actorValue.set(s, jsonObject.get(s).getAsString()); + } + } + + /** + * Fetch and set float actor values + * @param p + * @param elemSet + * @param jsonObject + */ + private void setAVFloats(ActorWithBody p, String[] elemSet, JsonObject jsonObject) { + for (String s : elemSet) { + p.actorValue.set(s, jsonObject.get(s).getAsFloat()); + } + } + + private JsonObject readJson(String jsonFileName) throws IOException { + readJsonFileAsString(jsonFileName); + + JsonParser jsonParser = new JsonParser(); + JsonObject jsonObj = jsonParser.parse(jsonString).getAsJsonObject(); + + return jsonObj; + } + + private void readJsonFileAsString(String filename) throws IOException { + Files.lines( + FileSystems.getDefault().getPath(JSONPATH + filename) + ).forEach(this::strAppend); + } + + private void strAppend( String s) { + jsonString += s; + } + +} diff --git a/src/com/Torvald/Terrarum/Actors/PBFSigrid.java b/src/com/Torvald/Terrarum/Actors/PBFSigrid.java index 6fe6ceb09..29a57f005 100644 --- a/src/com/Torvald/Terrarum/Actors/PBFSigrid.java +++ b/src/com/Torvald/Terrarum/Actors/PBFSigrid.java @@ -12,10 +12,6 @@ public class PBFSigrid { public Player build() throws SlickException { Player p = new Player(); - p.referenceID = Game.PLAYER_REF_ID; - - p.setVisible(true); - p.sprite = new SpriteAnimation(); p.sprite.setDimension(28, 50); p.sprite.setSpriteImage("res/graphics/sprites/test_player.png"); @@ -35,12 +31,12 @@ public class PBFSigrid { p.actorValue = new ActorValue(); p.actorValue.set("scale", 1.0f); - p.actorValue.set("speed", 3.0f); + p.actorValue.set("speed", 4.0f); p.actorValue.set("speedmult", 1.0f); p.actorValue.set("accel", p.WALK_ACCEL_BASE); p.actorValue.set("accelmult", 1.0f); - p.actorValue.set("jumppower", 6f); + p.actorValue.set("jumppower", 6.5f); // in frames p.actorValue.set("jumplength", 30f); @@ -58,6 +54,8 @@ public class PBFSigrid { p.inventory = new ActorInventory((int) p.actorValue.get("encumbrance"), true); + p.setPosition(2048 * 16, 300 * 16); + return p; } diff --git a/src/com/Torvald/Terrarum/Actors/Player.java b/src/com/Torvald/Terrarum/Actors/Player.java index 09fc7dd7f..3a5b104dc 100644 --- a/src/com/Torvald/Terrarum/Actors/Player.java +++ b/src/com/Torvald/Terrarum/Actors/Player.java @@ -1,5 +1,6 @@ package com.Torvald.Terrarum.Actors; +import com.Torvald.Terrarum.Game; import com.Torvald.Terrarum.GameControl.EnumKeyFunc; import com.Torvald.Terrarum.GameControl.KeyMap; import com.Torvald.spriteAnimation.SpriteAnimation; @@ -15,8 +16,6 @@ public class Player extends ActorWithBody implements Controllable, Pocketed { @Nullable public Controllable vehicleRiding; - ActorValue actorValue; - int jumpPowerCounter = 0; int walkPowerCounter = 0; private final int WALK_FRAMES_TO_MAX_ACCEL = 6; @@ -27,8 +26,6 @@ public class Player extends ActorWithBody implements Controllable, Pocketed { @NotNull int walkHeading; - ActorInventory inventory; - private final int LEFT = 1; private final int RIGHT = 2; @@ -51,7 +48,8 @@ public class Player extends ActorWithBody implements Controllable, Pocketed { */ public Player() throws SlickException { super(); - actorValue = new ActorValue(); + referenceID = Game.PLAYER_REF_ID; + setVisible(true); } @Override diff --git a/src/com/Torvald/Terrarum/Actors/PlayerBuildFactory.java b/src/com/Torvald/Terrarum/Actors/PlayerBuildFactory.java index b5d009daa..20994ec65 100644 --- a/src/com/Torvald/Terrarum/Actors/PlayerBuildFactory.java +++ b/src/com/Torvald/Terrarum/Actors/PlayerBuildFactory.java @@ -19,102 +19,13 @@ public class PlayerBuildFactory { private static String jsonString = new String(); public Player build(String jsonFileName) throws IOException, SlickException { - JsonObject jsonObj = readJson(jsonFileName); - Player p = new Player(); + Player p = (Player) (new CreatureBuildFactory().build("CreatureHuman")); + // attach sprite - String[] elementsString = { - "racename" - , "racenameplural" - }; - - String[] elementsFloat = { - "baseheight" - , "basemass" - , "toolsize" - , "encumbrance" - }; - - String[] elementsFloatVariable = { - "baseheight" - , "strength" - , "speed" - , "jumppower" - , "scale" - }; - - - setAVStrings(p, elementsString, jsonObj); - setAVFloats(p, elementsFloat, jsonObj); - setAVFloatsVariable(p, elementsFloatVariable, jsonObj); - - - p.inventory = new ActorInventory((int) p.actorValue.get("encumberance"), true); - + // do etc. return p; } - /** - * Fetch and set actor values that have 'variable' appended. E.g. strength - * @param p - * @param elemSet - * @param jsonObject - */ - private void setAVFloatsVariable(Player p, String[] elemSet, JsonObject jsonObject) { - for (String s : elemSet) { - float baseValue = jsonObject.get(s).getAsFloat(); - // roll fudge dice and get value [-3, 3] as [0, 6] - int varSelected = new Fudge3().create(new HighQualityRandom()).roll() + 3; - // get multiplier from json. Assuming percentile - int multiplier = jsonObject.get(s + "variable").getAsJsonArray().get(varSelected).getAsInt(); - float realValue = baseValue * multiplier / 100f; - - p.actorValue.set(s, realValue); - } - } - - /** - * Fetch and set string actor values - * @param p - * @param elemSet - * @param jsonObject - */ - private void setAVStrings(Player p, String[] elemSet, JsonObject jsonObject) { - for (String s : elemSet) { - p.actorValue.set(s, jsonObject.get(s).getAsString()); - } - } - - /** - * Fetch and set float actor values - * @param p - * @param elemSet - * @param jsonObject - */ - private void setAVFloats(Player p, String[] elemSet, JsonObject jsonObject) { - for (String s : elemSet) { - p.actorValue.set(s, jsonObject.get(s).getAsFloat()); - } - } - - private JsonObject readJson(String jsonFileName) throws IOException { - readJsonFileAsString(jsonFileName); - - JsonParser jsonParser = new JsonParser(); - JsonObject jsonObj = jsonParser.parse(jsonString).getAsJsonObject(); - - return jsonObj; - } - - private void readJsonFileAsString(String filename) throws IOException { - Files.lines( - FileSystems.getDefault().getPath(JSONPATH + filename) - ).forEach(this::strAppend); - } - - private void strAppend( String s) { - jsonString += s; - } - } diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java b/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java index ae26bc9b3..1e7f5e4eb 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java @@ -21,28 +21,33 @@ public class ExportMap implements ConsoleCommand { private int mapDataPointer = 0; private static final byte AIR = 0; - private static final byte COAL = 16; - private static final byte COPPER = 17; - private static final byte IRON = 18; - private static final byte GOLD = 19; - private static final byte COBALTITE = 20; - private static final byte ILMENITE = 21; - private static final byte AURICHALCUM = 22; - - private static final byte DIAMOND = 23; - private static final byte RUBY = 24; - private static final byte EMERALD = 25; - private static final byte SAPPHIRE = 26; - private static final byte TOPAZ = 27; - private static final byte AMETHYST = 28; - - private static final byte DIRT = 2; - private static final byte GRAVEL = 15; - private static final byte SAND = 14; private static final byte STONE = 1; + private static final byte DIRT = 2; private static final byte GRASS = 3; + private static final byte SAND = 13; + private static final byte GRAVEL = 14; + + private static final byte COPPER = 15; + private static final byte IRON = 16; + private static final byte GOLD = 17; + private static final byte SILVER = 18; + private static final byte ILMENITE = 19; + private static final byte AURICHALCUM = 20; + + private static final byte DIAMOND = 21; + private static final byte RUBY = 22; + private static final byte EMERALD = 23; + private static final byte SAPPHIRE = 24; + private static final byte TOPAZ = 25; + private static final byte AMETHYST = 26; + + private static final byte SNOW = 27; + private static final byte ICE_FRAGILE = 28; + private static final byte ICE_NATURAL = 29; + private static final byte ICE_MAGICAL = 30; + private static final byte WATER = (byte) 239; private static final byte LAVA = (byte) 255; @@ -121,11 +126,9 @@ public class ExportMap implements ConsoleCommand { colorTable.put(DIRT, new Col12(0x763)); colorTable.put(GRASS, new Col12(0x251)); - colorTable.put(COAL, new Col12(0x221)); colorTable.put(COPPER, new Col12(0x6A8)); colorTable.put(IRON, new Col12(0xC75)); colorTable.put(GOLD, new Col12(0xCB6)); - colorTable.put(COBALTITE, new Col12(0xDCD)); colorTable.put(ILMENITE, new Col12(0x8AB)); colorTable.put(AURICHALCUM, new Col12(0xD92)); @@ -142,6 +145,11 @@ public class ExportMap implements ConsoleCommand { colorTable.put(SAND, new Col12(0xDCA)); colorTable.put(GRAVEL, new Col12(0x664)); + colorTable.put(ICE_NATURAL, new Col12(0x9AB)); + colorTable.put(ICE_MAGICAL, new Col12(0x7AC)); + colorTable.put(ICE_FRAGILE, new Col12(0x6AF)); + colorTable.put(SNOW, new Col12(0xCDE)); + } diff --git a/src/com/Torvald/Terrarum/Game.java b/src/com/Torvald/Terrarum/Game.java index 3b320524a..ccb9ba2a1 100644 --- a/src/com/Torvald/Terrarum/Game.java +++ b/src/com/Torvald/Terrarum/Game.java @@ -1,5 +1,6 @@ package com.Torvald.Terrarum; +import com.Torvald.Rand.HighQualityRandom; import com.Torvald.Terrarum.Actors.*; import com.Torvald.Terrarum.ConsoleCommand.CommandDict; import com.Torvald.Terrarum.GameControl.GameController; @@ -73,6 +74,7 @@ public class Game { MapGenerator.attachMap(map); MapGenerator.setSeed(0x51621D); + //MapGenerator.setSeed(new HighQualityRandom().nextLong()); MapGenerator.generateMap(); new CommandDict(); @@ -80,7 +82,6 @@ public class Game { // add new player and put it to actorContainer //player = new Player(); player = new PBFSigrid().build(); - player.setPosition(24, 24); //player.setNoClip(true); actorContainer.add(player); diff --git a/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java b/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java index c57a7747c..909130a2f 100644 --- a/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java +++ b/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java @@ -8,6 +8,8 @@ import com.Torvald.Terrarum.GameMap.MapLayer; import com.jme3.math.FastMath; import org.newdawn.slick.*; +import java.util.Arrays; + /** * Created by minjaesong on 16-01-19. */ @@ -35,8 +37,6 @@ public class MapCamera { private static int renderWidth; private static int renderHeight; - private static final int TILE_AIR = 0; - private static final int NEARBY_TILE_KEY_UP = 0; private static final int NEARBY_TILE_KEY_RIGHT = 1; private static final int NEARBY_TILE_KEY_DOWN = 2; @@ -47,6 +47,47 @@ public class MapCamera { private static final int NEARBY_TILE_CODE_DOWN = 0b0100; private static final int NEARBY_TILE_CODE_LEFT = 0b1000; + private static final byte AIR = 0; + + private static final byte STONE = 1; + private static final byte DIRT = 2; + private static final byte GRASS = 3; + + private static final byte SAND = 13; + private static final byte GRAVEL = 14; + + private static final byte COPPER = 15; + private static final byte IRON = 16; + private static final byte GOLD = 17; + private static final byte SILVER = 18; + private static final byte ILMENITE = 19; + private static final byte AURICHALCUM = 20; + + private static final byte SNOW = 27; + private static final byte ICE_FRAGILE = 28; + private static final byte ICE_NATURAL = 29; + private static final byte ICE_MAGICAL = 30; + + private static final Byte[] TILES_CONNECT_SELF = { + COPPER + , IRON + , GOLD + , SILVER + , ILMENITE + , AURICHALCUM + , ICE_MAGICAL + }; + + private static final Byte[] TILES_DARKEN_AIR = { + STONE + , DIRT + , GRASS + , SAND + , GRAVEL + , SNOW + , ICE_NATURAL + }; + /** * @param map * @param tileSize @@ -146,7 +187,24 @@ public class MapCamera { ) { if (mode == TERRAIN) { - int nearbyTilesInfo = getNearbyTilesInfo(x, y, TILE_AIR); + int nearbyTilesInfo; + //if (thisTile == DIRT) { + // nearbyTilesInfo = getGrassInfo(x, y, GRASS); + //} + //else { + // nearbyTilesInfo = getNearbyTilesInfo(x, y, AIR); + //} + + if (isDarkenAir((byte) thisTile)) { + nearbyTilesInfo = getNearbyTilesInfo(x, y, AIR); + } + else if (isConnectSelf((byte) thisTile)) { + nearbyTilesInfo = getNearbyTilesInfo(x, y, thisTile); + } + else { + nearbyTilesInfo = 0; + } + int thisTileX = nearbyTilesInfo; int thisTileY = thisTile; @@ -164,6 +222,10 @@ public class MapCamera { tilesetBook[mode].endUse(); } + private static int getGrassInfo(int x, int y, int from, int to) { + return 0; + } + /** * * @param x @@ -172,22 +234,23 @@ public class MapCamera { */ private static int getNearbyTilesInfo(int x, int y, int mark) { int[] nearbyTiles = new int[4]; - if (x == 0) { nearbyTiles[NEARBY_TILE_KEY_LEFT] = 0; } - if (x == map.width - 1) { nearbyTiles[NEARBY_TILE_KEY_RIGHT] = 0; } - if (y == 0) { nearbyTiles[NEARBY_TILE_KEY_UP] = 0; } - if (y == map.height - 1) { nearbyTiles[NEARBY_TILE_KEY_DOWN] = 0; } - try { - nearbyTiles[NEARBY_TILE_KEY_UP] = map.getTileFromTerrain(x, y - 1); - nearbyTiles[NEARBY_TILE_KEY_DOWN] = map.getTileFromTerrain(x, y + 1); - nearbyTiles[NEARBY_TILE_KEY_LEFT] = map.getTileFromTerrain(x - 1, y); - nearbyTiles[NEARBY_TILE_KEY_RIGHT] = map.getTileFromTerrain(x + 1, y); - } - catch (ArrayIndexOutOfBoundsException e) { } + if (x == 0) { nearbyTiles[NEARBY_TILE_KEY_LEFT] = 0xFF; } + else { nearbyTiles[NEARBY_TILE_KEY_LEFT] = map.getTileFromTerrain(x - 1, y); } + if (x == map.width - 1) { nearbyTiles[NEARBY_TILE_KEY_RIGHT] = 0xFF; } + else { nearbyTiles[NEARBY_TILE_KEY_RIGHT] = map.getTileFromTerrain(x + 1, y); } + + if (y == 0) { nearbyTiles[NEARBY_TILE_KEY_UP] = 0; } + else { nearbyTiles[NEARBY_TILE_KEY_UP] = map.getTileFromTerrain(x, y - 1); } + + if (y == map.height - 1) { nearbyTiles[NEARBY_TILE_KEY_DOWN] = 0xFF; } + else { nearbyTiles[NEARBY_TILE_KEY_DOWN] = map.getTileFromTerrain(x, y + 1); } + + // try for int ret = 0; for (int i = 0; i < 4; i++) { if (nearbyTiles[i] == mark) { - ret += (1 << i); // write 1, 2, 4, 8 for i = 0, 1, 2, 3 + ret += (1 << i); // add 1, 2, 4, 8 for i = 0, 1, 2, 3 } } @@ -332,4 +395,12 @@ public class MapCamera { public static int getRenderEndY() { return clampHTile(getRenderStartY() + div16(renderHeight) + 2); } + + private static boolean isConnectSelf(byte b) { + return (Arrays.asList(TILES_CONNECT_SELF).contains(b)); + } + + private static boolean isDarkenAir(byte b) { + return (Arrays.asList(TILES_DARKEN_AIR).contains(b)); + } } diff --git a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java index ea23bbad0..eb678bec7 100644 --- a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java +++ b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java @@ -17,53 +17,63 @@ public class MapGenerator { private static int[] heightMap; private static int dirtThickness; - private static int terrainHeightFromZeroPoint; + private static int TERRAIN_AVERAGE_HEIGHT; private static int minimumFloatingIsleHeight; private static final float noiseGradientStart = 0.67f; private static final float noiseGradientEnd = 0.56f; private static final float noiseGrdCaveEnd = 0.54f; - private static final float floatingIslandsProb = 0.63f; - private static final int HILL_WIDTH = 256; // power of two! + private static final int MAX_HILL_HEIGHT = 100; + + private static final int OCEAN_WIDTH = 400; + private static final int SHORE_WIDTH = 120; + private static final int MAX_OCEAN_DEPTH = 200; - private static final int OCEAN_WIDTH = 200; private static int GLACIER_MOUNTAIN_WIDTH; private static final int GLACIER_MOUNTAIN_HEIGHT = 300; - private static final int MAX_HILL_HEIGHT = 200; - private static final byte AIR = 0; - private static final byte COPPER = 16; - private static final byte IRON = 17; - private static final byte GOLD = 18; - private static final byte SILVER = 19; - - private static final byte ILMENITE = 20; - private static final byte AURICHALCUM = 21; - - private static final byte DIAMOND = 22; - private static final byte RUBY = 23; - private static final byte EMERALD = 24; - private static final byte SAPPHIRE = 25; - private static final byte TOPAZ = 26; - private static final byte AMETHYST = 27; - - private static final byte DIRT = 2; - private static final byte GRAVEL = 15; - private static final byte SAND = 14; private static final byte STONE = 1; + private static final byte DIRT = 2; + private static final byte GRASS = 3; - private static final byte SNOW = 28; - private static final byte ICE_FRAGILE = 29; - private static final byte ICE_NATURAL = 30; + private static final byte SAND = 13; + private static final byte GRAVEL = 14; + + private static final byte COPPER = 15; + private static final byte IRON = 16; + private static final byte GOLD = 17; + private static final byte SILVER = 18; + private static final byte ILMENITE = 19; + private static final byte AURICHALCUM = 20; + + private static final byte DIAMOND = 21; + private static final byte RUBY = 22; + private static final byte EMERALD = 23; + private static final byte SAPPHIRE = 24; + private static final byte TOPAZ = 25; + private static final byte AMETHYST = 26; + + private static final byte SNOW = 27; + private static final byte ICE_FRAGILE = 28; + private static final byte ICE_NATURAL = 29; + private static final byte ICE_MAGICAL = 30; + + private static final byte WATER = (byte) 239; + private static final byte LAVA = (byte) 255; @NotNull private static int worldOceanPosition; private static final int TYPE_OCEAN_LEFT = 0; private static final int TYPE_OCEAN_RIGHT = 1; + private static final int GRASSCUR_UP = 0; + private static final int GRASSCUR_RIGHT = 1; + private static final int GRASSCUR_DOWN = 2; + private static final int GRASSCUR_LEFT = 3; + public static void attachMap(GameMap map) { MapGenerator.map = map; width = map.width; @@ -71,7 +81,7 @@ public class MapGenerator { dirtThickness = (int) (100 * height / 1024f); minimumFloatingIsleHeight = (int) (25 * (height / 1024f)); - terrainHeightFromZeroPoint = height / 4; + TERRAIN_AVERAGE_HEIGHT = height / 4; GLACIER_MOUNTAIN_WIDTH = Math.round(900 * (width / 8192f)); } @@ -86,7 +96,7 @@ public class MapGenerator { random = new HighQualityRandom(seed); System.out.println("[MapGenerator] Seed: " + seed); - worldOceanPosition = random.nextInt() & 0x1; // 0 or 1 + worldOceanPosition = random.nextBoolean() ? TYPE_OCEAN_LEFT : TYPE_OCEAN_RIGHT; heightMap = raise2(MAX_HILL_HEIGHT / 2); generateOcean(heightMap); @@ -174,15 +184,13 @@ public class MapGenerator { , "Planting coals..." );*/ - //flood floodBottomLava(); - - //plant + freeze(); + fillOcean(); plantGrass(); //post-process generateFloatingIslands(); - //fillOcean(); //wire layer for (int i = 0; i < height; i++) { @@ -268,16 +276,16 @@ public class MapGenerator { if (worldOceanPosition == TYPE_OCEAN_LEFT) { noiseArrayLocal[i] = Math.round( interpolateCosine( - Math.round((float) (i) / OCEAN_WIDTH) - , -MAX_HILL_HEIGHT, oceanLeftP1 + (float) (i) / OCEAN_WIDTH + , -MAX_OCEAN_DEPTH, oceanLeftP1 ) ); } else if (worldOceanPosition == TYPE_OCEAN_RIGHT) { noiseArrayLocal[noiseArrayLocal.length - OCEAN_WIDTH + i] = Math.round( interpolateCosine( - Math.round((float) (i) / OCEAN_WIDTH) - , oceanRightP1, -MAX_HILL_HEIGHT + (float) (i) / OCEAN_WIDTH + , oceanRightP1, -MAX_OCEAN_DEPTH ) ); } @@ -437,8 +445,8 @@ public class MapGenerator { // iterate for heightmap for (int x = 0; x < width; x++) { - int medianPosition = terrainHeightFromZeroPoint; - int pillarOffset = medianPosition - fs[x] - 1; + int medianPosition = TERRAIN_AVERAGE_HEIGHT; + int pillarOffset = medianPosition - fs[x]; // for pillar length for (int i = 0; i < height - pillarOffset; i++) { @@ -589,13 +597,13 @@ public class MapGenerator { */ private static float noiseMapGetGradientQuadPoly(int func_argX, float start, float end) { float graph_gradient = - FastMath.pow(FastMath.sqr(1 - terrainHeightFromZeroPoint), -1) // 1/4 -> 3/4 -> 9/16 -> 16/9 + FastMath.pow(FastMath.sqr(1 - TERRAIN_AVERAGE_HEIGHT), -1) // 1/4 -> 3/4 -> 9/16 -> 16/9 * (start - end) / FastMath.sqr(height) * FastMath.sqr(func_argX - height) + end ; - if (func_argX < terrainHeightFromZeroPoint) { + if (func_argX < TERRAIN_AVERAGE_HEIGHT) { return start; } else if (func_argX >= height) { @@ -631,13 +639,13 @@ public class MapGenerator { */ private static float noiseMapGetGradientCubicPoly(int func_argX, float start, float end) { float graph_gradient = - -FastMath.pow(FastMath.pow(1 - terrainHeightFromZeroPoint, 3), -1) // 1/4 -> 3/4 -> 9/16 -> 16/9 + -FastMath.pow(FastMath.pow(1 - TERRAIN_AVERAGE_HEIGHT, 3), -1) // 1/4 -> 3/4 -> 9/16 -> 16/9 * (start - end) / FastMath.pow(height, 3) * FastMath.pow(func_argX - height, 3) + end ; - if (func_argX < terrainHeightFromZeroPoint) { + if (func_argX < TERRAIN_AVERAGE_HEIGHT) { return start; } else if (func_argX >= height) { @@ -673,13 +681,13 @@ public class MapGenerator { */ private static float noiseMapGetGradientMinusQuadPoly(int func_argX, float start, float end) { float graph_gradient = - -FastMath.pow(FastMath.sqr(1 - terrainHeightFromZeroPoint), -1) // 1/4 -> 3/4 -> 9/16 -> 16/9 + -FastMath.pow(FastMath.sqr(1 - TERRAIN_AVERAGE_HEIGHT), -1) // 1/4 -> 3/4 -> 9/16 -> 16/9 * (start - end) / FastMath.sqr(height) - * FastMath.sqr(func_argX - terrainHeightFromZeroPoint) + * FastMath.sqr(func_argX - TERRAIN_AVERAGE_HEIGHT) + start ; - if (func_argX < terrainHeightFromZeroPoint) { + if (func_argX < TERRAIN_AVERAGE_HEIGHT) { return start; } else if (func_argX >= height) { @@ -693,7 +701,9 @@ public class MapGenerator { private static void generateFloatingIslands() { System.out.println("[MapGenerator] Placing floating islands..."); - int nIslands = map.width / 1024; + int nIslandsMax = Math.round(map.width * 6f / 8192f); + int nIslandsMin = Math.max(2, Math.round(map.width * 4f / 8192f)); + int nIslands = random.nextInt(nIslandsMax - nIslandsMin) + nIslandsMin; int prevIndex = -1; for (int i = 0; i < nIslands; i++) { @@ -703,13 +713,14 @@ public class MapGenerator { } int[][] island = FloatingIslandsPreset.generatePreset(currentIndex, random); - int startingPosX = 1024 * i + 256 + random.nextInt(256); + int startingPosX = random.nextInt(map.width - 2048) + 1024; int startingPosY = minimumFloatingIsleHeight + random.nextInt(minimumFloatingIsleHeight); - if (random.nextFloat() >= floatingIslandsProb) { - for (int j = 0; j < island.length; j++) { - for (int k = 0; k < island[0].length; k++) { - map.getTerrainArray()[j + startingPosY][k + startingPosX] = (byte) island[j][k]; + for (int j = 0; j < island.length; j++) { + for (int k = 0; k < island[0].length; k++) { + if (island[j][k] > 0) { + map.getTerrainArray()[j + startingPosY][k + startingPosX] + = (byte) island[j][k]; } } } @@ -723,7 +734,7 @@ public class MapGenerator { for (int i = height * 14 / 15; i < height; i++) { for (int j = 0; j < width; j++) { if (map.getTerrainArray()[i][j] == 0) { - map.getTerrainArray()[i][j] = (byte) 0xFF; + map.getTerrainArray()[i][j] = LAVA; } } } @@ -734,89 +745,157 @@ public class MapGenerator { private static void plantGrass() { System.out.println("[MapGenerator] Planting grass..."); - int[] heightMap = new int[width]; //where topmost block sits - /* TODO composing dirt and stone * over certain level, use background dirt with stone 'peckles' * beetween levels, use background dirt with larger and denser stone peckles. * under another certain level, use background stone with dirt peckles. */ - for (int i = 0; i < width; i++) { - //count down until hits block 2 - int grassCounter = 0; - boolean hitDirt = false; + for (int y = TERRAIN_AVERAGE_HEIGHT - MAX_HILL_HEIGHT + ; y < TERRAIN_AVERAGE_HEIGHT + MAX_HILL_HEIGHT + ; y++) { + for (int x = 0; x < map.width; x++) { - while (grassCounter < height - 2 && map.getTerrainArray()[grassCounter][i] == 0) { - grassCounter++; + int thisTile = map.getTileFromTerrain(x, y); + + for (int i = 0; i < 9; i++) { + int nearbyTile = -1; + try { nearbyTile = map.getTileFromTerrain(x + (i / 3) - 1, y + (i % 3) - 1); } + catch (ArrayIndexOutOfBoundsException e) {} + + if (i != 4 && thisTile == DIRT && nearbyTile == AIR) { + map.getTerrainArray()[y][x] = GRASS; + break; + } + } } - - //actually hit grass or just counting halted? - if (map.getTerrainArray()[grassCounter][i] == 2) { - hitDirt = true; - } - - //System.out.println(i+" ... "+grassCounter); - - //plant grass - if (hitDirt) { - map.getTerrainArray()[grassCounter][i] = 3; - } - - //compose heightMap - heightMap[i] = grassCounter; } } - + + private static boolean isGrassOrDirt(int x, int y) { + return map.getTileFromTerrain(x, y) == GRASS || map.getTileFromTerrain(x, y) == DIRT; + } + + private static void replaceIfTerrain(byte ifTile, int x, int y, byte replaceTile) { + if (map.getTileFromTerrain(x, y) == ifTile) { + map.getTerrainArray()[y][x] = replaceTile; + } + } + + private static void replaceIfWall(byte ifTile, int x, int y, byte replaceTile) { + if (map.getTileFromWall(x, y) == ifTile) { + map.getWallArray()[y][x] = replaceTile; + } + } + /* Post-process */ private static void fillOcean() { - int oceanLeftHeight = 0; - int oceanRightHeight = 0; - - //get height - if (worldOceanPosition == TYPE_OCEAN_LEFT) { - while (map.getTerrainArray()[oceanLeftHeight][OCEAN_WIDTH] == 0) { - oceanLeftHeight++; - } - } - else if (worldOceanPosition == TYPE_OCEAN_RIGHT) { - while (map.getTerrainArray()[oceanRightHeight][map.width - 1 - OCEAN_WIDTH] == 0) { - oceanRightHeight++; - } - } - - for (int i = 0; i < OCEAN_WIDTH * 1.5; i++) { - int oceanDepthCounterLeft = 0; - int oceanDepthCounterRight = 0; + for (int ix = 0; ix < OCEAN_WIDTH * 1.5; ix++) { //flooding - if (i < OCEAN_WIDTH) { + if (ix < OCEAN_WIDTH) { if (worldOceanPosition == TYPE_OCEAN_LEFT) { - while (map.getTerrainArray()[oceanLeftHeight + oceanDepthCounterLeft][i] == 0) { - map.getTerrainArray()[oceanLeftHeight + oceanDepthCounterLeft][i] = (byte) 239; - oceanDepthCounterLeft++; + for (int y = getTerrainHeightFromHeightMap(OCEAN_WIDTH) + ; y < getTerrainHeightFromHeightMap(ix) + ; y++) { + map.getTerrainArray() + [y][ix] = WATER; } } else if (worldOceanPosition == TYPE_OCEAN_RIGHT) { - while (map.getTerrainArray()[oceanRightHeight + oceanDepthCounterRight][map.width - 1 - i] == 0) { - map.getTerrainArray()[oceanRightHeight + oceanDepthCounterRight][map.width - 1 - i] = (byte) 239; - oceanDepthCounterRight++; + for (int y = getTerrainHeightFromHeightMap(map.width - 1 - OCEAN_WIDTH) + ; y < getTerrainHeightFromHeightMap(map.width - 1 - ix) + ; y++) { + map.getTerrainArray() + [y][map.width - 1 - ix] = WATER; } } } //sand - for (int j = 0; j < 40 - (i * 40 / (OCEAN_WIDTH + 20)); j++) { //20 => seashore size + // linearly increase thickness of the sand sheet + for (int iy = 0; iy < 40 - (ix * 40 / (OCEAN_WIDTH + SHORE_WIDTH)); iy++) { if (worldOceanPosition == TYPE_OCEAN_LEFT) { - map.getTerrainArray()[oceanLeftHeight + oceanDepthCounterLeft + j][i] = 14; + int terrainPoint = getTerrainHeightFromHeightMap(ix); + + map.getTerrainArray() + [terrainPoint + iy] + [ix] = SAND; + map.getTerrainArray() + [terrainPoint + iy - 1] // clear grass and make the sheet thicker + [ix] = SAND; } else if (worldOceanPosition == TYPE_OCEAN_RIGHT) { - map.getTerrainArray()[oceanRightHeight + oceanDepthCounterRight + j][map.width - 1 - i] = SAND; + int terrainPoint = getTerrainHeightFromHeightMap(map.width - 1 - ix); + + map.getTerrainArray() + [terrainPoint + iy] + [map.width - 1 - ix] = SAND; + map.getTerrainArray() + [terrainPoint + iy - 1] // clear grass and make the sheet thicker + [map.width - 1 - ix] = SAND; } } } } - + + private static void freeze() { + for (int y = 0; y < map.height - 1; y++) { + for (int x = 0; x < getFrozenAreaWidth(y); x++) { + if (worldOceanPosition == TYPE_OCEAN_RIGHT) { + replaceIfTerrain(DIRT, x, y, SNOW); + replaceIfTerrain(STONE, x, y, ICE_NATURAL); + + replaceIfWall(DIRT, x, y, SNOW); + replaceIfWall(STONE, x, y, ICE_NATURAL); + } + else { + replaceIfTerrain(DIRT, map.width - 1 - x, y, SNOW); + replaceIfTerrain(STONE, map.width - 1 - x, y, ICE_NATURAL); + + replaceIfWall(DIRT, map.width - 1 - x, y, SNOW); + replaceIfWall(STONE, map.width - 1 - x, y, ICE_NATURAL); + } + } + } + } + + /** + * + * @return width of the frozen area for MapGenerator.freeze + */ + private static int getFrozenAreaWidth(int y) { + int randDeviation = 7; + // narrower that the actual width + int width = Math.round(GLACIER_MOUNTAIN_WIDTH * 0.625f); + int height; + if (worldOceanPosition == TYPE_OCEAN_RIGHT) { + height = getTerrainHeightFromHeightMap(width); + } + else { + height = getTerrainHeightFromHeightMap(map.width - 1 - width); + } + float k = (width) / FastMath.sqrt(height); + + if (y < height) { + return width; + } + else { + return Math.round( + k * FastMath.sqrt(y) + ); + } + } + + /** + * + * @param x position of heightmap + * @return + */ + private static int getTerrainHeightFromHeightMap(int x) { + return TERRAIN_AVERAGE_HEIGHT - heightMap[x]; + } + /* Utility */ private static int clampN(int clampNumber, int num) { diff --git a/src/com/Torvald/Terrarum/Terrarum.java b/src/com/Torvald/Terrarum/Terrarum.java index 1ac9f9aaa..fadaad3d3 100644 --- a/src/com/Torvald/Terrarum/Terrarum.java +++ b/src/com/Torvald/Terrarum/Terrarum.java @@ -39,7 +39,7 @@ public class Terrarum extends BasicGame { public static String defaultDir; public static String defaultSaveDir; - public static String gameLocale = "fr"; + public static String gameLocale = "ko"; public static Font gameFontWhite;