DEADSOFTWARE

Add tooltips
[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.ui.TooltipManager;
10 import ru.deadsoftware.cavedroid.game.world.GameWorld;
12 import javax.annotation.CheckForNull;
14 @Module
15 public class GameModule {
17 @CheckForNull
18 private static GameSaver.Data data;
20 public static boolean loaded = false;
22 private static void load(MainConfig mainConfig, GameItemsHolder gameItemsHolder) {
23 if (loaded) {
24 return;
25 }
26 data = GameSaver.load(mainConfig, gameItemsHolder);
27 loaded = true;
28 }
30 private static void makeDataNullIfEmpty() {
31 if (data != null && data.isEmpty()) {
32 data = null;
33 }
34 }
36 @Provides
37 @GameScope
38 public static DropController provideDropController(MainConfig mainConfig, GameItemsHolder gameItemsHolder) {
39 load(mainConfig, gameItemsHolder);
40 DropController controller = data != null ? data.retrieveDropController() : new DropController();
41 makeDataNullIfEmpty();
42 controller.initDrops(gameItemsHolder);
43 return controller;
44 }
46 @Provides
47 @GameScope
48 public static MobsController provideMobsController(MainConfig mainConfig,
49 GameItemsHolder gameItemsHolder,
50 TooltipManager tooltipManager) {
51 load(mainConfig, gameItemsHolder);
52 MobsController controller = data != null
53 ? data.retrieveMobsController()
54 : new MobsController(gameItemsHolder, tooltipManager);
55 makeDataNullIfEmpty();
56 controller.getPlayer().initInventory(gameItemsHolder, tooltipManager);
57 return controller;
58 }
60 @Provides
61 @GameScope
62 public static GameWorld provideGameWorld(MainConfig mainConfig,
63 DropController dropController,
64 MobsController mobsController,
65 GameItemsHolder gameItemsHolder) {
66 load(mainConfig, gameItemsHolder);
67 Block[][] fm = data != null ? data.retrieveForeMap() : null;
68 Block[][] bm = data != null ? data.retrieveBackMap() : null;
69 makeDataNullIfEmpty();
70 return new GameWorld(dropController, mobsController, gameItemsHolder, fm, bm);
71 }
73 }