From dbce32086f88e9521daf84d55f7ee147944873e3 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Wed, 17 Feb 2016 01:34:35 +0900 Subject: [PATCH] global light field in GameMap, CSV tile prop importer, coloured light attenuation (blue lighting for sea floor!) using both 'opacity' and 'lumcolor' Former-commit-id: c592f661c1dae3c9dc9c9130a06f77a8f082ae79 Former-commit-id: 0df9489aa02393f25eb4b0e8262bc2d9a54dd2e4 --- .../com/Torvald/CSVFetcher.class | Bin 0 -> 3153 bytes .../com/Torvald/JsonFetcher.class | Bin 0 -> 2247 bytes .../com/Torvald/JsonGetter.class | Bin 2256 -> 0 bytes .../Terrarum/Actors/ActorWithBody.class | Bin 13799 -> 13799 bytes .../Actors/CreatureBuildFactory.class | Bin 4530 -> 4531 bytes .../Faction/FactionRelatorFactory.class | Bin 2889 -> 2890 bytes .../Terrarum/ConsoleCommand/ExportMap.class | Bin 5621 -> 5648 bytes .../Terrarum/ConsoleCommand/GetAV.class | Bin 2945 -> 2945 bytes .../com/Torvald/Terrarum/Game.class | Bin 11999 -> 12175 bytes .../Torvald/Terrarum/GameMap/GameMap.class | Bin 2982 -> 3890 bytes .../Torvald/Terrarum/GameMap/MapLayer.class | Bin 2067 -> 2067 bytes .../Terrarum/GameMap/PairedMapLayer$1.class | Bin 0 -> 1310 bytes .../Terrarum/GameMap/PairedMapLayer.class | Bin 0 -> 1878 bytes .../Torvald/Terrarum/GameMap/WorldTime.class | Bin 0 -> 2579 bytes .../com/Torvald/Terrarum/MECHNANICS | 15 +- .../Terrarum/MapDrawer/LightmapLantern.class | Bin 699 -> 699 bytes .../Terrarum/MapDrawer/LightmapRenderer.class | Bin 8671 -> 10576 bytes .../Terrarum/MapGenerator/MapGenerator.class | Bin 14752 -> 14752 bytes .../Terrarum/TileProperties/TileProp.class | Bin 0 -> 2693 bytes .../TileProperties/TilePropCodex.class | Bin 0 -> 4205 bytes .../Terrarum/TileProperties/propdata.csv | 63 +++++-- .../com/Torvald/Terrarum/WorldTime.class | Bin 2390 -> 0 bytes res/graphics/terrain/terrain.png | Bin 91662 -> 98682 bytes src/com/Torvald/CSVFetcher.java | 40 +++++ .../{JsonGetter.java => JsonFetcher.java} | 17 +- .../Terrarum/Actors/ActorWithBody.java | 8 +- .../Terrarum/Actors/CreatureBuildFactory.java | 7 +- .../Actors/Faction/FactionRelatorFactory.java | 6 +- .../Terrarum/ConsoleCommand/ExportMap.java | 11 +- src/com/Torvald/Terrarum/Game.java | 5 +- src/com/Torvald/Terrarum/GameMap/GameMap.java | 48 ++++- .../Torvald/Terrarum/GameMap/MapLayer.java | 1 - .../Terrarum/GameMap/PairedMapLayer.java | 122 +++++++++++++ .../Terrarum/{ => GameMap}/WorldTime.java | 45 ++--- src/com/Torvald/Terrarum/MECHNANICS | 15 +- .../Terrarum/MapDrawer/LightmapRenderer.java | 164 ++++++++++++------ .../Terrarum/MapGenerator/MapGenerator.java | 10 +- .../Terrarum/TileProperties/TileProp.java | 132 ++++++++++++++ .../TileProperties/TilePropCodex.java | 81 +++++++++ .../Terrarum/TileProperties/propdata.csv | 63 +++++-- 40 files changed, 691 insertions(+), 162 deletions(-) create mode 100644 out/production/Terrarum_renewed/com/Torvald/CSVFetcher.class create mode 100644 out/production/Terrarum_renewed/com/Torvald/JsonFetcher.class delete mode 100644 out/production/Terrarum_renewed/com/Torvald/JsonGetter.class create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/PairedMapLayer$1.class create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/PairedMapLayer.class create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/WorldTime.class create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TileProp.class create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class delete mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/WorldTime.class create mode 100644 src/com/Torvald/CSVFetcher.java rename src/com/Torvald/{JsonGetter.java => JsonFetcher.java} (56%) create mode 100644 src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java rename src/com/Torvald/Terrarum/{ => GameMap}/WorldTime.java (72%) create mode 100644 src/com/Torvald/Terrarum/TileProperties/TileProp.java create mode 100644 src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java diff --git a/out/production/Terrarum_renewed/com/Torvald/CSVFetcher.class b/out/production/Terrarum_renewed/com/Torvald/CSVFetcher.class new file mode 100644 index 0000000000000000000000000000000000000000..2f366bbb5789ff379633b59fb6d4673139f1cf12 GIT binary patch literal 3153 zcma)8c~=ux9KAz;fnm@H$f6=t(E=`Gt<~C~6#@t~fHjC(yA8<%MkX`qWP;Lt-}im* zSE%-!NcFTIpr@ayr}xbykU&K8$9pfo_ujp~{mnoB-T529G5n^W8)p=BVX&UVkb+J` z>oJTGg~OXjM5HeeAbsdt#0|r|B7;d>XY#J9bv%zR)5#!wZcRTrd)jn-nAx!s}^U%gtNL z6iqy~=Ip=*gaJq7G%1yl8wn%hnN&vx4XKZtbGGi~T)J{>6Q0;4O|$Rbz+;2iVz{?g zA`rpN_)gtr>FL>|-c#Xj&k+d{BU(3*unKvh#GRa*Fhoq47puWNEFz;~FM3owijyiH zz#bJQuE|(XVIi%;hC^qsji8DQUQpq}QIUnGA_vAKG^q`$Sj2S|H{i)wQt={QQt>ig zQSmBzWW1*0b-W?tO%-q9Z5i*Vco*-HV90U2tmo>P3B#LrlG&}bct4B}IDHrvihYES zWqhLIQ+y_&ZLK;(InzoSu8Pm`1&vq4;!6pw>(7ab;YQ_LFEey%_L`BPQO!Px>1g9q zEBQd@dQLG?Exm;jC@D>5Pxrl(dem{#I-%v^kW##qq84<~xBt}o6_!L+REGLp`COQP3MiAEtFHY_u3 zdV*kIZ*)^|+r+&nOW&})3Ef=~cee=HWX`gRjy_(gBsODnvp@<8J8oojSN9y^ZxEnj zXR6`hEKBBc1?Kw`Z)EvOUsL7`FHnu{YbvHvX*aD&SdLJl!%sw;nV4c7YoeIrOIgoI z^P)f*Hd1=dVp{DgqEtA`3~0X>4il0vLDP;@u()Ebl!J-OqzG!JjGju?upNmc(F)ir z`~I!ccZ8k5(9`0X;}lWw6~2~G))9m1jP&ts?ZP*F0`-LG)e^dj#``WzO7=+Dz41A|gI)X_1Xx*I@8PP3Yrc~l_wk>`SrXFz+mLQ@QHA{+YklEX zJjk^g96&Gn_^%%QIDn9U`6lNOWvBX=QFRNUJgRS@CXd?CUy$>t%cDLV$wLY6&7+}7 z&7(1_cJOxsgnZI|>Ik%;8m(yLr(_%2sdESEcHl5&NBKp00=t<& z-M(Vo0XYuh5bqsD15XKiPEh?Lc!;JPrCg{VNFJu-7$wz|Jc8p~RdGiV9}HXxZ%h$U zc%x$(P5prp&C6)HgYCedXsyDkhnffjUTUB#o2h;~Ra*5{2Ojg4TA>RoBJT+@!Uq<)09==as0?x;qLeN89&g;SNLDJ>M5SNil_0+|IP(k>i_@% literal 0 HcmV?d00001 diff --git a/out/production/Terrarum_renewed/com/Torvald/JsonFetcher.class b/out/production/Terrarum_renewed/com/Torvald/JsonFetcher.class new file mode 100644 index 0000000000000000000000000000000000000000..dd802287231dc8036e42f3577187e72dca63ae48 GIT binary patch literal 2247 zcma)7>sA|87~Ka*CJa-FK+9ExUX)Piv|6nSR)K=0hJu11*4tq+2?LXvIGM2It-P#7 zv0eHAE}zNeJ~NXG5W38dIk)e!_x{fL^7p?l{sM3xKk4Yltd2h1(O~N6#B4VgcXecO zPc7fk@hol9t#ZAX(%uY)w-}(+fh<7RwBHadCN`Y)i?cGVA;xDAlstR9Yx8&H4GYf z8&d)!O3d?$#0(4!;HrUDJTdS&@*36*JjJ?(4Fg}`O9no#kA_VHTlh-Dwt*ddZD1GQ z&~DN9!)h4F%9ux{d~$c@ycI~q5srxh9PRrz&x4dMB3sqH% zI>vEAXy?+n7sC+=k1UF;q^Zied0Y+cGM|CYaF6VwthpiYSDj27TLK%pEDrA|!^GEp zt_|a77bQwmYa~+6OcCqd*i}#oGQ|t2Ml*@sIFG!NP_@u;OpF*PcnJmKde>Qq*gu84k8tlvj4PlOX9_^?6LF;EW*v$aqeOzTXxPkZXH+b zR`dUV7^i%-Z|kc|A}>kT-E=~mWlzgW#r9a)nO0u$n`QfMN*8Y>Wz;}nZZ!|jAU>;u z!1$}}Fv&l}e*V+(iKzz2Sr_N*nEVcLWpWf8Q`65Oe&wVC!~CYB%_|t;+=vY@iZQOb z@dn0erJRc#J2{R`pQ7U>I(MI=D}Vbpq)w1Nfp&t-+RQIJk7M>RH3+ARKny||AqW+J zB94JKIaArP1bv-3N9cD0H~GEAeFgh1l3<_bj>^76KLvgA6y4LEe?mV&&nXP1-#x*V zofmiw_yfHiXwr%yjG>2QMoDCXRGJhgk&7TS(`7K-Q0fNLs$b7bWJ&b(-;q**`4`S_ itXD4)-R7zTGdSR=^K>5`9NK)$wNmmSZ9c)LSojZA@>fLw literal 0 HcmV?d00001 diff --git a/out/production/Terrarum_renewed/com/Torvald/JsonGetter.class b/out/production/Terrarum_renewed/com/Torvald/JsonGetter.class deleted file mode 100644 index 5eb8b8a14077aee8f7c2f3409427b1ee296e13a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2256 zcma)7X;<4u6urY@VIh{X1d~ugv$Q}KCEZ)ov_K#sHA@SnP19|V$3`Gat}JuPzv^-h zq2aVYpr^m7r*|ZQ4VbiFG~0Xk-FN4`(O>_(_!Gd}_|e1=Y!idHXW+hxcGy`i-qf?V zOd7mn;$6IF;C&Mx;6oF6%nZrv?X zWr2ahj@*;BC;hUW?BxYAGp_GO4+PpLr#1yT=7XXV=qtFsTB%pIRJb9xJnjq>0!MnA zGIaGi-Ry|A-I_qI-~<(WBMA4TSG1on!}r4A%{4dH5t}aC@|L2H94iLpN=UbKxgPRUYX+VO z3>`Dpac67C;tjWAuLY~hXj>p#i^ADzRry5$K}ou194{5tTo3A@qcj|aZK!is--d+| zakO$%S*E1Jv& zK}3eKx~!t@pjhk6;Aua;=J2c^lNP?gw+6nm@I8JI7&!|#S9iUl3N1)%S#ZD{FSWk$ zQ*0861qNe0H?WshPqY^3tm=ytxZg_HmUp}0sfzM-U0i9URC-K}%PN|!X`zo9j8FbY zp^e5AeR3@EnrwYn>-)7xRd|&q;U21zta}lQiAWdOl34DdGZrLa*5X>px5)TetKK*b zrkxogQS%g4lI&!)DUNoEeR3XqrJU=L>)9*=B`f*?;E*?=P!c#*-Dzt~ZR$sf??y&C zx(nc8yCu5p*eVk##S1|6E0mFGE8S@!RhmrG zGnUpT#p#LyCKkVTL&s#B4D$xIEx4#ynARP4Emk--aQ(etSJ?$w*(yqQi7ZJc3c`JX z?n+~2ARxO!5bV~ge4dtkUxo9Ytktyke>am&@sfUfEd8RVYBv(c{Q0|X+BxO8v0qiq z=KudN3Hfs0W+hYPdFgrUZltIb6TEp&pH}$@jKACtud$GZ_|IZ9>4%K7PR{xA@jJ?u z%~9yx>E{r?aMFg${AS|K9$ewvN(?ZDSGme!99Lkv-3&O$9CFN{k=H1u;?T`uSfK>h zVHO!qhshnGm)Z5jx%E#Up#K1`{D#g(6qA-9`4Q4@pyzNaM(@Jy6Unc~mO%Frvcw!n oVfYs!Kq7n}v%AAp8}7p6Xp+PZeC(3cM_lVGc|eo>R&;S4c 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 263b9ac9876f538ec89268b9184097975f8ba959..4db77b891068f651485f5c1418ac3a8ab8306449 100644 GIT binary patch delta 88 zcmaE!{XBbvp@^sxLnlKM10zE-0|NsakZu9ePLth4`VE~JW-`n|mtmNVMQjex1fZ_X IY@!bp04&WAbpQYW delta 88 zcmaE!{XBbvp@=9GLnlKM10zE-0|NsakZu9eOq1P2`VE;FW-`n|mtmNVMQjex1fZ_X IY@!bp0PemH^#A|> diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class index 69ebefc8aa698198bcf4898ce8a3125cb32edf2b..f5307c67907d86cf853c640cbd3fdb35a4ac065a 100644 GIT binary patch delta 239 zcmWNJKT85}9EYEy!67dbG%Gq9%+U@d`iBxU6oeUt)ZlO(XVP%zfkmW*CV~-;KWJ%e zY)KD--arHm4Gzvuy$!$X^Ld`nFc~C2I-!Mx<9lYwuix2j#XP$4YX?`i&UNq-`kB!p zfi=6Vv&teS21QbMq`4$gU}X- awB@fOb%QEh)t>*;dty9E*AwGex{E2|yEozh delta 238 zcmdn2yh(XOBfF?ra(=FUNPbaSVor*_S8;xxdumC^=IQJwm>GpOCvZzK+KMxXGe|JV zGe|S&Gbk|lF=#O4G8iyaFqkkjGgvZoGgvW9X0T?M&0xc@n8B7|HG@6FP6h{tV+>9V z4;frHZ|4zVl=WwjWC&nTVF&^$3SmfO2xZ7&2xq8b@MmaXh@AX__p)FTP(?COMGAuv zLlT1pL)zpsd>eW5fuaQrdJOqM%Zet)2>MOF!QU-g0~D=gkYT6?iZ(L1Gc*CsZDB}Y cs9{KBXq((1aGtjlsG>9RL6T diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Faction/FactionRelatorFactory.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Faction/FactionRelatorFactory.class index 79af8dc574923d66369b7eb5c363b1036ffb6ad5..09c04a5f112f368d924699146df77fca6d704746 100644 GIT binary patch delta 149 zcmX>pc1mo6AQOuvBZKc`J2t(^&P>6|7K{vhIf=PRDTyjcrI|S?D(2_{W}A012{Va_ zC+FwthvXNPCFZ2)dll#BxuupQXKa4RBFndy&J0Gm$y!_vjM9^{fuzLbH9%5y@>{ML01b90hyVZp delta 147 zcmX>lc2aDEAQOu*BZKc`dp5nv&P>6|MvM%6If=PRDTyjcrI|S?Du(C+2Ag*>2{Va` zCFkerhvXNPCFZ2)dll#Bxu=$tY<|Qd%fiSziF2i-5Q8{_FoOnz7=smqB!drw3_~1) jJVOD4^5jFD8H@^(wYeM^WhdtVNvX+efu#84cU&<5g7YRg diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/ExportMap.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/ExportMap.class index f415a8c42167d2e8cc6fcb10465544fc0538c7c8..eeb3fa38df4771418f0fac844138717bf3309c3d 100644 GIT binary patch delta 269 zcmeyWJwa!~Uq(wwMh2FkP^U;{1_lOEMh13QU)LZ<9~Tf;jFEvO*fAi$!!yVg#205| zU=8sPaEt(?gV1gU;YdN=yOSG5MAbOYZD$bK z#$X$+wS|FIKolm+Er2X6HaSs5Ok5l)DIkq3Co#ECw`N) delta 242 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 delta 5276 zcma)A33yc175>ki$-K#%moPI)kdOpMNR(`ZErIZg+^F1(nd(iZRE-* zOGfKVBqU=jskISF@sAD4QMQbeqjhC`P>u=81Y0IboywRLjLWe>nXK@XpiI?ynkCbN za-5Br%usx$C9^DjfVkhaaz>Hs(o-C2NDSE-0;vt+%l= zE@!H)Hd{96&@LM_f@ehmIZuuGb`&D#MPZ1_Ryp66@5py;xj-(o}Pea%)&sp+(2)D}%YD1es`*rzeA$d{SEIDAw!OkMz89w=W z=S6|%1EB*r=-@uwFUWUa^W_&ico2IWBz1Ti&p3Eihv)H(pvIM)0(Zn9zxzr~(7i7w z?0X3Z-N$mOe7}%ix*z709{vD+EXdukwzai=bxZTA)$PseR$1~ZM_!g+JMtU(ty`O0 z8v30hzn51Wyny}g%G|PnKf``Ozu`4)O&e-fv}|l!IQ*=(b_Xw#+?rS5CUZxJ4#*!I zJdP&>F?Ul|%&Wb3x~STN3tp6WB29A z`1s%C?+)J4h`%YHSn{bQ|8V4=@|h$5l79=rQy91n?QP4~*EhAVZe6*dUqJp7md`nT z5tjcthR4A%#`yXLjGw=(unAbkqBIk8&dCmZn zZwegTje8u^U!i*yI?N1k?~0C(7n*^VDRN9P9WaHaL||gWm^w2^5GaqmzU7*jVuJ<# z`dCd&AoY%knZq43gxQfi$#=|9V01k4?2*-?cx91)kgQ4jyc+l7ZkL%t*U7`d(Enrn%4DA>p0Dr zGjgP3jv=?1po|k0sxy-ub1d$6%w!3@aAEU?<`peXj+v^COp{L> zGo2|l$8~Pc&-MFen3?W@{)YwFaCe$n?u!HNbatBAiX1N(In3Sa>+jy@6nE|}Tp5i-Ft(!yR>AmZ>Onux0Vd!JlDOaWI^Y&K}}M6f@9{HlN>oh${Z=xVTcTM z-ohwH^Dliyh zQHrC8jYAD-zu*psyub+j62Id7GJk%q{F=Yt;I}G~_AY@1UYrtlcMWNeS9GJQF%m;0 z$T(E*!SIR)F+5t6zz7AB7@3bzNsLLNwi{y`yKvMZa*QKzbOPh|;27@8;_sLQCM@d4 z#75=nLLK2r+;pt&p4`}tDMY4rVcH%{=Z@(rHEgEqXDYsw=c3?TLn$uY@P0aQx=BOEOV-5a_77?r!K2chw z80+OooGGI@kHto*!#Oe^n`Al8m9^-Qjo2)k5%&^2CY8E$f|*484!_r=6M6-IVDFrd z;dqtR>LdRk{1LCQ1bP?3>v)6vSqLl|L0s#_OW*?pQqF5-1LyZDsI0U;Ve@?}&D{wf zB?B`my0EaaB#A{jEUrwTF^Q8I)2zyphZqJPvQrOXOAcWHrJY7Bj#Dd>SenGLp5RyT z6$o5J>6ftBFGVgcX9Bjd^sm53+=xlInF+WJ$6>o?V@1l2LovY&hS-YMopJoy0lq7c%_wP;bs*sqJj|B%C>vG$ak~37)A#y?Za)F;+<+6qs{)WHPrW_2zCtf)g#!-w<32K|>wVyV1CO7#g zDo|9M#N|Elw7m*=i=y84RK-%eGO7aj%u}Ve)4%XKTDqOZ1(sO{tbqwTB8;$NqYZ>_Yp2HK&=$)aybT-jIGCyeu_o~~3;S{ctQ z38Wpf#7aA6Nzijl^c|O05dX4VG$~P($J+jI_stezrTgmQF&enHBkG=eI=0%)~Al)sJF#nYi@ie81qbyS# zWnOm@7HUa6-4cpmOM&!fxf%UfNZT=m)~O5ONa*z>Zi@H<5uY!Kn|oB|>OrC10VzN~ z@@tqQnH@tB`Z$`$zTR6M%DbkLzF`KjgYpfx6Ip9GH+LzcYH-=oKLf!n0<{r{G3gv9#b*znZxM!1`D;;TQa|Vjbmh{@4nYABfp!;OY{{UpS@L~V} diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/GameMap.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/GameMap.class index 3370e940eb60feb1699b5e5e14bedff21522b9e5..418cc41710d582e1c53d5da73b06a47f576d0896 100644 GIT binary patch literal 3890 zcma)9{c{^v6+LT9mbF=b#!lKw0k=t0Nlh#2KwIJ@#UF7hP?He5PEDY&wzl#ntCf&e zb^;|0w1ol%+Va&T6v___0}~jSiDHJ#z^@F$pTrQ(eY=)6^484{dT;OBd+s~;zVq(d z|Nh_K{{i6B_>GPOs3q|LzAi&uhK3AY0!M?=yvFI)9;b<-*37p;2TtT!w9lV-(w!K~%^D~j`! z21B8ghwZk5*mX<8h$lGPoii(D*_y4Exc0=(fzOykmO|m<8+OTC)1VbJ^sQNTdClWP zqh@ZnFKs<6YZzXuHXGKQ)v(L1>Dg5>*;Bk=uABL$XFK_#?OwD>MZ4jVadJU9HHG4H zkxoZgBmZLt^p7*|XDyQ(|i3S~z<` zo_jRxD%Z_*+Y7jA^RnVpS4^kqr;~L_bLLs}v zJ^iu|u>#hqW@W{yFPbY3gN_!ftERJL)@`wa#hABdH#8jFdBZ>j+)h7nY1OJpy&DO< zt6{KVc_+h(#WM54LMv++DqCJ4lWEH0vT)3vKR-hW@r}qXSXL%w5SXKU>nmu^^vqyU zf++>Ig_q4_cV-&41hm+qA1PwjFD}Uaj~$sZ*hnwM+c5 z0+QQe;L*Ea`y>*K>Nn`m38SS1!>&;}TN3|T5B$tU(M;u;`Wt7m=sck7yL+<0M6;`djP;J&% zt$9|0Y6#@@q+DMEpTm0w9>*aAPss4340#;V@aTPYC0&I{k`< zaVl{emY{yGy5&4ZS#~lDHWcLc)$9@;=GXH8`}GiJL_B<&5hbaaI#M&m!I_f6AvIH_ zYNk-tOs#V6!Kd&Py(ZQ3VLZq`3l7o#jIy7m{Y=PymiA{u_7UPKCgn>Vs+kJoJjNIl zIN#6E`VZoe@5@SV6Iw3SLQgK;LT@e=cUp+$M)0o|;<-EMTTZ1nk!YbmY$U^mPGgsH zGg=tPjSjXj#HHcoO^mcK`d7tamg6K0j)xIrMoH!~h^H~mY|_jiizBqAFiY-dcqf*~ z*(BdNA|`yMIDvUu@Kv2Fq{@{kJgo7sl-&TSn&_&{LQi>bXCNq~TN~J{f_3 zF%o||60b+#Uyj6|iNp`w!gx3TawPtXI2+`j5Au&o{@vhO2pn%GzYqydc7wf0@M0ub z?*?Cr1iwi6_!0=y9_R+Y8VP0>4Zx?UJGmpnIVLTKmYz%<-o&1pTnnH5RTalq>2O;` z!&p}Ll6ZVcsZ^6T9Ti&y^%1e(xbN6({86z*EFTg3t^1Dsm3HjsgPQ0p$v`T78+*H} z@pdSx-mZq;u7=*O#>@C>!1zPn-WaPoor--3J(u2h8xP)0T@M}~x|xb^EvIhYL3;TP z_OZKsV)T=@F_HQk9_Dl#k8EQ9KN+M~UCU7w@Eu;scd-}mVLv~waz%6gMr~r#_*!sG z(~6=rjA=!&mkkKgCJlWT&zs-mfbBXh(ZzUb1Xr(IgTeXkm1Dn0JasHBp{Vo!G0T%;sr>pX-G1T2v|Gho_~rY J;;LM${|7LG@x=fD literal 2982 zcma)8TT@$A6#jO|g@gkI+R{s?(t8qZqtr_+Ej3WUXi6&}l-AoJIfO$`&WR`IKyS7k z9mfZMfj)J7@r7}8rWD7{=&R#zavZz=DaCRO*JH2}*omv{ zsL0h$z(G~+zDS@KZVWYnxTW7T+&SH{1dbPqP9;0zxGTC<%FYdT$f{ZLmIOpzAi89jV>=)an;Dy$%H=1eDx_(CYE14!0v%;nUopLas~8tZPWiTH zR*by8V%E$B%gEWbQ#W9R4=PGE-_9}#y?8y#_=aoiR(8_yCVk5ymFQX1Hoak1FO|=y zXBlwRDKW_%Oy8LFD+`7@qZ3%5x8M|YYgTtnsRxH)Z^>k&W6w`M=p(}=#%>gisw{Rb z2KJzfotS9ODx4aZEJT?U%7zy-I>&*yDLJOET^r#L@QWOr;8>{~fk2ghYFrvql1`pcIFsIE(>-qc3z7CBT~+4xnE{Qi_+Pcnz;>Si!1>DNG9- zc`j7IM?(R54ev>D5lrilx`UQ(m$P}xGRivpT=px5?KOr+V9%D(wC9?3dBiuZlHm&M zGV4wQvXld+UG=>)%ha+3F zOkSL6DVw6Ryz;7)bWdj+)J#V8YSpky0w+@S_dz94=Qfmn>L{SgE78QDZp}A<&!BHy zS`^rw%0KN(r*_ZTG~UJG-bx|}C_SG(P0zB~U3~9>PK0FNd3DFKj5;)7> zISf-u=EM9F;u_5yUPs4P?1VZUW?ttNeqY_Hfgk0$tck$8$OTw~N(YmBi1vrjej#o> z6InH2LLq5t-yR?djI{KRxA4E*(tot2f1-u|d`tfe7z_Ak1O5@oe>?ewCg(_l{CG>} z_;%;Tmd+C`ofF%gms>jX6$)rivh}k0-5K(hb?YBYp4vd?+P3oB3a36O-Hk?e<9&{Y zY)>~nP=g}mGuH}R_VgLp?h9k{;cSI1`}GX$l^4dI#H9fH0Y^Q|oN~$V10*v22OeR^ zTJncr+r5^IY##TlJx1^RW9*#Yz^>likINfT&z*~?H^B&yc zpP(-lu}nQsqo6rl4hou6rIoiUr%Ky~54q<{p(Q$aG5CikV0%00;QnL}?%(|$J<0BS zch&y>xt|b8p6i#rY^L!Q+VM5|@D29j+XjuDw3$&o1fR~$r(i#6e8fn58MFRX(ug6{ j_mBL)O<)#t0g>h#(D5^^ny>G7Do*|SZry+@%4+^U9o;NP diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/MapLayer.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/MapLayer.class index 5ae2a6817798a96f0b192136fccdd2964ac1ab68..534e4fdaa0af9b80af520f42db448c2af027cade 100644 GIT binary patch delta 25 gcmbO%Fj-*3a(3P#1`dW|1~G;*1__3W$y?at0aii=XaE2J delta 25 gcmbO%Fj-*3a(3Qg1`dW21~G}2$Z`sYMd4bt-#ch~duD37iRdY*u zp7dG`b5%Cfn%pyAOWRXb&dTyoc?Di9+K%ln3(RNEbu+sypsl!7C6FrHj#_Uuc9gdz zck0|3EV~t1-ay8XT$<VS#IGugMKW7C(F z4@~LQj}sn_WU}R5xi8JSbZTbF@l`EMSR9hE1A*bL^NpQdRq=`5w`tcL>9;(lQRo1O z4B9&_->#dbs0zgnt5Y}2L`rVDEw7?p*#RR%-NerYk&(HVPNnWPZKt-Te9NusxNop2 z77ScO%0LV#Fw|*w8Jt z@jk#W{jao`T%?;OQV|tDyyu%FP@@LA-h p?gYJO;O(T$j-(P1pvL+HA>6>tP~XB7wZ^a9H0cc}=i{U1?;kc57~22< literal 0 HcmV?d00001 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/PairedMapLayer.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/PairedMapLayer.class new file mode 100644 index 0000000000000000000000000000000000000000..7158e4f6533c743485deb65db2a1a51473ec07d5 GIT binary patch literal 1878 zcmb7FO-~zF6g|%#du-zb2*EVPq|g8{rZ5Slv?))1U^#Bs*XV=*K~ZGKomJ0pCk~&eI1|bSl98HK(c7trkk(JR?BP&#H!Mh zUrNgr2tR(z^T@YW)!P#gMSuKfx(hxn-ANKUDMr?yLDQwm7I#Km!)f|ea9&F324#F+p|b& zp;U1i#+KtgmG!EzWxB3(+YRFj*)Si-rlIJXRca-9Xu7MUwCTypH#GR+m@Mh)s14uPPdT7)UKa@mO4xGuz5oDyjW{NjJmXIM$z`n8d>EC5Z|!|dN0uvWr6B~VQ-ICWBNl40-&x=K)J$)KliL|M&Z;=z|DnKYPZp1M_sxpe zYw^3!x$74j-1djk zADV4;v)Oc9&#XRbs<~y43kMamsT9u6CBh2~oyH9cz(;p#I;jBPdqy?sPUcdNZLW+d zeqjc{F9|e0e&)}Ws2KJoi$Zw=Bb0ny)I%6Wgn9~NT;HPQPkKfu3)zOWW6HB97cszosV`cA-Zv?grVZSP~xeeGR{38Q# z;7P=UV)C}C|U@TFpSiKk_zw!Zw<6|hUDo#+rfa_h_maxoKwcld} zRF!AOwWIHGU9~m6#1=0PIabl`(c27$T>&9JFK gyJqlyw_Ra~FT_nM+e*Cf=6TPY_dOr)bIy6^m%qOM z5x_AlN6-he3A>RIxGXRua7Ey%Kvv+Iz;%Jw1>Vqc!@#V8IRln~c>@auat3SzH)Vg( zz>kk8Ymek%VtH#n-Q+nAk^Sohm^4)6Imf#ESH=mIkRG0awc@gwr~4qr*B^2heBj@I6Ipj zn>wGlpwKc>F4Y{X z@w7s0r@rUxIymM9|*neP#S&fu)^tmmaFWFP|;=EnWSn~yH66x}SRhY4= zdHMF0nzNK=s{QGOa&aJ2t}a`J+(5>zR;_BiIB?!7+LKmg;7Yk#$Yq!${&oaNA8 zi|JSkx4G@RirEFLQnPdB27}Cp97dh8V->b4FOrUYEp1zsED3Y-zDBIt0!PuW5P!Nxq-c^YWGzz2tkhh=n9S!K+ZA=P z>?yQ&FctoxQTwrHXpmO*kuheUc4IiC}`EX>gZk>*625@{F3aWU%qe!nY%xoyJ&CG@qaWktYTFtDHNSN7pIMGJb6Wh(l z*wHX)7n2S#=@gSLG1)05N!R2V*JKw>y1!+D0h}V9LX3C_8Vp{fiC+=4A&O2)yRZ#= z5htAq_E#I}XlKv7X zM?$U~kgcFbeUSQKLmw2qCVGu}E#7_~eI9|-heaQj6Csg8B1J@s@N6Wmuai@k&PUMW z(KWPDt&6%V^#ptFGBSO{cdwK6xb9i~`&`O9*Xy3!vyPoo7{6kSWk@XJA+CyFZ4J9* z)z?@DH_jTOt`J#AHw8v|z%3@^rmTyx{t!ubtNVe+!m)&5EmWzv3@3ml&e^I}WyV z#yWTR?Cj`Z)j6m{8HW+C3((aXi}P;UQhbO@aA}Shm`n6jzTzRT6~odlus4Hn0yo;~ z936QMC)uiUu6H~3(nn}Dzu|e+@_nyb;(XQm`YG4>Ev|bTuKBX~u0LcV0owEjB}YTA z+(WnKit!xfgr{y*pYtQ64J9RYuO@prJwTDxWi+G0+Emej8ZS`CJ}mQLdfScN?)mp) z2dE#%c}5o&dHp}p#~+EjaDGNBysTt2D2)(KCVC2NpKvP4D;H!qL}04gQZ7D3MKC3O z#W`Baakw^zyq#|n@D9^@mo4)i2l{=!VIOQsY0yte8tbC_>M1tRMjBE?NuyatV_$Oa z3HEO~kGNYO@!j}%i^JxI!{&y=bi<)V8*vy*CGT;F9zsjCii;g7=uaA$O|E38aeWfoOZ{_>$=a}Fy3Pp@xv$% Ih@86g4{T1m82|tP literal 0 HcmV?d00001 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MECHNANICS b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MECHNANICS index 1f349e994..f7dd799e0 100644 --- a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MECHNANICS +++ b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MECHNANICS @@ -1,10 +1,10 @@ * Weapon tier -Natural / Common Stone > Copper > Iron > Silver > Titanium -Forging ------------> Steel -------^ -Exotic ('elven') Glass Aurichalcum -Special (something 'adamant') ??? (Use material spec of CNT, tensile strength 180 GPa) +Natural / Common Stone -> Copper -> Iron -> Silver -> Titanium +Forging --------------> Steel --------^ +Exotic ('elven') Glass Aurichalcum +Special (something 'adamant') ??? (Use material spec of CNT, tensile strength 180 GPa) * Metal graphics @@ -25,4 +25,9 @@ If the size is bigger than tolerable, weapon speed severely slows down, tools be if use time >= 0.75 second, the weapon/tool cannot be equipped. Small weapons gains no (dis)advantage, tools become unusable -Crafted tool/weapon size is dependent on the baseRaceMass. \ No newline at end of file +Crafted tool/weapon size is dependent on the baseRaceMass. + + +* Gemstone tier + +Topaz -> R·G·B -> Diamond·Amethyst \ No newline at end of file diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapLantern.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/LightmapLantern.class index 8a56c28446218fa95b63a6cec8ad6d8834a4657c..04f490aca7c1dcb7055d812147ab9c6f7604b5d0 100644 GIT binary patch delta 59 zcmdnZx|?;w4n`p+P6iexE(T5}ZU#Ok9tL41-pQvJBbk^4CeLRQoovOV#>6B7W|o7P I5G@sWCC$05i)$ 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 literal 8671 zcmbVR31C&#nf}hb_r3d;n}r7#%?4o+146>0sS*SN8jQxo0;7WCke9qm^6=$7e0hOD zD{d*H)7Dn2wt^c=Cv~X{AVjUGV{6r^owib!cE*m@>NvJDPRFU$BAM@;d*4C`jt(K` z{O3RC{QLROe@|XG^4LKDr;0ftoP{TYn2M)DSc0b|^bbKigC7R*BRm_#kMW#ro;T4X z=Uy=Jj{*E7gfLzV;iveg5RpHV(9dP_3pspALWd;uOWC|En^z?6RoT2In_tQ1*OJ9Q z%jRDKcs+#Q;9pI=5yC{gY2vpbOu}0s{0?uMcqfE^!@EY~RX_;;j`t+`_Y(I9N&7!! z^PeF~`MzxaOULl=u*CgQHvcV~4`lN{CjJz_hat?vivj#uqCN`XW7+@3SbC+TJr### z^GN_l0vHYm1ccD9Bso)P(mqd`LKi6R%|tWt&X#yrcjo-)dI9~COPU47COkxQGMUMBHopZX8O{Oz_QWS zENJOW_0+9Qr8h(qvAUHG_on-L>d61BbabPWu2bUlMAx^tyc!mgYPhj^`I@#18kaV& zTt!hRWYN-8lHw;b7e*6(j?N&UmL;uit!oOFN^~{VB1(dw25n7EE6!fIMvb-nc$u6R z`SB6~-^vxutIwABQUU*hIE}H8v}&ebC}1p2#i(FOOFZec_Vsi)>6Our1Tm48RA)4C zVKg0=V-IO$y5lt2oX@KHawi#c(oUL+hoZ5VX9$7QYMPrrD~+u6q_m=+zncV1&wT>3 zKQ9>?Jni(PHaIz9d=y3!FHS3I^Fb6|n@X?Qw1&<}XXrUO>d%gX?i_b8QrsB@7p=%d zJ1=7lWGxnBEC@`jX-TEK>XOdJSaf5ut~U|yysU0nI=a3)-r3tAxtDHs(y10_gOgaA z>XWf4pv9@K7N@=<%3m3}9sKR23Z1D$sxM78&6!jS7s+TZmd;VqD>5Y68|`t9CMmiE zDnCsWQy3<`#DJjlJNpvRjMJEmt#GJ+NFAo7WK7YF{?yvF>^7+`*pZe8&FSSbf6|Gj zJEY8U4m!Hh3~K=^5#7Yll4m5IRL7HX8C1xNq6sbtOW||#0XdQrCca84v1s}-huf5= zsHqW)W@r(!%gHQ{Zd^`8P4jf(_2tV*)R86DGz44uQQ{_`WYsQi=h7gnx>{E$x?8$5l<>o?Bs5C++E_jNS>=``h4k0gP2CQ z<9z7yKAw4Iq&f9eEEeCO`kuao?8B+POxxNe41^eun^K!et5{*_^z1~iGZF1sznXy~ zFor@i_KwPezMAPO50-FFWtXOOs)zfT8Q1rvyPOLc*llaGX^QreDyp-f_0M5cZIVs@ zTnVuWDQ*|7jLY=k4$g50fd!ojFRO%BFfKctCbh`UlFsIVTA6As{53AM(2R2};S+uf zXQRm!rX>O*Xo`>}!oo5|ktK@JYKamyScY>1%2l4`$?vLL&Jz;vanA1Vbk=9$DTc<( z#!SZP;UL*nok>-vomo;KH|JNM%p+W2n3E}iC^f|xOGLz23-{q>ON=8VY&m>f4#!LA zF+$jfM=V@}b(T0mE;&&)WwI%kO$ByYqEb}JJE$j>%5<# z>eSlm4i%>oQp&3U8|R+c`PGbBIg_T_919QOW(HrII)fvoz9o%)t8Bh47mZo&#E#z0 zjmy%GlN^bSEaAO55;=Z-s+a!X;8gQCI$ch>I+aXpswEAj+0nN>Q)OP?wvKg9Clf^Z zvEIohY~~BzW-J|Q+`2%;q`R+SIuB~qs2p{q#YdT*{uLrXH76!8#_jZbznZCY+7&Sf+b~ek(F*hPAq@YDT3;T3+EpXepVe znWIBYJub|0hb0G7W*&7h(Fi{TD~=j- zKGfSOLuYj=)guL~+Fb~T^2mQdtW}aps0-aB6hs{BJi@1Og%qMd zD!-EA3`K0bJDDRUJYqpymQ_x>g!21k(Z2`Ak1=}>eEZ`>r!3_1 zf`!Lr%Vlp!pXiW|-NJ8HU;)i?CZR<*35!vOrHq4Rn9ulZWNfxEHZNrq#TX$y+_ixQ zzk>a>9A8g^-$Ya2L67Zbe=o-mA;H?92hSpj7umnW@oVVCTgc!K=)(u>KL+bH^efkG zW;m_KSmin&=}cCxGkCpaabM%`TU$tsJLq6o*orfZP-JJ zS{W#pQq~k9oqWM_8L88Usj^SVf52gWS$>Sj$M7A7CJrN%8yUxpvMU*@mm}@Qs&6Ch zSwa&p8o~(+hH&DULnvD~1bVwtdf7I1>eDLf{kFeqr+$Kpz6$G>?OMMADh$pv>0R6_RY2Zwe_a$yA$`wP1t3d+i<6vGGcOa8@_4O2eNDJKszy0^7AetG7u29 zpK#TV;a3Ks&v+b@R_O;Yc|WGiu>GZ_-CJE@)(zpLt+sCjA~G#Ed$Jwq-dZ@`x*s)? zv=M8s_YaEuY~MBnY;zEGwomPn=gf%R?IO#wg4X6mtR2Gi`oQPg*Dh6;`+~MV$IqYT zM`1?i$6ZED?F)VGeeG&r*!)3gzEx)FcEDz8n9){d83e;F=(9t1&;|W=*ah|aBD=`9 z6F2Jh#da})Yn1iNEMmLu;`Z9(x}lhE@FlXI={UwMcG1xba&9R~4&mgym)s%!G*Hac zvt^)&ZHjen&KLFOh!C>PyHOZ3Z)amBx8=A(|G#5rz%K?5zbkX(;n(tM>IhR4@FgaI zFZ24if(c^_#^7pH@PlJ22AHtE!sEP^NB%k$sDp`n|XjLmWMiZ{cO! zjJI(MU*c|LD*6uogxl~Dc8Qtzu9$;C5yL$qj{C&z_`cYI2gM;gEMCK2@jCX2ckzh$ z0QG-ui7uV>g<7#~&pBLMy z{eDEK+ut&gwj!X7r^XpV#aa<{>LXMn=7{x7&Yb0w!s*yZC@6L?pY;<8QIF@aiBOo@ zJcG@&riE5*1ufbNlhR%5L3?l&EletypqHzp?8i8LhDyLbnbc_eD=CkmH+YFPpnpLn zTMd>z&r7Uh^jei{4V7ZoqGA~1;5TtqF2@GNC%8a}+K;h1IPO9w*04CHJA%`MiK{s& z^X$Mdd@!>#sF?N%wH6aU!W!mk{%4)S4^TG=YnvD?MZE2`a^BCUY{MVjys#fL&(A`$ zT4z?wEuUBKo25Fx%swSDC4?fi^~NCf`gzPvooOlH--(;``k-DP((1!@*w}?NTD@gk z1TL^GJA48q{qA)4L%Db0xOc4h&&-eMshq-7xJC6IXByhVO=d z5G4Z^Pvk=bVYWM@B#|+f132x;{5jf;3H02X^zB=Wrr)8GFVR!*E@t5OIF%=&ftT}Qe8@M4KeH75 z3$Ol9a50V`DuP%qLf9h0xQXu#xAD2*4iUlkIQIb8>=P&AQBj8HL?sS!|F6U(yeDSh z191vI6tn2_Iu*k=pctp~+P#+XW#AH)vIB%HEN2}lPjHxAuj4spC3H= zD@j>?9Z10qXkp2V4+0*qdE`U^5G*e(-AqxE8mK=fM3W-wR_{UPK}j?u9}|ux z5EzxfxuX)`Lxe|QwkLtVd^Gm01-tz@_Iy(DcDH-Bnm}6xDtuW>ovtiZ8mQ>b$y8{q zi!oNLDzMfBk1`nSw-s6|D6O>(+mBIp2xn}K%uhZr!djOWh#SQ1p0(~6l|aL21fru7 zxN}qj3q~X0j7oqnPo4_9XfT~ppI6S{k|xiZ>`ZC0krB60A}hJFvS8&R*SMwq6{Ugx zt17R`$6|yL#@A`a;yTO_mtm1eC~>M?me`>TLgu^>WK2p(UNxGE&H()3V2D4o`CZuQ z3H%QC@+iWY9KLlsf|IRV?(~j>l6Z>3PRV1H$Ws+|Y96a(o*bDk>(qr)+`itJ>H)qg znzVP2I9%oyP9I9^j5auTW#rK4FkFM*7FT)a7;6$+nCy6VSA5L|NG6}o6VHWNo#Fqz5Qohk} zB5dUwo!@l<GFBlQ@F*WYmcBCY20FN&U?j8cGr>e^#zn|FH6f5=TW{tN4eRf92r5`>>o+?>m++a z0olm0Wcj}92`nEQWRkAoIhw>{Q^hY7_i-S=5BG}fz}&%)m_b%Pd1h{2y-6{0lXXq@ zmO)LyE#rqiSzpXIHTjI}am}W?YH}?jS6hA;>2nY6M3^j%gU91`YXP_F9JlJDxs|)z z_>k;zTf|;EJ3!O<^!v;6I=Ft=2EW)|V6cF?b8{Z{GteLA7qt6MRH;bu4x*e7k*FxR zWbWe1y}96D;F(r_oU%5lm23;Iq+JEd1ais*JY_=i&k7#TgY>=39rG&WV+g;3XO_#a zX}+;kxlb!Bw~ENcHs;zsy-mHd{8qiQ9LiTfZYCIHW&Axv#674K_hK61nPL!g#REzh znF%bomi3Woof3x0kZ%P0y~8#S2h?GcxFJF^dgkF#Lhhr&82NahtJ0w?SDf?;U(X)Ll2r$=bT2gN2{%~WH^p(x Np=HE8LA-{8{|nDnK)nC} diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/MapGenerator.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapGenerator/MapGenerator.class index e496564682c49b1704bcec216286edcfc506c980..4a8d7f68292ebdec8ed84fd3d232993bb0388652 100644 GIT binary patch delta 70 zcmZ2byr6i)N)}5=Mh2FkP^U;{1_lOEMh13QU)LZ<9~Tf;jFEvO*fAi$!!yVg#205| TU=8sPaEt(-W4axHJIRE+}1TN@LU^Ea)U z6TK6Z52L{L)}q&fGOKP~PF@n!zU729KOT|^eV6a&-&(F~ExTCMaO)e6=ZA8M^h)4w zqIsx-rn@+(Ee^)V1A2;k`*{fiOU(YOpn>7dqys&ua-*Uh=xSv-CoIPmh6^>$ zqqlJ*U0mXIP0U_w72d>v9VzBl8z;f*#+QZ@zHHW=_iJSZtXA1^P6hPt%()O#^5}Bt ziLbC+dDn6~G7K*_&y}}oWk%Jn2Q|Bl6A@JScQB*;rhi^caWZoc7ZJK_mZj{DStk9{Abib-NbP0A7$zyk{n*7=o)5TVxB4 zY$1{@P_l(fwxG!tI@tm!TNq^vrfeZa+ed0y(FJjL?NWkl}4=Qz1iu3@1SNfEY5Wtw>s}$fy=l(pMy{LM{Vx zB>}=u2tzJvAsH2NT?@IShh$X9Z9v8nApD3jH;gdx|p70IcPvKDefUy+;&c>>7O1PH&R47sVTNM41^Xd$=s70IiRc|fWO5dKOq z+Ebu zyy{U~tw%lTfw%RDM^&J@p-`z>&sw$K_kI5X{-U3c_4~ZDNj4-J;txCT^Stxi=j;>z zzHkY^cKj`hn_%e})-h6tofwUx237=i6en=94mso_aH4Qgh?8M#IZk0*$3zq>@DibY zsg9TFczF~J!uAR|?~3A;cvS?i7UVTi)Z^|5UK_`wcIbeC7>6LgrO9TI1o_o)-Qs#kO&15voQ56Ei<4KyC+&N-Gt%9{f~uiHRt`%e zKA(Vb8ggCM;{UJWme8_33T%}SM$>M|%UHc^C>l52SE?jCr1T9u z8| zNduq4r*%AJ;4}EFhK}RYij@6#Cia%>T$VXVuzjtBFb5VSd}(?epEGa@3x`J-;O7+Z#O^>{d@hmaxPHPK=RoQ(@D)5R zS)w0dhY8W~RRdqc*A09_?m~9fz%d**@J)P+rRH*M*#3lpCj^bqYs(q&M-6;i;ki;i z|W9vkaPn@2Gdfo}H0FXW+Yn*AC}OBK(DTk%8~wDc%&_oZNh0knkxpmoxAK z1rICuhj_}skMLsyKM?_1oq?a?aUDN1@N@jaz%TKrfdM?9v*}8zVNSLgn%S`S51p_w zK1XV`7*5At%je8wpgG~qEH5-PHP7$Jmf)&->Q@O*PZWJC&!%=uR57~>4zb;RCe$+X zoRl+FQguze1tH2g3H+@;PkNd>- zLcwx~Ze7Uzd6}p*2F;u zX*=mwV$yW%uI6JRRBqDJbb-htY_s6|MlsG{x?QaB@w14_qE@Aeis)NlY{P8$`nb_Y zq)C=#`7t4%Pg@pozQQ39XLWOtl{kfdYv6bIlK~S$T(q;|ZD-6qX(dx?U2)!;!)C^J zJ-WR-Ka1)33k^uQ?#U8ARg6BzvAmv~Su9#yqEA-aQ;`=;?psYKo3n~d0b}?4qNuu= z!#Kdtt!nZse;KI!-@MheSCQPqelgB?$>$oS;(I`yJe1r6~A#UN5oD1Gr)3_ zOLE~qWnHAkmVo4#AqCZGO$ zeA#*EsdI?L>&l3>wO+t-;1L)hOd^tMD`VwZ%5FgqdilR2j6Iaz34_lDVsYNB!WuMU zBhMDBMG_mZ1J{s#6FD|wKbmkGHsfY;w2~u+b=b?d{P-uwE!anBKks|_)JT)Ut?1+V zT>gw1s@n*qc+-gR(-aZXae&1C#M(P_91Nol{WwGt3BmmoCL!peuj@L?h#i^4mefVm zAH9eMIv$T-RmQ4y=h4U`zM79R)=c3Uk16^y%7{9uuIGQ4J(RN=wS2ZxN0PVgba*SS z$2R5AYHC_RCwuWc#n*+ybWNN9bc9km(i=&_l@}PNb<(&RzC7F39$#C=x-!r&wV6%WNQ)n%tO~7^qZWXXYfk^?cSKu}# zwDUAp%1uQRQ_ss-88;A`4$*dog|{~b(P3enrO`n=b~FCKjV!<&Ovg?nSdeWj#x9oQ z%`C+fvv7ow8zPoxs>hk+`xv1InBX%^t`tHd2tp;*316: sticky + "0";"TILE_AIR" ; "4"; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "0";"16" + "1";"TILE_STONE" ; "32"; "25"; "0"; "N/A"; "1"; "1"; "0"; "1"; "0";"16" + "2";"TILE_DIRT" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "3";"TILE_GRASS" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "4";"TILE_PLANK_NORMAL" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "4"; "0";"16" + "5";"TILE_PLANK_EBONY" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "5"; "0";"16" + "6";"TILE_PLANK_BIRCH" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "6"; "0";"16" + "7";"TILE_PLANK_BLOODROSE" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "7"; "0";"16" + "8";"TILE_TRUNK_NORMAL" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "8"; "0";"16" + "9";"TILE_TRUNK_EBONY" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "9"; "0";"16" + "10";"TILE_TRUNK_BIRCH" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "10"; "0";"16" + "11";"TILE_TRUNK_BLOODROSE" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "11"; "0";"16" + "12";"TILE_STONE" ; "32"; "25"; "0"; "N/A"; "1"; "1"; "0"; "12"; "0";"16" + "13";"TILE_SAND" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "13"; "1";"16" + "14";"TILE_GRAVEL" ; "32"; "6"; "0"; "N/A"; "1"; "0"; "0"; "14"; "1";"16" - "32";"TILE_SNOW" ; "8"; "6"; "0"; "0"; "1"; "1"; "0";"TILE_SNOW" ; - "33";"TILE_ICE_FRAGILE" ; "1"; "1"; "0"; "0"; "1"; "0"; "0";"NULL" ; - "34";"TILE_ICE_NATURAL" ; "6"; "25"; "0"; "0"; "1"; "1"; "0";"TILE_ICE_NATURAL" ; - "35";"TILE_ICE_CLEAR_MAGICAL"; "8"; "25"; "0"; "0"; "1"; "1"; "1";"TILE_ICE_CLEAR_MAGICAL"; + "15";"TILE_ORE_MALACHITE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "15"; "0";"16" + "16";"TILE_ORE_HEMATITE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "16"; "0";"16" + "17";"TILE_ORE_NATURAL_GOLD" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "17"; "0";"16" + "18";"TILE_ORE_NATURAL_SILVER" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "18"; "0";"16" + "19";"TILE_ORE_RUTILE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "19"; "0";"16" + "20";"TILE_ORE_NATURAL_AURICHALCUM"; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "20"; "0";"16" + "21";"TILE_GEM_RUBY" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "21"; "0";"16" + "22";"TILE_GEM_EMERALD" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "22"; "0";"16" + "23";"TILE_GEM_SAPPHIRE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "23"; "0";"16" + "24";"TILE_GEM_TOPAZ" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "24"; "0";"16" + "25";"TILE_GEM_DIAMOND" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "25"; "0";"16" + "26";"TILE_GEM_AMETHYST" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "26"; "0";"16" + + "27";"TILE_SNOW" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" + "28";"TILE_ICE_FRAGILE" ; "8"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" + "29";"TILE_ICE_NATURAL" ; "24"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" + "30";"TILE_ICE_CLEAR_MAGICAL" ; "32"; "25"; "0"; "N/A"; "1"; "1"; "855567"; "30"; "0"; "8" +# see scandinavian name set female of this tile id! + "31";"TILE_PLATFORM_STONE" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16" + "32";"TILE_PLATFORM_WOODEN" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16" + "33";"TILE_PLATFORM_EBONY" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "33"; "0";"16" + "34";"TILE_PLATFORM_BIRCH" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "34"; "0";"16" + "35";"TILE_PLATFORM_BLOODROSE" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "35"; "0";"16" + + "36";"TILE_TORCH" ; "0"; "0"; "0"; "N/A"; "0"; "0";"16777215"; "36"; "0";"16" + +"239";"TILE_WATER" ; "16"; "100"; "1"; "2"; "0"; "0";"15464447"; "239"; "0";"16" +"255";"TILE_LAVA" ; "0"; "100"; "1"; "2"; "0"; "0"; "8397312"; "239"; "0";"16" diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/WorldTime.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/WorldTime.class deleted file mode 100644 index 38da21ca707668e2b96b292f70511ac3665284cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2390 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 z%0A&bqcNGpFK-Vly$mZ6AMRNh^KIZ@-|4xa#c5sqSd&jkYc1`hg*-zD*97l8*Zp>0 z@Lc%k8OAE42Gr(it6@Iu|Wj% heeTMjwnP-gK*Me2*v+Z~3JCn$w%L1A;YR readCSV(String csvFilePath) throws IOException { + readCsvFileAsString(csvFilePath); + + CSVParser csvParser = CSVParser.parse(csvString.toString() + , CSVFormat.DEFAULT.withIgnoreSurroundingSpaces().withHeader() + .withIgnoreEmptyLines().withDelimiter(';') + .withCommentMarker('#').withNullString("N/A") + .withRecordSeparator('\n') + ); + + List csvRecordList = csvParser.getRecords(); + csvParser.close(); + + return csvRecordList; + } + + private static void readCsvFileAsString(String path) throws IOException { + Files.lines( + FileSystems.getDefault().getPath(path) + ).forEach(s -> csvString.append(s += "\n")); + } +} diff --git a/src/com/Torvald/JsonGetter.java b/src/com/Torvald/JsonFetcher.java similarity index 56% rename from src/com/Torvald/JsonGetter.java rename to src/com/Torvald/JsonFetcher.java index ed4889e96..11718a7c0 100644 --- a/src/com/Torvald/JsonGetter.java +++ b/src/com/Torvald/JsonFetcher.java @@ -10,15 +10,15 @@ import java.nio.file.Files; /** * Created by minjaesong on 16-02-15. */ -public class JsonGetter { +public class JsonFetcher { - private static String jsonString = new String(); + private static StringBuffer jsonString = new StringBuffer(); - public static JsonObject readJson(String jsonFileName) throws IOException { - readJsonFileAsString(jsonFileName); + public static JsonObject readJson(String jsonFilePath) throws IOException { + readJsonFileAsString(jsonFilePath); JsonParser jsonParser = new JsonParser(); - JsonObject jsonObj = jsonParser.parse(jsonString).getAsJsonObject(); + JsonObject jsonObj = jsonParser.parse(jsonString.toString()).getAsJsonObject(); return jsonObj; } @@ -26,11 +26,6 @@ public class JsonGetter { private static void readJsonFileAsString(String path) throws IOException { Files.lines( FileSystems.getDefault().getPath(path) - ).forEach(JsonGetter::strAppend); + ).forEach(jsonString::append); // JSON does not require line break } - - private static void strAppend( String s) { - jsonString += s; - } - } diff --git a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java index 72c9f6821..029860ffe 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java +++ b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java @@ -32,7 +32,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { * veloY += 3.0 * +3.0 is acceleration. You __accumulate__ acceleration to the velocity. */ - private @NotNull float veloX, veloY; + private volatile @NotNull float veloX, veloY; private final float VELO_HARD_LIMIT = 10000; boolean grounded = false; @@ -49,13 +49,13 @@ public class ActorWithBody implements Actor, Visible, Glowing { /** * Positions: top-left point */ - private @NotNull Hitbox hitbox, nextHitbox; + private volatile @NotNull Hitbox hitbox, nextHitbox; /** * Physical properties */ - private float scale = 1; - private float mass = 1f; + private volatile float scale = 1; + private volatile float mass = 1f; private static final int TSIZE = MapDrawer.TILE_SIZE; private static final int AUTO_CLIMB_RATE = TSIZE / 4; diff --git a/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java b/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java index 753fd1bb6..d36848ed1 100644 --- a/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java +++ b/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java @@ -1,16 +1,13 @@ package com.Torvald.Terrarum.Actors; -import com.Torvald.JsonGetter; +import com.Torvald.JsonFetcher; import com.Torvald.Rand.Fudge3; import com.Torvald.Rand.HQRNG; import com.Torvald.Terrarum.LangPack.Lang; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import org.newdawn.slick.SlickException; import java.io.IOException; -import java.nio.file.FileSystems; -import java.nio.file.Files; /** * Created by minjaesong on 16-02-05. @@ -20,7 +17,7 @@ public class CreatureBuildFactory { private static final String JSONPATH = "./res/raw/"; public ActorWithBody build(String jsonFileName) throws IOException, SlickException { - JsonObject jsonObj = JsonGetter.readJson(JSONPATH + jsonFileName); + JsonObject jsonObj = JsonFetcher.readJson(JSONPATH + jsonFileName); ActorWithBody actor = new ActorWithBody(); diff --git a/src/com/Torvald/Terrarum/Actors/Faction/FactionRelatorFactory.java b/src/com/Torvald/Terrarum/Actors/Faction/FactionRelatorFactory.java index f4de6311e..06182e65d 100644 --- a/src/com/Torvald/Terrarum/Actors/Faction/FactionRelatorFactory.java +++ b/src/com/Torvald/Terrarum/Actors/Faction/FactionRelatorFactory.java @@ -1,11 +1,9 @@ package com.Torvald.Terrarum.Actors.Faction; -import com.Torvald.JsonGetter; -import com.google.gson.JsonElement; +import com.Torvald.JsonFetcher; import com.google.gson.JsonObject; import java.io.IOException; -import java.util.HashSet; /** * Created by minjaesong on 16-02-15. @@ -15,7 +13,7 @@ public class FactionRelatorFactory { private static final String JSONPATH = "./res/raw/"; public Faction build(String filename) throws IOException { - JsonObject jsonObj = JsonGetter.readJson(JSONPATH + filename); + JsonObject jsonObj = JsonFetcher.readJson(JSONPATH + filename); Faction factionObj = new Faction(jsonObj.get("factionname").getAsString()); diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java b/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java index 1a009b29a..062c49626 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/ExportMap.java @@ -34,11 +34,11 @@ public class ExportMap implements ConsoleCommand { private static final byte ILMENITE = 19; private static final byte AURICHALCUM = 20; - private static final byte DIAMOND = 21; - private static final byte RUBY = 22; - private static final byte EMERALD = 23; - private static final byte SAPPHIRE = 24; - private static final byte TOPAZ = 25; + private static final byte DIAMOND = 25; + private static final byte RUBY = 21; + private static final byte EMERALD = 22; + private static final byte SAPPHIRE = 23; + private static final byte TOPAZ = 24; private static final byte AMETHYST = 26; private static final byte SNOW = 27; @@ -130,6 +130,7 @@ public class ExportMap implements ConsoleCommand { colorTable.put(GOLD, new Col4096(0xCB6)); colorTable.put(ILMENITE, new Col4096(0x8AB)); colorTable.put(AURICHALCUM, new Col4096(0xD92)); + colorTable.put(SILVER, new Col4096(0xDDD)); colorTable.put(DIAMOND, new Col4096(0x9CE)); colorTable.put(RUBY, new Col4096(0xB10)); diff --git a/src/com/Torvald/Terrarum/Game.java b/src/com/Torvald/Terrarum/Game.java index c1a7273bd..3f1d61076 100644 --- a/src/com/Torvald/Terrarum/Game.java +++ b/src/com/Torvald/Terrarum/Game.java @@ -6,10 +6,12 @@ import com.Torvald.Terrarum.GameControl.GameController; import com.Torvald.Terrarum.GameControl.KeyMap; import com.Torvald.Terrarum.GameControl.KeyToggler; import com.Torvald.Terrarum.GameMap.GameMap; +import com.Torvald.Terrarum.GameMap.WorldTime; import com.Torvald.Terrarum.MapDrawer.LightmapRenderer; import com.Torvald.Terrarum.MapDrawer.MapCamera; import com.Torvald.Terrarum.MapDrawer.MapDrawer; import com.Torvald.Terrarum.MapGenerator.MapGenerator; +import com.Torvald.Terrarum.TileProperties.TilePropCodex; import com.Torvald.Terrarum.TileStat.TileStat; import com.Torvald.Terrarum.UserInterface.*; import com.sun.istack.internal.NotNull; @@ -81,6 +83,7 @@ public class Game extends BasicGameState { skyBox = new Rectangle(0, 0, Terrarum.WIDTH, Terrarum.HEIGHT); new WorldTime(); + new TilePropCodex(); map = new GameMap(8192, 2048); map.setGravitation(9.8f); @@ -267,7 +270,7 @@ public class Game extends BasicGameState { } private void drawSkybox(Graphics g) { - Color[] colourTable = getGradientColour(WorldTime.elapsedSeconds()); + Color[] colourTable = getGradientColour(Terrarum.game.map.getWorldTime().elapsedSeconds()); GradientFill skyColourFill = new GradientFill(0, 0, colourTable[0], 0, Terrarum.HEIGHT, colourTable[1]); g.fill(skyBox, skyColourFill); } diff --git a/src/com/Torvald/Terrarum/GameMap/GameMap.java b/src/com/Torvald/Terrarum/GameMap/GameMap.java index 4994dbd18..908c7d843 100644 --- a/src/com/Torvald/Terrarum/GameMap/GameMap.java +++ b/src/com/Torvald/Terrarum/GameMap/GameMap.java @@ -20,18 +20,18 @@ import java.util.function.Consumer; public class GameMap { //layers - private MapLayer layerWall; - private MapLayer layerTerrain; - private MapLayer layerWire; + private volatile MapLayer layerWall; + private volatile MapLayer layerTerrain; + private volatile MapLayer layerWire; + private volatile PairedMapLayer terrainDamageCode; //properties public int width; public int height; public int spawnX; public int spawnY; - int offset; - public LinkedList houseDesignation; + private LinkedList houseDesignation; public static final int WALL = 0; public static final int TERRAIN = 1; @@ -39,8 +39,9 @@ public class GameMap { //public World physWorld = new World( new Vec2(0, -TerrarumMain.game.gravitationalAccel) ); //physics - @NotNull private float gravitation; + private int globalLight; + private WorldTime worldTime; /** * @param width @@ -56,6 +57,10 @@ public class GameMap { layerTerrain = new MapLayer(width, height); layerWall = new MapLayer(width, height); layerWire = new MapLayer(width, height); + terrainDamageCode = new PairedMapLayer(width, height); + + globalLight = 0xFFFFFF; + worldTime = new WorldTime(); } public void setGravitation(float g) { @@ -89,6 +94,15 @@ public class GameMap { return layerWire.data; } + /** + * Get paired array data of damage codes. + * Format: 0baaaabbbb, aaaa for x = 0, 2, 4, ..., bbbb for x = 1, 3, 5, ... + * @return byte[][] damage code pair + */ + public byte[][] getDamageDataArray() { + return terrainDamageCode.dataPair; + } + /** * Get MapLayer object of terrain * @@ -106,6 +120,10 @@ public class GameMap { return layerWire; } + public PairedMapLayer getTerrainDamageCode() { + return terrainDamageCode; + } + public int getTileFromWall(int x, int y) { return uint8ToInt32(layerWall.data[y][x]); } @@ -118,6 +136,10 @@ public class GameMap { return uint8ToInt32(layerWire.data[y][x]); } + public int getDamageData(int x, int y) { + return terrainDamageCode.getData(x, y); + } + public int getTileFrom(int mode, int x, int y) { if (mode == TERRAIN) { return getTileFromTerrain(x, y); } else if (mode == WALL) { return getTileFromWall(x, y); } @@ -128,7 +150,7 @@ public class GameMap { private int uint8ToInt32(byte x) { int ret; if ((x & 0b1000_0000) != 0) { - ret = (x & 0b0111_1111) | (x & 0b1000_0000); + ret = x & 0b1111_1111; } else { ret = x; } @@ -138,4 +160,16 @@ public class GameMap { public float getGravitation() { return gravitation; } + + public int getGlobalLight() { + return globalLight; + } + + public void setGlobalLight(int globalLight) { + this.globalLight = globalLight; + } + + public WorldTime getWorldTime() { + return worldTime; + } } \ No newline at end of file diff --git a/src/com/Torvald/Terrarum/GameMap/MapLayer.java b/src/com/Torvald/Terrarum/GameMap/MapLayer.java index acee6e984..0c6aa7e82 100644 --- a/src/com/Torvald/Terrarum/GameMap/MapLayer.java +++ b/src/com/Torvald/Terrarum/GameMap/MapLayer.java @@ -109,7 +109,6 @@ public class MapLayer implements Iterable { return uint8ToInt32(data[y][x]); } - private int uint8ToInt32(byte x) { int ret; if ((x & 0b1000_0000) != 0) { diff --git a/src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java b/src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java new file mode 100644 index 000000000..8db773ca6 --- /dev/null +++ b/src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java @@ -0,0 +1,122 @@ +package com.Torvald.Terrarum.GameMap; + +import java.util.Iterator; +import java.util.Spliterator; +import java.util.function.Consumer; + +/** + * Created by minjaesong on 16-02-15. + */ +public class PairedMapLayer implements Iterable { + + /** + * 0b_xxxx_yyyy, x for lower index, y for higher index + * + * e.g. + * + * 0110 1101 is interpreted as + * 6 for tile 0, 13 for tile 1. + */ + byte[][] dataPair; + + public int width; + public int height; + + public static final int MAX_VALUE = 16; + + public PairedMapLayer(int width, int height) { + this.width = width / 2; + this.height = height; + + dataPair = new byte[height][width / 2]; + + for (int i = 0; i < height; i++) { + for (int j = 0; j < width / 2; j++) { + dataPair[i][j] = 0; + } + } + } + + /** + * Returns an iterator over elements of type {@code T}. + * + * @return an Iterator. + */ + @Override + public Iterator iterator() { + Iterator it = new Iterator() { + + private int iteratorCount = 0; + + @Override + public boolean hasNext() { + return iteratorCount < width * height * 2; + } + + @Override + public Integer next() { + int y = iteratorCount / (width * 2); + int x = iteratorCount % (width * 2); + // advance counter + iteratorCount += 1; + + return getData(x, y); + } + }; + + return it; + } + + /** + * Performs the given action for each element of the {@code Iterable} + * until all elements have been processed or the action throws an + * exception. Unless otherwise specified by the implementing class, + * actions are performed in the order of iteration (if an iteration order + * is specified). Exceptions thrown by the action are relayed to the + * caller. + * + * @param action The action to be performed for each element + * @throws NullPointerException if the specified action is null + * @implSpec

