From 60fdff75281e402e9fd64ad9ce20adaad65fd9d3 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Mon, 22 Feb 2016 01:37:17 +0900 Subject: [PATCH] proper colour blending of light, opacity is now "how much RGB value the tile absorbs", added partial support of Japanese Kana and Icelandic in polyglot.csv Former-commit-id: 9f9b510c8155f2d93fd428bd90692c2298105aa8 Former-commit-id: fc3f15d5b0127c212a12e5126a4954420aa076ad --- .../com/Torvald/ImageFont/GameFontWhite.class | Bin 2274 -> 2228 bytes .../com/Torvald/Terrarum/Actors/Player.class | Bin 10033 -> 10029 bytes .../ConsoleCommand/CodexEdictis.class | Bin 3119 -> 3118 bytes .../ConsoleCommand/CommandInput.class | Bin 871 -> 871 bytes .../ConsoleCommand/CommandInterpreter.class | Bin 4298 -> 4927 bytes .../ConsoleCommand/ConsoleCommand.class | Bin 215 -> 263 bytes .../Terrarum/ConsoleCommand/GetAV.class | Bin 2946 -> 2945 bytes .../ConsoleCommand/GetFactioning.class | Bin 3804 -> 3804 bytes .../Terrarum/ConsoleCommand/GetLocale.class | Bin 1214 -> 1199 bytes .../Terrarum/ConsoleCommand/SetLocale.class | Bin 1358 -> 2494 bytes .../com/Torvald/Terrarum/LangPack/Lang.class | Bin 6360 -> 6737 bytes .../Terrarum/MapDrawer/LightmapLantern.class | Bin 709 -> 709 bytes .../Terrarum/MapDrawer/LightmapRenderer.class | Bin 11852 -> 12886 bytes .../Terrarum/MapDrawer/MapCamera.class | Bin 9881 -> 10021 bytes .../Terrarum/TileProperties/TileProp.class | Bin 2710 -> 2710 bytes .../TileProperties/TilePropCodex.class | Bin 4201 -> 4227 bytes .../Terrarum/TileProperties/propdata.csv | 68 +++--- .../UserInterface/BasicDebugInfoWindow.class | Bin 7036 -> 7009 bytes res/books/kana_test_kanji.txt | 32 +-- ...nt_unihan_jp.png => unifont_unihan_ja.png} | Bin res/locales/devmsg.csv | 6 +- res/locales/polyglot.csv | 51 ++-- src/com/Torvald/ImageFont/GameFontWhite.java | 8 +- src/com/Torvald/Terrarum/Actors/Player.java | 2 +- .../ConsoleCommand/CommandInterpreter.java | 18 +- .../ConsoleCommand/ConsoleCommand.java | 2 +- .../Terrarum/ConsoleCommand/GetLocale.java | 4 +- .../Terrarum/ConsoleCommand/SetLocale.java | 8 + src/com/Torvald/Terrarum/LangPack/Lang.java | 9 + .../Terrarum/MapDrawer/LightmapRenderer.java | 229 ++++++++++-------- .../Torvald/Terrarum/MapDrawer/MapCamera.java | 9 +- .../Terrarum/TileProperties/TileProp.java | 6 +- .../TileProperties/TilePropCodex.java | 4 +- .../Terrarum/TileProperties/propdata.csv | 68 +++--- .../UserInterface/BasicDebugInfoWindow.java | 7 +- 35 files changed, 298 insertions(+), 233 deletions(-) rename res/graphics/fonts/{unifont_unihan_jp.png => unifont_unihan_ja.png} (100%) diff --git a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontWhite.class b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontWhite.class index 93cfe3aa5f9efeb97f18058ab36d507f74eacd15..45fdd9edd0fa9e9f461fbfe676b3417451b51ef7 100644 GIT binary patch delta 806 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 aenbCZ@k&=Jd!pSfNfRVxcONOWKK@^H&K8mY literal 10033 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 Xt2lML3ntoKMV25LyL(@`$?yITPCgrM diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CodexEdictis.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CodexEdictis.class index 10592adfae1319050bb9cc1ebe6e2bceddedd7c4..33b5ac130de4979e8721307164ebce1a11b76c86 100644 GIT binary patch delta 32 ncmZ24u})$`B$KdEPGW9SN}@_ZQD$C=PiAq6is|NDrbC^{US?aylF8o8 FG5|Tr3-rj zT5thtT79-Qc1P{B)mi~NiKGN*?#+-AtPTO8n^k2^FUu}Cor zDF(k&GhmTw@Kl3;RP!;541;GF{4UMi7Fh<*;-E3&80+_luaENy&Ak@6>`md59MlXZ zb044b@o9_C@L7vIKBxJ-MLv6de8J)n_Z#E^6YPUNzGxBSOFq7=`HICH<0HmH77z1P zb39^bUo*#}n#1NkqB-j0F&|&I$|Z=np$(brhBc2{EM%|dn8jj7e0)Q5+<>FzIH5V| zWU2e7s!l~_{npU+q0;T4-mcQx8#_AtBU}1(%|<$Gp5(N`9oiM?);wYJ9lonMWAi`)Xr%5|kv<~f@76P~g8DW^3*v-vr{aNh9DSSj8W8SfCP=9f0V z;@6VNnx%a`J)z!BD|;iI;r?)^oa^#5&)WQkMw{oTQ_M1Ms%tyC`xO4#=H^w+8|rEs zYnxXt-OyTlZL8+DHqY~d2~AY4r%~Zqv%Y#=k>-@mi~P}6iDd6ly^%lW(WoOiBkIj=d3bV05n?X84XZQR<~ z5wZCPuiN~S)6RfyRCC2vf%B@e1D7P<+8yq@A+&M3v@grqU}YVBT~A30z0Fw5?wyg& z9w}|#uE@m}Z|N&-3UBF+v_!(4p`Pjs7B3|$biWbW-m6GWKrN9_$F|mRsH4+)BxR;{ zb#;o#0_S9MrnvSvXHzCQi>=3;H?1M(d`fGyR_4!qZj>ZkC+7;mO668^dkTk8hXqJt zrJUXbaS~SxY>x}@Ug`x)HVqJpD7&r}X$#aq;V?<{MGeKHi(HlNOn2@fwWm1KJvZo4 zL2tkl$K`iBPup4Q0p}%qTJ)B2(xf<^K{7{3Z66}d(0p;yV{9I0`!BFFggtqJof)HU zoIT|NJ4@K_nqUWF%sPU%?Fc%~)Il;5vT?G9$q9O6q>PZ;9vx!ZiGcS>QUi(Le2+6d zNk;m+4|GEwMPV9H9*!g{jk%{4D&dR>Z;aQbVuF6)$s&oQxl18Kp#oW!RLv1EcH3=j* zu0&HurQ47m#Uo2Iz+^Eqh1s$&s|8!ZR8|Y6OBUsBrprRklWlo94{`-k1x_(jHpncV zlKUBoC6o$Ypi%-_AR*1?HLCbGLB^<7lUOL>m8lHMRW=nWk4ja{0tt1#DkoZ{stBq@ zBG@2;P0UlxBGe{A9U`<@gu1Cx{UWnVWcCZ~HZs(mvLMZKY{nuPE-wW4Q*n|qYiK_?edye3w8||V_b$uvqrO4eo6-8 z93`4{n)TD<%h72ynhn=!uA4dmgwElY#)J%-J0|mRsrtXfp=H+Z_{69|!K2CI>|TG- zFva!$5;+@2m?JN(w6Ul#PFc_$aK|YhB(1~%bK_jq78`q|B+k6!R0KV)N^hpT+tEX` zOy~u5aY?2(PUT77{dNO634Q;3e^ngw_;f%9?5ehCZ0yB=C(}DZMZ0lDqTv$vAEK8&39yRw^ot`8J4AbmNQq&w8y36c@?nuTT`j~rCW_;2*{Rv7qeL{j zVDdRqOqc(|bWJ4hO)=v$e=Oszk^#_S0?I~MDBW39Kf>bnq9NWR?Mf_$V*e7^4DRF9 zw7Uvh;w+7`O!mZEOLUr8fRI?-NV?>oEdkD^Yrag+CK<&oiSp!)JK=^z{yv$o8)g2K SC`^}feo!(~lC{~(d;SaMi2L&Z delta 1727 zcmYL}3s6;M5XXP#zP`)32YJW^Zz_lhBA_553cm1dg^xr z6}wFOY5Pugn>@)LEuPZ0dM%z-?A70A6#KmF_wuYpeomX7*CjV74wwv~PVs`tP+nBL zWHO98FCjC)%e9b+JAZm_5O&HlHKBz z4*r;Ci%~vYJ}^oXX5re5WJN8pN-xT33~~s%rI$yy;64CT z%<0F4AvKK^InJ()O%9G1n@2S0#sra8WbI}mlSGTrS@m8pe#C(i+m-BA9A!CEbK6Hd zi(GzJ?*=aB`dtMj?tnXtGtm{sU621To{GaLZS#hS3DFpJn^AWgzRDJ?>@I(7h@DY? zxBvWc;*algCxlpI5AK#~l-o19r3MSTz{6ZqPg*1{OwU$&m3RW4NXQX-I|$)xBUND1 zIzq&XPuJHd#5}o+eA0Hh}YTAucdj;PbddKEDg-Ww{)hxKMFc)5WxSp_)DRHlhnXl6Pyz^Ht;B-|P~zgMPqHMLSgg3R`9+%8Clu%{94_!mU*S?>S< diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/ConsoleCommand.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/ConsoleCommand.class index c5bb76b6dea76494a4d30cf9decd7eaf1f4c850e..13685b72ff97ff6bb37621f8514a7a4cd7207700 100644 GIT binary patch delta 97 zcmcc4*v=$y>ff$?3=9k=41DYi-0TcI69v?GT`Q7P3raHc^NQIScqbayi7_$=XC;;; q>gOcprR&3GCvFs$Wn^Fl>SkeJWME@qWMF6D0P+|aIDsS+0~Y}3R}_r^ delta 66 zcmZo?y3QzY>ff$?3=9k=4BYGtoa_u-69v>Jx>c*OF)%PPFaaeP7?@ZX8JHPZ7#M&w PD+5phD8mjCXW#$;l=cUT diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetAV.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetAV.class index 7f573e3995db6632ec6044fdc4628a535c3e58ea..3ef16754a12197ca675e11513bb1345389b3fc15 100644 GIT binary patch delta 43 zcmZn?Zxr8flTl0{CowlEB~c}{A~m_RBvr+Pks)2fXYxZ9(aGmnZ8keHIdTF3K`#yc delta 43 ycmZn^ZxY{dlTl1CCowlEB~c}{A~m_RBvr-Gl#wA_V{##j*yOXUHk%!o9613x*9~(3 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetFactioning.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetFactioning.class index 41a49b5f7d60c21f2955d89e5ce733e3fbd79d80..549c1548f33b214c4dd296d1a2140fa040d07ca5 100644 GIT binary patch delta 65 zcmca3dq;M|QzlkpMh1J0$%brVlbG$)jTjjOauRcsQW8~CD^in7OHx$~F@+2^r!tpw F0|0!86OI4? delta 65 zcmca3dq;M|QzlkRMh1J0$%brVlbG$)Ef^UDauRcsQW8~CD^in7OHx(LF@?-Fr!tpw F0|0-Z6Q%$F diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetLocale.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetLocale.class index 9630d6db155a0e1ffb49d4e106d16e28fa125be5..b542641ccad5072e887aadc305686f33366f01ea 100644 GIT binary patch delta 28 kcmdnTxt?>wAx1{t$tM_PIJtcs{oF$x-CZ|-XFSdX0EQ3=MF0Q* delta 66 zcmZ3_xsP+hAx2XnUsu1-cppbU_fSW7*Z2?*&tP^23myhb1}jDeCIt;f22o5En_n;< GX956ClM$Q% diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/SetLocale.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/SetLocale.class index 429f0af07dc4727ca4e78e9955649fe58145dede..6bf1ab48537042558ba4474478234ec3d34cd702 100644 GIT binary patch literal 2494 zcmb7GU3b$)5WVX-kr4_QLqaGYb<;qcPf^;^LMR_G0YaUS;t)zH(2cxtL?o>%%PI7s z{VTlj3_U0Gz&ZSYp8ldfw7s$%k`Nct7tQYM%Bp&lux5ixFW;cn@n zT$Q#bgQ{JQLN};R#F+>l_9REHwx@4QJ#thna&# zv}M$;P&qoR2=te9ShZzMI?Ku?G@n3hr@m?z%L_M~HndL5uuAOv+oUhhU5=!)G9znE zqMCG%8Mw{rG?RCO=vG};i7@L)f3YG5T6_$g6u3~>dD7dV$JBK$xymCBv#cATqprAd z0r$M&e>~>P!eJaS@U4YA7$oGj6)dqPa|B|?3xPsgqqoW&lPPfU?V3zBT(6=+wiffq zdvPfz;r*h3|3CLO<@4)~5f~!V4U7bi=FU10Cf`1ixf^4_bpVQ3@llw zV%fr{IKs=CB|4k0tEiRk-9+AFw)gS^V>_Ya4eQKdgOeMJ50w)MoZ3lAZC!R6Q+12n>NKE@Bx1g)07;3{2t}brWBN& z!!ID7ago9?e!H5=J@}AoD=|QxVZe1iKIWIs;u?Qq)71Ss^1Aa0=AI)pGm<{_8&a>( zapwinw_l-?vg;KLicD_T8cZ7To7>IL8mu*RKgEIBmR)Wy_oMWGit&-x=_eRy9n6g8 zvOLP|`yIL2vC)^<53J$9Qy9Z*=y}F;vN(qe*u#Y4^sgiS;onCXIhZugqK6Fh(&jL& z`f!nKl*q;$c_FxaHvJR@CXlmY5G81V{D@FYc_UKB9I zl~3(3MtDj(T2#fWQH(LWacU2v^B-Q`VZb(U(!eJW22TBjZ0bY@O*nKDRx!bFf)3s5 ztn?E4MrlkQgEv`>y-}X-EadBglh%%t4?o8tB1G!gQD f5x!uA6uv}_(xfIp2u=Q`xsO}pI&Hotn=}6c+n0)u delta 528 zcmYk2%T5zf9L9fVhW3=nl(dX36#;=3ky22(c%#~KU9lh#0xn$$VM7{V&z_AT=QZ50 z!Keuj;KBz`Uc$tcChB)4#JD;C`*%54$(LyN^Y4#Wz#MB435{;1n6^BK2x(XzMr3?^ z6k%!PnDKEo$DEJze)!n(B*)W;UY_N6ZdtH2EicYHU)?*?=u=s>ywsK<>Kq*$o@^h# z-hboPgW;YMWlJlj&4^*teGg0SZLn8bWXTYWPsc2?5;MT6A#p{MxWRBB6Ei{CorObY zN*A^B>u&cg{8eE@3K9&rQjV%r*Z#Ag|7X9RZchFMr2acU diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang.class index 6bcfe8a54fbf0a6cbb2114adb73f9da16c7ecb81..2383c553ecae1188b02780b8f448b03a87a332e1 100644 GIT binary patch delta 3046 zcmcImeSFnr75|=l@9y*5dw<*RewW>`yBGEjTyS&9`(O@1FdHy7v8GL%w$X*rOeFVT%nde6%_A7ke4;S|PkcI(;`!v4b#~1M>g##L2_Cw=- zg|GM#z(Kl>5;b9wsX^kzU4i?gt?`5(#dy-V{*GC`tMEM^p2GJve&EN`_@Tlxew3TI9>b3meys5mKTYvQJx*#o zYxbXN{LDD{xyD|N=giSBG=8b^D~;z3_iMBKM&kvI-)g+5@jKm!mo#41_`R|A2eX`V z0|%JeD;j?^(f&!}&l<04{6*uhl%3pXto+T0{;u#3jelzVOXIZ0zcpS{c-^UylXAuh zxu(e3!G*3@rRY9|Hwd7@Ifa!>SKz<=rncC+zK-s$UL|m@_S~56TNUeTjJ0+5tPo6h zw)nCg@f6zv_nO!SqCtWRf(nWv&dZ)@R@(a3&i)ufARJCr+9_{4Is_r-kc6~_cj4WF z66aB0iPPdOR3etR#O>VTE%COCM^I)&nPt@$+9k~ruP}}rr`Dg7X^9q}C4LE5yp-;U z3fE)=B{S0}!60t6Bui{2WJyTIWGcxv2Vn~_rY1R-jFnsqs|*vdBv104Mm51*fDUJq zst#_&$1Ew7aTc~pk)Vh<7BwmtM!Tf0`Z6fNm4>g{i9FX~C)QK_WNl5!Ju z;p*1)tyP^=s#?aWrD!9vd5B%5+xPuvSgA> zCe_+$$wg9WsD2~h;*PcUTT&$xEV)>!ou#@gcMtBdunW5>Jaxx5uCMIgV&Mj~Ia_s^ zo+6i6Sb?^|Bl-n#PnBuT-TsLCA(`$R^LKh?2;6OxYZs)inB)6~}!Yh7EzLXL7QQ0t6RXO|PRo(s;jWR}daWUfRld z;JRV`dE~DjA@`Ag?+Ct?Jh7pzh=C>Hk!@ji+q49U0FALv>3p@bDDweX{F}NLl)MGkWH zNz&RzT1)D0r2fs6mB4cj)1egJudqpBbA>`&VT%ZG8ntZ-9}wI^MGr50kcJ2?snyPl z!J_yYo|_j6Xy9wN3?_8r49H9cXQ&V3Hs0_t%#WCxl=f1`XcZrZCpv_p6DY2q^f*F? zQDT=4q3jsSn;%5Q@ks}%VnT=+(Ds%HJtKk64a10 z7^m=2M!<zn~X;S>CaD16dI_n(530$>H4XR^jFpE!iz5VDRSIsg^r zb|GIcHNnQYkX~uZ6;O(8iAFT86kLV#jT0X}oiy*%+1YyhVpr|tAxv^w>;jv_McWZ_ z*A5_KvRz5e*=kqBt9Byi7&3@-CW{cXFHS~tFltv1Vag5^M(s-yM0V7knjoyGJ&nY6 z6raE6=FRD8D~2$`SeQ9%Vb&;W-nXj7vksoOGSd5Dgo(u4$2NNu%fkWG3>lrW48brxkTqNMvH1*HWQp@NF65G#6D zvR?toXScbjdl#{}bWYw8)NRMCJbT`Xx%t8Tbvuwd63WYxC=4Jx@^pR*o4nw>z3}A) zo%_c`;tTRC|EtUPQ5o&k8=2Y8xn=j4NOAQ6d`)Ml(ZC}$5|#o%4RI{p@8?DwRsPUB5uH4rsJ?&0)a zY0SA2?{U)H!4c*HOxZlYn$yu?OgIa2?vw>iL(WVmF!sv$J3SAhzS(UrZW=^bCFvzi z%^rJcQ*)Z#(A4a;mr*qK5N$}pNAeLa=4Yo&yqF+1CNrdci5Tuh6L*`@1i150W=pNq Y@EIN=V?II;QuheHhNDT!gGX@mP3WOeUH||9 delta 2770 zcmcImeSFnb8UH@_?VNk>kGs3y;EwHX>+Ukfc0twcZ;#J@qCWS?@k0**m@P9yScbg{cZA@<-XQ$=l){}F`$D)2`xQQ|@tF`b zKC93dLKvSj%H0Z|4}EL-2q>I~c;3amYvy2JsafR(L3c z(j303a75#4Ayne)=IC#j;hPHIGG5RVRL)=B<5`2*qVZFWpJ^P`ctYdn8c%Bc!hrqK3{QE1c?X!quQZ-Efjy(~YmMJ% zJgf0r8jtQbD8DnN-zz+)@du4RYWzv#n8x!8e|DPWsQksL@ywFH4qobcK@xW=yg;rL z{-%&-W`fW;TU#?5dpa)f+N|(*XM=B(lk%^$y&E!D3jABro!JbrnWuA;|5#-!+5|=G z(_7MY*`AKhx~1vO>w3~_Ix`lQqgjx2uJ$IKLxBo~e^~e@UUZ%gBm=E@Nl;}>bE@hs zwBlbD{*C_#ie046bl2Lt=AQ13uCA@=f7D-rGja7rIgU?E$Qj&s6 zHI1jpxNyz-Olwa=?Mn8jOmWtPJEdyyvG4+MR!?{`I@OYDskI~}#TIhd?wl8yBQu;_ z?NiS7L^Y95qxg(afC!qqRLedQSY#nj)8mXrQ-sb4b29;ANh z82vrenGUf^O(yP%;Fo zT44`u8_)?K=TG8&=;AyPH{f#m2`X?6HewU;rXh=NY=##-^oVgKkCr7`-akwKEwm-! zJApHx6s}O%s&Hks!ZwAgM8FoD->Pu6;Qe&;al6#z_r{F1Ut&?r1g6G@O~mLjRWwdhLAXd$^j&YP|?_jz_L{1^nSW}P(-*X zbTtRrZq_TfdJ)%Gq6Ft(?4FpQLot^(;6ogVO8h3y9=d$kt%ymq2%ZxrIE5Sd3sJby z!=QHHBW^lNipq0ULx>Kc@F1r4L8UnLb6@`O0G+`4p2~2_$SGieH@SUbPEqhwEH?N- z+?+>d9OkiN#bjIDe;53zerCGNGk?Yqs_)?zKHmIe;7RLl3blasDChVLd)g3cdQs$^ z--pNyyOx^cpIDts?LqN_h_pO_0#X;Xr{}}&PuYY#Z8s`X_Dolpl(Oqw!AjY0rO=DY z(S2U-toOGKVU|HS{UpNdaohs0cgq#_kD`n{eE>01_QtWz83*}f0B4*G;BBJ;zuonJ zU7}~YUT<(dDa)7YToh7X%~GWK;I;DRw6Ss9d0*D@OSle4xbiTY zTC6m;pls&hEwK}`*?fL zF>oID70o|nePiIl=ykhWGwn75;T)cPi!5*&ORlXu*LN68TDYZGubd&0!h)yjZEr{wqVvi GCUyW#`V090 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.class index ece444f7463125d00170d557057f75699a2d232b..832da59a66b21309eb46786e37e41d584e4f337e 100644 GIT binary patch literal 12886 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 l%F*#r?-+I9x~}s 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 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 db0dbeb29df65780f845a541fbb6be2b86da0409..5f968dc3c94cfd4a3c2f91ecb31dd55651ce1574 100644 GIT binary patch delta 4574 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 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class index 101b14a0bed91ad9c94e662ea75da8f3eda0fd63..b8fe43e4b239f97e188ed54f648821dd11af2a04 100644 GIT binary patch delta 1534 zcmYk5d2kd(6vltE*<~h^PO^laquH*kodMfuQ1o z;E9Sb-WOg7Djr;$2#RRhgURA-Mw76~B5u)W(}a^vGgn)**d$36NWnEZT+4MPD{OMPUgxGwR+_A` z>8{Ie(74)W4L4fcq$fAq1i8hc&gNEb(-mti(zn}k)*X6wr^PyrcUi30xWU5Jc(=tp z8t=8ZPviX-59p!?_2eOohc!N8@uv*P4TQ5 z;5n16+fLRSehF5%^L>krl{*gjHW|h+*YQ_nRWjDy>z|V~h6~-IKt#GE4fN>m?H+J(;N!NQ_B_a@xFm2LZeL!Q;QTI z=xr;pq%rIyoEF80dfy*uaheq$aU?C9v6gtaQ{cxsIS@-M(d=PlILa|uNjeF=@`;}K zmxU4u#iw2z^Wx7qrudvM6kl>g@s(yVvK3#m-{c#`w|uAgo_&fr%rzJub{b1(IW0>= ziHLjHZ@Xj7IDtaaH?WZt-j3TJ0@DL5%3S3IH=Y=nqBOk z$PVSIWHeP9Plg@cx;xj7<@}`hncoyqV(uY(r16Jqug>lZUcBDj>PT;d_9 z(^*v#O_SAL`2Q6OpUHGd{)fVPlWITN%wVRZjFXggLgo`J-;TfNybSqun>n}2ZOkp7 zK3mwDH&W)n4u^`ABoOvr*DRS67`p8gIkjq zNtbQMDiPrsMo6@W?sM8GC>WWcr>vF>WH=*(y-mon&;lyO666+a@xP}y-(L(MSQLim*+`mF_|@s!>g!bt#r1T>8E=aanzHZCuBOD&lRFw+aAC;Ar-cMAf4^V z2|lkKRWewbX=hZ1^S4T>&r{TC$;>XyijdIhPq9GE(f^A)h*NCSPO;^c3~qOK<_E|8 z@9XR?BzdPv@=lR-s`IIFM$pzjspi`dESzzHcBiYBvpt&5>&f?8)9x+wvKG-HXiM!c U{LZfwvc%JAuvBuE(aQ4w0G-?@ivR!s delta 1378 zcmZ9Ld2m!k5XOIR58lhmkPRUM2^u1l6h_N~BQZuo6a^Im1|^8`3fT==S+XJ72q?NJ zo_IT+c%lLxc#!B4L4t~SfC7s5iHc(M5C2z7?OrS@*~#gTob=^cM> z>IKI0o6pI#xWrv9%b}75K0#VM5H zkK(-^_bJ}*@qm&ZRA-gPLy8Z3Jfirh$770*>#|y_eZu2Ob)NEB!&+U|Df?-cXI!4` z4mu4^NUUXcUSNTf?%owx5#g%5=M3w4-sJ_u zi@ao8!s7;PFm%yvSBHlTdpVz1A_K_e6Eke2$K_SSCN|sM;bGouR2#O?Ykv>VN^j+L zmp2S=vdtmCG@6Wcl(r^QrLiUPj?{66x7co&NVm(|hIe?^@E+X`fq2w#F_##2u+za! zwly}zQ%eo+tLt^7+GDNrQ!R!MvVNj-VN)`ZY&Yy;w?in}o@_JhVP`^;o7>|}sd%#0 z@S!G$n-iU?K945DN9>hIM>3(2kJSk+ZcHQ$pJeUkto&Rye=zV&MY~atdvV&y34tvgnS;el`I>_3ThRB z;CfxDk##^eQh^F;MH;VXj-aoTl!!2$5_!=9iLEO;rl2T8v7M7wXcKwSbZHk}S%yf4 zabj&|(At`iBkSlnOU8* z)F4(&rj?XgEti&7Qp;LqWb4$%r4}w=WP=!LUdTmKstz%X^QSO;eY9G=T@)EyRi2^Z z|2^0B(=uEt0{SyFO80u-@+`Cbt&tJw8reBGsoDKld52he|FI4h5HK}PzOS!J1%z5D z&Fg3*U4+UC4)5WJv1L7+q*LjC3nR1I2X7&gZAqur45KA&K0iykFFO1Ag`X%QCB7zi KO48*lX34))&HqUN 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 e067dd1dd..d9606412b 100644 --- a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -1,38 +1,38 @@ "id";"name" ;"opacity";"strength";"fluid";"viscosity";"solid";"wall";"lumcolor";"drop";"fall";"friction" -# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky - "0";"TILE_AIR" ; "1"; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "0";"16" - "1";"TILE_STONE" ; "5"; "25"; "0"; "N/A"; "1"; "1"; "0"; "1"; "0";"16" - "2";"TILE_DIRT" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" - "3";"TILE_GRASS" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" - "4";"TILE_PLANK_NORMAL" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "4"; "0";"16" - "5";"TILE_PLANK_EBONY" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "5"; "0";"16" - "6";"TILE_PLANK_BIRCH" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "6"; "0";"16" - "7";"TILE_PLANK_BLOODROSE" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "7"; "0";"16" - "8";"TILE_TRUNK_NORMAL" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "8"; "0";"16" - "9";"TILE_TRUNK_EBONY" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "9"; "0";"16" - "10";"TILE_TRUNK_BIRCH" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "10"; "0";"16" - "11";"TILE_TRUNK_BLOODROSE" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "11"; "0";"16" - "12";"TILE_STONE_QUARRIED" ; "5"; "25"; "0"; "N/A"; "1"; "1"; "0"; "12"; "0";"16" - "13";"TILE_SAND" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "13"; "1";"16" - "14";"TILE_GRAVEL" ; "5"; "6"; "0"; "N/A"; "1"; "0"; "0"; "14"; "1";"16" +# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky | Opacity/Lumcolor: 40-step RGB + "0";"TILE_AIR" ; "1641"; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "0";"16" + "1";"TILE_STONE" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "0"; "1"; "0";"16" + "2";"TILE_DIRT" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "3";"TILE_GRASS" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "4";"TILE_PLANK_NORMAL" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "4"; "0";"16" + "5";"TILE_PLANK_EBONY" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "5"; "0";"16" + "6";"TILE_PLANK_BIRCH" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "6"; "0";"16" + "7";"TILE_PLANK_BLOODROSE" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "7"; "0";"16" + "8";"TILE_TRUNK_NORMAL" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "8"; "0";"16" + "9";"TILE_TRUNK_EBONY" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "9"; "0";"16" + "10";"TILE_TRUNK_BIRCH" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "10"; "0";"16" + "11";"TILE_TRUNK_BLOODROSE" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "11"; "0";"16" + "12";"TILE_STONE_QUARRIED" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "0"; "12"; "0";"16" + "13";"TILE_SAND" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "13"; "1";"16" + "14";"TILE_GRAVEL" ; "8205"; "6"; "0"; "N/A"; "1"; "0"; "0"; "14"; "1";"16" - "15";"TILE_ORE_MALACHITE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "15"; "0";"16" - "16";"TILE_ORE_HEMATITE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "16"; "0";"16" - "17";"TILE_ORE_NATURAL_GOLD" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "17"; "0";"16" - "18";"TILE_ORE_NATURAL_SILVER" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "18"; "0";"16" - "19";"TILE_ORE_RUTILE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "19"; "0";"16" - "20";"TILE_ORE_AURICHALCUMITE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "20"; "0";"16" - "21";"TILE_GEM_RUBY" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "21"; "0";"16" - "22";"TILE_GEM_EMERALD" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "22"; "0";"16" - "23";"TILE_GEM_SAPPHIRE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "23"; "0";"16" - "24";"TILE_GEM_TOPAZ" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "24"; "0";"16" - "25";"TILE_GEM_DIAMOND" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "25"; "0";"16" - "26";"TILE_GEM_AMETHYST" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "26"; "0";"16" + "15";"TILE_ORE_MALACHITE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "15"; "0";"16" + "16";"TILE_ORE_HEMATITE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "16"; "0";"16" + "17";"TILE_ORE_NATURAL_GOLD" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "17"; "0";"16" + "18";"TILE_ORE_NATURAL_SILVER" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "18"; "0";"16" + "19";"TILE_ORE_RUTILE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "19"; "0";"16" + "20";"TILE_ORE_AURICHALCUMITE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "20"; "0";"16" + "21";"TILE_GEM_RUBY" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "21"; "0";"16" + "22";"TILE_GEM_EMERALD" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "22"; "0";"16" + "23";"TILE_GEM_SAPPHIRE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "23"; "0";"16" + "24";"TILE_GEM_TOPAZ" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "24"; "0";"16" + "25";"TILE_GEM_DIAMOND" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "25"; "0";"16" + "26";"TILE_GEM_AMETHYST" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "26"; "0";"16" - "27";"TILE_SNOW" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" - "28";"TILE_ICE_FRAGILE" ; "2"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" - "29";"TILE_ICE_NATURAL" ; "4"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" - "30";"TILE_ICE_CLEAR_MAGICAL" ; "5"; "25"; "0"; "N/A"; "1"; "1"; "4967"; "30"; "0"; "8" + "27";"TILE_SNOW" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" + "28";"TILE_ICE_FRAGILE" ; "3282"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" + "29";"TILE_ICE_NATURAL" ; "6564"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" + "30";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "4967"; "30"; "0"; "8" # see scandinavian name set female of this tile id! "31";"TILE_PLATFORM_STONE" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16" "32";"TILE_PLATFORM_WOODEN" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16" @@ -42,5 +42,5 @@ "36";"TILE_TORCH" ; "0"; "0"; "0"; "N/A"; "0"; "0";"63680"; "36"; "0";"16" -"239";"TILE_WATER" ; "2"; "100"; "1"; "2"; "0"; "0";"59159"; "239"; "0";"16" -"255";"TILE_LAVA" ; "0"; "100"; "1"; "2"; "0"; "0";"48320"; "239"; "0";"16" +"239";"TILE_WATER" ; "6522"; "100"; "1"; "2"; "0"; "0"; "0"; "239"; "0";"16" +"255";"TILE_LAVA" ; "62358"; "100"; "1"; "2"; "0"; "0";"48320"; "239"; "0";"16" diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class index a8b2b72a7328afe83f35e9b6df7bedbf2a5e817f..f4c1d87455e6e7f029c064044e5b0c2db787b4ca 100644 GIT binary patch delta 1210 zcmYjPe@xV682>!)dw1XOeeWPTI_?JpPH5N|4NbVCD=!4o4nYBxA4^3xgzx|<{DFoZ zrV^=v_V(M^4_jG(RnU%WY~~-WwPjl~+uU4RwKd(+l*FG^WD_0RKso*$p*dEd|b z-U|L0JQAbG(eBN4HeA+m#lWw)YMN`NnKsRDI<9M&(Q!k^?{=KV9|msXPaS`m!QZC2 zrQsim**FYDa9hW$K~RO%LXn9f`c}})#2U**S*-Q6_4fzD0Vge`5WyOFJl45hqeq>z zjFvm;F^W2=+B7RDss{B&M-A0#w9-kds7`&aSEp-K@1zD=O^`fhV!nOQqFcG^ieQ@>~UBVC`lrRv1P9ogk1J61Ja&J#4r_VS90gJ_Vy?5)M~6 z7k&0r2d^22_6Z&|mn9Hpe%LTc4kj7J8TS8351Az6|D>kSI35l;nBFvw#i6v~DMVUa zk4&N>0S^bMWlNH%WR|PS3N+sHd;cK2t96K`_u1h$HguuXi5?cy|c#KjjF5MN`bIE!84J1(5ZZgBy7#1Dvzix?7@u~*#S z+)W&i0>d&BBhtgzkHc~vo|i=!l?yQ@LpUNMI4Y~~f?US=C|;5^cv;rt71@ke<$Am( zJ2=;cNK10&os)R$?tSBL>6N1KntagH>6M9!5^qrUJc;(pU`( zwxACNYmhZHf3 zoZd1u<0(=xZvmZB*Sw3>8E=6a^+weFz5;dCYg3KBdR6BuRTq2(bXLv!D%EYDO}*&9 rSH=7VYKgx{CE1VqZOYZwl*e*QX$x~K+gd<7p61r{Pvci>scU_0wzg{P14_+EjqaCYTYs+Sy6^YCulKpH z`}xj)&wrwmLMOXAs(-<+8h+D}h*=GDI)29=CfqdPmI=2t{AtA<4S#8vx8XAW)^Qj2 zG~73Xe@s}g5+oKP&=FG0C`_U0A-XE)&UAgkk8*8t{f64gmg>@QT}$QKx;iTr8?=E+ zxF<7^Y0yS0Bv>-HcD8S`QmH{@RBliOZ8E6Rgeuyk+O-Dzb5w1m8iQ)7PR(fL)0wt` z1jvR(mb{aCw7RXXl2#sMGkg~6=)Ns*d=PvA)3%7+Ob>o zqFW51R~*A0q0lEzqeq;>UNOPnE?|E|#Be}dLBE*6fcO*##dQpduMiR6a{dN}#rHTQ ze!^ifizDI|j*9yjmcXl0$1$0P5t+d}3n%5{7?mrb?27VFIlHuEE7lY(@t%)r>cvSAgUhLydERV=8yo8sz zahht2@->dz((_Y#YM(TkQm~eE>=+616D)p z@d}1v7flqvA!bQ9%=gKMC3S(mfz65|R;cr-Vao*=cuz@pHNCIu-9_q4w@1C>E>O!n zIZAr6>0>qGcB`PLKwa|$)g)(T)OF8xb=;e;c6qbub2Z{^pfA)FpIhDaKB4-2IjY*1 vtuFf#)u`K{f+GFXni%uJ+Gdy(ME#g-Vb}05Q`4J^G diff --git a/res/books/kana_test_kanji.txt b/res/books/kana_test_kanji.txt index ea92ad6ef..55dcf37d5 100644 --- a/res/books/kana_test_kanji.txt +++ b/res/books/kana_test_kanji.txt @@ -1,29 +1,29 @@ 世界一みんなの人気者 -それは彼女のこと アシュリー +それは かのじょの こと アシュリー 一目見れば誰もが振り向く -当たり前アシュリーだもん +あたりまえ アシュリーだもん 世界中みんなが憧れる -それは彼女のこと アシュリー +それは かのじょの こと アシュリー アシュリー様の魔法は最高 -今夜もパーティよ +こんやも パーティよ -なわ ぶな ぬー 笑いの呪文 -じお いら うん 何お呪文 -いお でぃ えむ 覚えられない -あぁ いや 退屈 +なわ ぶな ぬー わらいの じゅもん +じお いら うん なんの じゅもん +いお でぃ えむ おぼえ られない +あぁ いや たいくつ 世界一みんなの人気者 -それは彼女のこと アシュリー +それは かのじょの こと アシュリー アシュリー様の魔法は最高 -怖いもの無しよ +こわい もの なしよ -夜空の海 数多の星 -いつも一人きり -みんなと仲良くしたいの +よぞらの うみ あまたの ほし +いつも ひとりきり +みんなと なかよく したいの どうしたらいいの 世界一みんなの人気者 -それは彼女のこと アシュリー -アシュリー様の魔法は最高 -今夜もパーティよ +それは かのじょの こと アシュリー +アシュリー様の魔法は最高よぞら +こんやも パーティよ diff --git a/res/graphics/fonts/unifont_unihan_jp.png b/res/graphics/fonts/unifont_unihan_ja.png similarity index 100% rename from res/graphics/fonts/unifont_unihan_jp.png rename to res/graphics/fonts/unifont_unihan_ja.png diff --git a/res/locales/devmsg.csv b/res/locales/devmsg.csv index d463d688f..ee5bf473a 100644 --- a/res/locales/devmsg.csv +++ b/res/locales/devmsg.csv @@ -1,7 +1,5 @@ "STRING_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP" -"TERM_PHYS_MASS";;"mass";"masse";;;;;;;;;;;;;;;"質量";;;"질량";;;;;;;"しつりょう" - "DEV_MEMORY_SHORT_CAP";;"MEM";"MEM";;;;;;;;;;;;;;;"メモリー";;;"메모리";;;;;;;"メモリー" "DEV_MEMORY_A_OF_B";;"%1$sM out of %2$sM";"%1$sM sur %2$sM";;;;;;;;;;;;;;;"%2$sM中%1$sM";;;"%2$sM 중 %1$sM";;;;;;;"%2$sM ちゅう %1$sM" @@ -10,6 +8,6 @@ "DEV_COLOUR_LEGEND_ORANGE";;"ORANGE";"ORANGE";;;;;;;;;;;;;;;"黄";;;"황";;;;;;;"オレンジ" "DEV_COLOUR_LEGEND_RED";;" RED";" ROUGE";;;;;;;;;;;;;;;"赤";;;"적";;;;;;;"  あか" -"DEV_MESSAGE_CONSOLE_CODEX";;"Type 'codex' for available commands.";"Tapez « codex » pour commandes disponibles.";;;;;;;;;;;;;;;"使用可能な命令語の目録は「codex」を入力して下さい。";;;"사용 가능한 명령어 목록을 보려면 'codex'를 입력해 주십시오.";;;;;;;"しよう かのうな めいれいご の もくろく は 「codex」を にゅうりょく して ください。" -"DEV_MESSAGE_CONSOLE_AVAILABLE_COMMANDS";;"Available commends:";"Commandes disponibles :";;;;;;;;;;;;;;;"命令語の目録:";;;"명령어 목록:";;;;;;;"めいれいご の もくろく:" +"DEV_MESSAGE_CONSOLE_CODEX";;"Type 'codex' for available commands.";"Tapez « codex » pour commandes disponibles.";;;;;;;;;;;;;;;"使用可能な命令語の目録は「codex」を入力して下さい。";;;"사용 가능한 명령어 목록을 보려면 'codex'를 입력해 주십시오.";;;;;;;"しよう かのうな めいれいごの もくろくは 「codex」を にゅうりょく して ください。" +"DEV_MESSAGE_CONSOLE_AVAILABLE_COMMANDS";;"Available commends:";"Commandes disponibles :";;;;;;;;;;;;;;;"命令語の目録:";;;"명령어 목록:";;;;;;;"めいれいごの もくろく:" "DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN";;"'%1$s': Unknown command";"« %1$s » : Commande inconnue";;;;;;;;;;;;;;;"「%1$s」: 不明な命令語";;;"'%1$s': 알 수 없는 명령어";;;;;;;"「%1$s」: ふめいな めいれいご" \ No newline at end of file diff --git a/res/locales/polyglot.csv b/res/locales/polyglot.csv index bbebcb520..83678f7f5 100644 --- a/res/locales/polyglot.csv +++ b/res/locales/polyglot.csv @@ -1,11 +1,14 @@ -"STRING_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP" -"LANGUAGE_EN";"[LanguageName] in english";"English";"French";"Spanish";"German";"Italian ";"Portuguese (Brazil)";"Portuguese";"Russian";"Greek";"Turkish";"Danish";"Norwegian";"Swedish";"Dutch";"Polish";"Finnish";"Japanese";"Simplified Chinese";"Traditional Chinese";"Korean";"Czech";"Hungarian";"Romanian";"Thai";"Bulgarian";"Hebrew";"Japanese Kana" -"LANGUAGE_DIRECTION";"ltr or rtl (text direction used by game code)";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"rtl";"ltr" +"STRING_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP";"isIC" -"CREDITS_POLYGLOT";"";"Translated by the Polyglot Project.";"Traduit par le Polyglot Projet.";"Traducido por el proyecto Polyglot.";"Übersetzt von Polyglot Project.";"Tradotto dal Polyglot Project.";"Traduzido pelo projeto Polyglot.";"Traduzido pelo projeto Polyglot.";"Перевод от проекта Polygon";"Μεταφράστηκε από το Polyglot Project.";"Polyglot Projesi ile çevrilmiştir.";"Oversat af Polyglot Projektet.";"Oversatt av Polyglot Prosjektet.";"Översättning av Polyglot-projektet.";"Vertaald door het Polyglot project.";"Przetłumaczono za pomocą Polyglot Project.";"Käännökset: Polyglot Project.";"翻訳提供:Polyglotプロジェクト";"Polyglot 项目提供翻译";"翻譯由Polyglot Project 提供";"번역 제공: Polyglot Project.";"Překlad: Polyglot Projektu.";"Fordította a Polgylot Project.";"Tradus de către Polyglot Project.";"คำแปลโดย Polyglot Project";"Превод от проекта Polyglot.";"תורגם על-ידי פרויקט פוליגלוט.";"ほんやく ていきょう:Polyglotプロジェクト" +"LANGUAGE_EN";"[LanguageName] in english";"English";"French";"Spanish";"German";"Italian ";"Portuguese (Brazil)";"Portuguese";"Russian";"Greek";"Turkish";"Danish";"Norwegian";"Swedish";"Dutch";"Polish";"Finnish";"Japanese";"Simplified Chinese";"Traditional Chinese";"Korean";"Czech";"Hungarian";"Romanian";"Thai";"Bulgarian";"Hebrew";"Japanese Kana";"Icelandic" +"LANGUAGE_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP";"isIC" +"LANGUAGE_THIS";"MyLanguage'; in native text";"English";"Français";"Español";"Deutsch";"Italiano";"Português Brasileiro";"Português";"Pусский";"Ελληνικά";"Türkçe";"Dansk";"Norsk Bokmål";"Svenska";"Nederlands";"Polski";"Suomi";"日本語";"简体中文";"繁體中文";"한국어";"Čeština";"Magyar";"Română";"ภาษาไทย";"Български";"עברית";"にほんご";"íslenska" +"LANGUAGE_DIRECTION";"ltr or rtl (text direction used by game code)";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"rtl";"ltr";"ltr" -"CONTEXT_CHARACTER_DELETE";"";"Delete Character";"Supprimer personnage";"Eliminar personaje";"Character löschen";"Cancella personaggio";"Deletar Personagem";"Apagar personagem";"Удалить персонажа";"Διαγραφή Χαρακτήρα";"Karakteri Sil";"Slet karakter";"Slett karakter";"Radera karaktär";"Verwijder Personage";"Usuń Postać";"Poista hahmo";"キャラクター削除";"删除角色";"刪除角色";"캐릭터 지우기";"Smazat postavu";"Karakter törlése";"Șterge personaj";"ลบตัวละคร";"Изтрий персонаж";"למחוק דמות" -"CONTEXT_CHARACTER_NEW";"Typically used in rpgs/mmorpgs";"New Character";"Nouveau personnage";"Nuevo personaje";"Neuer Charakter";"Nuovo personaggio";"Novo Personagem";"Nova personagem";"Новый персонаж";"Δημιουργία Χαρακτήρα";"Yeni Karakter";"Ny karakter";"Ny karakter";"Ny karaktär";"Nieuw Personage";"Nowa Postać";"Uusi hahmo";"新規キャラクター";"创新角色";"創新角色";"캐릭터 만들기";"Nová postava";"Új karakter";"Personaj nou";"ตัวละครใหม่";"Нов персонаж";"דמות חדשה" +"CREDITS_POLYGLOT";"";"Translated by the Polyglot Project.";"Traduit par le Polyglot Projet.";"Traducido por el proyecto Polyglot.";"Übersetzt von Polyglot Project.";"Tradotto dal Polyglot Project.";"Traduzido pelo projeto Polyglot.";"Traduzido pelo projeto Polyglot.";"Перевод от проекта Polygon";"Μεταφράστηκε από το Polyglot Project.";"Polyglot Projesi ile çevrilmiştir.";"Oversat af Polyglot Projektet.";"Oversatt av Polyglot Prosjektet.";"Översättning av Polyglot-projektet.";"Vertaald door het Polyglot project.";"Przetłumaczono za pomocą Polyglot Project.";"Käännökset: Polyglot Project.";"翻訳提供:Polyglotプロジェクト";"Polyglot 项目提供翻译";"翻譯由Polyglot Project 提供";"번역 제공: Polyglot Project.";"Překlad: Polyglot Projektu.";"Fordította a Polgylot Project.";"Tradus de către Polyglot Project.";"คำแปลโดย Polyglot Project";"Превод от проекта Polyglot.";"תורגם על-ידי פרויקט פוליגלוט.";"ほんやく ていきょう:Polyglotプロジェクト";"Þýddur af verkefnið Polyglot" + +"CONTEXT_CHARACTER_DELETE";"";"Delete Character";"Supprimer personnage";"Eliminar personaje";"Character löschen";"Cancella personaggio";"Deletar Personagem";"Apagar personagem";"Удалить персонажа";"Διαγραφή Χαρακτήρα";"Karakteri Sil";"Slet karakter";"Slett karakter";"Radera karaktär";"Verwijder Personage";"Usuń Postać";"Poista hahmo";"キャラクター削除";"删除角色";"刪除角色";"캐릭터 지우기";"Smazat postavu";"Karakter törlése";"Șterge personaj";"ลบตัวละคร";"Изтрий персонаж";"למחוק דמות";"Eyða persónu" +"CONTEXT_CHARACTER_NEW";"Typically used in rpgs/mmorpgs";"New Character";"Nouveau personnage";"Nuevo personaje";"Neuer Charakter";"Nuovo personaggio";"Novo Personagem";"Nova personagem";"Новый персонаж";"Δημιουργία Χαρακτήρα";"Yeni Karakter";"Ny karakter";"Ny karakter";"Ny karaktär";"Nieuw Personage";"Nowa Postać";"Uusi hahmo";"新規キャラクター";"创新角色";"創新角色";"캐릭터 만들기";"Nová postava";"Új karakter";"Personaj nou";"ตัวละครใหม่";"Нов персонаж";"דמות חדשה";"Nýja persónu" "CONTEXT_CLASS_AI";"[Noun]";"Artificial Intelligence";"Intelligence Artificielle";"Inteligencia Artificial";"Künstliche Intelligenz";"Intelligenza Artificiale";"Inteligência Artificial";"Inteligência Artificial";"Искусственный интеллект";"Τεχνιτή Νοημοσύνη";"Yapay Zeka";"Kunstig Intelligens";"Kunstig Intelligens";"Artificiell intelligens";"Kunstmatige intelligentie";"Sztuczna Inteligencja";"Tekoäly";"人工知能";"人工智能";"人工智能";"인공지능";"Umělá inteligence";"Mesterséges Intelligencia";"Inteligență Artificială";"ปัญญาประดิษฐ์";"Изкуствен интелект";"בינה-מלאכותית" "CONTEXT_CLASS_ALIEN";"[Noun]";"Alien";"Extraterrestre";"Alienígena";"Alien";"Alieno";"Extraterrestre";"Extraterrestre";"Пришелец";"Εξωγήινος";"Uzaylı";"Rumvæsen";"Romvesen";"Utomjording";"Buitenaards wezen";"Kosmita";"Avaruusolio";"エイリアン";"外星人";"外星人";"외계인";"Mimozemšťan";"Idegen";"Extraterestru";"เอเลี่ยน";"Извънземно";"חייזר" @@ -34,27 +37,26 @@ "CONTEXT_CLASS_ZOMBIE";"[Noun]";"Zombie";"Zombie";"Zombi";"Zombie";"Zombie";"Zumbi";"Zombie";"Зомби";"Ζόμπι";"Zombi";"Zombie";"Zombie";"Zombie";"Zombie";"Zombie";"Zombi";"ゾンビ";"僵尸";"僵尸";"좀비";"Zombie";"Zombi";"Zombie";"ซอมบี้";"Зомби";"זומבי" "CONTEXT_CLASS_ZOMBIE_PLURAL";"[Noun/Plural]";"Zombies";"Zombies";"Zombis";"Zombies";"Zombie";"Zumbis";"Zombies";"Зомби";"Ζόμπι";"Zombiler";"Zombier";"Zombier";"Zombier";"Zombies";"Zombie";"Zombit";"ゾンビ";"僵尸";"僵尸";"좀비";"Zombíci";"Zombik";"Zombies";"ซอมบี้";"Зомбита";"זומבים" -"CONTEXT_CONDITION_BURNING";"[Adjective]";"Burning";"En feu";"En llamas";"Brennender";"A fuoco";"Queimando";"A arder";"Горящий";"Φλεγόμενο";"Yanıyor";"Brændende";"Brennende";"Brinnande";"Brandend";"Popażony";"Liekeissä";"炎上";"燃烧";"燃燒中";"화상";"Hořící";"Égés";"În flăcări";"ไหม้";"Горящ";"שורף" -"CONTEXT_CONDITION_CRITICAL";"[Adjective]";"Critical";"Critique";"Crítico";"Kritischer";"Critico";"Estado grave";"Estado grave";"В критическом состоянии";"Σε κρίσιμη κατάσταση";"Kritik";"Såret kritisk";"Kritisk såret ";"Svårt skadad";"Kritisch";"Krytyczny";"Kriittinen";"瀕死";"瀕死";"瀕死";"치명상";"Kritický";"Kritikus";"Critical";"คริติคอล";"В критично състояние";"אנוש" -"CONTEXT_CONDITION_DEAD";"[Adjective] [Default male]";"Dead";"Mort";"Muerto";"Toter";"Morto";"Morto";"Morto";"Мёртвый";"Νεκρός";"Ölü";"Død";"Død";"Död";"Dood";"Martwy";"Kuollut";"死亡";"死亡";"死亡";"사망";"Mrtvý";"Halott";"Mort";"ตาย";"Мъртъв";"מת" -"CONTEXT_CONDITION_FROZEN";"[Adjective] [Default male]";"Frozen";"Gelé";"Congelado";"Gefrohrener";"Ghiacciato";"Congelado";"Congelado";"Заморожен";"Παγωμένος";"Donmuş";"Frossen";"Frossen";"Fryst";"Bevroren";"Zamrożony";"Jäässä";"凍結";"凍結";"凍結";"동결";"Zmražený";"Fagyott";"Înghețat";"หนาวเย็น";"Замразен";"קפוא" -"CONTEXT_CONDITION_POISONED";"[Adjective] [Default male]";"Poisoned";"Empoisonné";"Envenenado";"Vergifteter";"Avvelenato";"Envenenado";"Envenenado";"Отравлен";"Δηλητηρισμένος";"Zehirlenmiş";"Forgiftet";"Forgiftet";"Förgiftad";"Vergiftigd";"Otruty";"Myrkytetty";"毒";"毒";"中毒";"중독";"Otrávený";"Mérgezett";"Otrăvit";"ติดพิษ";"Отровен";"מורעל" -"CONTEXT_CONDITION_SLOWED";"[Adjective] [Default male]";"Slowed";"Ralenti";"Ralentizado";"Verlangsamter";"Rallentato";"Lento";"Lento";"Замедлен";"Επιβραδυνμένος";"Yavaşlamış";"Langsommelig";"Nedsakted";"Nedsaktad";"Vertraagd";"Spowolniony";"Hidastettu";"減速";"減速";"減速";"감속";"Zpomalený";"Lassított";"Încetinit";"ช้า";"Забавен";"מואט" -"CONTEXT_CONDITION_STUNNED";"[Adjective] [Default male]";"Stunned";"Étourdi";"Aturdido";"Erstarrter";"Stordito";"Atordoado";"Atordoado";"Оглушен";"Παραλυμένος";"Sersemlemiş";"Lamslået";"Lamslått";"Lamslagen";"Bedwelmd";"Ogłuszony";"Pökerryksissä";"スタン";"眩晕";"眩晕";"스턴";"Ohromený";"Kábult";"Împietrit";"มึน";"Зашеметен";"משותק" -"CONTEXT_CONDITION_UNCONSCIOUS";"[Adjective]";"Unconscious";"Inconscient";"Inconsciente";"Bewusstloser";"Svenuto";"Desmaiado";"Desmaiado";"Без сознания";"Αναίσθητος";"Şuursuz";"Ubevist";"Ubevist";"Omedveten";"Bewusteloos";"Nieprzytomny";"Tajuton";"気絶";"失去知觉";"失去知覺";"기절";"V bezvědomí";"Eszméletlen";"Inconștient";"สลบ";"В безсъзнание";"חסר-הכרה" -"CONTEXT_CONDITION_UNHURT";"[Adjective] [Default male] No wounds";"Unhurt";"Indemne";"Ileso";"Unverletzter";"Illeso";"Ileso";"Ileso";"Невредимый";"Αβλαβής";"Yaralanmamış";"Ubeskadiget";"Uskadd";"Oskadad";"Ongedeerd";"Zdrowy";"Täydessä kunnossa";"無傷";"未受伤";"未受傷";"정상";"Nezraněný";"Sértetlen";"Neatins";"ไม่บาดเจ็บ";"Невредим";"בריא" -"CONTEXT_CONDITION_WET";"[Adjective] [Default male]";"Wet";"Trempé";"Mojado";"Nasser";"Bagnato";"Molhado";"Molhado";"Мокрый";"Βρεγμένος";"Islak";"Våd";"Våt";"Våt";"Nat";"Przemoczony";"Märkä";"濡れている";".湿";".濕";"젖음";"Vlhký";"Nedves";"Ud";"เปียก";"Мокър";"רטוב" -"CONTEXT_CONDITION_WOUNDED";"[Adjective] [Default male]";"Wounded";"Blessé";"Herido";"Verwundeter";"Ferito";"Ferido";"Ferido";"Раненый";"Πληγωμένος";"Yaralı";"Såret";"Såret";"Skadad";"Gewond";"Ranny";"Haavoittunut";"負傷";"受伤";"受傷";"부상";"Zraněný";"Sebesült";"Rănit";"บาดเจ็บ";"Ранен";"פצוע" +"CONTEXT_CONDITION_BURNING";"[Adjective]";"Burning";"En feu";"En llamas";"Brennender";"A fuoco";"Queimando";"A arder";"Горящий";"Φλεγόμενο";"Yanıyor";"Brændende";"Brennende";"Brinnande";"Brandend";"Popażony";"Liekeissä";"炎上";"燃烧";"燃燒中";"화상";"Hořící";"Égés";"În flăcări";"ไหม้";"Горящ";"שורף";"えんじょう";"Tendrað" +"CONTEXT_CONDITION_CRITICAL";"[Adjective]";"Critical";"Critique";"Crítico";"Kritischer";"Critico";"Estado grave";"Estado grave";"В критическом состоянии";"Σε κρίσιμη κατάσταση";"Kritik";"Såret kritisk";"Kritisk såret ";"Svårt skadad";"Kritisch";"Krytyczny";"Kriittinen";"瀕死";"瀕死";"瀕死";"치명상";"Kritický";"Kritikus";"Critical";"คริติคอล";"В критично състояние";"אנוש";"ひんし";"Gagnrýninn" +"CONTEXT_CONDITION_DEAD";"[Adjective] [Default male]";"Dead";"Mort";"Muerto";"Toter";"Morto";"Morto";"Morto";"Мёртвый";"Νεκρός";"Ölü";"Død";"Død";"Död";"Dood";"Martwy";"Kuollut";"死亡";"死亡";"死亡";"사망";"Mrtvý";"Halott";"Mort";"ตาย";"Мъртъв";"מת";"しぼう";"Dauður" +"CONTEXT_CONDITION_FROZEN";"[Adjective] [Default male]";"Frozen";"Gelé";"Congelado";"Gefrohrener";"Ghiacciato";"Congelado";"Congelado";"Заморожен";"Παγωμένος";"Donmuş";"Frossen";"Frossen";"Fryst";"Bevroren";"Zamrożony";"Jäässä";"凍結";"凍結";"凍結";"동결";"Zmražený";"Fagyott";"Înghețat";"หนาวเย็น";"Замразен";"קפוא";"とうけつ";"Frosinn" +"CONTEXT_CONDITION_POISONED";"[Adjective] [Default male]";"Poisoned";"Empoisonné";"Envenenado";"Vergifteter";"Avvelenato";"Envenenado";"Envenenado";"Отравлен";"Δηλητηρισμένος";"Zehirlenmiş";"Forgiftet";"Forgiftet";"Förgiftad";"Vergiftigd";"Otruty";"Myrkytetty";"毒";"毒";"中毒";"중독";"Otrávený";"Mérgezett";"Otrăvit";"ติดพิษ";"Отровен";"מורעל";"どく";"Eitrun" +"CONTEXT_CONDITION_SLOWED";"[Adjective] [Default male]";"Slowed";"Ralenti";"Ralentizado";"Verlangsamter";"Rallentato";"Lento";"Lento";"Замедлен";"Επιβραδυνμένος";"Yavaşlamış";"Langsommelig";"Nedsakted";"Nedsaktad";"Vertraagd";"Spowolniony";"Hidastettu";"減速";"減速";"減速";"감속";"Zpomalený";"Lassított";"Încetinit";"ช้า";"Забавен";"מואט";"げんそく";"hægur-hreyfing" +"CONTEXT_CONDITION_STUNNED";"[Adjective] [Default male]";"Stunned";"Étourdi";"Aturdido";"Erstarrter";"Stordito";"Atordoado";"Atordoado";"Оглушен";"Παραλυμένος";"Sersemlemiş";"Lamslået";"Lamslått";"Lamslagen";"Bedwelmd";"Ogłuszony";"Pökerryksissä";"スタン";"眩晕";"眩晕";"스턴";"Ohromený";"Kábult";"Împietrit";"มึน";"Зашеметен";"משותק";"スタン";"hneykslaður" +"CONTEXT_CONDITION_UNCONSCIOUS";"[Adjective]";"Unconscious";"Inconscient";"Inconsciente";"Bewusstloser";"Svenuto";"Desmaiado";"Desmaiado";"Без сознания";"Αναίσθητος";"Şuursuz";"Ubevist";"Ubevist";"Omedveten";"Bewusteloos";"Nieprzytomny";"Tajuton";"気絶";"失去知觉";"失去知覺";"기절";"V bezvědomí";"Eszméletlen";"Inconștient";"สลบ";"В безсъзнание";"חסר-הכרה";"きぜつ";"meðvitundarlaus" +"CONTEXT_CONDITION_UNHURT";"[Adjective] [Default male] No wounds";"Unhurt";"Indemne";"Ileso";"Unverletzter";"Illeso";"Ileso";"Ileso";"Невредимый";"Αβλαβής";"Yaralanmamış";"Ubeskadiget";"Uskadd";"Oskadad";"Ongedeerd";"Zdrowy";"Täydessä kunnossa";"無傷";"未受伤";"未受傷";"정상";"Nezraněný";"Sértetlen";"Neatins";"ไม่บาดเจ็บ";"Невредим";"בריא";"むきず";"óskemmdar" +"CONTEXT_CONDITION_WET";"[Adjective] [Default male]";"Wet";"Trempé";"Mojado";"Nasser";"Bagnato";"Molhado";"Molhado";"Мокрый";"Βρεγμένος";"Islak";"Våd";"Våt";"Våt";"Nat";"Przemoczony";"Märkä";"濡れている";".湿";".濕";"젖음";"Vlhký";"Nedves";"Ud";"เปียก";"Мокър";"רטוב";"ぬれている";"Blautur" +"CONTEXT_CONDITION_WOUNDED";"[Adjective] [Default male]";"Wounded";"Blessé";"Herido";"Verwundeter";"Ferito";"Ferido";"Ferido";"Раненый";"Πληγωμένος";"Yaralı";"Såret";"Såret";"Skadad";"Gewond";"Ranny";"Haavoittunut";"負傷";"受伤";"受傷";"부상";"Zraněný";"Sebesült";"Rănit";"บาดเจ็บ";"Ранен";"פצוע";"ふしょう";"Sár" -"CONTEXT_DESCRIPTION_BIG";"[Adjective]";"Big";"Gros";"Grande";"Groß";"Grande";"Grande";"Grande";"Большой";"Μεγάλο";"Büyük";"Stor";"Stor";"Stor";"Groot";"Duży";"Iso";"大";"大";"大";"대";"Velký";"Nagy";"Mare";"ใหญ่";"Голям";"גדול" -"CONTEXT_DESCRIPTION_HUGE";"[Adjective] Very large";"Huge";"Énorme";"Enorme";"Riesig";"Enorme";"Enorme";"Enorme";"Огромный";"Τεράστιο";"Devasa";"Enorm";"Enorm";"Enorm";"Enorm";"Ogromny";"Jättimäinen";"巨大";"极大";"極大";"특대";"Obrovský";"Hatalmas";"Enorm";"ใหญ่มาก";"Огромен";"ענק" -"CONTEXT_DESCRIPTION_SMALL";"[Adjective]";"Small";"Petit";"Pequeño";"Klein";"Piccolo";"Pequeno";"Pequeno";"Маленький";"Μικρό";"Küçük";"Lille";"Liten";"Liten";"Klein";"Mały";"Pieni";"小";"小";"小";"소";"Malý";"Kicsi";"Mic";"เล็ก";"Малък";"קטן" -"CONTEXT_DESCRIPTION_TINY";"[Adjective] Very small";"Tiny";"Minuscule";"Diminuto";"Winzig";"Minuscolo";"Muito pequeno";"Muito pequeno";"Крошечный";"Μικροσκοπικό";"Minik";"Lillebitte";"Bitteliten";"Pytteliten";"Minuscuul";"Malutki";"Pikkuriikkinen";"極小";"极小";"極小";"특소";"Maličký";"Apró";"Minuscul";"เล็กจิ๋ว";"Миниатюрен";"קטנטן" +"CONTEXT_DESCRIPTION_BIG";"[Adjective]";"Big";"Gros";"Grande";"Groß";"Grande";"Grande";"Grande";"Большой";"Μεγάλο";"Büyük";"Stor";"Stor";"Stor";"Groot";"Duży";"Iso";"大";"大";"大";"대";"Velký";"Nagy";"Mare";"ใหญ่";"Голям";"גדול";"だい";"Stór" +"CONTEXT_DESCRIPTION_HUGE";"[Adjective] Very large";"Huge";"Énorme";"Enorme";"Riesig";"Enorme";"Enorme";"Enorme";"Огромный";"Τεράστιο";"Devasa";"Enorm";"Enorm";"Enorm";"Enorm";"Ogromny";"Jättimäinen";"巨大";"极大";"極大";"특대";"Obrovský";"Hatalmas";"Enorm";"ใหญ่มาก";"Огромен";"ענק";"きょだい";"Gífurlegur" +"CONTEXT_DESCRIPTION_SMALL";"[Adjective]";"Small";"Petit";"Pequeño";"Klein";"Piccolo";"Pequeno";"Pequeno";"Маленький";"Μικρό";"Küçük";"Lille";"Liten";"Liten";"Klein";"Mały";"Pieni";"小";"小";"小";"소";"Malý";"Kicsi";"Mic";"เล็ก";"Малък";"קטן";"こ";"Lítill" +"CONTEXT_DESCRIPTION_TINY";"[Adjective] Very small";"Tiny";"Minuscule";"Diminuto";"Winzig";"Minuscolo";"Muito pequeno";"Muito pequeno";"Крошечный";"Μικροσκοπικό";"Minik";"Lillebitte";"Bitteliten";"Pytteliten";"Minuscuul";"Malutki";"Pikkuriikkinen";"極小";"极小";"極小";"특소";"Maličký";"Apró";"Minuscul";"เล็กจิ๋ว";"Миниатюрен";"קטנטן";"きょくしょう";"Pínulítill" "CONTEXT_ITEM_ARMOR";"[Noun] Body armor";"Armor";"Armure";"Armadura";"Rüstung";"Armatura";"Armadura";"Armadura";"Броня";"Πανοπλία";"Zırh";"Rustning";"Rustning";"Rustning";"Pantser";"Zbroja";"Panssari";"鎧";"护甲";"護甲";"갑옷";"Brnění";"Páncél";"Armură";"ชุดเกราะ";"Броня";"שריון" "CONTEXT_ITEM_ARROW";"[Noun] Ammo for archers";"Arrow";"Flèche";"Flecha";"Pfeil";"Freccia";"Flecha";"Seta";"Стрела";"Βέλος";"Ok";"Pil";"Pil";"Pil";"Pijl";"Strzała";"Nuoli";"矢";"箭";"箭";"화살";"Šíp";"Nyílvessző";"Săgeată";"ลูกธนู";"Стрела";"חץ" "CONTEXT_ITEM_ARROW_PLURAL";"[Noun/Plural] Ammo for archers";"Arrows";"Flèches";"Flechas";"Pfeile";"Frecce";"Flechas";"Setas";"Стрелы";"Βέλη";"Oklar";"Pile";"Piler";"Pilar";"Pijlen";"Strzały";"Nuolet";"矢";"箭";"箭";"화살";"Šípy";"Nyílvesszők";"Săgeți";"ลูกธนู";"Стрели";"חיצים" -"CONTEXT_ITEM_BOARD";"[Noun] Boardgame board";"Board";"Plateau de jeu";"Tablero";"Brett";"Plancia";"Tabuleiro";"Tabuleiro";"Доска";"Ταμπλό";"Tahta";"Spilleplade";"Bret";"Bräde";"Spelbord";"Plansza";"Lauta";"盤";"盘";"遊戲盤";"판";"Deska";"Tábla";"Tablă de joc";"บอร์ด";"Дъска";"לוח" "CONTEXT_ITEM_BOMB";"[Noun]";"Bomb";"Bombe";"Bomba";"Bombe";"Bomba";"Bomba";"Bomba";"Бомба";"Βόμβα";"Bomba";"Bombe";"Bombe";"Bomb";"Bom";"Bomba";"Pommi";"爆弾";"炸弹";"炸彈";"폭탄";"Bomba";"Bomba";"Bombă";"ระเบิด";"Бомба";"פצצה" "CONTEXT_ITEM_BOOK";"[Noun]";"Book";"Livre";"Libro";"Buch";"Libro";"Livro";"Livro";"Книга";"Βιβλίο";"Kitap";"Bog";"Bok";"Bok";"Boek";"Książka";"Kirja";"本";"书";"書";"책";"Kniha";"Könyv";"Carte";"หนังสือ";"Книга";"ספר" "CONTEXT_ITEM_BOOTS";"[Noun/Plural] Boots";"Boots";"Bottes";"Botas";"Stiefel";"Scarponi";"Botas";"Botas";"Ботинки";"Μπότες";"Bot";"Støvler";"Støvler";"Kängor";"Schoenen";"Buty";"Saappaat";"靴";"靴";"靴";"신발";"Boty";"Csizma";"Bocanci";"รองเท้าบูท";"Ботуши";"מגפיים" @@ -185,7 +187,7 @@ "CREDITS_LOCALIZATION";"";"Localization";"Localisation";"Localización";"Lokalisierung";"Localizzazione";"Localização";"Localização";"Локализация";"Επιλογή τοποθεσιών";"Lokalizasyon";"Lokalisering";"Lokalisering";"Lokalisering";"Lokalisatie";"Lokalizacja";"Lokalisaatio";"ローカリゼーション";"本地化";"本土化";"지역화";"Lokalizace";"Lokalizáció";"Localizare";"โลคัลไลเซชัน";"Локализиране";"התאמה לשפה" "CREDITS_TRANSLATION";"";"Translation";"Traduction";"Traducción";"Übersetzung";"Traduzione";"Tradução";"Tradução";"Перевод";"Μετάφραση";"Çeviri";"Oversættelse";"Oversettelse";"Översättning";"Vertaling";"Tłumaczenia";"Käännöstyö";"翻訳";"翻译 ";"翻譯";"번역";"Překlad";"Fordítás";"Traducere";"แปลภาษา";"Превод";"תרגום" -"ERROR_DEVICE_NOT_FOUND";"Use {0} in place of [device]";"No {0} detected.";"Aucun {0} détecté.";"No se detectó {0}.";"{0} nicht erkannt.";"Nessun {0} trovato.";"{0} não encontrado.";"O dispositivo {0} não foi detectado.";"{0} не обнаружен.";"Δεν εντοπίστηκε {0}.";"{0} aygıt algılanamadı.";"Ingen {0} fundet.";"Ingen {0} funnet.";"{0} kunde inte hittas.";"Geen {0} gevonden.";"Nie wykryto {0}.";"{0} ei havaittu.";"{0} が接続されていません。";"未检测到{0}。";"未檢測到{0}。";"{0}을(를) 찾을 수 없습니다.";"Zařízení {0} nenalezeno.";"{0} nem található.";"Nu s-a detectat niciun {0}.";"ตรวจไม่พบอุปกรณ์ {0}";"Няма засечен {0}.";"לא נמצא רכיב {0}." +"ERROR_DEVICE_NOT_FOUND";"Use %1$s in place of [device]";"No %1$s detected.";"Aucun %1$s détecté.";"No se detectó %1$s.";"%1$s nicht erkannt.";"Nessun %1$s trovato.";"%1$s não encontrado.";"O dispositivo %1$s não foi detectado.";"%1$s не обнаружен.";"Δεν εντοπίστηκε %1$s.";"%1$s aygıt algılanamadı.";"Ingen %1$s fundet.";"Ingen %1$s funnet.";"%1$s kunde inte hittas.";"Geen %1$s gevonden.";"Nie wykryto %1$s.";"%1$s ei havaittu.";"%1$s が接続されていません。";"未检测到%1$s。";"未檢測到%1$s。";"%1$s을(를) 찾을 수 없습니다.";"Zařízení %1$s nenalezeno.";"%1$s nem található.";"Nu s-a detectat niciun %1$s.";"ตรวจไม่พบอุปกรณ์ %1$s";"Няма засечен %1$s.";"לא נמצא רכיב %1$s." "ERROR_GENERIC_ERRCODE";"";"Error code:";"Code d'erreur :";"Código de error:";"Fehlercode:";"Codice errore:";"Código do erro:";"Código do erro:";"Код ошибки:";"Κωδικός σφάλματος:";"Hata kodu:";"Fejlkode:";"Feilkode:";"Felkod:";"Foutcode:";"Kod błędu:";"Virhekoodi: ";"エラーコード:";"错误代码:";"錯誤代碼:";"오류 코드:";"Kód chyby:";"Hibakód:";"Cod de eroare:";"รหัสข้อผิดพลาด";"Код на грешката:";"טעות מספר:" "ERROR_GENERIC_TEXT";"";"An error has occured.";"Une erreur s'est produite.";"Ha ocurrido un error.";"Ein Fehler ist aufgetreten.";"È stato riscontrato un errore.";"Ocorreu um erro.";"Ocorreu um erro.";"Произошла ошибка.";"Γενικό σφάλμα.";"Bir hata oluştu.";"Der er sket en fejl.";"Det har skjedd en feil.";"Ett fel har uppstått.";"Er is een fout opgetreden.";"Wystąpił jakiś błąd.";"On tapahtunut virhe.";"エラーが発生しました。";"发生了错误。";"發生了錯誤。";"오류가 발생했습니다.";"Vyskytla se chyba.";"Hiba történt.";"A apărut o eroare.";"เกิดความผิดพลาดบางประการ";"Грешка в изпълнението.";"ארעה טעות." "ERROR_GENERIC_INVALID_NAME";"";"Invalid name.";"Nom incorrect.";"El nombre no es válido.";"Ungültiger Name.";"Nome non valido.";"Nome inválido.";"Nome Inválido.";"Недопустимое название.";"Μη έγκυρο όνομα.";"Geçersiz İsim.";"Ugyldigt navn.";"Ugyldig navn.";"Ogiltigt Namn.";"Ongeldige naam.";"Błędna nazwa.";"Virheellinen nimi.";"無効な名前です。";"名称无效。";"名稱無效。";"이름이 잘못되었습니다.";"Neplatný název.";"Érvénytelen név.";"Nume Invalid.";"ชื่อไม่ถูกต้อง";"Невалидно име.";"שם לא נכון!" @@ -436,9 +438,6 @@ "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_LANGUAGE_THIS";"MyLanguage'; in native text";"English";"Français";"Español";"Deutsch";"Italiano";"Português Brasileiro";"Português";"Pусский";"Ελληνικά";"Türkçe";"Dansk";"Norsk Bokmål";"Svenska";"Nederlands";"Polski";"Suomi";"日本語";"简体中文";"繁體中文";"한국어";"Čeština";"Magyar";"Română";"ภาษาไทย";"Български";"עברית";"にほんご" -"MENU_LANGUAGE_THIS_EN";"MyLanguage'; in english text";"English";"French";"Spanish";"German";"Italian ";"Portuguese (Brazil)";"Portuguese (Portugal)";"Russian";"Greek";"Turkish";"Danish";"Norwegian";"Swedish";"Dutch";"Polish";"Finnish";"Japanese";"Simplified Chinese";"Traditional Chinese";"Korean";"Czech";"Hungarian";"Romanian";"Thai";"Bulgarian";"Hebrew";"Japanese (Kana)" - "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";"อีเมล";"Имейл";"כתובת-דואר" "MENU_LOGIN_FORGOT";"";"Forgot password";"Mot de passe oublié";"Olvidé mi contraseña";"Passwort vergessen?";"Password dimenticata?";"Esqueceu sua senha?";"Esqueceu-se da password?";"Забыл пароль";"Ξέχασα τον κωδικό μου";"Şifremi Unuttum";"Glemt kodeord";"Glemt passord";"Glömt lösenord";"Wachtwoord vergeten";"Nie pamiętam hasła";"Unohdin salasanan";"パスワードを忘れた";"忘记密码";"忘記密碼";"비밀번호를 잊으셨나요?";"Zapomenuté heslo";"Elfelejtettem a jelszót";"Am uitat parola";"ลืมรหัสผ่าน";"Забравена парола";"שכחת סיסמה?" diff --git a/src/com/Torvald/ImageFont/GameFontWhite.java b/src/com/Torvald/ImageFont/GameFontWhite.java index 937acad05..945bc3e36 100644 --- a/src/com/Torvald/ImageFont/GameFontWhite.java +++ b/src/com/Torvald/ImageFont/GameFontWhite.java @@ -45,8 +45,8 @@ public class GameFontWhite extends GameFontBase { ); uniHan = new SpriteSheet( "./res/graphics/fonts/unifont_unihan" - + (((Terrarum.gameLocale.contains("jp") || Terrarum.gameLocale.contains("ko"))) - ? "_jp" : "") + + ((!Terrarum.gameLocale.contains("zh")) + ? "_ja" : "") +".png" , W_UNIHAN, H_UNIHAN ); @@ -79,8 +79,8 @@ public class GameFontWhite extends GameFontBase { public void reloadUnihan() throws SlickException { uniHan = new SpriteSheet( "./res/graphics/fonts/unifont_unihan" - + ((!Terrarum.gameLocale.contains("cn")) - ? "_jp" : "") + + ((!Terrarum.gameLocale.contains("zh")) + ? "_ja" : "") +".png" , W_UNIHAN, H_UNIHAN ); diff --git a/src/com/Torvald/Terrarum/Actors/Player.java b/src/com/Torvald/Terrarum/Actors/Player.java index 975b3971f..4c6fc9240 100644 --- a/src/com/Torvald/Terrarum/Actors/Player.java +++ b/src/com/Torvald/Terrarum/Actors/Player.java @@ -55,7 +55,7 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac private final int TSIZE = MapDrawer.TILE_SIZE; - private char LUMINANCE_RGB = 63999; + private char LUMINANCE_RGB = 1560; private HashSet factionSet = new HashSet<>(); diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java b/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java index c20de9206..686bfa720 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java @@ -17,6 +17,7 @@ public class CommandInterpreter { CommandInput[] cmd = parse(command); for (CommandInput single_command : cmd) { + ConsoleCommand commandObj = null; try { if (single_command.getName().equalsIgnoreCase("auth")) { Terrarum.game.auth.execute(single_command.toStringArray()); @@ -35,9 +36,9 @@ public class CommandInterpreter { } else { if (Terrarum.game.auth.b()) { - ConsoleCommand commandObj = CommandDict.getCommand( - single_command.getName().toLowerCase()); - commandObj.execute(single_command.toStringArray()); + commandObj = CommandDict.getCommand( + single_command.getName().toLowerCase() + ); } else { throw new NullPointerException(); // if not authorised, say "Unknown command" @@ -47,6 +48,17 @@ public class CommandInterpreter { catch (NullPointerException e) { echoUnknownCmd(single_command.getName()); } + finally { + try { + if (commandObj != null) + commandObj.execute(single_command.toStringArray()); + } + catch (Exception e) { + System.out.println("[CommandInterpreter] "); + e.printStackTrace(); + new Echo().execute(Lang.get("ERROR_GENERIC_TEXT")); + } + } } } diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/ConsoleCommand.java b/src/com/Torvald/Terrarum/ConsoleCommand/ConsoleCommand.java index 72f9d5906..7361d138d 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/ConsoleCommand.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/ConsoleCommand.java @@ -5,7 +5,7 @@ package com.Torvald.Terrarum.ConsoleCommand; */ interface ConsoleCommand { - void execute(String[] args); + void execute(String[] args) throws Exception; void printUsage(); diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/GetLocale.java b/src/com/Torvald/Terrarum/ConsoleCommand/GetLocale.java index 1d04cad80..bd1696c9d 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/GetLocale.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/GetLocale.java @@ -11,9 +11,9 @@ public class GetLocale implements ConsoleCommand { public void execute(String[] args) { new Echo().execute( "Locale: " - + Lang.get("MENU_LANGUAGE_THIS") + + Lang.get("LANGUAGE_THIS") + " (" - + Lang.get("MENU_LANGUAGE_THIS_EN") + + Lang.get("LANGUAGE_EN") + ")" ); } diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/SetLocale.java b/src/com/Torvald/Terrarum/ConsoleCommand/SetLocale.java index 77e56ef02..c656b26d4 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/SetLocale.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/SetLocale.java @@ -3,6 +3,7 @@ package com.Torvald.Terrarum.ConsoleCommand; import com.Torvald.ImageFont.GameFontBase; import com.Torvald.Terrarum.LangPack.Lang; import com.Torvald.Terrarum.Terrarum; +import org.apache.commons.csv.CSVRecord; import org.newdawn.slick.SlickException; import java.io.IOException; @@ -25,6 +26,13 @@ public class SetLocale implements ConsoleCommand { Terrarum.gameLocale = prevLocale; } } + else if (args.length == 1) { + Echo echo = new Echo(); + echo.execute("Locales:"); + + CSVRecord record = Lang.getRecord("LANGUAGE_ID"); + record.forEach(field -> echo.execute("] " + field)); + } else { printUsage(); } diff --git a/src/com/Torvald/Terrarum/LangPack/Lang.java b/src/com/Torvald/Terrarum/LangPack/Lang.java index f12dbc113..19f6b5cb7 100644 --- a/src/com/Torvald/Terrarum/LangPack/Lang.java +++ b/src/com/Torvald/Terrarum/LangPack/Lang.java @@ -80,6 +80,15 @@ public class Lang { lang.put(record.get(CSV_COLUMN_FIRST), record); } + public static CSVRecord getRecord(String key) { + CSVRecord record = lang.get(key); + if (record == null) { + System.out.println("[Lang] No such record."); + throw new NullPointerException(); + } + return record; + } + public static String get(String key) { String value = null; try { value = lang.get(key).get(Terrarum.gameLocale); } diff --git a/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java b/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java index 83c1b5b90..aac8e5d83 100644 --- a/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java +++ b/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java @@ -248,109 +248,80 @@ public class LightmapRenderer { private static char calculate(int x, int y){ if (!outOfBounds(x, y)){ - float lightColorR = 1f; - float lightColorG = 1f; - float lightColorB = 1f; - char lightColorInt; - + char lightLevelThis = 0; int thisTerrain = Terrarum.game.map.getTileFromTerrain(x, y); int thisWall = Terrarum.game.map.getTileFromWall(x, y); + char thisTileLuminosity = TilePropCodex.getProp(thisTerrain).getLuminosity(); // open air if (thisTerrain == AIR && thisWall == AIR) { - lightColorInt = Terrarum.game.map.getGlobalLight(); + lightLevelThis = screenBlend(lightLevelThis, Terrarum.game.map.getGlobalLight()); } - else { - // mix light emitter - if (TilePropCodex.getProp(thisTerrain).getLuminosity() != 0) { - char lum = TilePropCodex.getProp(thisTerrain).getLuminosity(); - lightColorR = getR(lum); - lightColorG = getG(lum); - lightColorB = getB(lum); + + // mix luminous tile + if (thisTileLuminosity > 0) { + lightLevelThis = screenBlend(lightLevelThis, thisTileLuminosity); + } + + // mix lantern + for (LightmapLantern lantern : lanterns) { + if (lantern.getX() == x && lantern.getY() == y) { + lightLevelThis = screenBlend(lightLevelThis, lantern.getIntensity()); + break; } + } - // mix lantern - for (LightmapLantern lantern : lanterns) { - if (lantern.getX() == x && lantern.getY() == y) { - char lum = lantern.getIntensity(); - lightColorR = getR(lum); - lightColorG = getG(lum); - lightColorB = getB(lum); - break; - } - } + // mix luminous actor + // test player TODO for all actor.Luminous in the game + int tileX = Math.round(Terrarum.game.getPlayer().getHitbox().getPointedX() / TSIZE); + int tileY = Math.round(Terrarum.game.getPlayer().getHitbox().getPointedY() / TSIZE) + - 1; + char actorLuminosity = Terrarum.game.getPlayer().getLuminance(); + if (x == tileX && y == tileY) { + lightLevelThis = screenBlend(lightLevelThis, actorLuminosity); + } - // mix actor Luminous - // test player TODO for all actor.Luminous in the game - int tileX = Math.round(Terrarum.game.getPlayer().getHitbox().getPointedX() / TSIZE); - int tileY = Math.round(Terrarum.game.getPlayer().getHitbox().getPointedY() / TSIZE) - - 1; - char lum = Terrarum.game.getPlayer().getLuminance(); - if (x == tileX && y == tileY) { - lightColorR = getR(lum); - lightColorG = getG(lum); - lightColorB = getB(lum); - } - float[] bgrVal = new float[3]; // {B, G, R} - - // test for each B, G, R channel - for (int i = 0; i < 3; i++) { - int brightest = 0; - - //get brightest of nearby 4 tiles - int nearby = 0b0; - findNearbyBrightest: - for (int yoff = -1; yoff <= 1; yoff++) { - for (int xoff = -1; xoff <= 1; xoff++) { - /** - * filter for 'v's as: - * +-+-+-+ - * |a|v|a| - * +-+-+-+ - * |v| |v| - * +-+-+-+ - * |a|v|a| - * +-+-+-+ - */ - if (xoff != yoff && -xoff != yoff) { // 'v' tiles - if (!outOfMapBounds(x + xoff, y + yoff)) { - nearby = getRaw(staticLightMap[y + yoff][x + xoff], i); - } - } - else if (xoff != 0 && yoff != 0) { // 'a' tiles - if (!outOfMapBounds(x + xoff, y + yoff)) { - nearby = darken((char) getRaw(staticLightMap[y + yoff][x + xoff], i) - , 0x3); //mix some to have more 'spreading' - // so that light spreads in a shape of an octagon instead of a diamond - } - } - - if (nearby > brightest) { - brightest = nearby; - } - - if (brightest == CHANNEL_MAX) break findNearbyBrightest; + // calculate and mix ambient + char ambient = 0; char nearby = 0; + findNearbyBrightest: + for (int yoff = -1; yoff <= 1; yoff++) { + for (int xoff = -1; xoff <= 1; xoff++) { + /** + * filter for 'v's as: + * +-+-+-+ + * |a|v|a| + * +-+-+-+ + * |v| |v| + * +-+-+-+ + * |a|v|a| + * +-+-+-+ + */ + if (xoff != yoff && -xoff != yoff) { // 'v' tiles + if (!outOfMapBounds(x + xoff, y + yoff)) { + nearby = staticLightMap[y + yoff][x + xoff]; } } + else if (xoff != 0 && yoff != 0) { // 'a' tiles + if (!outOfMapBounds(x + xoff, y + yoff)) { + nearby = darkenUniformInt(staticLightMap[y + yoff][x + xoff] + , 2); + // mix some to have more 'spreading' + // so that light spreads in a shape of an octagon instead of a diamond + } + } + else { + nearby = 0; // exclude 'me' tile + } - //return: brightest - opacity - bgrVal[i] = darkenFloat( - (char) (brightest) - , TilePropCodex.getProp(thisTerrain).getOpacity() - ); + ambient = additiveBlend(ambient, nearby); // keep base value as brightest nearby } - - // construct lightColor from bgrVal - lightColorInt = constructRGBFromFloat( - bgrVal[OFFSET_R] * lightColorR - , bgrVal[OFFSET_G] * lightColorG - , bgrVal[OFFSET_B] * lightColorB - ); - } - return lightColorInt; + char opacity = TilePropCodex.getProp(thisTerrain).getOpacity(); + ambient = darkenColoured(ambient, opacity); // get real ambient by appling opacity value + + return screenBlend(lightLevelThis, ambient); } else { throw new IllegalArgumentException("Out of bounds of lightMap"); @@ -361,19 +332,43 @@ public class LightmapRenderer { * * @param data Raw channel value [0-39] per channel * @param darken [0-39] per channel - * @return darkened data [0-9] per channel (darken-int divided by 39) + * @return darkened data [0-39] per channel */ - private static float darkenFloat(char data, int darken) { - return (darken(data, darken) / CHANNEL_MAX_FLOAT); + private static char darkenColoured(char data, char darken) { + if (darken < 0 || darken >= COLOUR_DOMAIN_SIZE) { throw new IllegalArgumentException("darken: out of " + + "range"); } + + float r = clampZero(getR(data) - getR(darken)); + float g = clampZero(getG(data) - getG(darken)); + float b = clampZero(getB(data) - getB(darken)); + + return constructRGBFromFloat(r, g, b); } /** - * - * @param data Raw channel value [0-39] per channel - * @param darken [0-39] per channel - * @return darkened data [0-39] per channel + * Darken each channel by 'darken' argument + * @param data [0-39] per channel + * @param darken [0-1] + * @return */ - private static char darken(char data, int darken) { + private static char darkenUniformFloat(char data, float darken) { + if (darken < 0 || darken > 1f) { throw new IllegalArgumentException("darken: out of " + + "range"); } + + float r = clampZero(getR(data) - darken); + float g = clampZero(getG(data) - darken); + float b = clampZero(getB(data) - darken); + + return constructRGBFromFloat(r, g, b); + } + + /** + * Darken each channel by 'darken' argument + * @param data [0-39] per channel + * @param darken [0-39] + * @return + */ + private static char darkenUniformInt(char data, int darken) { if (darken < 0 || darken > CHANNEL_MAX) { throw new IllegalArgumentException("darken: out of " + "range"); } @@ -384,6 +379,46 @@ public class LightmapRenderer { return constructRGBFromInt(r, g, b); } + + /** + * + * @param data Raw channel value [0-39] per channel + * @param brighten [0-39] per channel + * @return brightened data [0-39] per channel + */ + private static char brightenColoured(char data, char brighten) { + if (brighten < 0 || brighten >= COLOUR_DOMAIN_SIZE) { throw new IllegalArgumentException("brighten: out of " + + "range"); } + + float r = clampFloat(getR(data) + getR(brighten)); + float g = clampFloat(getG(data) + getG(brighten)); + float b = clampFloat(getB(data) + getB(brighten)); + + return constructRGBFromFloat(r, g, b); + } + + /** + * + * @param rgb + * @param rgb2 + * @return + */ + private static char additiveBlend(char rgb, char rgb2) { + int r1 = getRawR(rgb); int r2 = getRawR(rgb2); int newR = (r1 > r2) ? r1 : r2; + int g1 = getRawG(rgb); int g2 = getRawG(rgb2); int newG = (g1 > g2) ? g1 : g2; + int b1 = getRawB(rgb); int b2 = getRawB(rgb2); int newB = (b1 > b2) ? b1 : b2; + + return constructRGBFromInt(newR, newG, newB); + } + + private static char screenBlend(char rgb, char rgb2) { + float r1 = getR(rgb); float r2 = getR(rgb2); float newR = 1 - (1 - r1) * (1 - r2); + float g1 = getG(rgb); float g2 = getG(rgb2); float newG = 1 - (1 - g1) * (1 - g2); + float b1 = getB(rgb); float b2 = getB(rgb2); float newB = 1 - (1 - b1) * (1 - b2); + + return constructRGBFromFloat(newR, newG, newB); + } + public static int getRawR(char RGB) { return RGB / MUL_2; } @@ -500,6 +535,10 @@ public class LightmapRenderer { return (i < 0) ? 0 : (i > CHANNEL_MAX) ? CHANNEL_MAX : i; } + private static float clampFloat(float i) { + return (i < 0) ? 0 : (i > 1) ? 1 : i; + } + public static char[][] getStaticLightMap() { return staticLightMap; } diff --git a/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java b/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java index 73516a2da..29ee03631 100644 --- a/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java +++ b/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java @@ -392,8 +392,13 @@ public class MapCamera { if (ty < 0) ty = 0; else if (ty >= map.width) ty = map.width; - if (!isOpaque(map.getTileFromTerrain(tx, ty))) { - return true; + try { + if (!isOpaque(map.getTileFromTerrain(tx, ty))) { + return true; + } + } + catch (ArrayIndexOutOfBoundsException e) { + return false; } } return false; diff --git a/src/com/Torvald/Terrarum/TileProperties/TileProp.java b/src/com/Torvald/Terrarum/TileProperties/TileProp.java index 9ab513cf1..14207596b 100644 --- a/src/com/Torvald/Terrarum/TileProperties/TileProp.java +++ b/src/com/Torvald/Terrarum/TileProperties/TileProp.java @@ -8,7 +8,7 @@ public class TileProp { private int id; private String name; - private int opacity; + private char opacity; private int strength; @@ -42,11 +42,11 @@ public class TileProp { this.name = name; } - public int getOpacity() { + public char getOpacity() { return opacity; } - void setOpacity(int opacity) { + void setOpacity(char opacity) { this.opacity = opacity; } diff --git a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java index 78781391d..ea8c68e1b 100644 --- a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java +++ b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java @@ -60,7 +60,7 @@ public class TilePropCodex { prop.setId(intVal(record, "id")); - prop.setOpacity(intVal(record, "opacity")); + prop.setOpacity((char) intVal(record, "opacity")); prop.setStrength(intVal(record, "strength")); prop.setLuminosity((char) intVal(record, "lumcolor")); prop.setDrop(intVal(record, "drop")); @@ -71,7 +71,7 @@ public class TilePropCodex { prop.setWallable(boolVal(record, "wall")); prop.setFallable(boolVal(record, "fall")); - if (prop.isFluid()) prop.setOpacity(intVal(record, "opacity")); + if (prop.isFluid()) prop.setViscocity(intVal(record, "opacity")); System.out.print(prop.getId()); System.out.println("\t" + prop.getName()); diff --git a/src/com/Torvald/Terrarum/TileProperties/propdata.csv b/src/com/Torvald/Terrarum/TileProperties/propdata.csv index e067dd1dd..d9606412b 100644 --- a/src/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/src/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -1,38 +1,38 @@ "id";"name" ;"opacity";"strength";"fluid";"viscosity";"solid";"wall";"lumcolor";"drop";"fall";"friction" -# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky - "0";"TILE_AIR" ; "1"; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "0";"16" - "1";"TILE_STONE" ; "5"; "25"; "0"; "N/A"; "1"; "1"; "0"; "1"; "0";"16" - "2";"TILE_DIRT" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" - "3";"TILE_GRASS" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" - "4";"TILE_PLANK_NORMAL" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "4"; "0";"16" - "5";"TILE_PLANK_EBONY" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "5"; "0";"16" - "6";"TILE_PLANK_BIRCH" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "6"; "0";"16" - "7";"TILE_PLANK_BLOODROSE" ; "5"; "12"; "0"; "N/A"; "1"; "1"; "0"; "7"; "0";"16" - "8";"TILE_TRUNK_NORMAL" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "8"; "0";"16" - "9";"TILE_TRUNK_EBONY" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "9"; "0";"16" - "10";"TILE_TRUNK_BIRCH" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "10"; "0";"16" - "11";"TILE_TRUNK_BLOODROSE" ; "5"; "12"; "0"; "N/A"; "1"; "0"; "0"; "11"; "0";"16" - "12";"TILE_STONE_QUARRIED" ; "5"; "25"; "0"; "N/A"; "1"; "1"; "0"; "12"; "0";"16" - "13";"TILE_SAND" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "13"; "1";"16" - "14";"TILE_GRAVEL" ; "5"; "6"; "0"; "N/A"; "1"; "0"; "0"; "14"; "1";"16" +# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky | Opacity/Lumcolor: 40-step RGB + "0";"TILE_AIR" ; "1641"; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "0";"16" + "1";"TILE_STONE" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "0"; "1"; "0";"16" + "2";"TILE_DIRT" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "3";"TILE_GRASS" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "4";"TILE_PLANK_NORMAL" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "4"; "0";"16" + "5";"TILE_PLANK_EBONY" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "5"; "0";"16" + "6";"TILE_PLANK_BIRCH" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "6"; "0";"16" + "7";"TILE_PLANK_BLOODROSE" ; "8205"; "12"; "0"; "N/A"; "1"; "1"; "0"; "7"; "0";"16" + "8";"TILE_TRUNK_NORMAL" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "8"; "0";"16" + "9";"TILE_TRUNK_EBONY" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "9"; "0";"16" + "10";"TILE_TRUNK_BIRCH" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "10"; "0";"16" + "11";"TILE_TRUNK_BLOODROSE" ; "8205"; "12"; "0"; "N/A"; "1"; "0"; "0"; "11"; "0";"16" + "12";"TILE_STONE_QUARRIED" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "0"; "12"; "0";"16" + "13";"TILE_SAND" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "13"; "1";"16" + "14";"TILE_GRAVEL" ; "8205"; "6"; "0"; "N/A"; "1"; "0"; "0"; "14"; "1";"16" - "15";"TILE_ORE_MALACHITE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "15"; "0";"16" - "16";"TILE_ORE_HEMATITE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "16"; "0";"16" - "17";"TILE_ORE_NATURAL_GOLD" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "17"; "0";"16" - "18";"TILE_ORE_NATURAL_SILVER" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "18"; "0";"16" - "19";"TILE_ORE_RUTILE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "19"; "0";"16" - "20";"TILE_ORE_AURICHALCUMITE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "20"; "0";"16" - "21";"TILE_GEM_RUBY" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "21"; "0";"16" - "22";"TILE_GEM_EMERALD" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "22"; "0";"16" - "23";"TILE_GEM_SAPPHIRE" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "23"; "0";"16" - "24";"TILE_GEM_TOPAZ" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "24"; "0";"16" - "25";"TILE_GEM_DIAMOND" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "25"; "0";"16" - "26";"TILE_GEM_AMETHYST" ; "5"; "25"; "0"; "N/A"; "1"; "0"; "0"; "26"; "0";"16" + "15";"TILE_ORE_MALACHITE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "15"; "0";"16" + "16";"TILE_ORE_HEMATITE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "16"; "0";"16" + "17";"TILE_ORE_NATURAL_GOLD" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "17"; "0";"16" + "18";"TILE_ORE_NATURAL_SILVER" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "18"; "0";"16" + "19";"TILE_ORE_RUTILE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "19"; "0";"16" + "20";"TILE_ORE_AURICHALCUMITE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "20"; "0";"16" + "21";"TILE_GEM_RUBY" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "21"; "0";"16" + "22";"TILE_GEM_EMERALD" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "22"; "0";"16" + "23";"TILE_GEM_SAPPHIRE" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "23"; "0";"16" + "24";"TILE_GEM_TOPAZ" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "24"; "0";"16" + "25";"TILE_GEM_DIAMOND" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "25"; "0";"16" + "26";"TILE_GEM_AMETHYST" ; "8205"; "25"; "0"; "N/A"; "1"; "0"; "0"; "26"; "0";"16" - "27";"TILE_SNOW" ; "5"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" - "28";"TILE_ICE_FRAGILE" ; "2"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" - "29";"TILE_ICE_NATURAL" ; "4"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" - "30";"TILE_ICE_CLEAR_MAGICAL" ; "5"; "25"; "0"; "N/A"; "1"; "1"; "4967"; "30"; "0"; "8" + "27";"TILE_SNOW" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" + "28";"TILE_ICE_FRAGILE" ; "3282"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" + "29";"TILE_ICE_NATURAL" ; "6564"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" + "30";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "4967"; "30"; "0"; "8" # see scandinavian name set female of this tile id! "31";"TILE_PLATFORM_STONE" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16" "32";"TILE_PLATFORM_WOODEN" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16" @@ -42,5 +42,5 @@ "36";"TILE_TORCH" ; "0"; "0"; "0"; "N/A"; "0"; "0";"63680"; "36"; "0";"16" -"239";"TILE_WATER" ; "2"; "100"; "1"; "2"; "0"; "0";"59159"; "239"; "0";"16" -"255";"TILE_LAVA" ; "0"; "100"; "1"; "2"; "0"; "0";"48320"; "239"; "0";"16" +"239";"TILE_WATER" ; "6522"; "100"; "1"; "2"; "0"; "0"; "0"; "239"; "0";"16" +"255";"TILE_LAVA" ; "62358"; "100"; "1"; "2"; "0"; "0";"48320"; "239"; "0";"16" diff --git a/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java b/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java index a66d72a08..654c9aea8 100644 --- a/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java +++ b/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java @@ -69,12 +69,7 @@ public class BasicDebugInfoWindow implements UICanvas { printLine(g, 4, "veloY : " + String.valueOf(playerDbg.veloY())); printLine(g, 5, "grounded : " + String.valueOf(playerDbg.grounded())); printLine(g, 6, "noClip : " + String.valueOf(playerDbg.noClip())); - printLine(g, 7 - , Lang.get("TERM_PHYS_MASS") - + " : " - + String.valueOf(playerDbg.mass()) - + " [kg]" - ); + printLine(g, 7, "mass : " + String.valueOf(playerDbg.mass()) + " [kg]"); String lightVal; try {