X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameSaver.java;h=39d227844ac1badb1d7898e28490d37019535e70;hb=cb0605053ce3de493b0d1f43cd7ec1e4a9cf0ac5;hp=cb52b3c76b126812e355c43d9ce076c7d5749140;hpb=fd73b6dd24b9fe55c0bc8f52f8aa1104a5fe3cb0;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameSaver.java b/core/src/ru/deadsoftware/cavedroid/game/GameSaver.java index cb52b3c..39d2278 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameSaver.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameSaver.java @@ -5,7 +5,8 @@ import com.badlogic.gdx.files.FileHandle; import ru.deadsoftware.cavedroid.MainConfig; import ru.deadsoftware.cavedroid.game.mobs.MobsController; import ru.deadsoftware.cavedroid.game.model.block.Block; -import ru.deadsoftware.cavedroid.game.objects.DropController; +import ru.deadsoftware.cavedroid.game.objects.drop.DropController; +import ru.deadsoftware.cavedroid.game.objects.container.ContainerController; import ru.deadsoftware.cavedroid.game.world.GameWorld; import javax.annotation.CheckForNull; @@ -24,11 +25,18 @@ public class GameSaver { @CheckForNull private DropController mDropController; @CheckForNull + private ContainerController mContainerController; + @CheckForNull private Block[][] mForeMap, mBackMap; - public Data(MobsController mobsController, DropController dropController, Block[][] foreMap, Block[][] backMap) { + public Data(MobsController mobsController, + DropController dropController, + ContainerController containerController, + Block[][] foreMap, + Block[][] backMap) { mMobsController = mobsController; mDropController = dropController; + mContainerController = containerController; mForeMap = foreMap; mBackMap = backMap; } @@ -47,6 +55,13 @@ public class GameSaver { return dropController; } + public ContainerController retrieveFurnaceController() { + assert mContainerController != null; + ContainerController containerController = mContainerController; + mContainerController = null; + return containerController; + } + public Block[][] retrieveForeMap() { assert mForeMap != null; Block[][] foreMap = mForeMap; @@ -62,7 +77,11 @@ public class GameSaver { } public boolean isEmpty() { - return mMobsController == null && mDropController == null && mForeMap == null && mBackMap == null; + return mMobsController == null && + mDropController == null && + mContainerController == null && + mForeMap == null && + mBackMap == null; } } @@ -183,10 +202,12 @@ public class GameSaver { int version = in.readInt(); DropController dropController; MobsController mobsController; + ContainerController containerController; if (SAVE_VERSION == version) { dropController = (DropController) in.readObject(); mobsController = (MobsController) in.readObject(); + containerController = (ContainerController) in.readObject(); } else { throw new Exception("version mismatch"); } @@ -201,7 +222,7 @@ public class GameSaver { throw new Exception("couldn't load"); } - return new Data(mobsController, dropController, foreMap, backMap); + return new Data(mobsController, dropController, containerController, foreMap, backMap); } catch (Exception e) { Gdx.app.error("GameSaver", e.getMessage()); } @@ -212,6 +233,7 @@ public class GameSaver { public static void save(MainConfig mainConfig, DropController dropController, MobsController mobsController, + ContainerController containerController, GameWorld gameWorld) { String folder = mainConfig.getGameFolder(); FileHandle file = Gdx.files.absolute(folder + "/saves/"); @@ -229,6 +251,7 @@ public class GameSaver { out.writeInt(SAVE_VERSION); out.writeObject(dropController); out.writeObject(mobsController); + out.writeObject(containerController); out.close(); saveDict(Gdx.files.absolute(folder + "/saves/dict"), dict);