X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameModule.java;h=29aac7df7e0f42be5364e1df21a5327fe3888697;hb=76a3b56287b1262f78f3b43a4aac5660338d67ad;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..29aac7d 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java @@ -4,7 +4,12 @@ import dagger.Module; import dagger.Provides; import ru.deadsoftware.cavedroid.MainConfig; import ru.deadsoftware.cavedroid.game.mobs.MobsController; -import ru.deadsoftware.cavedroid.game.objects.DropController; +import ru.deadsoftware.cavedroid.game.model.block.Block; +import ru.deadsoftware.cavedroid.game.objects.drop.DropController; +import ru.deadsoftware.cavedroid.game.objects.container.ContainerController; +import ru.deadsoftware.cavedroid.game.save.GameSaveData; +import ru.deadsoftware.cavedroid.game.save.GameSaveLoader; +import ru.deadsoftware.cavedroid.game.ui.TooltipManager; import ru.deadsoftware.cavedroid.game.world.GameWorld; import javax.annotation.CheckForNull; @@ -13,10 +18,16 @@ import javax.annotation.CheckForNull; public class GameModule { @CheckForNull - private static GameSaver.Data data; + private static GameSaveData data; - public static void load(MainConfig mainConfig) { - data = GameSaver.load(mainConfig); + public static boolean loaded = false; + + private static void load(MainConfig mainConfig, GameItemsHolder gameItemsHolder, TooltipManager tooltipManager) { + if (loaded) { + return; + } + data = GameSaveLoader.INSTANCE.load(mainConfig, gameItemsHolder, tooltipManager); + loaded = true; } private static void makeDataNullIfEmpty() { @@ -27,30 +38,58 @@ public class GameModule { @Provides @GameScope - public static DropController provideDropController() { + public static DropController provideDropController(MainConfig mainConfig, + GameItemsHolder gameItemsHolder, + TooltipManager tooltipManager) { + load(mainConfig, gameItemsHolder, tooltipManager); DropController controller = data != null ? data.retrieveDropController() : new DropController(); makeDataNullIfEmpty(); + controller.initDrops(gameItemsHolder); + return controller; + } + + @Provides + @GameScope + public static ContainerController provideFurnaceController(MainConfig mainConfig, + DropController dropController, + GameItemsHolder gameItemsHolder, + TooltipManager tooltipManager) { + load(mainConfig, gameItemsHolder, tooltipManager); + ContainerController controller = data != null + ? data.retrieveContainerController() + : new ContainerController(dropController, gameItemsHolder); + makeDataNullIfEmpty(); + controller.init(dropController, gameItemsHolder); return controller; } @Provides @GameScope - public static MobsController provideMobsController(GameItemsHolder gameItemsHolder) { - MobsController controller = data != null ? data.retrieveMobsController() : new MobsController(gameItemsHolder); + public static MobsController provideMobsController(MainConfig mainConfig, + GameItemsHolder gameItemsHolder, + TooltipManager tooltipManager) { + load(mainConfig, gameItemsHolder, tooltipManager); + MobsController controller = data != null + ? data.retrieveMobsController() + : new MobsController(gameItemsHolder, tooltipManager); makeDataNullIfEmpty(); + controller.getPlayer().initInventory(gameItemsHolder, tooltipManager); 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; + GameItemsHolder gameItemsHolder, + ContainerController containerController, + TooltipManager tooltipManager) { + load(mainConfig, gameItemsHolder, tooltipManager); + 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, containerController, fm, bm); } }