DEADSOFTWARE

New saving fromat and rewrite in kotlin
[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.io.Serializable
10 import java.util.*
11 import javax.inject.Inject
13 @GameScope
14 class MobsController @Inject constructor(
15 gameItemsHolder: GameItemsHolder,
16 tooltipManager: TooltipManager,
17 ) : Serializable, Saveable {
19 private val _mobs = LinkedList<Mob>()
21 var player: Player = Player(gameItemsHolder, tooltipManager)
22 private set
24 val mobs: List<Mob>
25 get() = _mobs
27 fun addMob(mob: Mob) {
28 _mobs.add(mob)
29 }
31 override fun getSaveData(): SaveDataDto.MobsControllerSaveData {
32 return SaveDataDto.MobsControllerSaveData(
33 version = SAVE_DATA_VERSION,
34 mobs = _mobs.map(Mob::getSaveData),
35 player = player.getSaveData(),
36 )
37 }
39 companion object {
40 private const val SAVE_DATA_VERSION = 1
42 private const val TAG = "MobsController"
44 fun fromSaveData(
45 saveData: SaveDataDto.MobsControllerSaveData,
46 gameItemsHolder: GameItemsHolder,
47 tooltipManager: TooltipManager
48 ): MobsController {
49 saveData.verifyVersion(SAVE_DATA_VERSION)
51 return MobsController(gameItemsHolder, tooltipManager)
52 .apply {
53 _mobs.addAll(saveData.mobs.map { mob -> Mob.fromSaveData(mob) })
54 player = Player.fromSaveData(saveData.player, gameItemsHolder, tooltipManager)
55 }
56 }
57 }
58 }