X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;ds=sidebyside;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameModule.java;h=29175da1968fba60e36f64a8ebb8ec746c73b630;hb=289536374d18bb05cde615c04d9fe576d6ac26bc;hp=0637f595f819b790b7ac8791ef4db5bcf07042ac;hpb=121928e90bdfa3a9d9c8bd708b9f8da28d3807c0;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java index 0637f59..29175da 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java @@ -4,6 +4,7 @@ import dagger.Module; import dagger.Provides; 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.world.GameWorld; @@ -15,8 +16,14 @@ public class GameModule { @CheckForNull private static GameSaver.Data data; - public static void load(MainConfig mainConfig) { - data = GameSaver.load(mainConfig); + public static boolean loaded = false; + + private static void load(MainConfig mainConfig, GameItemsHolder gameItemsHolder) { + if (loaded) { + return; + } + data = GameSaver.load(mainConfig, gameItemsHolder); + loaded = true; } private static void makeDataNullIfEmpty() { @@ -27,30 +34,35 @@ public class GameModule { @Provides @GameScope - public static DropController provideDropController() { + public static DropController provideDropController(MainConfig mainConfig, GameItemsHolder gameItemsHolder) { + load(mainConfig, gameItemsHolder); DropController controller = data != null ? data.retrieveDropController() : new DropController(); makeDataNullIfEmpty(); + controller.initDrops(gameItemsHolder); return controller; } @Provides @GameScope - public static MobsController provideMobsController(GameItemsHolder gameItemsHolder) { + public static MobsController provideMobsController(MainConfig mainConfig, GameItemsHolder gameItemsHolder) { + load(mainConfig, gameItemsHolder); MobsController controller = data != null ? data.retrieveMobsController() : new MobsController(gameItemsHolder); makeDataNullIfEmpty(); + controller.getPlayer().initInventory(gameItemsHolder); return controller; } @Provides @GameScope - public static GameWorld provideGameWorld(DropController dropController, + public static GameWorld provideGameWorld(MainConfig mainConfig, + DropController dropController, MobsController mobsController, GameItemsHolder gameItemsHolder) { - // TODO: 4/20/24 RE-enable saves -// int[][] fm = data != null ? data.retrieveForeMap() : null; -// int[][] bm = data != null ? data.retrieveBackMap() : null; + load(mainConfig, gameItemsHolder); + Block[][] fm = data != null ? data.retrieveForeMap() : null; + Block[][] bm = data != null ? data.retrieveBackMap() : null; makeDataNullIfEmpty(); - return new GameWorld(dropController, mobsController, gameItemsHolder, null, null); + return new GameWorld(dropController, mobsController, gameItemsHolder, fm, bm); } }