1 package ru
.deadsoftware
.cavedroid
.game
;
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
;
15 public class GameModule
{
18 private static GameSaver
.Data data
;
20 public static boolean loaded
= false;
22 private static void load(MainConfig mainConfig
, GameItemsHolder gameItemsHolder
) {
26 data
= GameSaver
.load(mainConfig
, gameItemsHolder
);
30 private static void makeDataNullIfEmpty() {
31 if (data
!= null && data
.isEmpty()) {
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
);
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
);
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
);