From 95092ea56cab55eec9d92f381d8f4b262a9e088a Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Fri, 11 Mar 2016 13:26:42 +0900 Subject: [PATCH] more draft on Actor inventory (save ), successfully implemented 9-set hangul johab font, Hashtable -> HashMap Former-commit-id: 4f51d33a166ca10ee49c471104ebe97aeee33fe7 Former-commit-id: 0066f44d522f3c9d96ad57b92d17a05dc920bffb --- .../com/Torvald/ColourUtil/HSVUtil.class | Bin 2133 -> 2054 bytes .../Terrarum/Actors/ActorInventory.class | Bin 2441 -> 3336 bytes .../Torvald/Terrarum/Actors/ActorValue.class | Bin 327 -> 325 bytes .../Terrarum/Actors/ActorWithBody.class | Bin 18921 -> 18998 bytes .../Actors/NPCIntelligentBase$1.class | Bin 1346 -> 1396 bytes .../Terrarum/Actors/NPCIntelligentBase.class | Bin 4005 -> 4005 bytes .../Torvald/Terrarum/Actors/PBFSigrid.class | Bin 5256 -> 5260 bytes .../com/Torvald/Terrarum/Actors/Player.class | Bin 10489 -> 10568 bytes .../ConsoleCommand/CodexEdictis.class | Bin 3118 -> 3115 bytes .../Terrarum/ConsoleCommand/CommandDict.class | Bin 2965 -> 2959 bytes .../Terrarum/ConsoleCommand/GetAV.class | Bin 3203 -> 3203 bytes .../ConsoleCommand/GetFactioning.class | Bin 3804 -> 3804 bytes .../com/Torvald/Terrarum/Game.class | Bin 12662 -> 12663 bytes .../com/Torvald/Terrarum/GameConfig.class | Bin 313 -> 311 bytes .../Terrarum/GameItem/InventoryItem.class | Bin 337 -> 363 bytes .../Torvald/Terrarum/GameItem/ItemCodex.class | Bin 0 -> 802 bytes .../Torvald/Terrarum/GameMap/GameMap.class | Bin 5053 -> 5053 bytes .../Torvald/Terrarum/GameMap/MapLayer$1.class | Bin 1253 -> 1253 bytes .../Torvald/Terrarum/GameMap/MapLayer.class | Bin 2055 -> 2055 bytes .../Torvald/Terrarum/GameMap/MapPoint.class | Bin 1213 -> 1213 bytes .../Terrarum/GameMap/PairedMapLayer$1.class | Bin 1310 -> 1310 bytes .../Terrarum/GameMap/PairedMapLayer.class | Bin 2169 -> 2169 bytes .../Torvald/Terrarum/GameMap/WorldTime.class | Bin 2579 -> 2658 bytes .../com/Torvald/Terrarum/KVHashMap.class | Bin 0 -> 1948 bytes .../com/Torvald/Terrarum/KVHashtable.class | Bin 1962 -> 0 bytes .../com/Torvald/Terrarum/MECHNANICS | 9 ++ .../Terrarum/MapGenerator/MapGenerator.class | Bin 18368 -> 18381 bytes res/graphics/fonts/han_johab.png | Bin 1775 -> 19529 bytes src/com/Torvald/ColourUtil/HSVUtil.java | 12 +-- src/com/Torvald/Terrarum/Actors/Actor.java | 4 + .../Terrarum/Actors/ActorInventory.java | 44 +++++--- .../Torvald/Terrarum/Actors/ActorValue.java | 7 +- .../Terrarum/Actors/ActorWithBody.java | 66 ++++++------ .../Terrarum/Actors/NPCIntelligentBase.java | 17 ++-- src/com/Torvald/Terrarum/Actors/Player.java | 35 +++---- .../Terrarum/ConsoleCommand/CommandDict.java | 6 +- src/com/Torvald/Terrarum/GameConfig.java | 4 +- .../Terrarum/GameItem/InventoryItem.java | 9 ++ .../Torvald/Terrarum/GameItem/ItemCodex.java | 20 ++++ src/com/Torvald/Terrarum/GameMap/GameMap.java | 9 +- .../Torvald/Terrarum/GameMap/MapLayer.java | 3 +- .../Torvald/Terrarum/GameMap/MapPoint.java | 2 + .../Terrarum/GameMap/PairedMapLayer.java | 3 +- .../Torvald/Terrarum/GameMap/WorldTime.java | 96 +++++++++--------- .../{KVHashtable.java => KVHashMap.java} | 17 ++-- src/com/Torvald/Terrarum/MECHNANICS | 9 ++ 46 files changed, 223 insertions(+), 149 deletions(-) create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/GameItem/ItemCodex.class create mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashMap.class delete mode 100644 out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashtable.class create mode 100644 src/com/Torvald/Terrarum/GameItem/ItemCodex.java rename src/com/Torvald/Terrarum/{KVHashtable.java => KVHashMap.java} (78%) diff --git a/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSVUtil.class b/out/production/Terrarum_renewed/com/Torvald/ColourUtil/HSVUtil.class index b43ccff97780f0541b5ff3ee333724e45e6d2fa8..5010a249d2ff21b0ef493ee264e4062733042c36 100644 GIT binary patch delta 978 zcmZ8fOHUJF6g~59hY?z+RErj9DUYhC-~&Mrc?=>T6tFr%RUif>ffyG?R%KxzF=}ka zg^4l#0W~%ul&Epxk_{{3k1(#?iRWtxX>9VHIdi`|_nvcmcYLe9+O5A|z5_UeJ0?Qt zQG3?`wdWyVq8EJz`ZKjvwr!#W112hQMZlndt0oR($jggi0V4vgiH}AFj2TFXtO2!q z1u!sfU?RJ=BT2TKlEWocIAUPZ!gVCwRk^vf3O6j=gk#~BfGGhHL@l%-X5oT>b^+5! zS-6dqgivNXq(}&7w!?0N(y7?C?anLJX=U-jk_4@B%5JhHD2p>sP)ng9dZaN(U~A%0 zzMbS#;!}&~AZ1Bpgo%1S=tVWTRY*V$ivV7si4lG*Z86WwST0g7KkBWEF4!?EQm(iy z>f1oj2x_xI46smrQCNh;` z-XKn)&)oi6$JiF5zgg#3ll5s_y?kc+k!0 z^(B=~Q0HhoIRxDwdZTp6{iWBWi=um@Vw-UUh(l~T%(f#a!zhi9;XEeMfh2mkEQ4?` z!Bt6eqz+P;$6YL82FsYm3g++v_c*k9yvKcf#6sTSOO&#T!gUv8OTv%z+59XYGgx5H z_8Hyc99wcjupu^)voMhr>&V%a;e*&oW=GkkgG^=aQ(Pp|7>VxHb10|Ku7k2VdF!G4 vWpt5w(LBuZUC?)F#WZk97C-(qJiDkU3gyH8id`z$&nx5xD65-QWL*9S&q#s_ delta 1069 zcmYjPOHWfl7(MsVd)sow(xMd#w8+C274VHOgce#W&mtfd5P4LTC^4dmx+xOHg~Y_% z#9+e01sl|bBq~S@8x|(+aqBPeFNkMuD{_5iW_);zS`@#X_41?ILuD%1#jyI=V#G zWwl`%(9x}i4Jlb=5J*w;5H^+cy+IB!~*s#Si!E3Oi|!B z->J{j0pfv75h_s08Ow2iNXXbgkVxkG8bU-0WiO$MNTr5F93-+)z*`(5(pa~E!$dk) z=21;#=as-NXcwIo_mKqmlL%>@%mdpj2QkXo2(&Hft!4>_R?c3+1%JjW+hUg9daWf^Njni+1#( z2T2T}pD%3yDL%w0zP`tNe9y?tVH9u3E@B+-aT8xLVO{nma+$5*gk|ms@{m4hIX*)& zgI;eV-W;b;XSuSD)6A17<}>{jz4YM&&JrmUHji^eD&;-Jc_JGRF3awhqMXceF-)VL zt9HtN#5Pv)dNr-wzFxF-2u>XhR%6*F8Q6kn2gL;-&$GpjZ0Ct&&?yOx+(kzCFX}Cn A)Bpeg diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorInventory.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorInventory.class index d173b1c0623283e61e9c179f974104e8499cac74..e9118fca332c1583a0cdbfdfe51daa93206c4314 100644 GIT binary patch literal 3336 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 L{8Pv=5W~d((B$iO diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorValue.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorValue.class index 348d193f4f8215419be223b2e83833a9443cb6ea..fc6d024cbc77d6739e4dbedd845aceeb03d23e8b 100644 GIT binary patch delta 47 zcmX@kbd+hrWqG;e{9OHz{GzhNoD}_#)S{xqqS9P_?=X+V;tb!!f{9G7geWzFh;M^Z3kC=f%4&nkFSS;$$;Yx*5^GuVR7u5Bkt|d3kv+_w(%EQrSIw;TyZ`^*`|PvNxdW#qZe5Gv zEthwE3;@aWvI*O8vz{|J9U7u1q&grR-_hO6Q{1fH)w7lWuzF9=XuP7{H!xt}2YO~M zfQeghE2p>VX&0N;G^|QA*){6!EqZ;!4wsMJZar;UTRW>}-L3Xy)nZ_)3FB}xqm3i& z26mW`jGNi)aXKeiWZRF=S?y;WU>r2C%Y-yM#O4demyE-VBL*Hd)w6qwiN~;q zLtn8v&gyFuzrho%zUA>x>KS!>kW+Y?W4*lY4C5^09LLT(sAj|+DcC`RoOT*u(m)E~$RIm~a&Z_V zoFfseBGrr(#p)W9qRDqHXJXh7W*^ITh(SXQiZfxQx>>r8u2+g&b{fXdcoSAof;v47 zHz|=un3O~#dDSS!Xxq*US4UI(jL}n*-h4|>Pw#)nG?pvIF~;+OCTPAsUtb?LxPg(( zNMYQ_H8(LPGA1!5>uKxPZ_szvUFmf*k9-RwRlO5RW4IaV4mDZ^Bh!Q|y46lucFN{c z=h$fqpCH#xd3Ku0^0t9?nr6`L22D5U4ukFt)M>-)7zn%(oIuzWXmgfo&XQtpcImuo zucy%Ct(7T*diA>m-7Q_A^}+XGnSkHmcZ3Alpd~m3dd|3ME z8G>fwQ~_PEOHcu;gRsk>S%MzG909%1C}=iT7&J%FgVG;XRWMh@X&&PtTqmdy>jV{H zl%Qgc%~!x>oG4KVj8q96i>AN{Xd1LYkcS>da2A%AmU@ajWhJG>^SuT=BB+!W$~oa9 z#uspxGG03oC-ZR1mUF)fsx+udP&Mzc7$*txQl+38xjj7Bw@A=pdQ?y?EkOvK9G72J zURDxU?I|jb^ORN8cm*w`Wda?vP|#zv+#sKzI;uD5aY0XDjlg_$bj;?>R?tcXTq-b^ zcgj-{(`=t%tmYNvSRt?y(-ddmOo1D?=2@f z$j>(|8EdfyVMvi@k?f9$k%uB&G3&4bA!JrYp|`v$-{W17Szc5-JC2X_qKu5p*J|md zKt<$8+h{*DLn9!xsGl^cFF-4_Db_(dbg1|zO54yGMBdzg!mU!VPj`Y*e%#PFiY0!4Idd*6fXq^7-M6C3{w7&%v&LW<9U` zcNTv^`R^_M2jzdX_@9)&Xz?eM|M@@ulEwd0pbCDq4B%43t3L!j0{meqkK?&+#V`9J+=SjpI zS(z0U>U>)z356oRG0>W1Mot92B3I{@M1Kl4?K4QwnqidI0?Aq{q-yPut#!!Yyd>>a k+$bmJO?B=AUF(El+I~pV4#+imiTIk_o|k02-rsrCUo@zELI3~& delta 1766 zcmZXUc~n$&6vywq?=f%Y`NL$`LItN-M8q9REe4oS2h#RLFv|kPDPj=8Eps5H)iQco zNB_{$`ltTLoYZrwlVpcd1h)z`H(Jb{%raZ0d(rBhnmOn5?)TpNyUTBu%`5Pfg$b>f z-}?{%vgj2Pw%~eweE&RfK@7g$6f-hM&t06IE9z~%U?KGQH|Y7zSFCpo+-P7}_xS-# zd>1!K;%41@aocjSwlpnCH}%|2dV{FurcKEq-8-?ZUDS3xmwSq}!@yP(hU0p{PVuxE z*lt1=t{1V(1+lo>g?n(X$R6wy>odXUf-em0Fu{xaMH~G}1t$O$|tzEg7UwBU^3toY6ex=d>g4&=>Jr~4#w$=Z#n zAuo3G5F{5tC>9Acfi8%UfI}=p;B@46@(u8dOOQ)ox~LZ^Cq zo*1!Wc}9v8E8e7QDM13EzM}hy?k_sgpd^C^n9#^KOCGw8ExO)G$?{AwVJW5Z_LOGQ zKuR}h5M{`z!GcW3*7H|K<32<5oQyZ$()03qK4Tgx8N&p_WuXyTsJpwH&xdHFR2e16 z5@bux4T2j5qXlDh@2XX+^{w?+YK@hVZxYgetA7m_Z{-q{^dmb~KKa;aFBl zy&&-vvlZ1yhj}PqiUYN?e8KVs(>$`)N-Hg{Ses8ThwI}8JBGMn2Q&jhD}RZJ z-vB$IjS0{WyV(B`TMmBi7MFFP|D1du9O^mocjPb!d~oD{J~te-RX)bGJ6Qv`t!0VH z*w@;S7@y#V6Sf>TxZ&j0oX*7fkQ>g}qGvgJ4qE=1wTt!lHhrG;4>o;)^^Z3F6YGmM zeVp~r|IwFh`j=8p_|-N*G7rx`1X%(8uqDbMf7-MRa@nS3kZzmiL99JV@nfP;``3#) zxG}=kEt9pwriTKdfllr|DeM{08zWNr&v0OPlqZmG9rVvk*ai;mV@T6lAXEDUvb0Yj xN8178v{q|MVTQH_*IJE*MUm~GYr7yt+XETeUh8mSI=*T}6lEB%ab3c7e*t7KWc&aC diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/NPCIntelligentBase$1.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/NPCIntelligentBase$1.class index 4a3c50cf97adf0663e23dd307375fcd069a78375..5b43492b9f8d3c835452a5273b0ed278ca2bad68 100644 GIT binary patch literal 1396 zcmb7@YflqF6o%hvE2U+HDk$C+En13U!AoL-Vz7X&DM+-yM>FgW+lB26nH^~OQJVO{ znE1gT;Eyt%Sqd7&w6xjDo|*GLb8h?d*Y_U)o?x@FhR2n&iYL|? zay1nQhM{^S#mZi5Q|JcYjA`d$UHLp-=Q^@>XESF5WpF$xg|5XsNd%dX&UkTohT<-S z!gxlsyak4AW#aAO&W4D>rb%~}7>32xmhjC+Gm3>LSCzjb=xn@FS2}d1Xa~G4-6W3u z9rrbFiJFpzQyzNOv#Di5pJA-4FGD^MvEd&H%{)r{=u#n9i7bM(U54VWj#^wFtR++$ zClS7q!I3%gN6=_$)t2*Zen65BYES!OiDG9M{kL~h+kBr>*N@H=hsVL7dlq}tixeVQRo7+@GhRIVYws5u&t|#|ts+2yk7Q@u3-v6CM zhCyx&_nTI|zzt}Ge^Mvt&8Zl!IyO#=oRurb`lAiWi-vbNsz`wd&31E~N2 literal 1346 zcmb7DYflqF6g|^cm(~?(#rF%eXdi|JB=G~L28)su`??1kN1F($8S!8fOhjVz4!wiZR<}5t4@QC5O zX@_xffnlNHsgBc9`iMuq(-K;9-R(H5o>4k>Hk)-<8WBZdAf$Q0W3fWmXQ2#Djp0e@ ztl;uCL#D2L!7$YbrP%Ctc7<;7-H3Jy4dwA@o9i&KhntxsQ3l(UQs{cb<5-ZnbjHBN zManxH2(u%?pluk^rSdw%WwEy>JhRgdBjL)X@(u)@&6OHT2aXgypZBB_N1=D%yy6{E zSJH6GTCcdtMN)ysFgwzh!SY39_&cIzE?x5^sE|!!7XH>DL+((A9j=eJVk(3k3r|V^ z#GL*OXtlNK$<-b|CdgaW)t*?V+!?O@+o}0|e#EKHFQpf$IF!MLFm2^qDA_2ZV#C6O zjcl^2qCiSGn-GeN4EZF46LA?hZ+7>ok_^>TS(56xMsyrk9+8lgK29u#`BT0BD?Wxv zZVdO@33`nix*j!>T47OZH%J?#@(jtHGzyl_CpV-Y!J;pV9PM79RShY6fn25f39Rx3 zsSjkOVADt_8kcdA#;XG_Od?Mf`S;nVg}8*mkZXzN1Tj(h2=*E2_q6_#>1m(I9{3EI zNOhPV;-8a$nm+b-3bj6PW^ni`1%@k>RuYgJj_VYP;l^mPwXw-=jwX9OHrcJwWX-Y3 gZjUD09+NDMJN-7@#XXucB$-)E(JB#0hGu$x0)7?)6#xJL diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/NPCIntelligentBase.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/NPCIntelligentBase.class index e8be17dee4cbabe7db3b27dd9f00650628cd2ae7..f4e1e88b62a2ade103306fa178f53761757a42d9 100644 GIT binary patch delta 205 zcmZ1~zf^w1Gfu{)$ZO+a2V tkS991o==^z9cZ@bUj6IVd^4YRZ1ge+>HrtBdfOQ&>Hyy|`0{~0WFsA?j delta 205 zcmZ1~zf^w1GfqaP$d2ARHf%1}*Q+ae)(->G8(kJKhi%(w5 z6U&;-AiT2yZ!l{q(3G;tS9qN`tAJ{&8Mqi~Cd>0VaW(*XjX+)# tkS991o==^z4QRILUjNOwT^4YRZ0IHY>HrtBdfORU6Hx0-$0|48wFa-br diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PBFSigrid.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PBFSigrid.class index 9c496f9e1edbdc90dbd49d6739ec1cb33a32425d..dd6a3d1df8b471d8f3926a2311203a782ccc4aac 100644 GIT binary patch delta 62 zcmeCs?9tqi$;>D-`9HH1o1rNqgRjQqiA=haw=sJ_1X&GD7#YCQtcJ!=7L%dT<}el` F0RR~c5CZ@J delta 53 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 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 33b5ac130de4979e8721307164ebce1a11b76c86..f8cbcefe03d40936d278424be29c338b17e73baf 100644 GIT binary patch delta 87 zcmZ1{v07q7B$I@2PGW9SN}@_ZQD$C=PiAq6ilHGRgT2ONMJBDyvzU@uG=zP!63Y_x cOG`3y^gR-bGkg;ZtQi>uF$6bjva_-R0K4cL6951J delta 89 zcmZ22u})$`B$Jp>PGW9SN}@_ZQD$C=PiAq6iYX(5{p3P+?ai~9l38>_eXi_@% diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandDict.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandDict.class index 2263a97959c48e72242b8615ef43d04f6196e944..c02ba3e5ab74d8ff99a1813382a22d1faf1b8e6e 100644 GIT binary patch delta 90 zcmbO#-Y>pEozYa-Co8cmQNOe#Ge_Seu{gswvA~*#02CQ2 A(f|Me delta 131 zcmeyK^et(_BW_{-oW$Iulth)H)V!3`A{A3chP=s%+@h1$%W6*E!y`8NgOtqVG#(Ka z6Gnz)Bndk)V@3v;-qM1U#FA7MBSwZ`s1n}Evv|e9dQ*A%SqvE&Jdh;J84WgH;$5l? E07`KwkpKVy diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameConfig.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameConfig.class index 2d92adb8fe68ddc54893608c5e398c285cf84e5b..3ead73d335f451b59e6289e707c6fdd1dabc6c95 100644 GIT binary patch delta 47 zcmdnVw4G_fQF*!K{9OHz{GzhNoD}_#)S{xqqS9P_?=X+V;tb!!f{D+}7}+MvGRgn| Ds!b5Z delta 49 zcmdnaw3BJVQALI1{9OHz{GzhNoD}_#)S{xqqS9P_?=X+V;*65Sq@2`=Ps|uOCQCEQ F007Z{5wQRO diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameItem/InventoryItem.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameItem/InventoryItem.class index c120d386def458aa0021a614ca8b4a00c8dbf5c2..1d9123e5be91010380ac47bf8aa0a5a6bdd0fc28 100644 GIT binary patch delta 111 zcmcb}^qNWO)W2Q(7#J8#7zEiF_}Li*7#TRzQ%gKcQgc0B7#Wx~G`%(ourWHbvj8~^ lEDQ`lnw5bKOtUj^fN4%B%>|{op)?POW?*FC1(Hk*d;s?H3s?XE delta 85 zcmaFObdgEm)W2Q(7#J8#82H&4c-a~FHY%|(TC=e*GB7i+FfagVRt7dO%?_nGpfo3x Q<^s_Sj11gBl8J!_00}+^8~^|S diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameItem/ItemCodex.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameItem/ItemCodex.class new file mode 100644 index 0000000000000000000000000000000000000000..f741d7d729698c9244a5015cbd712a8a0ecec83e GIT binary patch literal 802 zcmb7C%T60H6g@Wy84`v-c$LyZ%R7L?u;>CQhz(K;XaET!_Re5}(L9iuiQunj7l2qG z*8M2d>j{WKT|_MGYoB|3ALsh-^TQ*6AE=dK;d2Q^OqB5jU(1-pl!b2=zFU|klvFH( zt>{Ev5r*A!(H2e;E8p1`muGw8qRxyX)e1$NXh}HypRv(_d=a)BHws&I*NXzD5$U$@ zPn?F-TIeKjeu+Tta4KgfY|Ai?^tHLwH#tFZLxn2dB;;#L$Ap5ZhA`l&Q0^x|Q|g9j z`iu;@kth6Pp_RG6fQ9%>T@seMWqs|E^I0t!o8*MG+HTi}@5<%sytF#nC6te%M0@h5 zGR0L)#8k&sBccr({Wf}0vM^&~7IPNnZ7g7su<`+c2#a0VuW1Q`>GaY;95m0R7jso_ zkeLnl&QnR`!6^^h^#0z>+Eh~{`vZ6^tQTRSmSK0|*Rug$AWZXDv-s<=KBoQD0y*^Y zBBKiL74|!9iEYpF9q2b7av0#fn1a0+_+mocA2%@elv;8QzK zoTO-zA7$moVTuFE!C{9f2TuL~2cI4nmv^sMectu?dK`s5TZyTh5>Y990^RL3rpyxgk@CffrMVl zTKYskeOcmSnEckbn4|^Hc{;R4#R^R+F8Z+=V%?;OVu%f^rTM3CY8R~@C zrY&_)>`;kwm(xdMT7$@#l+&7}ENs}PPi;mzVmfAOp|mY5=U_pecR!_~ZB0IByI{Ly zi&4rRkglMhKxg)hdd+kLH*QgfI~sA!N=3fpp6t$QDm(nr1KT6pkotrwJi~z(=y;`7 g=bU)^+tz7_l1Ytvy;SD;cm9K$mi2)6pgrCD3(1CMNdN!< diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/MapLayer$1.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/MapLayer$1.class index 0a91bfa1d5cf451c86fb07959d3ee9387d9353f4..d71e19445b9c1157b574ae6d498a6f604bd93e91 100644 GIT binary patch delta 47 zcmaFL`IK`*Av3E611E#l`!(arYEr5JG2KmW` ztnG{%lXtQv@dg0Z1On9rF(@$vPu5^dVa%A^%jUwEGx-u*C~E=Gq{7KM?D@Q<3>*w) PKvOG$>Z>QOV2=j?_z4!? delta 119 zcmZn{XcyQporO_y@(h*|Rbd7e1`!5M22ln+25|-n21y2a1}O#&25AN(AZ-EU+cC&Z zHe_vQRG++)HHp_Bs3riYCXhjiA!xD&TMA?PCMnv?G{8E}dKMMN2R8N?<_ rFlTW}GO#j80p+EE^4Xkn4Ezl8K&UYJKXVGBGT4+#7Ij8-AWH@Sf|(Md delta 97 zcmdnXxtDW88WSrQ0}BJsnv?G{8E^^#MT8l68AK*a rFlTX!Gq5s90Ocit^4Xj+K((?A@(gm5|1+mBDuPX^WKm~S1+ruSe613L diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/PairedMapLayer$1.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/PairedMapLayer$1.class index 8ef4768103a17d52f2c8ff011a529cf604f5b247..26d57bf82286f8960b0bfaca5aa135e912cba506 100644 GIT binary patch delta 47 zcmbQoHIHk#qRcQtm1{nr!23ZCH26-S$kwKY3i9ruYS^#M~Am4>SZSp?W zc1HclZfx$1;gkE=JQ;H*-(XAOEM#C~C}t36D4XocepIlEL5rc9!GNKbA&8-Yp@5-r IvNT5=09?lv^Z)<= diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/WorldTime.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameMap/WorldTime.class index d6e0e95b257c377d12e7d4e71925b450cac70a49..e3045e91c15347b7d18e84ee0b423f5d18e1c75d 100644 GIT binary patch literal 2658 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 F(qEIrf3N@m literal 0 HcmV?d00001 diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashtable.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashtable.class deleted file mode 100644 index 8754597b36e5cb91a01bf93442b54b9722db3f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1962 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 b6^dsMuL@=Sl5qvtAvcUmwQd21!K?oZrjk>R delta 7092 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 diff --git a/res/graphics/fonts/han_johab.png b/res/graphics/fonts/han_johab.png index 11bc3ca034c8fc2e1da26e22dd2a99b138c3150e..9d1cff0f3227a0750ce413038ed4c5f97aa8218c 100644 GIT binary patch literal 19529 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 literal 1775 zcmZ{kdsI_b7RGM^#1w-P(V7Y&Jf_kGOS#q3D8%rP0TuCuJhVtIQnjT;%tVchd6Jq! zO(U%$Oihi}8KeS9JGF*1{~6?%I*;R`j9$htP7nz4lU#nG47LQ%5sZAAiIJ%Y+UuzBTuMfR@COW~uEsYHZe~xaMXjgwJ zOD|-TR!h#clTyB_pXg#D&p-WJo2~r*pkD?k7up*3edoQ2n`4qjF2-_$LHcX0H~JgY zwvvw0VG5-!W>@l6MX{WA=!n;3nAhRLzNU=Cn*IQ-Ud=sX7dZ}kO_GMw!U7*?Tl}d% z(ktv0c}Ah>eSE2ntjp@Nken(6fW`nw55N-za1n73z|jCfpsVML17@L_#^=0W7TsCO zCtzZ6Ebxgt6%a_v;KH@*`(ouR?9W1sR3BJjK?+t_kosM|?-pz5Ze7_aaGZhPC{bN@ zrk|+Gt#tNZ=)g8h*WByuHH(V@ZR{TB}dIQ*|QzD{Rj80Ejrad z_gVc9a||}Cr6|*|!$oa8%K)mXP=5mDh6huGpT2+yru7P(0`-4by@We>Nf~pmAOKYi z3^|<~X}XZ++n#_Dm6SY)!=FsuT~#}JZ%M~lN}2}}jgRgxFC~47E+p{z%ygmYpUnDeJvhD9u9)u zohrq!5=R8XYE^?#e&WK|idIQP3?6j83ytLVcCC2ieIRVn^3?KJGUeiuO4?nCa4LJg zHe0Y5|5lxC8*cqgBZ;z(Ejqgdr>;V|pWulJf&h0wc)%IL1C3*Xc4(^c%F-l)fD9L7 zRh^5j!3D{cpm9$C|H7o&iM+{ald{S5fPap5 znU>?6c__`B-_)(7AlB~|?v<3rb=mBm0uC1RM;?Ac7z}Ur>io>Hrp6zfG!KcZJAEgF z&9|!AH69pZ+N|D0ycon5ZXQev#-{dqu(2X#l>3eUsPy(amYMk zl!EWPBWXOEulRPfihL}W{ITvB^V$L4&mAYz^r;2J>AC$R%J-Lgw&lQvqbW4$h%db2 zkGAuNX@Y+!4suzM=jz@^x6A7e8ep&ItKKUgQChcP;L!r6J>`Tec3P|duU@NO*(T^hDHf{)_Z?_IaWi~6xA#3d-o1{%gO%cod z)MpA-3WbjM1F3D4rwr-8*t>}my|#(oxPtaQZ5l_vGsUXwcIa+?XNz3MNuKc-jMqBCYTJ_m_}lu|9f^_zsQ5RI-9ftm diff --git a/src/com/Torvald/ColourUtil/HSVUtil.java b/src/com/Torvald/ColourUtil/HSVUtil.java index 14fcb2a87..9a79a1108 100644 --- a/src/com/Torvald/ColourUtil/HSVUtil.java +++ b/src/com/Torvald/ColourUtil/HSVUtil.java @@ -61,9 +61,9 @@ public class HSVUtil { } return new Color( - (int) ((R_prime + m) * 255) - , (int) ((G_prime + m) * 255) - , (int) ((B_prime + m) * 255) + (R_prime + m) + , (G_prime + m) + , (B_prime + m) ); } @@ -72,9 +72,9 @@ public class HSVUtil { } public static HSV fromRGB(Color color) { - float r = color.getRed() / 255f; - float g = color.getGreen() / 255f; - float b = color.getBlue() / 255f; + float r = color.r; + float g = color.g; + float b = color.b; float rgbMin = FastMath.min(r, g, b); float rgbMax = FastMath.max(r, g, b); diff --git a/src/com/Torvald/Terrarum/Actors/Actor.java b/src/com/Torvald/Terrarum/Actors/Actor.java index ad40e3602..54a60be02 100644 --- a/src/com/Torvald/Terrarum/Actors/Actor.java +++ b/src/com/Torvald/Terrarum/Actors/Actor.java @@ -10,5 +10,9 @@ public interface Actor { void update(GameContainer gc, int delta_t); + /** + * Valid RefID is equal to or greater than 32768. + * @return Reference ID. (32768-0x7FFF_FFFF_FFFF_FFFF) + */ long getRefID(); } diff --git a/src/com/Torvald/Terrarum/Actors/ActorInventory.java b/src/com/Torvald/Terrarum/Actors/ActorInventory.java index 63ecd2e70..c7d0ad062 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorInventory.java +++ b/src/com/Torvald/Terrarum/Actors/ActorInventory.java @@ -1,9 +1,13 @@ package com.Torvald.Terrarum.Actors; import com.Torvald.Terrarum.GameItem.InventoryItem; +import com.Torvald.Terrarum.GameItem.ItemCodex; import com.sun.istack.internal.Nullable; +import java.util.HashMap; import java.util.LinkedList; +import java.util.Map; +import java.util.Set; /** * Created by minjaesong on 16-01-15. @@ -14,10 +18,13 @@ public class ActorInventory { @Nullable private int capacityByWeight; private int capacityMode; - private LinkedList pocket; + /** + * <ReferenceID, Amounts> + */ + private HashMap itemList; - public final int CAPACITY_MODE_COUNT = 1; - public final int CAPACITY_MODE_WEIGHT = 2; + public final transient int CAPACITY_MODE_COUNT = 1; + public final transient int CAPACITY_MODE_WEIGHT = 2; /** * Construct new inventory with specified capacity. @@ -53,26 +60,28 @@ public class ActorInventory { } /** - * Get reference to the pocket + * Get reference to the itemList * @return */ - public LinkedList getPocket() { - return pocket; + public Map getItemList() { + return itemList; } /** - * Get clone of the pocket + * Get clone of the itemList * @return */ - public LinkedList getCopyOfPocket() { - return (LinkedList) (pocket.clone()); + public Map getCopyOfItemList() { + return (Map) (itemList.clone()); } public float getTotalWeight() { float weight = 0; - for (InventoryItem item : pocket) { - weight += item.getWeight(); + for (Map.Entry item : itemList.entrySet()) { + //weight += item.getWeight(); + weight += ItemCodex.getItem(item.getKey()).getWeight() + * item.getValue(); } return weight; @@ -81,19 +90,24 @@ public class ActorInventory { public float getTotalCount() { int count = 0; - for (InventoryItem item : pocket) { - count += 1; + for (Map.Entry item : itemList.entrySet()) { + //weight += item.getWeight(); + count += item.getValue(); } return count; } public void appendToPocket(InventoryItem item) { - pocket.add(item); + long key = item.getItemID(); + if (itemList.containsKey(key)) + itemList.put(key, itemList.get(key) + 1); + else + itemList.put(key, 1); } /** - * Check whether the pocket contains too many items + * Check whether the itemList contains too many items * @return */ public boolean isEncumbered() { diff --git a/src/com/Torvald/Terrarum/Actors/ActorValue.java b/src/com/Torvald/Terrarum/Actors/ActorValue.java index 45a5ba5f3..9b8640b24 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorValue.java +++ b/src/com/Torvald/Terrarum/Actors/ActorValue.java @@ -1,13 +1,10 @@ package com.Torvald.Terrarum.Actors; -import com.Torvald.Terrarum.KVHashtable; - -import java.util.Hashtable; -import java.util.Set; +import com.Torvald.Terrarum.KVHashMap; /** * Created by minjaesong on 16-01-03. */ -public class ActorValue extends KVHashtable { +public class ActorValue extends KVHashMap { } diff --git a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java index 36259a6db..8b9b11402 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java +++ b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java @@ -10,6 +10,8 @@ import com.jme3.math.FastMath; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; +import java.io.Serializable; + /** * Created by minjaesong on 16-01-13. */ @@ -19,8 +21,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { ActorInventory inventory; - private @NotNull - float hitboxTranslateX; // relative to spritePosX + private @NotNull float hitboxTranslateX; // relative to spritePosX private @NotNull float hitboxTranslateY; // relative to spritePosY private @NotNull int baseHitboxW; private @NotNull int baseHitboxH; @@ -34,13 +35,12 @@ public class ActorWithBody implements Actor, Visible, Glowing { * +3.0 is acceleration. You __accumulate__ acceleration to the velocity. */ private volatile @NotNull float veloX, veloY; - private final float VELO_HARD_LIMIT = 10000; + private final transient float VELO_HARD_LIMIT = 10000; boolean grounded = false; - @Nullable - SpriteAnimation sprite; - @Nullable SpriteAnimation spriteGlow; + @Nullable transient SpriteAnimation sprite; + @Nullable transient SpriteAnimation spriteGlow; /** Default to 'false' */ private boolean visible = false; /** Default to 'true' */ @@ -60,15 +60,15 @@ public class ActorWithBody implements Actor, Visible, Glowing { /** * Physical properties */ - @NonZero private volatile float scale = 1; - @NonZero private volatile float mass = 2f; - private final float MASS_LOWEST = 2f; + @NonZero private volatile transient float scale = 1; + @NonZero private volatile transient float mass = 2f; + private final transient float MASS_LOWEST = 2f; /** Valid range: [0, 1] */ private float elasticity = 0; - private final float ELASTICITY_MAX = 0.993f; + private final transient float ELASTICITY_MAX = 0.993f; @NoNegative private float density = 1000; - private static final int TSIZE = MapDrawer.TILE_SIZE; + private static final transient int TSIZE = MapDrawer.TILE_SIZE; private static int AUTO_CLIMB_RATE = TSIZE / 8; /** @@ -77,53 +77,53 @@ public class ActorWithBody implements Actor, Visible, Glowing { * s^2 = 1/FPS = 1/60 if FPS is targeted to 60 * meter to pixel : 24/FPS */ - private final float METER = 24f; + private final transient float METER = 24f; /** * [m / s^2] * SI_TO_GAME_ACC -> [px / IFrame^2] */ - private final float SI_TO_GAME_ACC = METER / FastMath.sqr(Terrarum.TARGET_FPS); + private final transient float SI_TO_GAME_ACC = METER / FastMath.sqr(Terrarum.TARGET_FPS); /** * [m / s] * SI_TO_GAME_VEL -> [px / IFrame] */ - private final float SI_TO_GAME_VEL = METER / Terrarum.TARGET_FPS; + private final transient float SI_TO_GAME_VEL = METER / Terrarum.TARGET_FPS; private float gravitation; - private final float DRAG_COEFF = 1f; + private final transient float DRAG_COEFF = 1f; - private final int CONTACT_AREA_TOP = 0; - private final int CONTACT_AREA_RIGHT = 1; - private final int CONTACT_AREA_BOTTOM = 2; - private final int CONTACT_AREA_LEFT = 3; + private final transient int CONTACT_AREA_TOP = 0; + private final transient int CONTACT_AREA_RIGHT = 1; + private final transient int CONTACT_AREA_BOTTOM = 2; + private final transient int CONTACT_AREA_LEFT = 3; - private final int UD_COMPENSATOR_MAX = TSIZE; - private final int LR_COMPENSATOR_MAX = TSIZE; - private final int TILE_AUTOCLIMB_RATE = 4; + private final transient int UD_COMPENSATOR_MAX = TSIZE; + private final transient int LR_COMPENSATOR_MAX = TSIZE; + private final transient int TILE_AUTOCLIMB_RATE = 4; /** * A constant to make falling faster so that the game is more playable */ - private final float G_MUL_PLAYABLE_CONST = 1.4142f; + private final transient float G_MUL_PLAYABLE_CONST = 1.4142f; long referenceID; - private final int EVENT_MOVE_TOP = 0; - private final int EVENT_MOVE_RIGHT = 1; - private final int EVENT_MOVE_BOTTOM = 2; - private final int EVENT_MOVE_LEFT = 3; - private final int EVENT_MOVE_NONE = -1; + private final transient int EVENT_MOVE_TOP = 0; + private final transient int EVENT_MOVE_RIGHT = 1; + private final transient int EVENT_MOVE_BOTTOM = 2; + private final transient int EVENT_MOVE_LEFT = 3; + private final transient int EVENT_MOVE_NONE = -1; int eventMoving = EVENT_MOVE_NONE; // cannot collide both X-axis and Y-axis, or else jump control breaks up. /** * in milliseconds */ - public final int INVINCIBILITY_TIME = 500; + public final transient int INVINCIBILITY_TIME = 500; /** * Will ignore fluid resistance if (submerged height / actor height) <= this var */ - private final float FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO = 0.2f; - private final float FLUID_RESISTANCE_APPLY_FULL_RATIO = 0.5f; + private final transient float FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO = 0.2f; + private final transient float FLUID_RESISTANCE_APPLY_FULL_RATIO = 0.5f; private GameMap map; @@ -958,6 +958,10 @@ public class ActorWithBody implements Actor, Visible, Glowing { this.noSubjectToFluidResistance = noSubjectToFluidResistance; } + public float getElasticity() { + return elasticity; + } + public void setElasticity(float elasticity) { if (elasticity < 0) throw new IllegalArgumentException("[ActorWithBody] " + elasticity + ": valid elasticity value is [0, 1]."); diff --git a/src/com/Torvald/Terrarum/Actors/NPCIntelligentBase.java b/src/com/Torvald/Terrarum/Actors/NPCIntelligentBase.java index 9d597c374..eae22f103 100644 --- a/src/com/Torvald/Terrarum/Actors/NPCIntelligentBase.java +++ b/src/com/Torvald/Terrarum/Actors/NPCIntelligentBase.java @@ -6,6 +6,7 @@ import com.Torvald.Terrarum.GameItem.InventoryItem; import com.Torvald.Terrarum.Terrarum; import org.newdawn.slick.GameContainer; +import java.io.Serializable; import java.util.ArrayList; import java.util.HashSet; @@ -16,7 +17,7 @@ public class NPCIntelligentBase extends ActorWithBody implements AIControlled, P Factionable, Landholder { private InventoryItem itemData; // keep it for extendibility, like Carriers in SC1 - private ActorAI ai; + private transient ActorAI ai; private ActorInventory inventory; private HashSet factionSet = new HashSet<>(); @@ -51,35 +52,35 @@ public class NPCIntelligentBase extends ActorWithBody implements AIControlled, P public void attachItemData() { itemData = new InventoryItem() { @Override - public float getWeight() { - return getMass(); + public long getItemID() { + return 0; + } + + @Override + public float getWeight() { + return 0; } - /** Set no effect */ @Override public void effectWhileInPocket(GameContainer gc, int delta_t) { } - /** Set no effect */ @Override public void effectWhenPickedUp(GameContainer gc, int delta_t) { } - /** Set no effect */ @Override public void primaryUse(GameContainer gc, int delta_t) { } - /** Set no effect */ @Override public void secondaryUse(GameContainer gc, int delta_t) { } - /** Set no effect */ @Override public void effectWhenThrownAway(GameContainer gc, int delta_t) { diff --git a/src/com/Torvald/Terrarum/Actors/Player.java b/src/com/Torvald/Terrarum/Actors/Player.java index 5a1ad88b1..a3105a511 100644 --- a/src/com/Torvald/Terrarum/Actors/Player.java +++ b/src/com/Torvald/Terrarum/Actors/Player.java @@ -13,6 +13,7 @@ import org.lwjgl.input.Controller; import org.lwjgl.input.Controllers; import org.newdawn.slick.*; +import java.io.Serializable; import java.util.HashSet; /** @@ -24,13 +25,13 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac int jumpCounter = 0; int walkPowerCounter = 0; - private final int MAX_JUMP_LENGTH = 17; // use 17; in internal frames + private final transient int MAX_JUMP_LENGTH = 17; // use 17; in internal frames /** * experimental value. */ - // private final float JUMP_ACCELERATION_MOD = ???f / 10000f; //quadratic mode - private final float JUMP_ACCELERATION_MOD = 170f / 10000f; //linear mode - private final int WALK_FRAMES_TO_MAX_ACCEL = 6; + // private final transient float JUMP_ACCELERATION_MOD = ???f / 10000f; //quadratic mode + private final transient float JUMP_ACCELERATION_MOD = 170f / 10000f; //linear mode + private final transient int WALK_FRAMES_TO_MAX_ACCEL = 6; public float readonly_totalX = 0, readonly_totalY = 0; @@ -38,29 +39,29 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac @NotNull int walkHeading; - private final int LEFT = 1; - private final int RIGHT = 2; + private final transient int LEFT = 1; + private final transient int RIGHT = 2; - private int prevHMoveKey = -1; - private int prevVMoveKey = -1; - private final int KEY_NULL = -1; + private final transient int KEY_NULL = -1; + private int prevHMoveKey = KEY_NULL; + private int prevVMoveKey = KEY_NULL; - static final float ACCEL_MULT_IN_FLIGHT = 0.48f; - static final float WALK_STOP_ACCEL = 0.32f; - static final float WALK_ACCEL_BASE = 0.32f; + static final transient float ACCEL_MULT_IN_FLIGHT = 0.48f; + static final transient float WALK_STOP_ACCEL = 0.32f; + static final transient float WALK_ACCEL_BASE = 0.32f; private boolean noClip = false; public static final long PLAYER_REF_ID = 0x51621D; - private final float AXIS_POSMAX = 1.0f; - private final int GAMEPAD_JUMP = 5; + private final transient float AXIS_POSMAX = 1.0f; + private final transient int GAMEPAD_JUMP = 5; - private final int TSIZE = MapDrawer.TILE_SIZE; + private final transient int TSIZE = MapDrawer.TILE_SIZE; private HashSet factionSet = new HashSet<>(); - private final int BASE_DENSITY = 1020; + private final transient int BASE_DENSITY = 1020; /** @@ -91,13 +92,13 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac if (noClip) { super.setGrounded(true); } - } private void updatePhysicalInfos() { super.setScale(actorValue.getAsFloat("scale")); super.setMass(actorValue.getAsFloat("basemass") * FastMath.pow(super.getScale(), 3)); + if (super.getElasticity() != 0) super.setElasticity(0); } /** diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java b/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java index ab937301a..4041c2781 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java @@ -2,17 +2,17 @@ package com.Torvald.Terrarum.ConsoleCommand; import com.Torvald.Terrarum.Terrarum; -import java.util.Hashtable; +import java.util.HashMap; /** * Created by minjaesong on 16-01-15. */ public class CommandDict { - protected static Hashtable dict; + protected static HashMap dict; public CommandDict() { - dict = new Hashtable<>(); + dict = new HashMap<>(); dict.put("echo", new Echo()); dict.put("setav", new SetAV()); diff --git a/src/com/Torvald/Terrarum/GameConfig.java b/src/com/Torvald/Terrarum/GameConfig.java index d6cdf9d14..94572d996 100644 --- a/src/com/Torvald/Terrarum/GameConfig.java +++ b/src/com/Torvald/Terrarum/GameConfig.java @@ -1,10 +1,8 @@ package com.Torvald.Terrarum; -import java.util.Hashtable; - /** * Created by minjaesong on 15-12-30. */ -public class GameConfig extends KVHashtable{ +public class GameConfig extends KVHashMap { } diff --git a/src/com/Torvald/Terrarum/GameItem/InventoryItem.java b/src/com/Torvald/Terrarum/GameItem/InventoryItem.java index 2ce8e2a1e..bc3707c40 100644 --- a/src/com/Torvald/Terrarum/GameItem/InventoryItem.java +++ b/src/com/Torvald/Terrarum/GameItem/InventoryItem.java @@ -7,6 +7,15 @@ import org.newdawn.slick.GameContainer; */ public interface InventoryItem { + /** + * Get internal ID of an Item. + * 0-4096: Tiles + * 4097-32767: Various items + * >=32768: Actor RefID + * @return + */ + long getItemID(); + /** * Weight of the item * @return diff --git a/src/com/Torvald/Terrarum/GameItem/ItemCodex.java b/src/com/Torvald/Terrarum/GameItem/ItemCodex.java new file mode 100644 index 000000000..88c6b312d --- /dev/null +++ b/src/com/Torvald/Terrarum/GameItem/ItemCodex.java @@ -0,0 +1,20 @@ +package com.Torvald.Terrarum.GameItem; + +import java.util.HashMap; + +/** + * Created by minjaesong on 16-03-11. + */ +public class ItemCodex { + + /** + * <ItemID or RefID for Actor, TheItem> + * Will return corresponding Actor if ID >= 32768 + */ + private static HashMap itemCodex; + + public static InventoryItem getItem(long code) { + return itemCodex.get(code); + } + +} diff --git a/src/com/Torvald/Terrarum/GameMap/GameMap.java b/src/com/Torvald/Terrarum/GameMap/GameMap.java index df40988b5..877df4432 100644 --- a/src/com/Torvald/Terrarum/GameMap/GameMap.java +++ b/src/com/Torvald/Terrarum/GameMap/GameMap.java @@ -12,6 +12,7 @@ package com.Torvald.Terrarum.GameMap; import com.sun.istack.internal.NotNull; import org.newdawn.slick.SlickException; +import java.io.Serializable; import java.util.Iterator; import java.util.LinkedList; import java.util.Spliterator; @@ -32,9 +33,9 @@ public class GameMap { public int spawnX; public int spawnY; - public static final int WALL = 0; - public static final int TERRAIN = 1; - public static final int WIRE = 2; + public static transient final int WALL = 0; + public static transient final int TERRAIN = 1; + public static transient final int WIRE = 2; //public World physWorld = new World( new Vec2(0, -TerrarumMain.game.gravitationalAccel) ); //physics @@ -42,7 +43,7 @@ public class GameMap { private char globalLight; private WorldTime worldTime; - public static final int TILES_SUPPORTED = MapLayer.RANGE * PairedMapLayer.RANGE; + public static transient final int TILES_SUPPORTED = MapLayer.RANGE * PairedMapLayer.RANGE; /** * @param width diff --git a/src/com/Torvald/Terrarum/GameMap/MapLayer.java b/src/com/Torvald/Terrarum/GameMap/MapLayer.java index 039c0e297..203abc6ac 100644 --- a/src/com/Torvald/Terrarum/GameMap/MapLayer.java +++ b/src/com/Torvald/Terrarum/GameMap/MapLayer.java @@ -1,5 +1,6 @@ package com.Torvald.Terrarum.GameMap; +import java.io.Serializable; import java.util.Iterator; import java.util.Spliterator; import java.util.function.Consumer; @@ -14,7 +15,7 @@ public class MapLayer implements Iterable { public int width; public int height; - public static final int RANGE = 256; + public static transient final int RANGE = 256; public MapLayer(int width, int height) { this.width = width; diff --git a/src/com/Torvald/Terrarum/GameMap/MapPoint.java b/src/com/Torvald/Terrarum/GameMap/MapPoint.java index ec79e51a2..8b1a134dd 100644 --- a/src/com/Torvald/Terrarum/GameMap/MapPoint.java +++ b/src/com/Torvald/Terrarum/GameMap/MapPoint.java @@ -2,6 +2,8 @@ package com.Torvald.Terrarum.GameMap; import com.Torvald.Point.Point2f; +import java.io.Serializable; + public class MapPoint { private Point2f startPoint; diff --git a/src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java b/src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java index 68e0ba00c..107942ca8 100644 --- a/src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java +++ b/src/com/Torvald/Terrarum/GameMap/PairedMapLayer.java @@ -1,5 +1,6 @@ package com.Torvald.Terrarum.GameMap; +import java.io.Serializable; import java.util.Iterator; import java.util.Spliterator; import java.util.function.Consumer; @@ -22,7 +23,7 @@ public class PairedMapLayer implements Iterable { public int width; public int height; - public static final int RANGE = 16; + public static transient final int RANGE = 16; public PairedMapLayer(int width, int height) { this.width = width / 2; diff --git a/src/com/Torvald/Terrarum/GameMap/WorldTime.java b/src/com/Torvald/Terrarum/GameMap/WorldTime.java index 2e1c4da69..0962fd507 100644 --- a/src/com/Torvald/Terrarum/GameMap/WorldTime.java +++ b/src/com/Torvald/Terrarum/GameMap/WorldTime.java @@ -1,25 +1,29 @@ package com.Torvald.Terrarum.GameMap; +import java.io.Serializable; + /** * Created by minjaesong on 16-01-24. */ public class WorldTime { - public int seconds = 0; - public int minutes = 0; - public int hours = 0; + private int seconds = 0; + private int minutes = 0; + private int hours = 0; - public int daysCount = 0; //NOT a calendar day + private int daysCount = 0; //NOT a calendar day - public int days = 1; - public int months = 1; - public int years = 1; + private int days = 1; + private int months = 1; + private int years = 1; - public int weeks = 1; - public int dayOfWeek = 0; //0: Mondag-The first day of weekday + private int dayOfWeek = 0; //0: Mondag-The first day of weekday - public static final int DAY_LENGTH = 79200; //must be the multiple of 3600 - public int timeDelta = 1; + public static transient final int DAY_LENGTH = 79200; //must be the multiple of 3600 + private int timeDelta = 1; + + private static transient final int HOUR_SEC = 3600; + private static transient final int MINUTE_SEC = 60; public final String[] DAYNAMES = { //daynames are taken from Nynorsk (å -> o) "Mondag" @@ -52,22 +56,7 @@ public class WorldTime { //time seconds += timeDelta; - if (seconds >= 60){ - seconds = 0; - minutes++; - } - - if (minutes >= 60){ - minutes = 0; - hours++; - } - - if (hours >= DAY_LENGTH/3600){ - hours = 0; - days++; - daysCount++; - dayOfWeek++; - } + kickVariables(); //calendar (the world calendar) if (dayOfWeek == 7){ @@ -97,37 +86,31 @@ public class WorldTime { } } + /** + * How much time has passed today, in seconds. + * @return + */ public int elapsedSeconds(){ - return (3600 * hours + 60 * minutes + seconds) % DAY_LENGTH; + return (HOUR_SEC * hours + MINUTE_SEC * minutes + seconds) % DAY_LENGTH; } + /** + * How much time has passed since the beginning, in seconds. + * @return + */ public long totalSeconds(){ - return (long)(DAY_LENGTH) * daysCount + 3600 * hours + 60 * minutes + seconds; + return (long)(DAY_LENGTH) * daysCount + HOUR_SEC * hours + MINUTE_SEC * minutes + seconds; } public boolean isLeapYear(){ - boolean ret = false; - - if (years % 4 == 0){ - ret = true; - - if (years % 100 == 0){ - ret = false; - - if (years % 400 == 0){ - ret = true; - } - } - } - - return ret; + return ((years % 4 == 0) && (years % 100 != 0)) || (years % 400 == 0); } public void setTime(int t){ days += t / DAY_LENGTH; - hours = t / 3600; - minutes = (t - 3600 * hours) / 60; - seconds = t - minutes * 60; + hours = t / HOUR_SEC; + minutes = (t - HOUR_SEC * hours) / MINUTE_SEC; + seconds = t - minutes * MINUTE_SEC; } public void addTime(int t){ @@ -141,4 +124,23 @@ public class WorldTime { public String getDayName(){ return DAYNAMES[dayOfWeek]; } + + private void kickVariables() { + if (seconds >= 60){ + seconds = 0; + minutes++; + } + + if (minutes >= 60){ + minutes = 0; + hours++; + } + + if (hours >= DAY_LENGTH/3600){ + hours = 0; + days++; + daysCount++; + dayOfWeek++; + } + } } \ No newline at end of file diff --git a/src/com/Torvald/Terrarum/KVHashtable.java b/src/com/Torvald/Terrarum/KVHashMap.java similarity index 78% rename from src/com/Torvald/Terrarum/KVHashtable.java rename to src/com/Torvald/Terrarum/KVHashMap.java index 5f1cb2204..32490546a 100644 --- a/src/com/Torvald/Terrarum/KVHashtable.java +++ b/src/com/Torvald/Terrarum/KVHashMap.java @@ -1,17 +1,18 @@ package com.Torvald.Terrarum; +import java.util.HashMap; import java.util.Hashtable; import java.util.Set; /** * Created by minjaesong on 15-12-30. */ -public class KVHashtable { +public class KVHashMap { - private Hashtable hashtable; + private HashMap hashMap; - public KVHashtable() { - hashtable = new Hashtable<>(); + public KVHashMap() { + hashMap = new HashMap<>(); } /** @@ -23,7 +24,7 @@ public class KVHashtable { * @param value */ public void set(String key, Object value){ - hashtable.put(key.toLowerCase(), value); + hashMap.put(key.toLowerCase(), value); } /** @@ -33,7 +34,7 @@ public class KVHashtable { * @return Object value */ public Object get(String key){ - return hashtable.get(key.toLowerCase()); + return hashMap.get(key.toLowerCase()); } public int getAsInt(String key) { @@ -55,11 +56,11 @@ public class KVHashtable { } public boolean hasKey(String key) { - return hashtable.containsKey(key); + return hashMap.containsKey(key); } public Set getKeySet() { - return hashtable.keySet(); + return hashMap.keySet(); } } \ No newline at end of file diff --git a/src/com/Torvald/Terrarum/MECHNANICS b/src/com/Torvald/Terrarum/MECHNANICS index 87969412c..f895ceb58 100644 --- a/src/com/Torvald/Terrarum/MECHNANICS +++ b/src/com/Torvald/Terrarum/MECHNANICS @@ -100,3 +100,12 @@ Scale ^ 3 ^ (3/4) = (ThisWgt / TargetWgt) ^ (3/4) + + +== (De)serialisation == + + * Custom binary + GSON + + * Custom binary: Game map + + * GSON: Actors, game configurations \ No newline at end of file