diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java
index d7ccc2d6e44bb7744aa6fa8f84cafd4fcd439a55..29175da1968fba60e36f64a8ebb8ec746c73b630 100644 (file)
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;
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 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, MobsController mobsController) {
- int[][] fm = data != null ? data.retrieveForeMap() : null;
- int[][] bm = data != null ? data.retrieveBackMap() : null;
+ public static GameWorld provideGameWorld(MainConfig mainConfig,
+ DropController dropController,
+ MobsController mobsController,
+ GameItemsHolder gameItemsHolder) {
+ load(mainConfig, gameItemsHolder);
+ Block[][] fm = data != null ? data.retrieveForeMap() : null;
+ Block[][] bm = data != null ? data.retrieveBackMap() : null;
makeDataNullIfEmpty();
- return new GameWorld(dropController, mobsController, fm, bm);
+ return new GameWorld(dropController, mobsController, gameItemsHolder, fm, bm);
}
}