DEADSOFTWARE

Implement DI for menu and refactor #13
[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.objects.DropController;
9 import javax.annotation.CheckForNull;
11 @Module
12 public class GameModule {
14 @CheckForNull
15 private static GameSaver.Data data;
17 public static void load(MainConfig mainConfig) {
18 data = GameSaver.load(mainConfig);
19 }
21 private static void makeDataNullIfEmpty() {
22 if (data != null && data.isEmpty()) {
23 data = null;
24 }
25 }
27 @Provides
28 @GameScope
29 public static DropController provideDropController() {
30 DropController controller = data != null ? data.retrieveDropController() : new DropController();
31 makeDataNullIfEmpty();
32 return controller;
33 }
35 @Provides
36 @GameScope
37 public static MobsController provideMobsController() {
38 MobsController controller = data != null ? data.retrieveMobsController() : new MobsController();
39 makeDataNullIfEmpty();
40 return controller;
41 }
43 @Provides
44 @GameScope
45 public static GameWorld provideGameWorld(DropController dropController, MobsController mobsController) {
46 int[][] fm = data != null ? data.retrieveForeMap() : null;
47 int[][] bm = data != null ? data.retrieveBackMap() : null;
48 makeDataNullIfEmpty();
49 return new GameWorld(dropController, mobsController, fm, bm);
50 }
52 }