X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmobs%2FMobsController.kt;h=4b2c209c22d6fe1dc44fc4e65b04e1bca4bbae7e;hb=3a443514027417133d7a7e18766720dfea028a87;hp=158d22a9e55445ae1056e680c4fb3621f03a03e0;hpb=13157246344c2b94d24354040f0f2d2fb5beb7ea;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 158d22a..4b2c209 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt @@ -3,8 +3,9 @@ package ru.deadsoftware.cavedroid.game.mobs import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.mobs.player.Player +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.ui.TooltipManager -import java.io.Serializable +import ru.deadsoftware.cavedroid.misc.Saveable import java.util.* import javax.inject.Inject @@ -12,12 +13,12 @@ import javax.inject.Inject class MobsController @Inject constructor( gameItemsHolder: GameItemsHolder, tooltipManager: TooltipManager, -) : Serializable { +) : Saveable { private val _mobs = LinkedList() - val player: Player = - Player(gameItemsHolder, tooltipManager) + var player: Player = Player(gameItemsHolder, tooltipManager) + private set val mobs: List get() = _mobs @@ -26,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