From 9d20e8af787c3fdf1b3fcd932dadc2d5571351e8 Mon Sep 17 00:00:00 2001 From: Arkadiusz Buras Date: Mon, 11 May 2015 15:16:54 +0200 Subject: [PATCH] Moved some logic in game db --- .gitignore | 2 +- core/assets/db/entities/barell.json | 2 +- core/assets/db/entities/crate.json | 2 +- core/assets/db/entities/ham.json | 2 +- .../assets/graphics/models/Barrel texture.png | Bin 0 -> 1398 bytes core/assets/graphics/models/Crate Texture.png | Bin 0 -> 733 bytes core/assets/graphics/models/Crate.g3db | Bin 0 -> 1656 bytes core/assets/graphics/models/Ham Texture.png | Bin 0 -> 610 bytes core/assets/graphics/models/Ham.g3db | Bin 0 -> 11164 bytes core/assets/graphics/models/barell.g3db | Bin 0 -> 4706 bytes core/src/macbury/forge/db/GameDatabase.java | 33 ++++++++++++++---- .../macbury/forge/db/models/BaseModel.java | 18 ++++++++++ .../forge/db/models/PlayerStartPosition.java | 16 --------- .../src/macbury/forge/db/models/Teleport.java | 5 +-- .../macbury/forge/screens/LoadingScreen.java | 5 --- .../macbury/forge/storage/StorageManager.java | 11 ++++-- .../db/GameDatabaseSerializer.java | 6 ++-- .../models/PlayerStartPositionSerializer.java | 12 +++---- 18 files changed, 68 insertions(+), 46 deletions(-) create mode 100644 core/assets/graphics/models/Barrel texture.png create mode 100644 core/assets/graphics/models/Crate Texture.png create mode 100644 core/assets/graphics/models/Crate.g3db create mode 100644 core/assets/graphics/models/Ham Texture.png create mode 100644 core/assets/graphics/models/Ham.g3db create mode 100644 core/assets/graphics/models/barell.g3db create mode 100644 core/src/macbury/forge/db/models/BaseModel.java delete mode 100644 core/src/macbury/forge/db/models/PlayerStartPosition.java diff --git a/.gitignore b/.gitignore index 58bb19b..da45aaa 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,7 @@ html/war/WEB-INF/classes/ gwt-unitCache/ www-test/ .gwt-tmp/ - +game.config ## Android Studio and Intellij and Android in general android/libs/armeabi/ android/libs/armeabi-v7a/ diff --git a/core/assets/db/entities/barell.json b/core/assets/db/entities/barell.json index 7a4b161..9875db0 100644 --- a/core/assets/db/entities/barell.json +++ b/core/assets/db/entities/barell.json @@ -8,7 +8,7 @@ }, { class: "renderable", - path: "raw-models/barell.g3db" + path: "graphics/models/barell.g3db" }, { diff --git a/core/assets/db/entities/crate.json b/core/assets/db/entities/crate.json index 93e2b15..7f5ff45 100644 --- a/core/assets/db/entities/crate.json +++ b/core/assets/db/entities/crate.json @@ -8,7 +8,7 @@ }, { class: "renderable", - path: "raw-models/Crate.g3db" + path: "graphics/models/Crate.g3db" }, { diff --git a/core/assets/db/entities/ham.json b/core/assets/db/entities/ham.json index 084f2b1..9c2da2b 100644 --- a/core/assets/db/entities/ham.json +++ b/core/assets/db/entities/ham.json @@ -8,7 +8,7 @@ }, { class: "renderable", - path: "raw-models/Ham.g3db" + path: "graphics/models/Ham.g3db" }, { diff --git a/core/assets/graphics/models/Barrel texture.png b/core/assets/graphics/models/Barrel texture.png new file mode 100644 index 0000000000000000000000000000000000000000..320d7c826be6500acc5e1e91bf2c20c5c6314d22 GIT binary patch literal 1398 zcmWkuc}&xH6#xEu(b5)*EjOX&OKmmuNEk^-^1c*#gfg;yf5Kwe04(YF56)Kkn zqXlsk-H+mP)#&gba@&C-6lb8=^4pI;-ut|~d_FIE$>%*qTx=xO(#aA4 zK#h(HPe75i6+{f0O%6*pP#_gVB^3fdrf&rV>Kh!;CN5jBUjRU7Rq^Ne+AT$TRKk7$ z&UgR-{|tZ;L2&_q(_8=+MF4!Q0>D1MCiS5ZmA;P-7aS13I%Yx;9@eVh-O~l*wal29 z5o8lVR?S|)-eiA&`U3<(HvLWOpRShHUQ;Lyy2i=rq(tGJ5BDe#k!44in9{X3PIeb( ztn0LWePaDW@UA3kPLl=|`T3bPjM!>6fcoT-RZ7Leqjn7s@tY8D#HPg1I2iY7ih8PD z!*4fb;ttE40ge_z=DTKO6|XOT(?#?O?hR5i$aJ?7I>3~{__dT0d647Fqe1qZ)635z zO`a$pB6BM}6D+MzLI<9Kfx-3rcmRdJkS+6&S~lJSt+g1B6HwHSP=9hSejj8z6$r85 zl_c#*?@)jL^)Giyho8S%oq3{$)0Aa8rb+~nTwYJKw~sTWUVg~uE8Ydh8W;=P#0ZZpA8RR_Y3}$P=J9Ks^?6Ilk1H6A>#r zqV=|?ZU+vQ9sz8hsc|Bx(FyX>2sy^JgK)L9^4hFz3=|w(TH*4doI>HHd9B1?{E=I3UtBL|aftPfSf+pOucqk64Y^!U;Yf@MI>-dWAg zI)3KO^9&x>7BXWimYhYq3zGS~i6Y~SXZQuF0K`P!p^`bY8-9AY|Ti^NXs~ezh!y^r$nG)VJyL7R==#7!tjF~ z1g^(qH$yyW&Jk4F%E?X{{i{EVP#@jvz&7Wr16*S-OFE*2RZ9qkv+xV)0RaY~cc*lX zl7i9)bjn_AZ{=BJ-ivA9k_ai&33|Vj*gF!3;|!Fg8$<*IGbSraoIKoD)>f)iD(aL5 zW{X*N@ywdht7e-#h!1?5E|{}Th=q!WY#Q;$v_l+1+&^Z|zERA#pAckn(kBLi_qenY zd{&nO{juDSNLton2HWjk<+8%n!nuZu!vgeP zMhpG;;EB7J+YuaUvOPuEj)nuZbLn8d9U0hTTuUwJ&Lk+n*{1D-Yx-r0=r|Y|9M={d zi99?tp2}L+jSW#oUW;^stto7MhLGFStL?*#jPO@^;c|uTfZ6nsc@g@-Wj0mqlx3Ha zH>RQZ(2^x^PNgCduKv6<&ihVDq4EDU0#!O&VXb=Vm}W3c5AS5BRB0Y}xn3$z^)#(a zzq1xMOT%egZ?z+l#`lTZpDa8tiJ35kO0=GX`#%1?dCHn&#h6}SV;;B(xf$@BGBN&~ z)OMIB6sqeFHhzFIakz65=_%h;k{`EwL+=QG=CusLyBGlK)e#seY? z+gWrOi>5HM2yp9UB&>7x=P#dElMpab(4o_RhJ;yZ%a=nooSTIe8fIK*mK8rBCaciA z)TQ#|C2ok=W1gE1Gc5GH9oX!v|4KT`ERnO7ePF~4RK8)Sz%q&H>p43cWmqqB8*|@W zc;Xc!Q%C0&mX$w`p@AXKW4@LSi}_GbzIB|WRKTNcdvrSrzKDHF#%0UiuKBh?AMQ0w&nsk z`l+vzsf3}a{6a3iG<~281%rhrO;YYy>z?q93Frj9)*B`Q!bUf2TGqF-2srq>uoau( zm778aWgk4u2?s?vadXA u6r-wrCg(|>0?-Pf+qTPD87!F;4lu~5q}Q$W;>iFeMFvk-KbLh*2~7a!y9ky5 literal 0 HcmV?d00001 diff --git a/core/assets/graphics/models/Crate.g3db b/core/assets/graphics/models/Crate.g3db new file mode 100644 index 0000000000000000000000000000000000000000..f5c399e4e6d85a2e963a01e811d9c56210afa0d9 GIT binary patch literal 1656 zcmZuxO-NKx6uvrtZ$?W^D_Ye;kT#|`QUv)%{7Xxnm`MNW9;BfCf-#zDi_uO;u0>oxb8^nyo zMI~db0xE?845B#`rcD@IfCP6OTZ|VRT!D5jJ<>ngpB{qfPEZ5{ z3}_h25fdhGW6dqH3U|rd!kB@eEf5{&`jY1b2AmM?+qY<>wJN)7^xMYRzj05f94Egv zSK=PcQ@EiGM-qv7-Uj+_qW*A;ERsUIilcqq-y6pH&pmii^4>t-kc%A3aq>-m@_u2i zz@PH2+`&A$_l4#Zmqr(rM8#>H{3g#9)JMh9cU$@>{8c=;Qy20L&bM+K@1lqtQY=LN zsGGPB?nlLC{zq6J+)q9vDo%D1#Depyc+!=%rTYo$PjQl{D>Z0a^8U1WrTJByVp9$^ zzKXXYciMyTgZo!;IvZ+9e#%WTlP#=*e3Lgl*uR&kRq1>;E zBPQ<$B6)5*^nmC=Rdw0iF|UxR6~fM3-o%G9+}}CWH_$TzF<}|<*@#ADSHUVJ%@7N- z2#cbIS&V5c&Jw5^t76q`AKQ;w&1zUJt78XHYgs*OUa}fJRpb}Vsf$oCffCZSFd*!G&3gv#Oxj*Hk0QQ!kIIuZlFQl zoG4_uP5x9!Um*_D!V;DVV00dN`V2J3C*s#9gv3Cb6j{^a`191savk&8Hs`G=zi6@U z{@&j6BR%qX5o^YfUldhX8{oNob4yDrX!eZ59s1FXuzvjQ>5lp3K^j-*m(vh|37(aw zAZj~rVH>I(n_H0ey+SYUo~rL`ZBMN}WNV8%7Z|4SC7~OmFF)%?FR$xoFE!r(TDegk zgrTHP-n&JkA0#4=RT`ylIjXmZzmqoNTp@^ly08C>?NVTre~p%)Kbu;tyx|hNeSkpF z0`bD^AkXK8H8nPt!EW(6M!WC=Y+gdLI(3R2di=ni&{={s+=885l|p7#Ln9FfdrnU|pA>)8 zje&vjhNp{TNX4zBKmY&RGwU)sFl-E1VShA6Hn`y2$=L;F4h)8IcKiAE3tF)?{^<2H z3w0BlU;RsOlPLq^5tn&~`=3`Nn#u;VC^Ved!tlt)=kmn23{`?J_!=0Jl&tSu^m%Vl z#($Y_fi(kD2dBi59Zr({B2o;q?pdvuJgG}Gm zw;4G*On0180y_0jmQ{fL9g#n8{;#iRZszu2`pf9zuy~>`J5vLL(|5*?dB;=E?`>CI z475}DCXkcd>j9Mb(IB+l`3CRt{^TeI0SBLuLhBY@pVAp(3@idl9S>giJDEuVeb~Y} zWrys{UN#0M4iWYV9~AZPa4u5?+Udk6zv>6`S$3emKU;u8qT}qAZsrDtMU^r@1B5Ry zW$l#B)&Sa=JZX{A);oOZ%ITRvZHpG&ewdRY4^)!8x0O}&E?=VZZw7^i87p3wo!P=7 j;1D1mAg%xuIlyp!LeYk!jnCMD>4Cx1)z4*}Q$iB}5(CW( literal 0 HcmV?d00001 diff --git a/core/assets/graphics/models/Ham.g3db b/core/assets/graphics/models/Ham.g3db new file mode 100644 index 0000000000000000000000000000000000000000..bf5182f1300667e82ed716c25890ad313a8db539 GIT binary patch literal 11164 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 literal 0 HcmV?d00001 diff --git a/core/src/macbury/forge/db/GameDatabase.java b/core/src/macbury/forge/db/GameDatabase.java index fee0ad0..a8fcd49 100644 --- a/core/src/macbury/forge/db/GameDatabase.java +++ b/core/src/macbury/forge/db/GameDatabase.java @@ -1,21 +1,30 @@ package macbury.forge.db; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; import macbury.forge.ForgE; -import macbury.forge.db.models.PlayerStartPosition; +import macbury.forge.db.models.BaseModel; +import macbury.forge.db.models.Teleport; import macbury.forge.utils.Vector3i; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; + /** * Created by macbury on 07.11.14. */ public class GameDatabase { - public static final String FILE_NAME = "game.db"; + public static final String FILE_NAME = "db/game.config"; private static final String TAG = "GameDatabase"; public String title; public int currentyUID = 0; public long build = 0; public int lastOpenedMapId = -1; - public PlayerStartPosition startPosition; + public Teleport startPosition; + /** * Create int uuid * @return unique id @@ -34,11 +43,21 @@ public void bootstrap() { public void setStartPosition(int levelId, Vector3i voxelPosition) { Gdx.app.log(TAG, "New player start position: " + levelId + " at " + voxelPosition.toString()); - startPosition = new PlayerStartPosition(); - startPosition.mapId = levelId; - startPosition.voxelPosition = new Vector3i(voxelPosition); + this.startPosition = new Teleport(voxelPosition, levelId); + save(); + } - ForgE.storage.saveDB(this); + public void save(BaseModel model) { + Kryo kryo = ForgE.storage.begin(); { + FileHandle modelFile = model.getFileHandle(); + try { + Output output = new Output(new FileOutputStream(modelFile.file(), false)); + kryo.writeObject(output, model); + output.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } ForgE.storage.end(kryo); } public void save() { diff --git a/core/src/macbury/forge/db/models/BaseModel.java b/core/src/macbury/forge/db/models/BaseModel.java new file mode 100644 index 0000000..8bc1573 --- /dev/null +++ b/core/src/macbury/forge/db/models/BaseModel.java @@ -0,0 +1,18 @@ +package macbury.forge.db.models; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; + +/** + * Created by macbury on 11.05.15. + */ +public abstract class BaseModel { + private static final String DB_PATH = "db/"; + + public abstract String getFilename(); + public abstract String getStorageDir(); + + public FileHandle getFileHandle() { + return Gdx.files.internal(DB_PATH+ getStorageDir() + getFilename()); + } +} diff --git a/core/src/macbury/forge/db/models/PlayerStartPosition.java b/core/src/macbury/forge/db/models/PlayerStartPosition.java deleted file mode 100644 index 8f71cee..0000000 --- a/core/src/macbury/forge/db/models/PlayerStartPosition.java +++ /dev/null @@ -1,16 +0,0 @@ -package macbury.forge.db.models; - -import com.badlogic.gdx.math.Vector3; -import macbury.forge.utils.Vector3i; - -/** - * Created by macbury on 24.03.15. - */ -public class PlayerStartPosition { - public Vector3i voxelPosition; - public int mapId; - - public Teleport toTeleport() { - return new Teleport(voxelPosition, mapId); - } -} diff --git a/core/src/macbury/forge/db/models/Teleport.java b/core/src/macbury/forge/db/models/Teleport.java index 2d892e4..e53fcde 100644 --- a/core/src/macbury/forge/db/models/Teleport.java +++ b/core/src/macbury/forge/db/models/Teleport.java @@ -5,12 +5,13 @@ /** * Created by macbury on 24.03.15. */ -public class Teleport { +public class Teleport { public final Vector3i voxelPosition; public final int mapId; public Teleport(Vector3i voxelPosition, int mapId) { - this.voxelPosition = voxelPosition; + this.voxelPosition = new Vector3i(voxelPosition); this.mapId = mapId; } + } diff --git a/core/src/macbury/forge/screens/LoadingScreen.java b/core/src/macbury/forge/screens/LoadingScreen.java index 3ac9f7d..5fb8b53 100644 --- a/core/src/macbury/forge/screens/LoadingScreen.java +++ b/core/src/macbury/forge/screens/LoadingScreen.java @@ -11,7 +11,6 @@ import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.PerformanceCounter; import macbury.forge.ForgE; -import macbury.forge.db.models.PlayerStartPosition; import macbury.forge.db.models.Teleport; import macbury.forge.level.loader.AsyncLevelLoader; import macbury.forge.level.Level; @@ -37,10 +36,6 @@ public class LoadingScreen extends AbstractScreen implements Promise { private Matrix4 boxTransMat; private float indicatorRotation; - public LoadingScreen(PlayerStartPosition startPosition) { - this(startPosition.toTeleport()); - } - public LoadingScreen(Teleport teleport) { super(); this.teleport = teleport; diff --git a/core/src/macbury/forge/storage/StorageManager.java b/core/src/macbury/forge/storage/StorageManager.java index 1cc65d3..e7a83d6 100644 --- a/core/src/macbury/forge/storage/StorageManager.java +++ b/core/src/macbury/forge/storage/StorageManager.java @@ -18,7 +18,7 @@ import macbury.forge.assets.assets.ModelAsset; import macbury.forge.assets.assets.TextureAsset; import macbury.forge.db.GameDatabase; -import macbury.forge.db.models.PlayerStartPosition; +import macbury.forge.db.models.Teleport; import macbury.forge.graphics.batch.renderable.VoxelChunkRenderable; import macbury.forge.level.LevelEnv; import macbury.forge.level.LevelState; @@ -62,7 +62,7 @@ public Kryo create () { kryo.register(VoxelChunkRenderable.class, new VoxelFaceRenderableSerializer()); kryo.register(Matrix4.class, new Matrix4Serializer()); kryo.register(Vector3i.class, new Vector3iSerializer()); - kryo.register(PlayerStartPosition.class, new PlayerStartPositionSerializer()); + kryo.register(Teleport.class, new PlayerStartPositionSerializer()); kryo.register(TextureAsset.class, new AssetSerializer()); kryo.register(ModelAsset.class, new AssetSerializer()); kryo.setDefaultSerializer(TaggedFieldSerializer.class); @@ -104,4 +104,11 @@ public void saveDB(GameDatabase db) { } + public Kryo begin() { + return pool.borrow(); + } + + public void end(Kryo kryo) { + pool.release(kryo); + } } diff --git a/core/src/macbury/forge/storage/serializers/db/GameDatabaseSerializer.java b/core/src/macbury/forge/storage/serializers/db/GameDatabaseSerializer.java index c515273..76799c0 100644 --- a/core/src/macbury/forge/storage/serializers/db/GameDatabaseSerializer.java +++ b/core/src/macbury/forge/storage/serializers/db/GameDatabaseSerializer.java @@ -5,7 +5,7 @@ import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import macbury.forge.db.GameDatabase; -import macbury.forge.db.models.PlayerStartPosition; +import macbury.forge.db.models.Teleport; /** * Created by macbury on 10.11.14. @@ -17,7 +17,7 @@ public void write(Kryo kryo, Output output, GameDatabase gameDatabase) { output.writeInt(gameDatabase.currentyUID); output.writeString(gameDatabase.title); output.writeLong(gameDatabase.build++); - kryo.writeObjectOrNull(output, gameDatabase.startPosition, PlayerStartPosition.class); + kryo.writeObjectOrNull(output, gameDatabase.startPosition, Teleport.class); output.writeInt(gameDatabase.lastOpenedMapId); } @@ -28,7 +28,7 @@ public GameDatabase read(Kryo kryo, Input input, Class type) { db.currentyUID = input.readInt(); db.title = input.readString(); db.build = input.readLong(); - db.startPosition = kryo.readObjectOrNull(input, PlayerStartPosition.class); + db.startPosition = kryo.readObjectOrNull(input, Teleport.class); db.lastOpenedMapId = input.readInt(); return db; } diff --git a/core/src/macbury/forge/storage/serializers/db/models/PlayerStartPositionSerializer.java b/core/src/macbury/forge/storage/serializers/db/models/PlayerStartPositionSerializer.java index 9725657..8692b7c 100644 --- a/core/src/macbury/forge/storage/serializers/db/models/PlayerStartPositionSerializer.java +++ b/core/src/macbury/forge/storage/serializers/db/models/PlayerStartPositionSerializer.java @@ -4,24 +4,22 @@ import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; -import macbury.forge.db.models.PlayerStartPosition; +import macbury.forge.db.models.Teleport; import macbury.forge.utils.Vector3i; /** * Created by macbury on 24.03.15. */ -public class PlayerStartPositionSerializer extends Serializer { +public class PlayerStartPositionSerializer extends Serializer { @Override - public void write(Kryo kryo, Output output, PlayerStartPosition object) { + public void write(Kryo kryo, Output output, Teleport object) { kryo.writeObject(output, object.voxelPosition); output.writeInt(object.mapId, true); } @Override - public PlayerStartPosition read(Kryo kryo, Input input, Class type) { - PlayerStartPosition startPosition = new PlayerStartPosition(); - startPosition.voxelPosition = kryo.readObject(input, Vector3i.class); - startPosition.mapId = input.readInt(true); + public Teleport read(Kryo kryo, Input input, Class type) { + Teleport startPosition = new Teleport(kryo.readObject(input, Vector3i.class), input.readInt(true)); return startPosition; } }