X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmobs%2FMobsController.kt;h=dc01e1e8e238db085a53a467edd52c6801bd634c;hb=76a3b56287b1262f78f3b43a4aac5660338d67ad;hp=e83908808b5b9f0fe349d1651bdab6c2754f714f;hpb=5646018e364d9a708e985f04ab510bf88692082b;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 e839088..dc01e1e 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt @@ -1,16 +1,25 @@ 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 ru.deadsoftware.cavedroid.misc.Saveable import java.io.Serializable import java.util.* import javax.inject.Inject @GameScope -class MobsController @Inject constructor() : Serializable { +class MobsController @Inject constructor( + gameItemsHolder: GameItemsHolder, + tooltipManager: TooltipManager, +) : Serializable, Saveable { private val _mobs = LinkedList() - val player: Player = Player() + var player: Player = Player(gameItemsHolder, tooltipManager) + private set val mobs: List get() = _mobs @@ -19,7 +28,31 @@ class MobsController @Inject constructor() : Serializable { _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