X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmobs%2FMobsController.kt;h=4b2c209c22d6fe1dc44fc4e65b04e1bca4bbae7e;hb=0d6ab84418440a30f2de555cb30ce21af8dac12e;hp=0ec111bbd66bd5b96ff38a9cdd7e323d53b7bf0c;hpb=121928e90bdfa3a9d9c8bd708b9f8da28d3807c0;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt index 0ec111b..4b2c209 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt @@ -2,18 +2,23 @@ package ru.deadsoftware.cavedroid.game.mobs import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope -import java.io.Serializable +import ru.deadsoftware.cavedroid.game.mobs.player.Player +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto +import ru.deadsoftware.cavedroid.game.ui.TooltipManager +import ru.deadsoftware.cavedroid.misc.Saveable import java.util.* import javax.inject.Inject @GameScope class MobsController @Inject constructor( - gameItemsHolder: GameItemsHolder -) : Serializable { + gameItemsHolder: GameItemsHolder, + tooltipManager: TooltipManager, +) : Saveable { private val _mobs = LinkedList() - val player: Player = Player(gameItemsHolder) + var player: Player = Player(gameItemsHolder, tooltipManager) + private set val mobs: List get() = _mobs @@ -22,7 +27,31 @@ class MobsController @Inject constructor( _mobs.add(mob) } + override fun getSaveData(): SaveDataDto.MobsControllerSaveData { + return SaveDataDto.MobsControllerSaveData( + version = SAVE_DATA_VERSION, + mobs = _mobs.map(Mob::getSaveData), + player = player.getSaveData(), + ) + } + companion object { + private const val SAVE_DATA_VERSION = 1 + private const val TAG = "MobsController" + + fun fromSaveData( + saveData: SaveDataDto.MobsControllerSaveData, + gameItemsHolder: GameItemsHolder, + tooltipManager: TooltipManager + ): MobsController { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return MobsController(gameItemsHolder, tooltipManager) + .apply { + _mobs.addAll(saveData.mobs.map { mob -> Mob.fromSaveData(mob) }) + player = Player.fromSaveData(saveData.player, gameItemsHolder, tooltipManager) + } + } } } \ No newline at end of file