diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java
index c47a0e19144a7a6f3d25e78a18d16df26fc2df56..d57ab337e9e49c0cbc872ee037cb42b407908d24 100644 (file)
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.ui.TooltipManager;
import ru.deadsoftware.cavedroid.game.world.GameWorld;
import javax.annotation.CheckForNull;
@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() {
@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 ContainerController provideFurnaceController(MainConfig mainConfig, DropController dropController, GameItemsHolder gameItemsHolder) {
+ load(mainConfig, gameItemsHolder);
+ ContainerController controller = data != null ? data.retrieveFurnaceController() : new ContainerController(dropController, gameItemsHolder);
+ makeDataNullIfEmpty();
+ controller.init(dropController, 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,
+ TooltipManager tooltipManager) {
+ load(mainConfig, gameItemsHolder);
+ 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) {
+ 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, containerController, fm, bm);
}
}