DEADSOFTWARE

Move game world to new package
[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;
8 import ru.deadsoftware.cavedroid.game.world.GameWorld;
10 import javax.annotation.CheckForNull;
12 @Module
13 public class GameModule {
15 @CheckForNull
16 private static GameSaver.Data data;
18 public static void load(MainConfig mainConfig) {
19 data = GameSaver.load(mainConfig);
20 }
22 private static void makeDataNullIfEmpty() {
23 if (data != null && data.isEmpty()) {
24 data = null;
25 }
26 }
28 @Provides
29 @GameScope
30 public static DropController provideDropController() {
31 DropController controller = data != null ? data.retrieveDropController() : new DropController();
32 makeDataNullIfEmpty();
33 return controller;
34 }
36 @Provides
37 @GameScope
38 public static MobsController provideMobsController() {
39 MobsController controller = data != null ? data.retrieveMobsController() : new MobsController();
40 makeDataNullIfEmpty();
41 return controller;
42 }
44 @Provides
45 @GameScope
46 public static GameWorld provideGameWorld(DropController dropController, MobsController mobsController) {
47 int[][] fm = data != null ? data.retrieveForeMap() : null;
48 int[][] bm = data != null ? data.retrieveBackMap() : null;
49 makeDataNullIfEmpty();
50 return new GameWorld(dropController, mobsController, fm, bm);
51 }
53 }