X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameModule.java;h=29175da1968fba60e36f64a8ebb8ec746c73b630;hb=409a22b3fe7c43b7f686f33cc2f01b6277edec78;hp=c47a0e19144a7a6f3d25e78a18d16df26fc2df56;hpb=1c004c0ce7e183e773b5b486295c25e39732e899;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java index c47a0e1..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() { - MobsController controller = data != null ? data.retrieveMobsController() : new MobsController(); + 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); } }