The default implementation behaves as if: + *

{@code
+     *     for (T t : this)
+     *         action.accept(t);
+     * }
+ * @since 1.8 + */ + @Override + public void forEach(Consumer action) { + throw new UnsupportedOperationException(); + } + + /** + * Creates a {@link Spliterator} over the elements described by this + * {@code Iterable}. + * + * @return a {@code Spliterator} over the elements described by this + * {@code Iterable}. + * @implSpec The default implementation creates an + * early-binding + * spliterator from the iterable's {@code Iterator}. The spliterator + * inherits the fail-fast properties of the iterable's iterator. + * @implNote The default implementation should usually be overridden. The + * spliterator returned by the default implementation has poor splitting + * capabilities, is unsized, and does not report any spliterator + * characteristics. Implementing classes can nearly always provide a + * better implementation. + * @since 1.8 + */ + @Override + public Spliterator spliterator() { + throw new UnsupportedOperationException(); + } + + public int getData(int x, int y) { + if ((x & 0x1) == 0) + // higher four bits for i = 0, 2, 4, ... + return (dataPair[y][x / 2] & 0xF0) >>> 4; + else + // lower four bits for i = 1, 3, 5, ... + return dataPair[y][x / 2] & 0x0F; + } +} diff --git a/src/com/Torvald/Terrarum/WorldTime.java b/src/com/Torvald/Terrarum/GameMap/WorldTime.java similarity index 72% rename from src/com/Torvald/Terrarum/WorldTime.java rename to src/com/Torvald/Terrarum/GameMap/WorldTime.java index 0f08b11d4..2e1c4da69 100644 --- a/src/com/Torvald/Terrarum/WorldTime.java +++ b/src/com/Torvald/Terrarum/GameMap/WorldTime.java @@ -1,27 +1,27 @@ -package com.Torvald.Terrarum; +package com.Torvald.Terrarum.GameMap; /** * Created by minjaesong on 16-01-24. */ public class WorldTime { - public static int seconds = 0; - public static int minutes = 0; - public static int hours = 0; + public int seconds = 0; + public int minutes = 0; + public int hours = 0; - public static int daysCount = 0; //NOT a calendar day + public int daysCount = 0; //NOT a calendar day - public static int days = 1; - public static int months = 1; - public static int years = 1; + public int days = 1; + public int months = 1; + public int years = 1; - public static int weeks = 1; - public static int dayOfWeek = 0; //0: Mondag-The first day of weekday + public int weeks = 1; + public int dayOfWeek = 0; //0: Mondag-The first day of weekday public static final int DAY_LENGTH = 79200; //must be the multiple of 3600 - public static int timeDelta = 1; + public int timeDelta = 1; - public static final String[] DAYNAMES = { //daynames are taken from Nynorsk (å -> o) + public final String[] DAYNAMES = { //daynames are taken from Nynorsk (å -> o) "Mondag" ,"Tysdag" ,"Midtedag" //From Islenska Miðvikudagur @@ -31,7 +31,7 @@ public class WorldTime { ,"Sundag" ,"Verdag" //From Norsk word 'verd' }; - public static final String[] DAYNAMES_SHORT = { + public final String[] DAYNAMES_SHORT = { "Mon" ,"Tys" ,"Mid" @@ -42,10 +42,13 @@ public class WorldTime { ,"Ver" }; + public WorldTime() { + } + /** * Note: Target FPS must be 60. */ - public static void update(){ + public void update(){ //time seconds += timeDelta; @@ -94,15 +97,15 @@ public class WorldTime { } } - public static int elapsedSeconds(){ + public int elapsedSeconds(){ return (3600 * hours + 60 * minutes + seconds) % DAY_LENGTH; } - public static long totalSeconds(){ + public long totalSeconds(){ return (long)(DAY_LENGTH) * daysCount + 3600 * hours + 60 * minutes + seconds; } - public static boolean isLeapYear(){ + public boolean isLeapYear(){ boolean ret = false; if (years % 4 == 0){ @@ -120,22 +123,22 @@ public class WorldTime { return ret; } - public static void setTime(int t){ + public void setTime(int t){ days += t / DAY_LENGTH; hours = t / 3600; minutes = (t - 3600 * hours) / 60; seconds = t - minutes * 60; } - public static void addTime(int t){ + public void addTime(int t){ setTime(elapsedSeconds() + t); } - public static void setTimeDelta(int d){ + public void setTimeDelta(int d){ timeDelta = (d == 0) ? 1 : d; } - public static String getDayName(){ + public String getDayName(){ return DAYNAMES[dayOfWeek]; } } \ No newline at end of file diff --git a/src/com/Torvald/Terrarum/MECHNANICS b/src/com/Torvald/Terrarum/MECHNANICS index 1f349e994..f7dd799e0 100644 --- a/src/com/Torvald/Terrarum/MECHNANICS +++ b/src/com/Torvald/Terrarum/MECHNANICS @@ -1,10 +1,10 @@ * Weapon tier -Natural / Common Stone > Copper > Iron > Silver > Titanium -Forging ------------> Steel -------^ -Exotic ('elven') Glass Aurichalcum -Special (something 'adamant') ??? (Use material spec of CNT, tensile strength 180 GPa) +Natural / Common Stone -> Copper -> Iron -> Silver -> Titanium +Forging --------------> Steel --------^ +Exotic ('elven') Glass Aurichalcum +Special (something 'adamant') ??? (Use material spec of CNT, tensile strength 180 GPa) * Metal graphics @@ -25,4 +25,9 @@ If the size is bigger than tolerable, weapon speed severely slows down, tools be if use time >= 0.75 second, the weapon/tool cannot be equipped. Small weapons gains no (dis)advantage, tools become unusable -Crafted tool/weapon size is dependent on the baseRaceMass. \ No newline at end of file +Crafted tool/weapon size is dependent on the baseRaceMass. + + +* Gemstone tier + +Topaz -> R·G·B -> Diamond·Amethyst \ No newline at end of file diff --git a/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java b/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java index e8a9eadc2..8c7c0fd21 100644 --- a/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java +++ b/src/com/Torvald/Terrarum/MapDrawer/LightmapRenderer.java @@ -1,12 +1,13 @@ package com.Torvald.Terrarum.MapDrawer; -import com.Torvald.Terrarum.Game; import com.Torvald.Terrarum.Terrarum; +import com.Torvald.Terrarum.TileProperties.TilePropCodex; import com.jme3.math.FastMath; import org.newdawn.slick.Color; import org.newdawn.slick.Graphics; import java.util.ArrayList; +import java.util.Arrays; /** * Created by minjaesong on 16-01-25. @@ -16,7 +17,7 @@ public class LightmapRenderer { /** * 8-Bit RGB values */ - private static int[][] staticLightMap; + private static volatile int[][] staticLightMap; private static boolean lightMapInitialised = false; /** @@ -24,9 +25,6 @@ public class LightmapRenderer { */ private static ArrayList lanterns = new ArrayList<>(); - private static final int AIR_OPACITY = 8; - private static final int NON_AIR_OPACITY = 32; - private static final int AIR = 0; @@ -53,7 +51,12 @@ public class LightmapRenderer { } public static void removeLantern(int x, int y) { - + for (int i = lanterns.size() - 1; i >= 0; i--) { + LightmapLantern lantern = lanterns.get(i); + if (lantern.getX() == x && lantern.getY() == y) { + lanterns.remove(i); + } + } } public static void renderLightMap() { @@ -93,28 +96,28 @@ public class LightmapRenderer { for (int y = for_y_start; y < for_y_end; y++) { for (int x = for_x_start; x < for_x_end; x++) { - calculateAndSet(x, y); + staticLightMap[y][x] = calculate(x, y); } } // Round 2 for (int y = for_y_start; y < for_y_end; y++) { for (int x = for_x_end - 1; x >= for_x_start; x--) { - calculateAndSet(x, y); + staticLightMap[y][x] = calculate(x, y); } } // Round 3 for (int y = for_y_end - 1; y > for_y_start; y--) { for (int x = for_x_end - 1; x >= for_x_start; x--) { - calculateAndSet(x, y); + staticLightMap[y][x] = calculate(x, y); } } // Round 4 for (int y = for_y_end - 1; y > for_y_start; y--) { for (int x = for_x_start; x < for_x_end; x++) { - calculateAndSet(x, y); + staticLightMap[y][x] = calculate(x, y); } } } @@ -222,26 +225,42 @@ public class LightmapRenderer { } } - private static void calculateAndSet(int x, int y){ + private static int calculate(int x, int y){ if (!outOfBounds(x, y)){ - byte[][] layerTerrain = Terrarum.game.map.getTerrainArray(); - byte[][] layerWall = Terrarum.game.map.getWallArray(); - int lightColor; + float lightColorR = 1f; + float lightColorG = 1f; + float lightColorB = 1f; + int lightColorInt; - int thisTerrain = layerTerrain[y][x]; - int thisWall = layerWall[y][x]; + int thisTerrain = Terrarum.game.map.getTileFromTerrain(x, y); + int thisWall = Terrarum.game.map.getTileFromWall(x, y); - // open air. TODO replace with globalLightLevel + // open air if (thisTerrain == AIR && thisWall == AIR) { - lightColor = 0xffffff; //0xe8fbff; + lightColorInt = Terrarum.game.map.getGlobalLight(); } - //else if (thisTerrain == 1) { - // lightColor = 0xff0000; - //} - // TODO lantern + light-emitter, light-emitter, lantern else { - int[] bgrVal = new int[3]; // {B, G, R} + // mix light emitter + if (TilePropCodex.getProp(thisTerrain).getLuminosity() != 0) { + int lum = TilePropCodex.getProp(thisTerrain).getLuminosity(); + lightColorR = getR(lum); + lightColorG = getG(lum); + lightColorB = getB(lum); + } + + // mix lantern + for (LightmapLantern lantern : lanterns) { + if (lantern.getX() == x && lantern.getY() == y) { + int lum = lantern.getIntensity(); + lightColorR = getR(lum); + lightColorG = getG(lum); + lightColorB = getB(lum); + break; + } + } + + float[] bgrVal = new float[3]; // {B, G, R} // test for each R, G, B channel for (int i = 0; i < 3; i++) { @@ -277,45 +296,44 @@ public class LightmapRenderer { } //return: brightest - opacity - if (thisTerrain == AIR) { - bgrVal[i] = darken(brightest, AIR_OPACITY); - } - else { - bgrVal[i] = darken(brightest, NON_AIR_OPACITY); - } + bgrVal[i] = darkenFloat( + brightest + , TilePropCodex.getProp(thisTerrain).getOpacity() + ); } // construct lightColor from bgrVal - lightColor = constructRGB( - bgrVal[OFFSET_R] - , bgrVal[OFFSET_G] - , bgrVal[OFFSET_B] + lightColorInt = constructRGBFromFloat( + bgrVal[OFFSET_R] * lightColorR + , bgrVal[OFFSET_G] * lightColorG + , bgrVal[OFFSET_B] * lightColorB ); } - //return lightColor; - staticLightMap[y][x] = lightColor; + return lightColorInt; } else { throw new IllegalArgumentException("Out of bounds of lightMap"); } } - //public Graphics getGraphics() { - // return lightMapGraphicsInstance; - //} - - /*private static int darken(int RGB, int darken) { - if (darken < 0 || darken > 0xFF) { throw new IllegalArgumentException("darken: out of range"); } - - float r = getR(RGB) * ((0xFF - darken) / 0xFFf); - float g = getG(RGB) * ((0xFF - darken) / 0xFFf); - float b = getB(RGB) * ((0xFF - darken) / 0xFFf); - - return constructRGB(r, g, b); - }*/ + /** + * + * @param data Raw channel value [0-255] + * @param darken [0-255] + * @return darkened data [0-1] + */ + private static float darkenFloat(int data, int darken) { + return (darken(data, darken) / 255f); + } + /** + * + * @param data Raw channel value [0-255] + * @param darken [0-255] + * @return darkened data [0-255] + */ private static int darken(int data, int darken) { if (darken < 0 || darken > 0xFF) { throw new IllegalArgumentException("darken: out of range"); } @@ -357,14 +375,14 @@ public class LightmapRenderer { return getRawB(rgb) / 255f; } - private static int constructRGB(int r, int g, int b) { + private static int constructRGBFromFloat(int r, int g, int b) { if (r < 0 || r > 0xFF) { throw new IllegalArgumentException("Red: out of range"); } if (g < 0 || g > 0xFF) { throw new IllegalArgumentException("Green: out of range"); } if (b < 0 || b > 0xFF) { throw new IllegalArgumentException("Blue: out of range"); } return (r << 16) | (g << 8) | b; } - private static int constructRGB(float r, float g, float b) { + private static int constructRGBFromFloat(float r, float g, float b) { if (r < 0 || r > 1.0f) { throw new IllegalArgumentException("Red: out of range"); } if (g < 0 || g > 1.0f) { throw new IllegalArgumentException("Green: out of range"); } if (b < 0 || b > 1.0f) { throw new IllegalArgumentException("Blue: out of range"); } @@ -373,14 +391,33 @@ public class LightmapRenderer { int intG = Math.round(g * 0xFF); int intB = Math.round(b * 0xFF); - return constructRGB(intR, intG, intB); + return constructRGBFromFloat(intR, intG, intB); } private static int colourLinearMix(int colA, int colB) { int r = (getRawR(colA) + getRawR(colB)) >> 1; int g = (getRawG(colA) + getRawG(colB)) >> 1; int b = (getRawB(colA) + getRawB(colB)) >> 1; - return constructRGB(r, g, b); + return constructRGBFromFloat(r, g, b); + } + + /** + * + * @param thisTile + * @param side1 + * @param side2 + * @param corner + * @return + */ + private static int colourQuadraticMix(int thisTile, int side1, int side2, int corner) { + int rSide = max(getRawR(side1), getRawR(side2), getRawR(corner) / 2); + int r = arithmeticAverage(rSide, getRawR(thisTile)); + int gSide = max(getRawG(side1), getRawG(side2), getRawG(corner) / 2); + int g = arithmeticAverage(gSide, getRawG(thisTile)); + int bSide = max(getRawG(side1), getRawG(side2), getRawG(corner) / 2); + int b = arithmeticAverage(bSide, getRawG(thisTile)); + + return constructRGBFromFloat(r, g, b); } private static int quantise16(int x) { @@ -398,6 +435,16 @@ public class LightmapRenderer { return (x << 4); } + private static int max(int... i) { + Arrays.sort(i); + return i[i.length - 1]; + } + + private static int min(int... i) { + Arrays.sort(i); + return i[0]; + } + private static boolean outOfBounds(int x, int y){ return ( x < 0 || y < 0 || x >= Terrarum.game.map.width || y >= Terrarum.game.map.height); } @@ -411,6 +458,11 @@ public class LightmapRenderer { else return i; } + private static float clampZero(float i) { + if (i < 0) return 0; + else return i; + } + public static int[][] getStaticLightMap() { return staticLightMap; } @@ -452,6 +504,14 @@ public class LightmapRenderer { return x; } } + + private static int arithmeticAverage(int... i) { + int sum = 0; + for (int k = 0; k < i.length; k++) { + sum += i[k]; + } + return Math.round(sum / (float) i.length); + } } class LightmapLantern { diff --git a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java index 3ad9c5b93..631017aa1 100644 --- a/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java +++ b/src/com/Torvald/Terrarum/MapGenerator/MapGenerator.java @@ -50,11 +50,11 @@ public class MapGenerator { private static final byte ILMENITE = 19; private static final byte AURICHALCUM = 20; - private static final byte DIAMOND = 21; - private static final byte RUBY = 22; - private static final byte EMERALD = 23; - private static final byte SAPPHIRE = 24; - private static final byte TOPAZ = 25; + private static final byte DIAMOND = 25; + private static final byte RUBY = 21; + private static final byte EMERALD = 22; + private static final byte SAPPHIRE = 23; + private static final byte TOPAZ = 24; private static final byte AMETHYST = 26; private static final byte SNOW = 27; diff --git a/src/com/Torvald/Terrarum/TileProperties/TileProp.java b/src/com/Torvald/Terrarum/TileProperties/TileProp.java new file mode 100644 index 000000000..89c4a8914 --- /dev/null +++ b/src/com/Torvald/Terrarum/TileProperties/TileProp.java @@ -0,0 +1,132 @@ +package com.Torvald.Terrarum.TileProperties; + +/** + * Created by minjaesong on 16-02-16. + */ +public class TileProp { + + private int id; + private String name; + + private int opacity; + + private int strength; + + private boolean fluid; + private int viscocity; + + private boolean solid; // transparent or not + + private boolean wallable; + + private int luminosity; + private int drop; + + private boolean fallable; + + private int friction; + + public int getId() { + return id; + } + + void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } + + public int getOpacity() { + return opacity; + } + + void setOpacity(int opacity) { + this.opacity = opacity; + } + + public int getStrength() { + return strength; + } + + void setStrength(int strength) { + this.strength = strength; + } + + public boolean isFluid() { + return fluid; + } + + void setFluid(boolean fluid) { + this.fluid = fluid; + } + + public int getViscocity() { + return viscocity; + } + + void setViscocity(int viscocity) { + this.viscocity = viscocity; + } + + public boolean isSolid() { + return solid; + } + + void setSolid(boolean solid) { + this.solid = solid; + } + + public boolean isWallable() { + return wallable; + } + + void setWallable(boolean wallable) { + this.wallable = wallable; + } + + /** + * Raw RGB value, without alpha + * @return + */ + public int getLuminosity() { + return luminosity; + } + + /** + * + * @param luminosity Raw RGB value, without alpha + */ + void setLuminosity(int luminosity) { + this.luminosity = luminosity; + } + + public int getDrop() { + return drop; + } + + void setDrop(int drop) { + this.drop = drop; + } + + public boolean isFallable() { + return fallable; + } + + void setFallable(boolean fallable) { + this.fallable = fallable; + } + + public int getFriction() { + return friction; + } + + void setFriction(int friction) { + this.friction = friction; + } +} diff --git a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java new file mode 100644 index 000000000..2fe9f315e --- /dev/null +++ b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java @@ -0,0 +1,81 @@ +package com.Torvald.Terrarum.TileProperties; + +import com.Torvald.CSVFetcher; +import com.Torvald.Terrarum.GameMap.MapLayer; +import org.apache.commons.csv.CSVRecord; + +import java.io.IOException; +import java.util.List; + +/** + * Created by minjaesong on 16-02-16. + */ +public class TilePropCodex { + + private static TileProp[] tileProps; + + public TilePropCodex() { + tileProps = new TileProp[MapLayer.TILES_SUPPORTED]; + + for (int i = 0; i < tileProps.length; i++) { + tileProps[i] = new TileProp(); + } + + try { + List records = CSVFetcher.readCSV("" + + "./src/com/Torvald/Terrarum/TileProperties/propdata" + + ".csv"); + + System.out.println("[TilePropCodex] Building tile properties table"); + + records.forEach(record -> + setProp(tileProps[intVal(record, "id")], record + )); + } + catch (IOException e) { + e.printStackTrace(); + } + } + + public static TileProp getProp(int index) { + try { + tileProps[index].getId(); + } + catch (NullPointerException e) { + throw new NullPointerException("Tile prop with id " + String.valueOf(index) + + " does not exist."); + } + + return tileProps[index]; + } + + private void setProp(TileProp prop, CSVRecord record) { + prop.setName(record.get("name")); + + prop.setId(intVal(record, "id")); + + prop.setOpacity(intVal(record, "opacity")); + prop.setStrength(intVal(record, "strength")); + prop.setLuminosity(intVal(record, "lumcolor")); + prop.setDrop(intVal(record, "drop")); + prop.setFriction(intVal(record, "friction")); + + prop.setFluid(boolVal(record, "fluid")); + prop.setSolid(boolVal(record, "solid")); + prop.setWallable(boolVal(record, "wall")); + prop.setFallable(boolVal(record, "fall")); + + if (prop.isFluid()) prop.setOpacity(intVal(record, "opacity")); + + System.out.print(prop.getId()); + System.out.println("\t" + prop.getName()); + } + + private int intVal(CSVRecord rec, String s) { + return Integer.decode(rec.get(s)); + } + + private boolean boolVal(CSVRecord rec, String s) { + return !(intVal(rec, s) == 0); + } +} diff --git a/src/com/Torvald/Terrarum/TileProperties/propdata.csv b/src/com/Torvald/Terrarum/TileProperties/propdata.csv index 801a2c473..2e72b6385 100644 --- a/src/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/src/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -1,19 +1,46 @@ -"type: excel"; - "id";"name" ;"opacity";"strength";"isFluid";"viscosity";"isSolid";"isWall";"luminance";"drops" ; - "0";"TILE_AIR" ; "0"; "0"; "0"; "0"; "0"; "0"; "0";"NULL" ; - "1";"TILE_STONE" ; "8"; "25"; "0"; "0"; "1"; "1"; "0";"TILE_STONE" ; - "2";"TILE_DIRT" ; "8"; "6"; "0"; "0"; "1"; "1"; "0";"TILE_DIRT" ; - "3";"TILE_GRASS" ; "8"; "6"; "0"; "0"; "1"; "1"; "0";"TILE_DIRT" ; - "4";"TILE_PLANK_NORMAL" ; "8"; "12"; "0"; "0"; "1"; "1"; "0";"TILE_PLANK_NORMAL" ; - "5";"TILE_PLANK_EBONY" ; "8"; "12"; "0"; "0"; "1"; "1"; "0";"TILE_PLANK_EBONY" ; - "6";"TILE_PLANK_BIRCH" ; "8"; "12"; "0"; "0"; "1"; "1"; "0";"TILE_PLANK_BIRCH" ; - "7";"TILE_PLANK_ROSEWOOD" ; "8"; "12"; "0"; "0"; "1"; "1"; "0";"TILE_PLANK_ROSEWOOD" ; - "8";"TILE_TRUNK_NORMAL" ; "8"; "12"; "0"; "0"; "1"; "0"; "0";"TILE_PLANK_NORMAL" ; - "9";"TILE_TRUNK_EBONY" ; "8"; "12"; "0"; "0"; "1"; "0"; "0";"TILE_PLANK_EBONY" ; - "10";"TILE_TRUNK_BIRCH" ; "8"; "12"; "0"; "0"; "1"; "0"; "0";"TILE_PLANK_BIRCH" ; - "11";"TILE_TRUNK_ROSEWOOD" ; "8"; "12"; "0"; "0"; "1"; "0"; "0";"TILE_PLANK_ROSEWOOD" ; + "id";"name" ;"opacity";"strength";"fluid";"viscosity";"solid";"wall";"lumcolor";"drop";"fall";"friction" +# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky + "0";"TILE_AIR" ; "4"; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "0";"16" + "1";"TILE_STONE" ; "32"; "25"; "0"; "N/A"; "1"; "1"; "0"; "1"; "0";"16" + "2";"TILE_DIRT" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "3";"TILE_GRASS" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "2"; "0";"16" + "4";"TILE_PLANK_NORMAL" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "4"; "0";"16" + "5";"TILE_PLANK_EBONY" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "5"; "0";"16" + "6";"TILE_PLANK_BIRCH" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "6"; "0";"16" + "7";"TILE_PLANK_BLOODROSE" ; "32"; "12"; "0"; "N/A"; "1"; "1"; "0"; "7"; "0";"16" + "8";"TILE_TRUNK_NORMAL" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "8"; "0";"16" + "9";"TILE_TRUNK_EBONY" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "9"; "0";"16" + "10";"TILE_TRUNK_BIRCH" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "10"; "0";"16" + "11";"TILE_TRUNK_BLOODROSE" ; "32"; "12"; "0"; "N/A"; "1"; "0"; "0"; "11"; "0";"16" + "12";"TILE_STONE" ; "32"; "25"; "0"; "N/A"; "1"; "1"; "0"; "12"; "0";"16" + "13";"TILE_SAND" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "13"; "1";"16" + "14";"TILE_GRAVEL" ; "32"; "6"; "0"; "N/A"; "1"; "0"; "0"; "14"; "1";"16" - "32";"TILE_SNOW" ; "8"; "6"; "0"; "0"; "1"; "1"; "0";"TILE_SNOW" ; - "33";"TILE_ICE_FRAGILE" ; "1"; "1"; "0"; "0"; "1"; "0"; "0";"NULL" ; - "34";"TILE_ICE_NATURAL" ; "6"; "25"; "0"; "0"; "1"; "1"; "0";"TILE_ICE_NATURAL" ; - "35";"TILE_ICE_CLEAR_MAGICAL"; "8"; "25"; "0"; "0"; "1"; "1"; "1";"TILE_ICE_CLEAR_MAGICAL"; + "15";"TILE_ORE_MALACHITE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "15"; "0";"16" + "16";"TILE_ORE_HEMATITE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "16"; "0";"16" + "17";"TILE_ORE_NATURAL_GOLD" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "17"; "0";"16" + "18";"TILE_ORE_NATURAL_SILVER" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "18"; "0";"16" + "19";"TILE_ORE_RUTILE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "19"; "0";"16" + "20";"TILE_ORE_NATURAL_AURICHALCUM"; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "20"; "0";"16" + "21";"TILE_GEM_RUBY" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "21"; "0";"16" + "22";"TILE_GEM_EMERALD" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "22"; "0";"16" + "23";"TILE_GEM_SAPPHIRE" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "23"; "0";"16" + "24";"TILE_GEM_TOPAZ" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "24"; "0";"16" + "25";"TILE_GEM_DIAMOND" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "25"; "0";"16" + "26";"TILE_GEM_AMETHYST" ; "32"; "25"; "0"; "N/A"; "1"; "0"; "0"; "26"; "0";"16" + + "27";"TILE_SNOW" ; "32"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" + "28";"TILE_ICE_FRAGILE" ; "8"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" + "29";"TILE_ICE_NATURAL" ; "24"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" + "30";"TILE_ICE_CLEAR_MAGICAL" ; "32"; "25"; "0"; "N/A"; "1"; "1"; "855567"; "30"; "0"; "8" +# see scandinavian name set female of this tile id! + "31";"TILE_PLATFORM_STONE" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16" + "32";"TILE_PLATFORM_WOODEN" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16" + "33";"TILE_PLATFORM_EBONY" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "33"; "0";"16" + "34";"TILE_PLATFORM_BIRCH" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "34"; "0";"16" + "35";"TILE_PLATFORM_BLOODROSE" ; "2"; "0"; "0"; "N/A"; "0"; "0"; "0"; "35"; "0";"16" + + "36";"TILE_TORCH" ; "0"; "0"; "0"; "N/A"; "0"; "0";"16777215"; "36"; "0";"16" + +"239";"TILE_WATER" ; "16"; "100"; "1"; "2"; "0"; "0";"15464447"; "239"; "0";"16" +"255";"TILE_LAVA" ; "0"; "100"; "1"; "2"; "0"; "0"; "8397312"; "239"; "0";"16"

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 literal 91662 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