From d76fd97e5a273a342f5fc886ff65d3ad6c7737b9 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Thu, 10 Mar 2016 23:42:53 +0900 Subject: [PATCH] better defined Hangul Johab font, correction on FloatingIslands to utilise new 4096 tiles, multiple type beach (white, black, green), ACHTUNG! ActorWithBody has temporal debugger! (sout), former HSV is now HSVUtil, new HSV for HSV dimension, HSVUtil.toRGB and HSVUtil.fromRGB, more jakanaJP and isIC in polyglot.csv Former-commit-id: e8cd234d1140d623ba7ab551d3429fc4a453b5c1 Former-commit-id: e11bc93da0d37e385e375fbb0086cf7dbb3a5454 --- .../com/Torvald/ColourUtil/HSV.class | Bin 1123 -> 963 bytes .../com/Torvald/ColourUtil/HSVUtil.class | Bin 0 -> 2133 bytes .../com/Torvald/ImageFont/GameFontBase.class | Bin 12847 -> 12879 bytes .../Terrarum/Actors/ActorWithBody.class | Bin 18499 -> 18921 bytes .../Terrarum/MapDrawer/LightmapLantern.class | Bin 709 -> 709 bytes .../Terrarum/MapDrawer/LightmapRenderer.class | Bin 14114 -> 14114 bytes .../Terrarum/MapDrawer/MapCamera.class | Bin 12702 -> 12781 bytes .../Terrarum/MapDrawer/MapDrawer.class | Bin 3306 -> 3719 bytes .../MapGenerator/FloatingIslandsPreset.class | Bin 1898 -> 1861 bytes .../Terrarum/MapGenerator/MapGenerator.class | Bin 17882 -> 18368 bytes .../TileProperties/TileNameCode.class | Bin 4903 -> 4995 bytes .../Terrarum/TileProperties/TileProp.class | Bin 3340 -> 3316 bytes .../TileProperties/TilePropCodex.class | Bin 5268 -> 5260 bytes .../Terrarum/TileProperties/propdata.csv | 16 +-- .../com/jme3/math/FastMath.class | Bin 10243 -> 10570 bytes res/graphics/fonts/han_johab.png | Bin 1411 -> 1775 bytes res/locales/polyglot.csv | 26 ++--- src/com/Torvald/ColourUtil/HSV.java | 107 +++++++---------- src/com/Torvald/ColourUtil/HSVUtil.java | 109 ++++++++++++++++++ src/com/Torvald/ImageFont/GameFontBase.java | 34 +++--- .../Terrarum/Actors/ActorWithBody.java | 96 ++++++++++----- .../MapGenerator/FloatingIslandsPreset.java | 4 +- .../Terrarum/MapGenerator/MapGenerator.java | 39 +++++-- .../TileProperties/TilePropCodex.java | 2 +- src/com/jme3/math/FastMath.java | 21 +++- 25 files changed, 304 insertions(+), 150 deletions(-) create mode 100644 out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSVUtil.class create mode 100644 src/com/Torvald/ColourUtil/HSVUtil.java diff --git a/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSV.class b/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSV.class index 61ea50dcd75a10f18d7b45b3aa72c3d04f01f3a6..8b4733e08072bb4d56fe6bd2952066c4d9fe27f7 100644 GIT binary patch literal 963 zcmZ{h%TD7!5Jhj>#xWthLwG;KBjb@U(y#-uL9$pxun1)D1PhEzECrL#LK=-mzdNSGY@A3p_ypn@q>Dk#CJU{XREj>6h_Dup@e^WvcQ;N5hd!fuLPUX#rW zG+~GncZQhhOh0A^N(M1bv--iTm?zxdP(QV7hOx{xP-am$%bmz6!W`zA#bAL^3}PxR z=BgOD^&t#*e+bh(7{dDUtFf0FDwl{;!wiL07y}}ABR8;72x5(bd@lsqEC%`S>9QN~2y!w8M4m=Kw)7ip{{vD< BV~_v< literal 1123 zcmZ`&OHUI~6#j0RcKYJc@)#`?<)O5^2E<1rh+1L=1DF63OiawQ6gp+vX-Y+7VsK&D zurqOCbfLsV6B8ea2BXFhT^L>YGYl(#fKk60imtqqbI-ZoJ?GxvueTon97ewv zUL24{Rsktq02c?*AtNHKZUHi)UQV4dx@2?;aYMoSt*g5zdNGiJ4-Zmr9pRLbbf0!`y7GpEj&#TCt%S4T|4yi&YS(hYTVdUjC2 zSu&^2#s!)qV`F2{akIFn=F?Z_wX1n`+0au@v-w1s=A}8V(4HDd$SARBA!(?A(NSX>V6?cG;i@)wC^FI-mvtY7c^_ zCBk6G0R8;LwnM|=d+>$>BJ&U)OBIG2*Mg3GOlq=~Q*kO%Hs(@X{_t9`B41hbFT8=Y zkd4XQaV^B$L08N}@lt%@nxPE@6e5Zo^ZH`G$H;_hu34B&j9xZ26As`NLEjF>JvyEw z_@fLmn9c+{NvXRW?%M_HEuI^wvhJ}!hQEV+QSm75WYCdaSG>E1uWW3>{esz6z^c$~ zv~#XwIqO-A2G(RRLi}3Lgb2bI#D2uliUitlj=q!pZ)VVeIqqIU6iIX;gKik;L4i+Z z1%0@Ie%!<%+`<6XafEjq#T^{OUBvJJ$MKk_KE)88;RIgeB;Ml`ws0Dsc++Q`vAcDB zrz2!mPk!tTxz*bp+=fES!S6fv(5fKYZ#HX*tiPaYi|@)7=F&~T=p_8%d|2=xzye6x&>qvP)4YTUD$1*rSw9jg4WsH>2{aB;B*UK zK0pYP7>$0S5yJ;Rm=L2MFi}A;#Dotf{s4c6zd(G>>=rSmo#edpp69&pd)~`4^T*%! z9|G8qg$VkPRkA+<%J2msf}=R5Bd1*cO(K6$WcN$KGbOtM=*TPC%hE84kq9h|N^x9@ z6A^5|m^>Jl;-nN4GTv$Ep?|@2cv9cu4KUQqkGc!%^qEjnnvdvm^**o2;)G{N} zv+{jNKy5Xr^1}k#)45!3aIEQ-GY$7r$+^_XEY&K-^S+lyLovdYi9j z3h{j97GgEH-)INx zWje&Vcn2Zr`vB27OS9C1X;eS8^i?I)QSPGa4$BDorC;@n?uCj?EY4!zwh-USvbW)R zmc5JTd)bVa*^XCG=_VrB~^F z9k1XM9KaWhvVw!Si9@)BA$-k<{mkZEyS0p-;*L#b{FFb6N4zD)L4|Q2gVch|@LS%R z;%s-|8{VB__6bJXO--ZUE#{Hpk8~Hl#2#uP<^Sf(f??a**K# zjbl51MmN_6uGl?nlnr~DD|tWZHdkUSbuZ7u*vDf1IDsHjiV*vq{^oVlXdI=|Bb8%R zdZm)ne%0oJiOD%-U~*1PPTs>aw(>u0ldW2+&CyxPf*rQh=#87`vZyp{{WdHThC_b< zOAcJOLU-}(orI;{_zK*%pi|hoWvQN#vJBxmj9b`aLJ4%GUG%3f<7kl z8H${}%ej^D9TxEms(vd!M>nm5WQv?z0UOB|InArY+S47kBE*V iK4(aQ0Pq++PeD8YHugN`w4c~XW3W#GZ!k&#!~Xz-2#rDj literal 0 HcmV?d00001 diff --git a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class index cf9b93492b24411631f7b6d8b5c04000a99ae8ae..f043549689e35c6dcda4604f515a322675cb2f9c 100644 GIT binary patch literal 12879 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 K97B7Ji~kQIzxB5O literal 12847 zcmb7K3wTu3wO;GYhQ>u~gR>yo757 zp-#wB0bC{(^+J{lSs}Ux;Z_Q16w)N*3L)>R>(Rb>xEn?WP_0R z3)v{-13I@#xk*S|$Yvo4A#FmELbeEL7t$dlC1k6(Wt+~O2Cd@lLefII!sO#_gFncb zF!yk;0n(@Q4xM-Eyo)K)5l^@Gb+&XQlf6vmG<0R!E7QrHZSkGy%AU?tVq0ZPcP7=F zR1M}c8S$P(D&;me`-R#%)Mfh8sf1e>PVVZhcKJw-muBH@@pRm+2_?2}yP_|hz}P`_ zUKUR?>51K$6oy7imy=$_TlzXXcc$8UJL zbftTG>m*NhZFtCZ66A2j=Jk&tJbi-k!vh2iCUM zEMFl#4Gg}vb#-I?vg$^WEhckqYeV&_`o`9^^-F3+7Y2G(*I3=$+_YA-0hqT;m=Sg!u;S4t-utgRC*V|1sj11CBS6YJ=j z0bC<0AH3qIYS*o*b`kx9lro7+Inp>xQC}@$~AVBLM#Dr&hBrsPbcQZ}cP+)Qf24_UYV{KhSss{lT+t9Ez zz9U}Qi3qQ(>4<0IiQZ&JVpzg4+p0*#STd27!zzd!gm5a29tm{C#4JdqQ@snBd{d{b zVe;2>wIyM8Ln@tY?AyLMnOPOz+zCx-Lsuf+xh9@TiR>!&6a5E%g8#`q*amAt)`=^r!U( z;;q>}?%+i^#oCm3V}#e^_3&N0@^?{7Z#=PWWxQK?L#NYdImifigseJiiK~XoVR$&z zQ!U9yvVnhU&9p1An2;p61`bK})T%jEEPREOhD73aP+YU*Civ26shAbWL-2O02chj| z5&*4s(-4NM$tI#mj#sHD)l-*EMrf@dP`VIBZV;wqg4Q{v%4~Sm>#+!&Ak4P%il~jK zC{%6+ghxW1A^9^~)i0o?IGatgwF4D0D!c&qWb3^mYMr%^N@S}C$fz&L<>Qq5aDy~x zQ<}@ua7h*@Ux}8*utoVS+iIW!EkcMAL{@JHQ*^3lF}L()Qt9^j5)|0Zu;lvJxmyMF zY~Pl?%{{$Xz_9`dYC-rD-5CTgV!yZX{?SW|8u zLQ)EwFE)IjDt4)j?p@?rzvK z=l|!O`g-w?fqg#H>-wmuFOAa*5>MN*WV{Uv$CVa$wZZ%TU0qwYVAM>qvn$?)@I>x} z*po!}T%MOKDQ@2$&$OpdU4rVxh=sP5Ncbxyt(1B-jW~?Np$siZbh;aa(bCnINhIr1 zvK`po+&)v{)TF!V5CSIuq@^|lrg7d)VpS3olj*~*;WFsX*P7Hrh{#FamW8(ylTOfa zn9;vN+`Me^hxo%LJwV5G{)ovRNpGkkBznj!bn=sQRe~J#7^l$VnlaA4GlfEhB zVIhyuqi{sOY0hF=+?VQXOCqqyjc+&k^Mc($ zn@swF4Dd^_^?NTJlO7Yp&ItLTknallo{;Ydc|ypOLY@-xeIY*r;r)CE(w;;~ z=gzI|ot0hP$ux?k4YOyP`~@yG`A!4^e^Iyte3#A#O}?8C>3omLhbe9Hy~ z^(C9IU}IR4o>bL;uy7uuuQ%0MsU`t?K``FqoZZfy>OG7&PdVR(Q9Yy?@>;QSMNWg2 zoWNtpQ)z$=*mSZGIChM}>BD1C&ar^gRcaQi3wFki6+|*=mn{w1I-aS9hb86U5EIzh zffp?ppfcL(9;-z4zzG^b*Q&1J5eL1=HuktqK?ih<6>+Br8z+B;R6 zt;5@(?7N*yQaw&h08VI!Zc2fDvbwul5-eW#WXjZOb5eeM4Q>VVvGXj=#Jf9E3C#0& z_#nSmwjOql8M+o&E1Qgxx`2DP_B$i4>%bcy0RtO{b9LL%i&SDDIY< z-7?{pZEl%#%Pnr%?v_Y%s(;EYx4Pvvx9n8qDB4bGjM;^@8gPAtY zN52E|PLI3`@@|iO738Zu@->jJ^~fKB{9%tQ{Xa5D{-{Tm_Sbpj>ml#)$RC5e*CT%% z@+Um<4Uj+Sk@rEq(Ibm}pYq5zLH@Kyz8UgoJn}7&KkJd@c|Yfo#Xq-tUmDoI0iLFzW*hf)@WT!+~g*n1W0CRK?q^0DCjC+cTQ^XIGw%+znv9(uE zk^ck*j-f)M!=S}-BZhGDBbY{Dy6=T#IvwdgIs)lS_zBdP(c^yl3OIq^1ziB;m~v}u z_hlfR3j>cB>wROJ*89gb&GV1;e*?A77^P@SltBA71WS@e(iSz&TnE7&2UxhclRyhl zl)eg1Lu-q^2F`~*KKeR+14x=|`mPo8AZfr3mfKoG=h57VLDUm%Rinh57P(P^?kJiZ zWL%sDE>1`u#ENzgMoN2-LOG;R4he@I7wJ+LDIk6s43qJ|1adHe91IRJF3hj+pyIUd zitJu`Txm-R=_v;qsGe;ug?c zIz^{}^&r}pP~a@BW1SvagaZVAnjF{MM_uW9tXP?Q2kAP@3yJF-L!7z1&f~h`+`z@| zz%odHG*dz25a>eBKq-OXvx0-CVz0t;BHicWX>zi1yDo99vW^p+94S9d#maqyaX#s> z%gWhh(YNVwAZc<;%SSAEFT|UMLBzS&MSP!YV`+J*bvG52m)eK2lRLD_yVK)=<4Zs*YLf#@X)9cNV+-Q!?H?a&VXya&9H zgK^w-5nEh)N0i%=2w^gRWGIK+=|LTlGkL^7lS`G!I9cZpFl&(-U^ddNyPO7j{NTSn z08Z!y25_EW)}o;XIQ*{fRM^s|hXKXCz_6fsmOe8KDDD|t(97J} z50~4s7PS?a^JhI!;oLF~yUSRU+lnEe@~nDc7%1F%6o8^aR=qR~6mCw2fXcJ#EW*I}S=N996!@=AZEExZQ);Q=j_S8(SwENGskZw&*AJ2V%x|L|TKEfj3;c#yn@ z_v{f37jcD=2HV8iFi5z~bCEpjazddw<)8gB_1sA3ivI(3JguIXdNs*gLeQOSg-pQ`l|d<|JXzHa>ewh|0In$ zMdek2sQ&=V1%W1R7%bwuf` zBZ3sh1NqwyQFz>O8oO!X9zP#>cl@~imy$**!-w)Rd>0=<5suPG9!cl(D7uJ8Q;H{2 z7f+@e_&mCir_)`00o}_p=s})I-{MMoif7T!cn&?wbLlte{~A{*uP=i?FQT>dd%Qsf z@xuEQ@=hABH39l9y#`L+2Vc)+rPraAIT76-)H|1kR8$N5q;GmfA35x8ylDwTc1~9!*;Dsv>WRU_H z_`=1w*8elcl?#Qnut%OSQZaeTjN>%!B#rOCrNG|;!QHj^Ly0;Cy$IC+qWvd;%Cz8yG&=wF0mOJI8AaXRNDP4FR112eD^4$<>7q5%YFRj?u&JVg`t z)8o-#snu4cS48zwG^r}2O1&zqN~6k9<>ab}DyLMLxMn%Gs;J^&I&b|cI=^)4NtzZ7 zo}`MCgr#;tRWU}KT!BISo3QNmZjKi3-Ex{{6iwM|ZblgmMI$F^<}i)IQFHi4Mzjcx z_5={I=c>o7JWjI)K5XlNhn>BjmJMmQj?M$@*0XlQYUQgrie8u<^MD$yQmYF1s<6zJ zcloC?#1~^+Z%({}A5w0ceFq#SS`ZJHu6 z7_jt%q$A0eIN4A~=0qK0GmP0iLV5m)JZ`7OoTBBtm6~}Q?uNEghP&w+&d|sBgY+rxrO!dW zop%|A@4`c zSJ3*ad>?-e|Bv&Z`2l{Dzo`+Q)O>tei|~V589$`O_z`V9KdPO_k7?8R+uB@yT)Ujl zXp8wf+H(G`*33_6tNHudM*e}8)<;y1DAED=)bWo=rjj6sQ&;LqItO4{U2~)T8xjeZ-O&u zIj*1o7hHszak2dtIFr`V4fIcNMU=ty|J&e-aZCF>I*Z$_AbP)~Hl_eq;B$o3>bT=; zbZh^Cn_k(r0@{m6?ow;`F2P!S2Y-cW@SE5+3A&IL$#LUz+*~SlYnSJA8*^NDj=Mg` z-In9NoZ}v*Yh4tid}fRm*2;3+c{%R#9M_!Vk~wZyj@y^x4&=CFIqnSYaK=CceOviJ z=XQQh`5-8JPIk8f=k8YE+}#SC?4~|x#~S;{k9d3yc}xxfazFP9je8q^1NcvR4jcE| zaL+&K1K`f$VKLXUA+9McEggj){+*>F=67iYMRX2mn$AH?46AT%#4=$v* z<@+gU8H!y2Wl(WQX@P*^8l>7$VuQnRQ)ySC-lw=maJu4}q&lqFD}*%_`#xcv2F=1o zj{5qKfAg>o#5x0i7db-H=p4;Y)3g9xs0C@Erc=EZq82So8#RME5aB&q5q(H2rW-U% zonM@968o|dLHlsjllx+s=@Ke3!bUi3sGng#{U?q%Ucm)*0A9om{0yI*S6b%jNZYcv zw#*AvjK(f-0d|JT(eU2QQ$~kI<1p?yM5!Bn?HnwE2~?&{q;hQ%jGn9v+Tx(*464Y6 zDAGsvKvj_qQKWGdqGAV|Dn#X*fSf`lDNN)dgtCqk@<=WQ7ou`1!JCDo8)l2LU#O;| zzij5*f6h~P{o47;BNS_~ku#&7q)nA(d!zJw|447&W{JWbtZU zyfTHi_BgFON$Zc(l_zP#V91LBc?p$jmwF(x@6jQSWg)e*>VQnzqt=8+>HYW|Gyz{F z7KOE^rv#n&~hhYo5b|t@#dPSoIDQu{Jo2X>D|v zB5RYw6k9mDVqmMpN;!;WZFLyi>U5Y=tJh)5tg9VngmsO>M6GKbCT7#!4mZ-KA35A8 zo1SvG(KbEpaAR!xvBTjj#On?>)}}u?+&G)waJca{{mJ3ZvFVg>C#cAZC|}v^JhI>B zO4TM{^DM;#ZJw^{W=?buPp=yvRwVnTN8 z0mWFTd&J>T`Iy6@_Hl;`+p+IDoMFd)=x`A`=K9mLW6wCcB0KiH!xh`H7aXp{j=kz| zmK{6eaJC(DXQ0%M{lU?d*)ex6M%XcTE~0kKor{?KK|te;hmWrvLx| 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 455a35f6dc6480e501c3e30792b442776b73e21b..d24eaab995c6fcb7911d86bf321de654dcc9c6a7 100644 GIT binary patch literal 18921 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 literal 18499 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 delta 642 zcmWNOOGp%86ot>ZI1=VqgYUv}5??cuI%6{n9UWgJHl?7LnB%JlD&;6q37LdJq2;D- zfsrPP1re#~qD7!sQLD&^uxQaDNLN8wP?6BTy61kJdpK~X!c*b7inQ(mtg;Ym^y3?g z@QcN?Fu+8XGL>a?v7GtbPamsTz#xlwkR_}(TMcV@gzao%4?`SeE3dJQw+)$PC+B&R zPmO2UcwZUE3eRwreG8A%hH1NuI1a(iVdU^C{2b9>`hD9d5_kux9D{@7@Nz;WW7_u6 zcxSMSv&iBc@;R?hG9KBM41H!2o|}XhCgG)?&0My=F$pX1@GYwOZlOGDE3K=D=Lci@ zh)RCartC?6*3Ik^e$irwpKIFhXt91r6n~h&4W#g=es$FIxB8tW{HFuXfCzNa*&ck;sxQ>Tx}=Mk7wFW{ZJew&}WSF*z0q5(k&Wqf8QUK$1`=$q30#UD`Ws-Hm8T zMUvQ&E_<{$=d>jQF_NikIrSE&Q7$dbt+nJC<<`;Mpv8*_@#%VQz*1mTp}O)~8PJiu zZkFrcyarZkt-G2*opd*_M*p}QS*LZLARBbTGh+{#zRjj@3w+XsDmiAlG^0^MXq8SJ zmo5$GZ@N#JPTi(c7rlAF;0 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 0d100de8b9d739830c0bd83c401dcacb981a3d40..6fa4b2f78ca0ed64d05668325764d06d02df0746 100644 GIT binary patch delta 5438 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 C>t_%E delta 5417 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 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class index f262d126c2f89bf614b2edb10d74be3b8c82b104..3fb634e00a2dbb7ad44deb897e0ec70acd8c1088 100644 GIT binary patch delta 1901 zcmah~`&U#|6#mYgJ9B5QM}+|-5PSj&`6L;&2q9)f5@u{bbhI25NHH7~NXx9DGBiud zZdw^V?4^~J4mM0^TK2ZbZ~YG~|A_26cV^kNTCRSW{rL92-`QvHeeYZ^I#e3J_SeK^ z088<^NwL?!J`)-qHSm}l`%UP0+=EFtVB!fpX&|mQ*E@#{4CxI+fQhH@v=Yzg^>kI@ zK@-nnSXqZmio?o!&co0V51z*h3Oj0I1TU&nUNRBaa7_0f9D?p&F+{=tzDJ9-j;yoqa zSKes7t`; z?CWjs-nCo6Y;SG}v?&U|fVQdmCbGUE+-e;Ve~8m#VXZ|}=k>(~I{Ul3W6^zE`*%eL zdwRPE1Z0LNN=@FIuFA1S9Yx}dm2@1R>aOkV?TPga)(JS~Rd!g-`YcBi2CQCv0rhHY zRBz2|!bcJ-aF>CPCE7vqQmaoduyUO>+dq*wi%%s!!wv~Q0tP;pIEV8Rs}PXbuHZ)a zBoY`ia6#e=L?s?ZuYofXNsLRRut(xcB_?oD;u5|xa9QGtdNhVUiLddEHR0^2zKU-p zuHriZQ7Q2~elYN(#7~O-XCws&6s89uu1&x!!A+Xr4{<PqYy|CM+?|Ej(!VFmucN;* z%de;3kmcV?9(HAhO~kI*nhm4&@Gv%>hc#Puo`v!Ih)si&vXYxxg~^!Dq86eAi?GIy zX_TdCK`XVgf(VggEp46pelmv9Myr`f4SyQP&8a<>`b9p zDev?`L!KCgDGQC*X*d;B@*gOPQq>d(R8xHHGdS)kaZWp*vo1j`U;jER;9QrXp3`gK zZ5!DqKOW@Zj!+*ZqDB%<-wo>Cz!VHIL+wyL_G2@m96$;Bv4xg{oITh|ODFSIY-662 z{Oi$4%SE<$Bf1zi&`qjs&~IQ6ZUYYqP1A(Xpwp&#gY?<3GYu2Zxds03d{-u4<6`oi zO^=BirN`}cDPXH>y)))`XL4Gzc1|DOmcs0_tVpxFr9Qjhj_GX2KRa2#t3`?H$i+^( z0j7HKGu%F2UM-$Xz$i{(jw6Y==Wa5lmvST4#8pZ<5xYpD{vY^J$dJVB73a8$a~*%4 zf~VM9b_#PZqC9dD6_Ih=?wyxJWpNT!-aBX{F@GEjuBha$9J5zlAU*E%1vYaAQTqbv z6MZ}}u8vf_*P%_G$tB*6J(rI>*-B70mG+$N-|?1yIxw0gH4DvPf z7ERiXE_Bn%3I`gdbmjZr_YGRDRv*C^**-I~lC@f`UOap6^FRCi_t}^8OjrI{7W?I| zpMD0K_|ah-M{EWiTpYD|B%dJ%#juy_7;zXSYBQ$x2Rw0`akVE74v+Gf5s#~YEWI4# z2_udh@uU$?IXumTBMi?NnrFS@^qiOHi5V>JFnEF&Ou!e7m{c8;aa707xKN+qCDkzj z>T)j9l*2S9&AFG&yitd_tqmoaR$L(}d~K z+-%^_`NHN)%~?X42Y67zYR>VM=4<*i-xzV8Z#CcXz0JJlf;svy5lxZ>i|V1s@yOPZ zNHj5+*IBg451K_%7FL~RiFD$(yu->}Ti2avv3nBj-u{Idd*141tyFLu;Gv8gX~bf? ztXwhzj!8^xKP}7fR$1>{w!TUH08U{r<1yo9mDk@k* zAhYKZS;-!56>Y3`I)r1d*h=(1nU34IU94S#?2ym+TNg5hAOFX;l`AsUOEAFtY8zxY>r6_w@W*kq@c}`M+^7R%B1LN zDQG}ko3fc;vP6zeaCfF;#qv}S5y}ifh{IyJg`=Hrv6QeNmbyw5kIlW7%jH6eA^NHm z=^rd+ECB^AyoO!_m$~NUJYAB3JcwMkf)dPhd}UEtf17VjwQsEyyn3j7sy9u|dD(Df z(l);eWLT7pN>*)ziEyuj79Cx#%WQIp4vHfY*xl^p4mvxphJ6ORC zozD94kZ_oPoIJQ3M^v~CN3*}k{l^?$zi-1FH5b_!zDR9&DMp>IKE)<~ip{EwUHy MmQ}y$t&4%b0d#KP$^ZZW diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.class index ab7e26b6b1eaf7a76b5350cb8b0ea253443cc97f..0348ac082396c6ab6f68605344102bd0b1fd5403 100644 GIT binary patch delta 578 zcmXYuPfrt36vcmcIy0}WV-t=4Dr$>@)>3KT6|2|9$xiTwt}xVXiu6id^G* zk$@WoX1VFZEg$Ao+nShdv^-(KamR2=%k!Q2m5yNx#@@LX8=Kv=jqd8&^Ow(ZQjNCz zZ!K&)n(1)Rh>vmHm`?xX#TR21Vuk*aXAi-$R>EH5V` zs`%#H5)3?}p8rU0W~ly|@V)YY3N7&S@iAskCUj^(W|Y&a$69AHXI`@ACDUJF*DC4b zs5My?W58d}SV~#XI*qf!j%dGsB(D)<&EKMTYJL*8dsPu0QP3ry($Eok4zS6Xkkgm` zt^tq6vjKRdk!JS#ey-%y^M*;?B9!@_etnsUeY|Fhi!$yljFR7xaNaTPxMb!yXr@{I OO>3@HFfNM|aOFQiJV7u3 delta 611 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 Qcu|vz(;;#l+l*ZQUkR96&Hw-a delta 8910 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 q`{fvFBlhf>0 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileNameCode.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileNameCode.class index 3df30688f16b25d8aa861bc39af8b3e19e96a363..1133f9e9ae7dfebdcd4149a226162229eb158a92 100644 GIT binary patch literal 4995 zcmb7|X?$E|6~@ndC&^4EGs#Wb(v~i?P)Zltw52O8ZEq%%WZKD0xHCzbA`H`HNK?|J zou;Kw6cxb@K~!82aYb-1qOvJ2C@PAI8>qP8hJq`ID^Q>3ymykc`a%2Q|2*%0-h0oP z++QDj;hy_MWVLCH%AoupDnFDT)yhTk81ZA`C&W*QpAnA}KPP@c{F3+;@oVA<;y1)^ zi6@Dth~E*vC;mYEk@yqwXX0t%8R9R*v&3JCzY%{Y{z3ec_!sdU@jUSYaSSj*7{Vb! zL={m@)DU4JLevsbqK=3WaiX4RAY7u6Xd0GLlQI%djE)=_D~^oy6o(I%LdXv>Qk~0ZGf5-$s)cjAJ>O3y zTa8q;ru;m{+kG#WGZO1cdztNpOxEx8(njiRGue{O^o_S#QhuVtNP`_~NoTXIel~~A zV|l-O@?zVpEVix6;-EFLxGLvm5Koj+Xi0iJBBBkSan`AAP3DpeH<*?765A_{c0ZZS z7^%TUdXfy?ngaR}dNk`N3yEx3R}xPt!bZx^V!GP)Y?>#tH##B1p-I+qH zS-;TRp--)8a$jFEo#q9P>&*IIrk&4s@=Sf-QzrMcbtgJEN z#I8i2hi7qIfI+gHG_@?8Z5O2 z3$4L2Yp}=~L}v|xvj(wQgV4fuLqrxhUf=fd`quIK*75q*VgD*R?6qlVWN2(Nesvcu z?m=&2bfAO;Ne_*bG6(nWDwXraUBl>UN{{vzhkJ_UA-03gstb{WMswvn_Ku5W!5wg7e@x0v%B_``p1l{{9kur!ZJe-<2P|= z1ln5MTO2IqM?GZqrQX0m8TGsB!clw(s;FaClrq#ojo`N&d>E}}sDV~5xl_#TI{a<0Mmr<&9r&1?Am5em zp%szuR~A=yU^Dy+-BuO4OPo6-R8^%~Rc+hV)wW$zW82{x+m6&!>%7{U8r5jnj@O0l zcr0wk<6%2qAF<;N5j*Zi?093ujyFZZy3dqIM0Khg95~GlPCUsCj+pKSXUuSeLuR_c zDJQ#OyUi>&Z1IcK<0J7>M} zxZQA-8@C&t<;LxXtKGQ0;2JmX+Of58c5oe>9bFGss}FPoTvXlJaCPc7!o}2Wf{Uv= z2d-Y-X1E4*TikjZ*;cpSM&`NoHnJAC-kzRt>+RvKZoNG_*(fjAWo>YFT|1mz*a2r( zrr_+-ZE$w&cDUeLX<9qpNoyx$Xzk6iwDxLUwDxZ2(%Q@UwDxv6T6?`bt-W7&qa3r5 z_Q2Uld*N)PJK$`jeQ-9Cop3gg^WcI=Uqoxi&!@E$E}*rM7HDmx7t-2Di?lYjR zep(yp0IiL*#QHXZ`Zm`}KYR?;92Zv_WCl1-nq-kokrgsk*2^^6D$}I{BVG6txr{Mc+9=^Ti5+3xLAIFP zveoRD7IT>-%$1Tf*GQYWLE6pD(qV3ulsPKf%-yox+%IYKkaU_yBx4?zta(bh%(HT? zIVL{-3n=GIk-RfUdYpyQ>om&_XT9_}p6qnC$$3sr&Uen23!FhIIQ!*7=ZF-Yt7MmR zo%B05%7Al=l$@h-k#nyMIuFQh=V2Lg9+N%J6LPWhvUqE>wVAM zb&rT_Fgv4CllzqMleutRl`LRugN8wL}BaNUS5)6HUYhVk5DM*i38*o2_B9 z%}B^g`bJFBNW5ia_{eBsc(kW5G*%2DE5t};HkU~!jMS>;cXxZfpG>qGsc235IgGda zUN&na)|K+oyYlIb-|3}{)YxXCIg{=iZ#5_VmJTCzcC0y-$+Y^JEH;nj{O-w%ZL_@C zw#tix*2Ln9td~YSQA)l!;qi!wHhjieqqa4XO)%VGR?2JHWuywR_aqptHTiZwfoP){ zKap?Abaf^0U?OZJ{Y*Nr?U@u0V{bN@>fw}_PDynp(#aeyQ^%&)?I&A0yi`kfCl>l% zZ{F{2=98dJbS8X{+r-$)dR<)|Ngpe#+013Syz_&Jtx2yl!^`PJuQQSB=*!|371?yA z7ju#=iF}*ywI@?pt*x||>&D(es}n;lY}MkC=i2aY^16?GF`&34Ohua`^s`E^DDw|?9;jk^uwZsWMyH10N!yDj5x zD~ci5xpBhclyWbQDO;RVwm7J4aZ;u3fbvawJsv}}21~8MLTj+h8Z5E~(OHAwtU+wn zAhfXE5RnCr*SCGVzID95b-ccH*uR1fd+it;9vt0?pVj)6J?L#287LwhQiH?A^w^<& z#Zs=YZwNh8QzQL_p`Jo%knNzeV)Ve^5hLqU{Ue7OawDaqg`t6lT(MLtl*Z68I8^K^ zjT|nPMhA;Ww3#j(D)NNwcs@J&hk~P{*^#kQf3Xeok)2#tp11a3;bTur=`xQ2Kc@p9r?;uXYo#4CyGiB}P?CSF6lmUtcUdg2D+4aAMaO~f0CHxX|p z-a@>UcpLF{;so&y;+@31h<6k3A>K>8k9a?EGw}i97UF}%hlmdoA0a+Ue2lo2_&9MJ z@d@H~;*-Q3#GS;ah`WfpiBA)sA?_hQOMH&_Jn;qMi^P|Rdx;BhWn5N9jWBA=09EP?Q4i)wnb0Z#d`M5VQP(l^g zCzC6avKSv~MSN-OlR0vU?8g_!0kj+$L>s9IKZn_=iUd_fj;bO}RgtNxNLE$kt141f z6<=k-@4+VpZg^DpFY$*{q6$Rz*&$BCS=C*{VoxRphrSQd|{Tu8Krg zMXswN-BpqCsz`cOYn zQ6Z`*5>?cRDoRBa)uM`mQAN$DqHI)AIjSfgRn(6vN=Ow|q>4gPMJ=hKoK#U!swgT| z)RihqOBL0niULzbjj5u{R8eWFC^l8pn<`396;-E-!c#@mk9s)|BYMXjo$TvbuAswi4j)U7H?7wVuU@QV$8 z1FZ(AfmW`%L(Hu@{7tY*J0tP{e9TUeZ^^gOipY1$iz^$j8UBTCstDaF&TSH^s8Fq_ zwC&1D+pemz?QoTCN2)4yUUgNKYBX%eYr=Ls7PjN@upO_B*zvlE9d{#kd`iTQPmP3i zpJ{Gz&~!IAX@(nYJ<|>Lp5+Fc&vt{|=eS|Je6Aag=sst-!GZJK;KcdmBNw>AnG45N8{D{S$2P**!A)>> zbTeGFK8P)FQFUA4YSe9mi>ccV7gx6fu2$XIaCPc-y0td4bKF`R*|~15jm&dv?di>K ztv$SDiacXyx5C-!2{=2y4bCoThqEg>;B2@_xZpPD(c1A{w01&@)?TQS*4`*hYp;}{ zwRh^GwU^pWYj5S#+G}N}$g?)m9Gs1`8_q`B17{=cg|m_DfwO`1!3B|?Pix07ptTb& zq_vS=L~A3xnAS#`r?rvprL~b3XlxVTa$v%y6&RqAD$ zG|F_@A~WP%nI#<<>B3*gJu+AJ$~^q-oR3eo1#(Ol;!|r8KBJc4>u4!HdY0i^W;s4l zR^ZE{9v>7d@tv>=KM||tq^yyLWvx7l-vCxODY)|go;rGHy1FsZ~_2u C4VIk<{bOI%X(iZ|DBi*W(~!0ih( delta 39 vcmeCtoT9nm3Oh@2L2~-$8|>4V1%!%IOM(khlQYvYliiCF%QlyBi*W(~EWQp= diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv index 4139d67a2..b520a8bb3 100644 --- a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -1,4 +1,4 @@ - "id";"dmg";"name" ;"opacity";"strength";"spcg";"fluid";"movr";"solid";"wall";"lumcolor";"drop";"ddmg";"fall";"friction" + "id";"dmg";"name" ;"opacity";"strength";"dsty";"fluid";"movr";"solid";"wall";"lumcolor";"drop";"ddmg";"fall";"friction" "0"; "0";"TILE_AIR" ; "1641"; "0"; "1"; "0"; "0"; "0"; "0"; "0"; "0"; "0"; "0";"16" "1"; "0";"TILE_STONE" ; "8205"; "25";"2400"; "0"; "0"; "1"; "1"; "0"; "1"; "0"; "0";"16" "1"; "1";"TILE_STONE_QUARRIED" ; "8205"; "25";"2400"; "0"; "0"; "1"; "1"; "0"; "1"; "1"; "0";"16" @@ -12,11 +12,12 @@ "4"; "1";"TILE_TRUNK_EBONY" ; "8205"; "12";"1200"; "0"; "0"; "1"; "0"; "0"; "3"; "1"; "0";"16" "4"; "2";"TILE_TRUNK_BIRCH" ; "8205"; "12"; "670"; "0"; "0"; "1"; "0"; "0"; "3"; "2"; "0";"16" "4"; "3";"TILE_TRUNK_BLOODROSE" ; "8205"; "12"; "900"; "0"; "0"; "1"; "0"; "0"; "3"; "3"; "0";"16" - "5"; "0";"TILE_SAND" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "0"; "1";"16" - "5"; "1";"TILE_SAND_WHITE" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "1"; "1";"16" - "5"; "2";"TILE_SAND_RED" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "2"; "1";"16" - "5"; "3";"TILE_SAND_DESERT" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "3"; "1";"16" - "5"; "4";"TILE_SAND_BLACK" ; "8205"; "6";"2400"; "0"; "0"; "1"; "1"; "0"; "5"; "4"; "1";"16" + "5"; "0";"TILE_SAND" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "0"; "1";"16" + "5"; "1";"TILE_SAND_WHITE" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "1"; "1";"16" + "5"; "2";"TILE_SAND_RED" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "2"; "1";"16" + "5"; "3";"TILE_SAND_DESERT" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "3"; "1";"16" + "5"; "4";"TILE_SAND_BLACK" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "4"; "1";"16" + "5"; "5";"TILE_SAND_GREEN" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "5"; "5"; "1";"16" "6"; "0";"TILE_GRAVEL" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "6"; "0"; "1";"16" "6"; "1";"TILE_GRAVEL_GREY" ; "8205"; "6";"2400"; "0"; "0"; "1"; "0"; "0"; "6"; "1"; "1";"16" "7"; "0";"TILE_ORE_MALACHITE" ; "8205"; "25";"2400"; "0"; "0"; "1"; "0"; "0"; "7"; "0"; "0";"16" @@ -65,6 +66,7 @@ "14"; "2";"TILE_SANDSTONE_RED" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "2"; "0";"16" "14"; "3";"TILE_SANDSTONE_DESERT" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "3"; "0";"16" "14"; "4";"TILE_SANDSTONE_BLACK" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "4"; "0";"16" + "14"; "5";"TILE_SANDSTONE_BLACK" ; "8205"; "25";"1900"; "0"; "0"; "1"; "1"; "0"; "14"; "5"; "0";"16" "254"; "0";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "12"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16" "254"; "1";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "12"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16" "254"; "2";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "12"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16" @@ -101,7 +103,7 @@ # Opacity/Lumcolor: 40-step RGB # Solid: whether the tile has full collision # movr: Movement resistance, (walkspeedmax) / (1 + (n/16)), 16 halves movement speed -# spcg: specific gravity, aka relative density. [g/l] +# dsty: density. As we are putting water an 1000, it is identical to specific gravity. [g/l] # Defalut torch should have a colour of 63412 (ffa44e) : real candlelight colour taken from properly configured camera. diff --git a/out/production/Terrarum_renewed/com/jme3/math/FastMath.class b/out/production/Terrarum_renewed/com/jme3/math/FastMath.class index 4ac4affc4bb9f59c3926a89afc2a394952013529..3f57283893c1bba39ece214bdbd9cb9db5abba8c 100644 GIT binary patch delta 5441 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 SSR@jOX7X1A`LRH&@c#jzJMi}a diff --git a/res/graphics/fonts/han_johab.png b/res/graphics/fonts/han_johab.png index aaac3480f1c4b02635af7f65826de4c186307228..11bc3ca034c8fc2e1da26e22dd2a99b138c3150e 100644 GIT binary patch literal 1775 zcmZ{kdsI_b7RGM^#1w-P(V7Y&Jf_kGOS#q3D8%rP0TuCuJhVtIQnjT;%tVchd6Jq! zO(U%$Oihi}8KeS9JGF*1{~6?%I*;R`j9$htP7nz4lU#nG47LQ%5sZAAiIJ%Y+UuzBTuMfR@COW~uEsYHZe~xaMXjgwJ zOD|-TR!h#clTyB_pXg#D&p-WJo2~r*pkD?k7up*3edoQ2n`4qjF2-_$LHcX0H~JgY zwvvw0VG5-!W>@l6MX{WA=!n;3nAhRLzNU=Cn*IQ-Ud=sX7dZ}kO_GMw!U7*?Tl}d% z(ktv0c}Ah>eSE2ntjp@Nken(6fW`nw55N-za1n73z|jCfpsVML17@L_#^=0W7TsCO zCtzZ6Ebxgt6%a_v;KH@*`(ouR?9W1sR3BJjK?+t_kosM|?-pz5Ze7_aaGZhPC{bN@ zrk|+Gt#tNZ=)g8h*WByuHH(V@ZR{TB}dIQ*|QzD{Rj80Ejrad z_gVc9a||}Cr6|*|!$oa8%K)mXP=5mDh6huGpT2+yru7P(0`-4by@We>Nf~pmAOKYi z3^|<~X}XZ++n#_Dm6SY)!=FsuT~#}JZ%M~lN}2}}jgRgxFC~47E+p{z%ygmYpUnDeJvhD9u9)u zohrq!5=R8XYE^?#e&WK|idIQP3?6j83ytLVcCC2ieIRVn^3?KJGUeiuO4?nCa4LJg zHe0Y5|5lxC8*cqgBZ;z(Ejqgdr>;V|pWulJf&h0wc)%IL1C3*Xc4(^c%F-l)fD9L7 zRh^5j!3D{cpm9$C|H7o&iM+{ald{S5fPap5 znU>?6c__`B-_)(7AlB~|?v<3rb=mBm0uC1RM;?Ac7z}Ur>io>Hrp6zfG!KcZJAEgF z&9|!AH69pZ+N|D0ycon5ZXQev#-{dqu(2X#l>3eUsPy(amYMk zl!EWPBWXOEulRPfihL}W{ITvB^V$L4&mAYz^r;2J>AC$R%J-Lgw&lQvqbW4$h%db2 zkGAuNX@Y+!4suzM=jz@^x6A7e8ep&ItKKUgQChcP;L!r6J>`Tec3P|duU@NO*(T^hDHf{)_Z?_IaWi~6xA#3d-o1{%gO%cod z)MpA-3WbjM1F3D4rwr-8*t>}my|#(oxPtaQZ5l_vGsUXwcIa+?XNz3MNuKc-jMqBCYTJ_m_}lu|9f^_zsQ5RI-9ftm literal 1411 zcmaJ>YfO`86#i;2RxDD2NXKP>i5JYQb*PAnz^Gi5i(EtzEgyIrliGC!3qrqEIz>?E z+*FDpMNrfgT0sF}@L44g&xL0gk`NVqlh0Xcho~-XB2rj!6D%ywCew6A6z#ILSr|cAUzU z`4tDg-iZD3O?bR(V%!PHM>t2fU*32{{&B9V=y|A3ObC+oP#)SNlRrA!8lp^<5n9yi z(@4I{m_ng#7vI+U)W zbTw_}O)L-Wo=I(s$;;P?!K~ZokK5ag_NLs+IPDd3SHQ6(Y0UUHN9&Qa>lox&&y5@8 zmPc738c78Mt-Xn0yjNtSyR!z_(*snqUjnRV;@uYz5}<-&%Qp}CA|H}*r{py|5~ zezyhcQfs2#FuMXk;hexvgh0X(0*NKS)JGuAP(3O~2esSYG9mk<^UIy!y5OpJ+B_;+@`jS^Qd@?M(J7=3?_ zytah>U}tZ2gXU$Mb!!V_b!;4sFJ8%)JpN7cfp_&{MOJ|iOCQt7(B^C5lT_-&Kq$LF zar{nun^IVSWZCs^c`eQzkEIdVB^VTr!$JJ_ZLtKeM&L6o!@%h>44$+^unSLGvVQg( z%b9+{>}D^*CBp)(@ZoFX^fxx9ufILN2|w*>e?^&j(&bIS;L&hA4oFA9@FD^5s=<%~ zPJ~6EkQ{J9rmxaL4u|FKuk3CaYN9B)hWRjgYo5OU)dWBLW=b7OYf7KpHb`6%3qdF! z5=x6quOV&iQMt#KHDBn7An9e@o^BIPe7iKuCcA!chnUUHYjA{>JtAoWr3TX}aDvv( zW|B$7soEC@NQ*5#fe}HecKo3sM@Z>UChFU(tlP=%esqCv-)O$06pxciT={ za!wiVcx2O`_!rM4)k+naHKF{%hG#LN^HC;opO4n`vBB{m-j;to495WW{V^6yVNTU{ z1n(uxg4oO85cj%;?_NUs63@b^Gh83yezeL2j}0YV&t24%mfR8z$P&#nyA+Y((Lt=( zI1ICMd#O$5_9H>m?UjpF`B)sA)1{akLc>#lb~n@`f&U!~zyX&8vj^(Rt_e>FakS3W zmk-q)a?tA93=bT0<-6w7)JD}zTjy1sX-u}$nU%oRt)WU>gVky`>(>1h&DtZAXO69E z$^^6Kde?5cqKl;Yw9vTytsVS)cX6( diff --git a/res/locales/polyglot.csv b/res/locales/polyglot.csv index 121e6ed11..f729ac9bd 100644 --- a/res/locales/polyglot.csv +++ b/res/locales/polyglot.csv @@ -195,7 +195,7 @@ "ERROR_NETWORK_CONNECTION_LOST";"";"Connection lost.";"Connexion perdue.";"Conexión perdida.";"Verbindung verloren.";"Connessione persa.";"Conexão perdida.";"Ligação perdida.";"Соединение потеряно.";"Χάθηκε η σύνδεση.";"Bağlantı kesildi.";"Mistet forbindelse.";"Mistet forbindelsen.";"Anslutningen bröts.";"Verbinding verloren.";"Stracono połączenie.";"Yhteys menetetty.";"接続が切断されました。";"网络连接失败。";"網絡連接失敗。";"연결이 끊어졌습니다.";"Spojení ztraceno.";"A kapcsolat megszakadt.";"S-a întrerupt conexiunea.";"การเชื่อมต่อผิดพลาด";"Връзката е изгубена.";"החיבור לרשת אבד." "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER";"";"The other player has disconnected.";"L’autre joueur s’est déconnecté.";"El otro jugador se ha desconectado.";"Der andere Spieler hat die Verbindung getrennt.";"L’altro giocatore si è disconnesso.";"O outro jogador foi desconectado.";"O outro jogador perdeu a ligação.";"Другой игрок отключился.";"Ο/η άλλος παίχτης αποσυνδέθηκε.";"Diğer oyuncunun bağlantısı kesildi.";"Den anden spiller har afbrudt forbindelsen.";"Den andre spilleren har koblet ifra.";"Den andra spelaren har kopplat ifrån.";"De andere speler heeft het spel verlaten.";"Gracz się rozłączył.";"Toinen pelaaja on menettänyt yhteyden.";"他のプレイヤーが接続を切断しました。";"另一个玩家断开了连接。";"另一個玩家斷線。";"다른 플레이어가 연결을 끊었습니다.";"Hráč se odpojil.";"Megszakadt a kapcsolat a másik játékossal.";"Celalalt jucator s-a deconectat.";"ผู้เล่นอื่นหลุดการเชื่อมต่อ";"Изгубена връзка с играч.";"השחקן התנתק מהרשת." "ERROR_NETWORK_SERVER";"";"Cannot connect to server.";"Impossible de se connecter au serveur.";"No se pudo conectar con el servidor.";"Es konnte keine Verbindung zum Server hergestellt werden.";"Impossibile connettersi al server.";"Não foi possível conectar-se ao servidor.";"Não é possível ligar ao servidor.";"Не удалось подключиться к серверу.";"Δεν μπορώ να συνδεθώ στον διακομιστή.";"Sunucuya bağlanılamıyor.";"Kan ikke få forbindelse til serveren.";"Kan ikke koble til serveren.";"Kan inte ansluta till servern.";"Kan geen verbinding maken met server.";"Nie można połączyć się z serwerem.";"Palvelimeen ei saada yhteyttä.";"サーバーに接続できません。";"不能连接至服务器。";"不能連接至服務器。";"서버에 연결할 수 없습니다.";"Nelze se připojit k serveru.";"Nem lehet a kiszolgálóhoz csatlakozni.";"Nu se poate face conexiunea la server.";"ไม่สามารถเชื่อมต่อระบบ";"Няма връзка със сървъра.";"אי אפשר להתחבר לשרת." -"ERROR_SAVE_CORRUPTED";"";"Save file corrupted.";"Fichier de sauvegarde corrompu.";"Archivo de guardado corrupto.";"Speicherstand beschädigt.";"Salvataggio corrotto.";"Arquivo de jogo salvo corrompido.";"Ficheiro de jogo corrompido.";"Файл сохранения повреждён.";"Το αποθηκευμένο αρχείο είναι κατεστραμμένο.";"Kayıt dosyası bozuk.";"Spildata er korrupt.";"Lagringsfil er korrupt.";"Sparfilen är korrupt. ";"Opgeslagen spel is beschadigd.";"Uszkodzony plik zapisu gry.";"Tallennus on vioittunut.";"セーブデータが破損しています。";"存档文件已被破坏。";"存檔文件已被破壞。";"저장된 게임에 오류가 있습니다.";"Uložený soubor je poškozen.";"A játékmentés megsérült.";"Fișierul salvat este stricat.";"Save เกิดความเสียหาย";"Повреден файл със запис.";"הקובץ השמור פגום.";"セーブデータが はそん しています。";"Vista skrá skemmd" +"ERROR_SAVE_CORRUPTED";"";"Save file corrupted.";"Fichier de sauvegarde corrompu.";"Archivo de guardado corrupto.";"Speicherstand beschädigt.";"Salvataggio corrotto.";"Arquivo de jogo salvo corrompido.";"Ficheiro de jogo corrompido.";"Файл сохранения повреждён.";"Το αποθηκευμένο αρχείο είναι κατεστραμμένο.";"Kayıt dosyası bozuk.";"Spildata er korrupt.";"Lagringsfil er korrupt.";"Sparfilen är korrupt. ";"Opgeslagen spel is beschadigd.";"Uszkodzony plik zapisu gry.";"Tallennus on vioittunut.";"セーブデータが破損しています。";"存档文件已被破坏。";"存檔文件已被破壞。";"저장된 게임에 오류가 있습니다.";"Uložený soubor je poškozen.";"A játékmentés megsérült.";"Fișierul salvat este stricat.";"Save เกิดความเสียหาย";"Повреден файл със запис.";"הקובץ השמור פגום.";"セーブデータが はそん しています。";"Vista skrá skemmd." "ERROR_SAVE_NO_GAMES_FOUND";"In previously saved games";"No games found.";"Aucune sauvegarde trouvée.";"No se encontraron partidas.";"Keine Speicherstände gefunden.";"Nessuna partita trovata.";"Nenhum jogo encontrado.";"Sem jogos.";"Сохранения не найдены.";"Δεν βρέθηκαν παιχνίδια.";"Oyun bulunamadı.";"Ingen gemte spil fundet.";"Ingen lagrede spill funnet.";"Inga sparade spel hittades.";"Geen spellen gevonden.";"Nie znaleziono zapisanych gier.";"Pelejä ei löytynyt.";"セーブデータが見つかりません。";"找不到游戏。";"找不到游戲。";"저장된 게임이 없습니다.";"Nenalezeny žádné hry.";"Nem található elmentett játékállás.";"Nu s-a găsit niciun joc.";"ไม่เจอเกมที่สร้าง";"Няма намерени игри.";"לא נמצאו משחקים שמורים." "GAME_ACTION_ATTACK";"[Infinitive/tutorial verb]";"Attack";"Attaquer";"Atacar";"Attackiere";"Attaccare";"Atacar";"Atacar";"Атаковать";"Επίθεση";"Saldır";"Angrib";"Angrip";"Attackera";"Aanvallen";"Atakuj";"Hyökkää";"攻める";"攻击";"攻擊";"공격";"Útočit";"Támadni";"Atacă";"โจมตี";"Атакувай";"תקוף";"せめる";"Árás" @@ -369,13 +369,13 @@ "MENU_LABEL_AGE";"";"Age";"Âge";"Edad";"Alter";"Età";"Idade";"Idade";"Возраст";"Ηλικία";"Yaş";"Alder";"Alder";"Ålder";"Leeftijd";"Wiek";"Ikä";"年齢";"年龄";"年齡";"나이";"Věk";"Kor";"Vârstă";"อายุ";"Възраст";"גיל" "MENU_LABEL_ARE_YOU_REALLY_SURE";"";"Are you really sure?";"Êtes-vous vraiment sûr ?";"¿Estás totalmente seguro?";"Bist du wirklich sicher?";"Sei davvero sicuro?";"Você tem certeza absoluta?";"Você tem mesmo a certeza?";"Вы точно уверены?";"Απολύτως σίγουρα;";"Gerçekten emin misiniz?";"Er du helt sikker?";"Er du helt sikker?";"Är du helt säker?";"Weet je het heel zeker?";"Naprawdę?";"Oletko aivan varma?";"本当によろしいですか?";"你是否确认?";"你是否確認?";"정말로 확실합니까?";"Jste si opravdu jist?";"Egészen biztos vagy benne?";"Ești foarte sigur?";"คุณมั่นใจแล้วจริงๆนะ?";"Наистина ли потвърждаваш?";"באמת באמת בטוח?" "MENU_LABEL_ARE_YOU_SURE";"A generic confirmation";"Are you sure?";"Êtes-vous certain ?";"¿Estás seguro?";"Bist du sicher?";"Sei sicuro?";"Você tem certeza?";"Você tem a certeza?";"Вы уверены?";"Σίγουρα;";"Emin misiniz?";"Er du sikker?";"Er du sikker?";"Är du säker?";"Weet je het zeker?";"Na pewno?";"Oletko varma?";"よろしいですか?";"你确定吗?";"你確定嗎?";"확실합니까?";"Jste si jist?";"Biztos vagy benne?";"Ești sigur?";"มั่นใจแล้วนะ?";"Наистина ли?";"אתה בטוח?" -"MENU_LABEL_BACK";"Back one level in selections";"Back";"Retour";"Volver";"Zurück";"Indietro";"Voltar";"Atrás";"Назад";"Επιστροφή";"Geri";"Tilbage";"Tilbake";"Tillbaka";"Terug";"Wstecz";"Takaisin";"戻る";"返回";"返回";"뒤로";"Zpět";"Vissza";"Înapoi";"กลับ";"Назад";"חזרה" +"MENU_LABEL_BACK";"Back one level in selections";"Back";"Retour";"Volver";"Zurück";"Indietro";"Voltar";"Atrás";"Назад";"Επιστροφή";"Geri";"Tilbage";"Tilbake";"Tillbaka";"Terug";"Wstecz";"Takaisin";"戻る";"返回";"返回";"뒤로";"Zpět";"Vissza";"Înapoi";"กลับ";"Назад";"חזרה";"もどる";"Tilbaka" "MENU_LABEL_BACKGROUND_MUSIC";"";"Background music";"Volume du fond sonore";"Música de fondo";"Hintergrundmusik";"Musica di sottofondo";"Música de fundo";"Música de fundo";"Музыка";"Μουσική";"Arkafon Müziği";"Baggrundsmusik";"Bakgrundsmusikk";"Bakgrundsmusik";"Achtergrondmuziek";"Podkład muzyczny";"Taustamusiikki";"BGM";"背景音乐";"背景音樂";"배경 음악";"Hudba v pozadí";"Háttérzene";"Volum muzică de fundal";"คนตรีประกอบ";"Музика";"עוצמת מוזיקת רקע" -"MENU_LABEL_CANCEL";"";"Cancel";"Annuler";"Cancelar";"Abbrechen";"Cancella";"Cancelar";"Cancelar";"Отмена";"Ακύρωση";"İptal";"Annuler";"Avbryte";"Avbryt";"Annuleren";"Anuluj";"Peruuta";"キャンセル";"取消";"取消";"취소";"Storno";"Mégse";"Anulare";"ยกเลิก";"Отмени";"ביטול" +"MENU_LABEL_CANCEL";"";"Cancel";"Annuler";"Cancelar";"Abbrechen";"Cancella";"Cancelar";"Cancelar";"Отмена";"Ακύρωση";"İptal";"Annuler";"Avbryte";"Avbryt";"Annuleren";"Anuluj";"Peruuta";"キャンセル";"取消";"取消";"취소";"Storno";"Mégse";"Anulare";"ยกเลิก";"Отмени";"ביטול";"キャンセル";"Hætta við" "MENU_LABEL_CLOSE";"Close window";"Close";"Fermer";"Cerrar";"Schließen";"Chiudi";"Fechar";"Fechar";"Закрыть";"Κλείσιμο";"Kapat";"Luk";"Steng";"Stäng";"Sluiten";"Zamknij";"Sulje";"閉じる";"关闭";"關閉";"닫기";"Zavřít";"Bezárás";"Închide";"ปิด";"Затвори";"סגור" -"MENU_LABEL_CONFIRM_BUTTON";"Choose selected button";"Confirm";"Confirmer";"Confirmar";"Bestätigen";"Conferma";"Confirmar";"Confirmar";"Принять";"Επιβεβαίωση";"Onayla";"Godkend";"Bekreft";"Välj";"Bevestigen";"Zatwierdź";"Valmis";"決定";"确认";"確認";"확인";"Potvrdit";"Rendben";"Confirmă";"ยืนยัน";"Потвърди";"אשר" -"MENU_LABEL_CONTINUE";"";"Continue";"Continuer";"Continuar";"Fortsetzen";"Continua";"Continuar";"Continuar";"Продолжить игру";"Συνέχεια";"Devam Et";"Fortsæt";"Gå videre";"Fortsätt";"Doorgaan";"Kontynuuj";"Jatka";"続ける";"继续";"繼續";"계속";"Pokračovat";"Folytatás";"Continuă";"เล่นต่อ";"Продължи";"המשך" -"MENU_LABEL_CONTINUE_QUESTION";"";"Continue?";"Continuer ?";"¿Continuar?";"Fortfahren?";"Continua?";"Continuar?";"Continuar?";"Продолжить игру?";"Συνέχεια;";"Devam edilsin mi?";"Fortsæt?";"Gå videre?";"Fortsätt?";"Doorgaan?";"Kontynuować?";"Jatka?";"続けますか?";"继续?";"繼續?";"계속할까요?";"Pokračovat?";"Folytatod?";"Continui?";"เล่นต่อ?";"Продължи?";"להמשיך?" +"MENU_LABEL_CONFIRM_BUTTON";"Choose selected button";"Confirm";"Confirmer";"Confirmar";"Bestätigen";"Conferma";"Confirmar";"Confirmar";"Принять";"Επιβεβαίωση";"Onayla";"Godkend";"Bekreft";"Välj";"Bevestigen";"Zatwierdź";"Valmis";"決定";"确认";"確認";"확인";"Potvrdit";"Rendben";"Confirmă";"ยืนยัน";"Потвърди";"אשר";"けってい";"Staðfesta" +"MENU_LABEL_CONTINUE";"";"Continue";"Continuer";"Continuar";"Fortsetzen";"Continua";"Continuar";"Continuar";"Продолжить игру";"Συνέχεια";"Devam Et";"Fortsæt";"Gå videre";"Fortsätt";"Doorgaan";"Kontynuuj";"Jatka";"続ける";"继续";"繼續";"계속";"Pokračovat";"Folytatás";"Continuă";"เล่นต่อ";"Продължи";"המשך";"つづける";"Áfram" +"MENU_LABEL_CONTINUE_QUESTION";"";"Continue?";"Continuer ?";"¿Continuar?";"Fortfahren?";"Continua?";"Continuar?";"Continuar?";"Продолжить игру?";"Συνέχεια;";"Devam edilsin mi?";"Fortsæt?";"Gå videre?";"Fortsätt?";"Doorgaan?";"Kontynuować?";"Jatka?";"続けますか?";"继续?";"繼續?";"계속할까요?";"Pokračovat?";"Folytatod?";"Continui?";"เล่นต่อ?";"Продължи?";"להמשיך?";"つづけますか?";"Áfram?" "MENU_LABEL_CREDITS";"Authors list";"Credits";"Remerciements";"Créditos";"Credits";"Crediti";"Créditos";"Créditos";"Авторы";"Συντελεστές";"Künye";"Credits";"Medvirkende";"Medverkande";"Credits";"Twórcy";"Lopputekstit";"クレジット";"致谢";"製作群";"제작진";"Autoři";"Készítők";"Credite";"เครดิต";"Създатели";"תודות" "MENU_LABEL_DESKTOP";"";"Exit to Desktop";"Retourner sur le bureau";"Salir al escritorio";"Zurück zum Desktop";"Torna al desktop";"Sair para a área de trabalho";"Sair para o ambiente de trabalho";"Выйти на рабочий стол";"Επιστροφή στο περιβάλλον εργασίας";"Masaüstüne Çıkış";"Afslut til Skrivebord";"Avslutt til skrivebordet";"Avsluta till skrivbordet";"Sluiten naar bureaublad";"Wyjdź do Pulpitu";"Poistu työpöydälle";"終了してデスクトップへ戻る";"退出至桌面";"退出至桌面";"바탕화면으로 나가기";"Odejít na plochu";"Kilépés a munkaasztalra";"Ieșire către Desktop";"ออกสู่ desktop";"Излез от играта";"יציאה לשולחן העבודה" "MENU_LABEL_DESKTOP_QUESTION";"";"Exit to Desktop?";"Retourner sur le bureau ?";"¿Salir al escritorio?";"Zum Desktop zurückkehren?";"Tornare al desktop?";"Sair para a área de trabalho?";"Sair para o ambiente de trabalho?";"Выйти на рабочий стол?";"Να επιστρέψω στο περιβάλλον εργασίας;";"Masaüstüne çıkılsın mı?";"Afslut til Skrivebord?";"Avslutt til skrivebordet?";"Avsluta till skrivbordet?";"Sluiten naar bureaublad?";"Wyjść do Pulpitu?";"Poistu työpöydälle?";"終了してデスクトップへ戻りますか?";"退出至桌面?";"退出至桌面?";"바탕화면으로 나가겠습니까?";"Odejít na plochu?";"Kilépsz az asztalra?";"Ieși catre Desktop?";"ต้องการออกสู่ desktop?";"Наистина ли излизаш от играта?";"לצאת לשולחן העבודה?" @@ -385,7 +385,7 @@ "MENU_LABEL_EXIT";"Leave a state or place";"Exit";"Sortir";"Salir";"Beenden";"Esci";"Sair";"Sair";"Покинуть";"Έξοδος";"Çıkış";"Afslut";"Avslutt";"Avsluta";"Aflsuiten";"Wyjdź";"Lopeta";"終了する";"退出";"退出";"나가기";"Odejít";"Kilépés";"Ieși";"ออก";"Излез";"יציאה" "MENU_LABEL_EXIT_QUESTION";"";"Exit?";"Sortir ?";"¿Salir?";"Beenden?";"Uscire?";"Sair?";"Sair?";"Выйти?";"Έξοδος;";"Oyundan çıkılsın mı?";"Afslut?";"Avslutt?";"Avsluta?";"Afsluiten?";"Wyjść?";"Lopeta?";"終了しますか?";"退出?";"退出?";"나가겠습니까?";"Odejít?";"Kilépsz?";"Ieșire?";"ต้องการออก?";"Излизаш ли?";"לצאת?" "MENU_LABEL_EXTRAS";"";"Extras";"Extras";"Extras";"Extras";"Extra";"Extras";"Extras";"Дополнительно";"Επιπρόσθετα";"Ekstra";"Ekstra indhold";"Ekstra innhold";"Extra innehåll";"Extra’s";"Dodatki";"Ekstrat";"エキストラ";"演员";"演員";"추가 컨텐츠";"Extra";"Extra";"Extra";"เพิ่มเติม";"Екстри";"תוכן נוסף" -"MENU_LABEL_FRAMESPERSEC";"Frames Per Second";"FPS";"IPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Кадровая частота";"FPS";"FPS";"FPS";"FPS";"Bild/s";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Cadre pe secundă (FPS)";"เฟรมต่อวินาที";"Кадри/сек.";"FPS" +"MENU_LABEL_FRAMESPERSEC";"Frames Per Second";"FPS";"IPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Кадровая частота";"FPS";"FPS";"FPS";"FPS";"Bild/s";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"FPS";"Cadre pe secundă (FPS)";"เฟรมต่อวินาที";"Кадри/сек.";"FPS";"FPS";"FPS" "MENU_LABEL_GALLERY";"";"Art gallery";"Galerie d’art";"Galería de arte";"Kunstgalerie";"Galleria d’arte";"Galeria";"Galeria";"Галерея";"Γκαλερί";"Sanat Galerisi";"Kunstgalleri";"Kunstgalleri";"Konstgalleri";"Kunstgallerij";"Galeria";"Galleria";"アートギャラリー";"艺术馆";"藝術館";"아트 갤러리";"Galerie umění";"Képtár";"Galerie de artă";"แกลเลอรี่";"Галерия";"גלריה" "MENU_LABEL_GOODBYE";"";"Goodbye!";"Au revoir !";"¡Adiós!";"Auf Wiedersehen!";"Arrivederci!";"Adeus!";"Adeus!";"До свидания!";"Αντίο!";"Güle güle!";"Farvel!";"Ha det!";"Farväl!";"Vaarwel!";"Do zobaczenia!";"Näkemiin!";"さようなら!";"再见!";"再見!";"안녕히 가세요!";"Nashledanou!";"Viszont látásra!";"La revedere!";"ลาก่อน";"Довиждане!";"להתראות!" "MENU_LABEL_GRAPHICS";"";"Graphics";"Graphismes";"Gráficos";"Grafik";"Grafica";"Gráficos";"Gráficos";"Графика";"Γραφικά";"Grafikler";"Grafik";"Grafikk";"Grafik";"Beeld";"Grafika";"Grafiikka";"グラフィック";"图形设置";"圖形設置";"그래픽";"Grafika";"Grafika";"Grafică";"กราฟฟิค";"Графика";"גרפיקה" @@ -400,8 +400,8 @@ "MENU_LABEL_NEW_GAME";"";"New Game";"Nouvelle partie";"Juego nuevo";"Neues Spiel";"Nuova partita";"Novo Jogo";"Novo Jogo";"Новая игра";"Νέο παιχνίδι";"Yeni Oyun";"Nyt Spil";"Nytt Spill";"Nytt spel";"Nieuw spel";"Nowa Gra";"Uusi peli";"新しいゲーム";"新游戏";"新游戲";"새 게임";"Nová hra";"Új játék";"Joc nou";"เริ่มเกมใหม่";"Нова игра";"משחק חדש" "MENU_LABEL_NEXT";"";"Next";"Suivant";"Siguiente";"Weiter";"Avanti";"Próximo";"Próximo";"След.";"Επόμενο";"Sonraki";"Næste";"Neste";"Nästa";"Volgende";"Dalej";"Seuraava";"次へ";"下一个";"下一個";"다음";"Další";"Következő";"Următorul";"ต่อไป";"Нататък";"הבא" "MENU_LABEL_NEXT_TRACK";"Next music track/song";"Next track";"Piste suivante";"Siguiente canción";"Nächster Titel";"Traccia successiva";"Próxima música";"Próxima música";"След. трек";"Επόμενο κομμάτι";"Sonraki parça";"Næste nummer";"Neste spor";"Nästa låt";"Volgend nummer";"Nastepny utwór";"Seuraava kappale";"次の曲";"下一个曲目";"下一個曲目";"다음 곡";"Další skladba";"Következő dal";"Melodia următoare";"เพลงต่อไป";"Следваща песен";"שיר הבא" -"MENU_LABEL_NO";"";"No";"Non";"No";"Nein";"No";"Não";"Não";"Нет";"Όχι";"Hayır";"Nej";"Nei";"Nej";"Nee";"Nie";"Ei";"いいえ";"否";"否";"아니요";"Ne";"Nem";"Nu";"ไม่ใช่่";"Не";"לא" -"MENU_LABEL_NO_CAPS";"";"NO";"NON";"NO";"NEIN";"NO";"NÃO";"NÃO";"НЕТ";"ΟΧΙ";"HAYIR";"NEJ";"NEI";"NEJ";"NEE";"NIE";"EI";"いいえ";"否";"否";"아니요";"NE";"NEM";"NU";"ไม่ใช่";"НЕ";"לא" +"MENU_LABEL_NO";"";"No";"Non";"No";"Nein";"No";"Não";"Não";"Нет";"Όχι";"Hayır";"Nej";"Nei";"Nej";"Nee";"Nie";"Ei";"いいえ";"否";"否";"아니요";"Ne";"Nem";"Nu";"ไม่ใช่่";"Не";"לא";"いいえ";"Nei" +"MENU_LABEL_NO_CAPS";"";"NO";"NON";"NO";"NEIN";"NO";"NÃO";"NÃO";"НЕТ";"ΟΧΙ";"HAYIR";"NEJ";"NEI";"NEJ";"NEE";"NIE";"EI";"いいえ";"否";"否";"아니요";"NE";"NEM";"NU";"ไม่ใช่";"НЕ";"לא";"いいえ";"NEI" "MENU_LABEL_NOPE";"A more casual 'no'";"Nope";"Nan";"Nah";"Nö";"No";"Nah";"Não";"Неа";"Μπα";"Yoo";"Næh";"Nei";"Nej";"Nope";"Nie";"Ei";"だめ";"不行";"不行";"아니";"Nikoliv";"Nem";"Nah";"ไม่ใช่";"Мне";"לא" "MENU_LABEL_OK";"As in Windows dialog";"OK";"OK";"Ok";"OK";"Ok";"Ok";"Ok";"ОК";"ΟΚ";"TAMAM";"OK";"OK";"OK";"OK";"OK";"OK";"OK";"OK";"OK";"확인";"OK";"OK";"OK";"ตกลง";"Приеми";"טוב" "MENU_LABEL_PAUSE";"[Infinitive/tutorial verb] common term";"Pause";"Pause";"Pausa";"Pause";"Pausa";"Pausar";"Pausa";"Пауза";"Παύση";"Durdur";"Pause";"Pause";"Pausa";"Pauzeren";"Pauza";"Pysäytä";"ポーズ";"暂停";"暫停";"일시 정지";"Pauza";"Szünet";"Pauză";"หยุด";"Паузирай";"השהה" @@ -417,8 +417,8 @@ "MENU_LABEL_PRICE";"";"Price";"Prix";"Precio";"Preis";"Prezzo";"Preço";"Preço";"Цена";"Τιμή";"Fiyat";"Pris";"Pris";"Pris";"Prijs";"Cena";"Hinta";"価格";"价钱";"價錢";"가격";"Cena";"Ár";"Preț";"ราคา";"Цена";"מחיר" "MENU_LABEL_PRICE_FREE";"";"Free";"Gratuit";"Gratis";"Kostenlos";"Gratis";"Grátis";"Grátis";"Бесплатно";"Ελεύθερο";"Bedava";"Gratis";"Gratis";"Gratis";"Gratis";"Darmowy";"Ilmainen";"無料";"免费";"免費";"무료";"Zdarma";"Ingyenes";"Gratis";"ฟรี";"Безплатно";"חינם" "MENU_LABEL_PURCHASE";"[Infinitive/tutorial verb]";"Purchase";"Acheter";"Comprar";"Kaufen";"Compra";"Comprar";"Comprar";"Купить";"Αγόρασε";"Satın Al";"Køb";"Kjøp";"Köp";"Kopen";"Kup";"Osta";"購入";"购买";"購買";"구매하기";"Zakoupit";"Vásárlás";"Cumpără";"ซื้อ";"Купи";"קנה" -"MENU_LABEL_QUIT";"Leave the game (keep short)";"Quit";"Quitter";"Cerrar";"Beenden";"Esci";"Sair";"Sair";"Выход";"Έξοδος";"Oyunu Kapat";"Afslut";"Avslutt";"Avsluta";"Stoppen";"Wyjdź";"Lopeta";"終了する";"退出";"退出";"종료";"Ukončit hru";"Bezárás";"Închidere";"ออก";"Изход";"הפסק" -"MENU_LABEL_QUIT_CONFIRM";"";"Are you sure you want to quit?";"Êtes-vous certain de vouloir quitter ?";"¿Seguro que quieres salir?";"Wirklich beenden?";"Sicuro di voler uscire?";"Você tem certeza de que quer sair?";"Tem a certeza que quer sair?";"Вы точно хотите выйти?";"Σίγουρα θέλετε να εγκαταλείψετε;";"Çıkmak istediğinize emin misiniz?";"Er du sikker på du vil afslutte?";"Er du sikker på at du vil avslutte?";"Är du säker på att du vill avsluta?";"Weet je zeker dat je wilt stoppen?";"Czy na pewno chcesz wyjść?";"Haluatko varmasti lopettaa?";"本当に終了しますか?";"你确定你需要退出吗?";"你確定你需要退出嗎?";"정말로 종료할까요?";"Opravdu chcete hru ukončit?";"Biztos ki akarsz lépni?";"Ești sigur că vrei să închizi?";"มั่นใจหรือไม่ว่าต้องการออก?";"Наистина ли искаш да се откажеш?";"אתה בטוח שאתה רוצה להפסיק?" +"MENU_LABEL_QUIT";"Leave the game (keep short)";"Quit";"Quitter";"Cerrar";"Beenden";"Esci";"Sair";"Sair";"Выход";"Έξοδος";"Oyunu Kapat";"Afslut";"Avslutt";"Avsluta";"Stoppen";"Wyjdź";"Lopeta";"終了する";"退出";"退出";"종료";"Ukončit hru";"Bezárás";"Închidere";"ออก";"Изход";"הפסק";"しゅうりょうする";"Hætta" +"MENU_LABEL_QUIT_CONFIRM";"";"Are you sure you want to quit?";"Êtes-vous certain de vouloir quitter ?";"¿Seguro que quieres salir?";"Wirklich beenden?";"Sicuro di voler uscire?";"Você tem certeza de que quer sair?";"Tem a certeza que quer sair?";"Вы точно хотите выйти?";"Σίγουρα θέλετε να εγκαταλείψετε;";"Çıkmak istediğinize emin misiniz?";"Er du sikker på du vil afslutte?";"Er du sikker på at du vil avslutte?";"Är du säker på att du vill avsluta?";"Weet je zeker dat je wilt stoppen?";"Czy na pewno chcesz wyjść?";"Haluatko varmasti lopettaa?";"本当に終了しますか?";"你确定你需要退出吗?";"你確定你需要退出嗎?";"정말로 종료할까요?";"Opravdu chcete hru ukončit?";"Biztos ki akarsz lépni?";"Ești sigur că vrei să închizi?";"มั่นใจหรือไม่ว่าต้องการออก?";"Наистина ли искаш да се откажеш?";"אתה בטוח שאתה רוצה להפסיק?";"ほんとうに しゅうりょうしますか?";"Ertu viss um að þú viljir hætta?" "MENU_LABEL_QUIT_QUESTION";"";"Quit?";"Quitter ?";"¿Salir?";"Spiel beenden?";"Uscire?";"Sair?";"Sair?";"Выйти из игры?";"Έξοδος;";"Oyun kapatılsın mı?";"Afslut?";"Avslutt?";"Avsluta?";"Stoppen?";"Wyjść?";"Lopeta?";"終了しますか?";"退出?";"退出?";"종료할까요?";"Ukončít hru?";"Kilépsz?";"Închizi?";"ต้องการออก?";"Отказваш ли се?";"להפסיק?" "MENU_LABEL_REPLAY";"Show the replay of the last game ";"Replay";"Revoir";"Repetir";"Replay";"Rigioca";"Replay";"Replay";"Переиграть";"Επανάληψη";"Tekrarını İzle";"Spil igen";"Spill igjen";"Spela igen";"Speel opnieuw";"Replay";"Uusinta";"リプレイ";"重播";"重播";"리플레이";"Přehrát";"Újra játszás";"Joaca din nou";"เล่นอีกรอบ";"Повторение";"הילוך-חוזר" "MENU_LABEL_RETURN";"";"Return";"Retour";"Volver";"Zurück";"Ritorna";"Retornar";"Voltar";"Назад";"Επιστροφή";"Geri Dön";"Tilbage";"Gå tilbake";"Återgå";"Terug";"Powrót";"Palaa";"戻る";"返回";"返回";"돌아가기";"Zpět";"Visszalépés";"Întoarcere";"กลับ";"Връщане";"חזור" @@ -435,8 +435,8 @@ "MENU_LABEL_WELCOME";"";"Welcome";"Bienvenue";"Bienvenido";"Willkommen";"Benvenuto";"Bem vindo";"Bem-vindo";"Добро пожаловать";"Καλωσήρθατε";"Hoşgeldiniz";"Velkommen";"Velkommen";"Välkommen";"Welkom";"Witaj";"Tervetuloa";"ようこそ";"欢迎";"歡迎";"환영합니다";"Vítejte";"Üdvözölünk";"Bine ai venit";"ยินดีต้อนรับ";"Привет";"שלום" "MENU_LABEL_WORLD";"";"World";"Monde";"Mundo";"Welt";"Mondo";"Mundo";"Mundo";"Мир";"Κόσμος";"Dünya";"Verden";"Verden";"Värld";"Wereld";"Świat";"Maailma";"ワールド";"世界";"世界";"세계";"Svět";"Világ";"Lume";"โลก";"Свят";"עולם" "MENU_LABEL_YEAH";"A more casual 'yes'";"Yeah";"Ouais";"Seh";"Jo";"Si";"Uhum";"Sim";"Ага";"Ναι";"Hee";"Jah";"Ja";"Japp";"Jup";"Tak";"Joo";"いいよ";"好的";"好的";"응";"Jistě";"Ja";"Dap";"ใช่";"Аха";"בסדר" -"MENU_LABEL_YES";"";"Yes";"Oui";"Sí";"Ja";"Sì";"Sim";"Sim";"Да";"Ναι";"Evet";"Ja";"Ja";"Ja";"Ja";"Tak";"Kyllä";"はい";"是";"是";"예";"Ano";"Igen";"Da";"ใช่";"Да";"כן" -"MENU_LABEL_YES_CAPS";"";"YES";"OUI";"SÍ";"JA";"SI";"SIM";"SIM";"ДА";"ΝΑΙ";"EVET";"JA";"JA";"JA";"JA";"TAK";"KYLLÄ";"はい";"是";"是";"예";"ANO";"IGEN";"DA";"ใช่";"ДА";"כן" +"MENU_LABEL_YES";"";"Yes";"Oui";"Sí";"Ja";"Sì";"Sim";"Sim";"Да";"Ναι";"Evet";"Ja";"Ja";"Ja";"Ja";"Tak";"Kyllä";"はい";"是";"是";"예";"Ano";"Igen";"Da";"ใช่";"Да";"כן";"はい";"Já" +"MENU_LABEL_YES_CAPS";"";"YES";"OUI";"SÍ";"JA";"SI";"SIM";"SIM";"ДА";"ΝΑΙ";"EVET";"JA";"JA";"JA";"JA";"TAK";"KYLLÄ";"はい";"是";"是";"예";"ANO";"IGEN";"DA";"ใช่";"ДА";"כן";"はい";"JÁ" "MENU_LOGIN";"[Verb]";"Login";"Se connecter";"Iniciar sesión";"Login";"Login";"Login";"Login";"Вход";"Είσοδος";"Giriş";"Log ind";"Logg in";"Logga in";"Login";"Logowanie";"Kirjaudu";"ログイン";"登录";"登錄";"로그인";"Přihlášení";"Csatlakozás";"Conectare";"ล๊อกอิน";"Влез";"כניסה" "MENU_LOGIN_EMAIL";"Email address";"E-mail";"E-mail";"E-mail";"E-Mail";"E-mail";"E-mail";"E-mail";"E-Mail";"Ηλεκτρονικό ταχυδρομείο";"E-Mail";"E-mail";"E-postaddresse";"E-postadress";"E-mail";"E-mail";"Sähköposti";"Eメール";"电子邮件";"電子郵件";"이메일";"E-mail";"E-mail";"E-mail";"อีเมล";"Имейл";"כתובת-דואר" diff --git a/src/com/Torvald/ColourUtil/HSV.java b/src/com/Torvald/ColourUtil/HSV.java index fc30134e4..c4cc944eb 100644 --- a/src/com/Torvald/ColourUtil/HSV.java +++ b/src/com/Torvald/ColourUtil/HSV.java @@ -1,76 +1,49 @@ package com.Torvald.ColourUtil; -import com.jme3.math.FastMath; -import org.newdawn.slick.Color; - /** - * Created by minjaesong on 16-01-16. + * Created by minjaesong on 16-03-10. */ public class HSV { + private float H; + private float S; + private float V; - /** - * Convert HSV parameters to RGB color. - * @param h 0-359 Hue - * @param s 0-255 Saturation - * @param v 0-255 Value - * @return org.newdawn.slick.Color - * @link http://www.rapidtables.com/convert/color/hsv-to-rgb.htm - */ - public static Color toRGB(int h, int s, int v) { - int H = h; - if (H < 0 || H >= 360) { - H %= 360; - } - - float S = s / 255f; - float V = v / 255f; - - float C = V * S; - float X = C * (1 - FastMath.abs( - (H / 60f) % 2 - 1 - )); - float m = V - C; - - float R_prime = Float.NaN; - float G_prime = Float.NaN; - float B_prime = Float.NaN; - - if (H < 60) { - R_prime = C; - G_prime = X; - B_prime = 0; - } - else if (H < 120) { - R_prime = X; - G_prime = C; - B_prime = 0; - } - else if (H < 180) { - R_prime = 0; - G_prime = C; - B_prime = X; - } - else if (H < 240) { - R_prime = 0; - G_prime = X; - B_prime = C; - } - else if (H < 300) { - R_prime = X; - G_prime = 0; - B_prime = C; - } - else if (H < 360) { - R_prime = C; - G_prime = 0; - B_prime = X; - } - - return new Color( - (int) ((R_prime + m) * 255) - , (int) ((G_prime + m) * 255) - , (int) ((B_prime + m) * 255) - ); + public HSV() { } + /** + * + * @param h 0-359 + * @param s 0-1 + * @param v 0-1 + */ + public HSV(float h, float s, float v) { + H = h; + S = s; + V = v; + } + + public float getH() { + return H; + } + + public void setH(float h) { + H = h; + } + + public float getS() { + return S; + } + + public void setS(float s) { + S = s; + } + + public float getV() { + return V; + } + + public void setV(float v) { + V = v; + } } diff --git a/src/com/Torvald/ColourUtil/HSVUtil.java b/src/com/Torvald/ColourUtil/HSVUtil.java new file mode 100644 index 000000000..14fcb2a87 --- /dev/null +++ b/src/com/Torvald/ColourUtil/HSVUtil.java @@ -0,0 +1,109 @@ +package com.Torvald.ColourUtil; + +import com.jme3.math.FastMath; +import org.newdawn.slick.Color; + +/** + * Created by minjaesong on 16-01-16. + */ +public class HSVUtil { + + /** + * Convert HSV parameters to RGB color. + * @param H 0-359 Hue + * @param S 0-1 Saturation + * @param V 0-1 Value + * @return org.newdawn.slick.Color + * @link http://www.rapidtables.com/convert/color/hsv-to-rgb.htm + */ + public static Color toRGB(float H, float S, float V) { + H %= 360; + + float C = V * S; + float X = C * (1 - FastMath.abs( + (H / 60f) % 2 - 1 + )); + float m = V - C; + + float R_prime = Float.NaN; + float G_prime = Float.NaN; + float B_prime = Float.NaN; + + if (H < 60) { + R_prime = C; + G_prime = X; + B_prime = 0; + } + else if (H < 120) { + R_prime = X; + G_prime = C; + B_prime = 0; + } + else if (H < 180) { + R_prime = 0; + G_prime = C; + B_prime = X; + } + else if (H < 240) { + R_prime = 0; + G_prime = X; + B_prime = C; + } + else if (H < 300) { + R_prime = X; + G_prime = 0; + B_prime = C; + } + else if (H < 360) { + R_prime = C; + G_prime = 0; + B_prime = X; + } + + return new Color( + (int) ((R_prime + m) * 255) + , (int) ((G_prime + m) * 255) + , (int) ((B_prime + m) * 255) + ); + } + + public static Color toRGB(HSV hsv) { + return toRGB(hsv.getH(), hsv.getS(), hsv.getV()); + } + + public static HSV fromRGB(Color color) { + float r = color.getRed() / 255f; + float g = color.getGreen() / 255f; + float b = color.getBlue() / 255f; + + float rgbMin = FastMath.min(r, g, b); + float rgbMax = FastMath.max(r, g, b); + + float h; + float s; + float v = rgbMax; + + float delta = rgbMax - rgbMin; + + if (rgbMax != 0) + s = delta / rgbMax; + else { + h = 0; + s = 0; + return new HSV(h, s, v); + } + + if (r == rgbMax) + h = (g - b) / delta; + else if (g == rgbMax) + h = 2 + (b - r) / delta; + else + h = 4 + (r - g) / delta; + + h *= 60; + if (h < 0) h += 360; + + return new HSV(h, s, v); + } + +} diff --git a/src/com/Torvald/ImageFont/GameFontBase.java b/src/com/Torvald/ImageFont/GameFontBase.java index de454e1c3..a41307476 100644 --- a/src/com/Torvald/ImageFont/GameFontBase.java +++ b/src/com/Torvald/ImageFont/GameFontBase.java @@ -112,24 +112,30 @@ public class GameFontBase implements Font { return hanIndex % JONG_COUNT; } - private int getHanChoseongShift(int hanIndex) { + private int getHanChoseongRow(int hanIndex) { int jungseongIndex = getHanJungseong(hanIndex); Integer[] jungseongWide = {8, 12, 13, 17, 18, 21}; + Integer[] jungseongComplex = {9, 10, 11, 14, 15, 16, 22}; + int ret; - if (getHanJongseong(hanIndex) != 0) - return (Arrays.asList(jungseongWide).contains(jungseongIndex)) - ? 1 : 0; - else - return (Arrays.asList(jungseongWide).contains(jungseongIndex)) - ? 1 : 0; + if (Arrays.asList(jungseongWide).contains(jungseongIndex)) { + ret = 2; + } + else if (Arrays.asList(jungseongComplex).contains(jungseongIndex)) { + ret = 4; + } + else { + ret = 0; + } + return (getHanJongseong(hanIndex) == 0) ? ret : ret + 1; } - private int getHanJungseongShift(int hanIndex) { - return (getHanJongseong(hanIndex) == 0) ? 4 : 5; + private int getHanJungseongRow(int hanIndex) { + return (getHanJongseong(hanIndex) == 0) ? 6 : 7; } - private int getHanJongseongShift() { - return 6; + private int getHanJongseongRow() { + return 8; } private boolean isAsciiEF(char c) { @@ -356,9 +362,9 @@ public class GameFontBase implements Font { int indexJung = getHanJungseong(hIndex); int indexJong = getHanJongseong(hIndex); - int choRow = getHanChoseongShift(hIndex); - int jungRow = getHanJungseongShift(hIndex); - int jongRow = getHanJongseongShift(); + int choRow = getHanChoseongRow(hIndex); + int jungRow = getHanJungseongRow(hIndex); + int jongRow = getHanJongseongRow(); int glyphW = getWidth("" + ch); diff --git a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java index 37fe27fa7..36259a6db 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java +++ b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java @@ -119,6 +119,12 @@ public class ActorWithBody implements Actor, Visible, Glowing { */ public final int INVINCIBILITY_TIME = 500; + /** + * Will ignore fluid resistance if (submerged height / actor height) <= this var + */ + private final float FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO = 0.2f; + private final float FLUID_RESISTANCE_APPLY_FULL_RATIO = 0.5f; + private GameMap map; /** @@ -268,11 +274,11 @@ public class ActorWithBody implements Actor, Visible, Glowing { // order of the if-elseif chain is IMPORTANT if (isColliding(CONTACT_AREA_BOTTOM)) { adjustHitBottom(); - if (veloY != 0) veloY = -veloY * elasticity; + elasticReflectY(); grounded = true; } else if (isColliding(CONTACT_AREA_BOTTOM, 0, 1)) { - if (veloY != 0) veloY = -veloY * elasticity; + elasticReflectY(); grounded = true; } else { @@ -285,10 +291,10 @@ public class ActorWithBody implements Actor, Visible, Glowing { // order of the if-elseif chain is IMPORTANT if (isColliding(CONTACT_AREA_TOP)) { adjustHitTop(); - if (veloY != 0) veloY = -veloY * elasticity; + elasticReflectY(); } else if (isColliding(CONTACT_AREA_TOP, 0, -1)) { - if (veloY != 0) veloY = -veloY * elasticity; // for reversed gravity + elasticReflectY(); // for reversed gravity } else { } @@ -333,33 +339,39 @@ public class ActorWithBody implements Actor, Visible, Glowing { private void updateHorizontalPos() { if (!isNoCollideWorld()) { // check right - if (veloX > 0) { + if (veloX >= 0.5) { // order of the if-elseif chain is IMPORTANT if (isColliding(CONTACT_AREA_RIGHT) && !isColliding(CONTACT_AREA_LEFT)) { adjustHitRight(); - if (veloX != 0) veloX = -veloX * elasticity; + elasticReflectX(); } else if (isColliding(CONTACT_AREA_RIGHT, 1, 0) && !isColliding(CONTACT_AREA_LEFT, -1, 0)) { - if (veloX != 0) veloX = -veloX * elasticity; + elasticReflectX(); } else { } } - else { // fix for float-point rounding; veloX of zero should be treated as moving left + else if (veloX <= 0.5) { + System.out.println("collidingleft"); // order of the if-elseif chain is IMPORTANT if (isColliding(CONTACT_AREA_LEFT) && !isColliding(CONTACT_AREA_RIGHT)) { adjustHitLeft(); - if (veloX != 0) veloX = -veloX * elasticity; + elasticReflectX(); } else if (isColliding(CONTACT_AREA_LEFT, -1, 0) && !isColliding(CONTACT_AREA_RIGHT, 1, 0)) { - if (veloX != 0) veloX = -veloX * elasticity; + elasticReflectX(); } else { } } - + else { + System.out.println("updatehorizontal - |velo| < 0.5"); + if (isColliding(CONTACT_AREA_LEFT) || isColliding(CONTACT_AREA_RIGHT)) { + // elasticReflectX(); + } + } } } @@ -399,6 +411,14 @@ public class ActorWithBody implements Actor, Visible, Glowing { nextHitbox.setPosition(newX, newY); // + 1; float-point rounding compensation (i think...) } + private void elasticReflectX() { + if (veloX != 0) veloX = -veloX * elasticity; + } + + private void elasticReflectY() { + if (veloY != 0) veloY = -veloY * elasticity; + } + private boolean isColliding(int side) { return isColliding(side, 0, 0); } @@ -485,7 +505,6 @@ public class ActorWithBody implements Actor, Visible, Glowing { */ private void applyBuoyancy() { int fluidDensity = getTileDensity(); - int fluidResistance = getTileMvmtRstc(); float submergedVolume = getSubmergedVolume(); if (!isPlayerNoClip() && !grounded) { @@ -493,24 +512,18 @@ public class ActorWithBody implements Actor, Visible, Glowing { veloY -= ((fluidDensity - this.density) * map.getGravitation() * submergedVolume * Math.pow(mass, -1) - // * mvmtRstcToMultiplier(fluidResistance) // eliminate shoot-up * SI_TO_GAME_ACC); } } - private float getSubmergedVolume(){ + private float getSubmergedVolume() { float GAME_TO_SI_VOL = FastMath.pow((1f/METER), 3); if( density > 0 ){ - return FastMath.clamp( - (nextHitbox.getPointedY() - getFluidLevel()) // submerged height - * nextHitbox.getWidth() * nextHitbox.getWidth() - * GAME_TO_SI_VOL - , 0 - , nextHitbox.getHeight() - * nextHitbox.getWidth() * nextHitbox.getWidth() - * GAME_TO_SI_VOL - ); + return getSubmergedHeight() + * nextHitbox.getWidth() * nextHitbox.getWidth() + * GAME_TO_SI_VOL + ; //System.out.println("fluidHeight: "+fluidHeight+", submerged: "+submergedVolume); //submergedHeight / TILE_SIZE * 1^2 (pixel to meter) } @@ -519,7 +532,15 @@ public class ActorWithBody implements Actor, Visible, Glowing { } } - private int getFluidLevel(){ + private float getSubmergedHeight() { + return FastMath.clamp( + nextHitbox.getPointedY() - getFluidLevel() + , 0 + , nextHitbox.getHeight() + ); + } + + private int getFluidLevel() { int tilePosXStart = Math.round(nextHitbox.getPosX() / TSIZE); int tilePosXEnd = Math.round(nextHitbox.getHitboxEnd().getX() / TSIZE); int tilePosY = Math.round(nextHitbox.getPosY() / TSIZE); @@ -635,15 +656,33 @@ public class ActorWithBody implements Actor, Visible, Glowing { private void updateNextHitboxFromVelo() { float fluidResistance = mvmtRstcToMultiplier(getTileMvmtRstc()); + float submergedRatio = FastMath.clamp( + getSubmergedHeight() / nextHitbox.getHeight() + , 0f, 1f + ); + + boolean applyResistance = (!isNoSubjectToFluidResistance() + && submergedRatio > FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO + ); + float resistanceMulInterValueSize = FLUID_RESISTANCE_APPLY_FULL_RATIO - FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO; + float resistanceMultiplier = FastMath.interpolateLinear( + (submergedRatio - FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO) + * FastMath.pow(resistanceMulInterValueSize, -1) + , 0, 1 + ); + float adjustedResistance = FastMath.interpolateLinear( + resistanceMultiplier + , 1f, fluidResistance + ); nextHitbox.set( Math.round(hitbox.getPosX() + (veloX - * (isNoSubjectToFluidResistance() ? 1 : fluidResistance) + * (!applyResistance ? 1 : adjustedResistance) )) , Math.round(hitbox.getPosY() + (veloY - * (isNoSubjectToFluidResistance() ? 1 : fluidResistance) + * (!applyResistance ? 1 : adjustedResistance) )) , Math.round(baseHitboxW * scale) , Math.round(baseHitboxH * scale) @@ -731,11 +770,6 @@ public class ActorWithBody implements Actor, Visible, Glowing { return referenceID; } - public float pointedPosX() { return hitbox.getPointedX(); } - public float pointedPosY() { return hitbox.getPointedY(); } - public float topLeftPosX() { return hitbox.getPosX(); } - public float topLeftPosY() { return hitbox.getPosY(); } - private float clampW(float x) { if (x < TSIZE + nextHitbox.getWidth() / 2) { return TSIZE + nextHitbox.getWidth() / 2; diff --git a/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java b/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java index 49fe68071..72b7b2aee 100644 --- a/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java +++ b/src/com/Torvald/Terrarum/MapGenerator/FloatingIslandsPreset.java @@ -4,10 +4,10 @@ import com.Torvald.Rand.HQRNG; public class FloatingIslandsPreset { - public static int presets = 5; + public static final int PRESETS = 5; static int[][] generatePreset(HQRNG random) { - int index = random.nextInt(presets); + int index = random.nextInt(PRESETS); return generatePreset(index, random); } diff --git a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java index 8a0b2db40..4cdf769a0 100644 --- a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java +++ b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java @@ -7,6 +7,8 @@ import com.Torvald.Terrarum.TileProperties.TileNameCode; import com.jme3.math.FastMath; import com.sun.istack.internal.NotNull; +import java.util.Random; + public class MapGenerator { @NotNull private static GameMap map; @@ -100,10 +102,10 @@ public class MapGenerator { * Todo: more perturbed overworld (harder to supra-navigate) * Todo: veined ore distribution (metals) -- use veined simplex noise * Todo: clustered gem distribution (Groups: [Ruby, Sapphire], Amethyst, Yellow topaz, emerald, diamond) -- use regular simplex noise - * Todo: Lakes! Aquifers! Lava chamber! - * Todo: desert areas (variants: SAND_DESERT, SAND_RED + * Todo: Lakes! Aquifers! Lava chambers! + * Todo: deserts (variants: SAND_DESERT, SAND_RED) * Todo: volcano(es?) - * Todo: variants of beach (SAND_BEACH, SAND_BLACK, SAND_GREEN) + * Done: variants of beach (SAND_BEACH, SAND_BLACK, SAND_GREEN) */ carveCave( @@ -889,10 +891,12 @@ public class MapGenerator { int nIslands = random.nextInt(nIslandsMax - nIslandsMin) + nIslandsMin; int prevIndex = -1; + int[] tiles = {TileNameCode.AIR, TileNameCode.STONE, TileNameCode.DIRT, TileNameCode.GRASS}; + for (int i = 0; i < nIslands; i++) { - int currentIndex = random.nextInt(FloatingIslandsPreset.presets); + int currentIndex = random.nextInt(FloatingIslandsPreset.PRESETS); while (currentIndex == prevIndex) { - currentIndex = random.nextInt(FloatingIslandsPreset.presets); + currentIndex = random.nextInt(FloatingIslandsPreset.PRESETS); } int[][] island = FloatingIslandsPreset.generatePreset(currentIndex, random); @@ -902,8 +906,9 @@ public class MapGenerator { 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]; + map.setTileTerrain(k + startingPosX, j + startingPosY + , tiles[island[j][k]] + ); } } } @@ -975,6 +980,18 @@ public class MapGenerator { /* Post-process */ private static void fillOcean() { + int[] thisSandList = {TileNameCode.SAND_BEACH, TileNameCode.SAND_BLACK, TileNameCode.SAND_GREEN + , TileNameCode.SAND_BEACH, TileNameCode.SAND_BEACH, TileNameCode.SAND_BLACK + }; + Random thisRand = new HQRNG(seed ^ random.nextLong()); + int thisSand = thisSandList[thisRand.nextInt(thisSandList.length)]; + + String thisSandStr = (thisSand == TileNameCode.SAND_BLACK) ? "black" + : (thisSand == TileNameCode.SAND_GREEN) ? "green" + : "white" + ; + System.out.println("[MapGenerator] Beach sand type: " + thisSandStr); + for (int ix = 0; ix < OCEAN_WIDTH * 1.5; ix++) { //flooding if (ix < OCEAN_WIDTH) { @@ -1000,16 +1017,16 @@ public class MapGenerator { int terrainPoint = getTerrainHeightFromHeightMap(ix); - map.setTileTerrain(ix, terrainPoint + iy, TileNameCode.SAND_BEACH); + map.setTileTerrain(ix, terrainPoint + iy, thisSand); // clear grass and make the sheet thicker - map.setTileTerrain(ix, terrainPoint + iy - 1, TileNameCode.SAND_BEACH); + map.setTileTerrain(ix, terrainPoint + iy - 1, thisSand); } else if (worldOceanPosition == TYPE_OCEAN_RIGHT) { int terrainPoint = getTerrainHeightFromHeightMap(map.width - 1 - ix); - map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy, TileNameCode.SAND_BEACH); + map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy, thisSand); // clear grass and make the sheet thicker - map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy - 1, TileNameCode.SAND_BEACH); + map.setTileTerrain(map.width - 1 - ix, terrainPoint + iy - 1, thisSand); } } } diff --git a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java index b418a5ab0..5729dc5f5 100644 --- a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java +++ b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java @@ -75,7 +75,7 @@ public class TilePropCodex { prop.setOpacity((char) intVal(record, "opacity")); prop.setStrength(intVal(record, "strength")); - prop.setDensity(intVal(record, "spcg")); + prop.setDensity(intVal(record, "dsty")); prop.setLuminosity((char) intVal(record, "lumcolor")); prop.setDrop(intVal(record, "drop")); prop.setDropDamage(intVal(record, "ddmg")); diff --git a/src/com/jme3/math/FastMath.java b/src/com/jme3/math/FastMath.java index 46e1bce8e..c9d5a643e 100644 --- a/src/com/jme3/math/FastMath.java +++ b/src/com/jme3/math/FastMath.java @@ -34,6 +34,7 @@ package com.jme3.math; +import java.util.Arrays; import java.util.Random; /** @@ -636,10 +637,10 @@ final public class FastMath { /** * Returns the determinant of a 4x4 matrix. */ - public static float determinant(double m00, double m01, double m02, - double m03, double m10, double m11, double m12, double m13, - double m20, double m21, double m22, double m23, double m30, - double m31, double m32, double m33) { + public static float determinant(double m00, double m01, double m02, double m03, + double m10, double m11, double m12, double m13, + double m20, double m21, double m22, double m23, + double m30, double m31, double m32, double m33) { double det01 = m20 * m31 - m21 * m30; double det02 = m20 * m32 - m22 * m30; @@ -837,4 +838,16 @@ final public class FastMath { | ((((f & 0x7f800000) - 0x38000000) >> 13) & 0x7c00) | ((f >> 13) & 0x03ff)); } + + public static float min(float... f) { + float[] sorted = f.clone(); + Arrays.sort(f.clone()); + return sorted[0]; + } + + public static float max(float... f) { + float[] sorted = f.clone(); + Arrays.sort(f.clone()); + return sorted[sorted.length - 1]; + } }