diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt
index df2a6dec5eef62240a5708edf676af8008e003ee..4b2c209c22d6fe1dc44fc4e65b04e1bca4bbae7e 100644 (file)
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.GameItemsHolder
import ru.deadsoftware.cavedroid.game.GameScope
import ru.deadsoftware.cavedroid.game.mobs.player.Player
-import java.io.Serializable
+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(
import java.util.*
import javax.inject.Inject
@GameScope
class MobsController @Inject constructor(
- gameItemsHolder: GameItemsHolder
-) : Serializable {
+ gameItemsHolder: GameItemsHolder,
+ tooltipManager: TooltipManager,
+) : Saveable {
private val _mobs = LinkedList<Mob>()
private val _mobs = LinkedList<Mob>()
- val player: Player =
- Player(gameItemsHolder)
+ var player: Player = Player(gameItemsHolder, tooltipManager)
+ private set
val mobs: List<Mob>
get() = _mobs
val mobs: List<Mob>
get() = _mobs
_mobs.add(mob)
}
_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 {
companion object {
+ private const val SAVE_DATA_VERSION = 1
+
private const val TAG = "MobsController"
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
}
}
\ No newline at end of file