DEADSOFTWARE

Add my repo for automultibind
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameModule.java
1 package ru.deadsoftware.cavedroid.game;
3 import dagger.Module;
4 import dagger.Provides;
5 import ru.deadsoftware.cavedroid.MainConfig;
6 import ru.deadsoftware.cavedroid.game.mobs.MobsController;
7 import ru.deadsoftware.cavedroid.game.model.block.Block;
8 import ru.deadsoftware.cavedroid.game.objects.DropController;
9 import ru.deadsoftware.cavedroid.game.world.GameWorld;
11 import javax.annotation.CheckForNull;
13 @Module
14 public class GameModule {
16 @CheckForNull
17 private static GameSaver.Data data;
19 public static boolean loaded = false;
21 private static void load(MainConfig mainConfig, GameItemsHolder gameItemsHolder) {
22 if (loaded) {
23 return;
24 }
25 data = GameSaver.load(mainConfig, gameItemsHolder);
26 loaded = true;
27 }
29 private static void makeDataNullIfEmpty() {
30 if (data != null && data.isEmpty()) {
31 data = null;
32 }
33 }
35 @Provides
36 @GameScope
37 public static DropController provideDropController(MainConfig mainConfig, GameItemsHolder gameItemsHolder) {
38 load(mainConfig, gameItemsHolder);
39 DropController controller = data != null ? data.retrieveDropController() : new DropController();
40 makeDataNullIfEmpty();
41 controller.initDrops(gameItemsHolder);
42 return controller;
43 }
45 @Provides
46 @GameScope
47 public static MobsController provideMobsController(MainConfig mainConfig, GameItemsHolder gameItemsHolder) {
48 load(mainConfig, gameItemsHolder);
49 MobsController controller = data != null ? data.retrieveMobsController() : new MobsController(gameItemsHolder);
50 makeDataNullIfEmpty();
51 controller.getPlayer().initInventory(gameItemsHolder);
52 return controller;
53 }
55 @Provides
56 @GameScope
57 public static GameWorld provideGameWorld(MainConfig mainConfig,
58 DropController dropController,
59 MobsController mobsController,
60 GameItemsHolder gameItemsHolder) {
61 load(mainConfig, gameItemsHolder);
62 Block[][] fm = data != null ? data.retrieveForeMap() : null;
63 Block[][] bm = data != null ? data.retrieveBackMap() : null;
64 makeDataNullIfEmpty();
65 return new GameWorld(dropController, mobsController, gameItemsHolder, fm, bm);
66 }
68 }