DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / MobsController.kt
1 package ru.deadsoftware.cavedroid.game.mobs
3 import ru.deadsoftware.cavedroid.game.GameItemsHolder
4 import ru.deadsoftware.cavedroid.game.GameScope
5 import ru.deadsoftware.cavedroid.game.mobs.player.Player
6 import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto
7 import ru.deadsoftware.cavedroid.game.ui.TooltipManager
8 import ru.deadsoftware.cavedroid.misc.Saveable
9 import java.util.*
10 import javax.inject.Inject
12 @GameScope
13 class MobsController @Inject constructor(
14 gameItemsHolder: GameItemsHolder,
15 tooltipManager: TooltipManager,
16 ) : Saveable {
18 private val _mobs = LinkedList<Mob>()
20 var player: Player = Player(gameItemsHolder, tooltipManager)
21 private set
23 val mobs: List<Mob>
24 get() = _mobs
26 fun addMob(mob: Mob) {
27 _mobs.add(mob)
28 }
30 override fun getSaveData(): SaveDataDto.MobsControllerSaveData {
31 return SaveDataDto.MobsControllerSaveData(
32 version = SAVE_DATA_VERSION,
33 mobs = _mobs.map(Mob::getSaveData),
34 player = player.getSaveData(),
35 )
36 }
38 companion object {
39 private const val SAVE_DATA_VERSION = 1
41 private const val TAG = "MobsController"
43 fun fromSaveData(
44 saveData: SaveDataDto.MobsControllerSaveData,
45 gameItemsHolder: GameItemsHolder,
46 tooltipManager: TooltipManager
47 ): MobsController {
48 saveData.verifyVersion(SAVE_DATA_VERSION)
50 return MobsController(gameItemsHolder, tooltipManager)
51 .apply {
52 _mobs.addAll(saveData.mobs.map { mob -> Mob.fromSaveData(mob) })
53 player = Player.fromSaveData(saveData.player, gameItemsHolder, tooltipManager)
54 }
55 }
56 }
57 }