[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / objects / container / Chest.kt
diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt
index be820bc3e2a19a73cf70b35ded134bd6683b82ae..a9e893be3cbad21c09b3eb81c9c40167c95b92e2 100644 (file)
package ru.deadsoftware.cavedroid.game.objects.container
import ru.deadsoftware.cavedroid.game.GameItemsHolder
+import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto
+import ru.deadsoftware.cavedroid.game.model.item.InventoryItem
+import ru.deadsoftware.cavedroid.misc.Saveable
-class Chest(gameItemsHolder: GameItemsHolder) : Container(SIZE, gameItemsHolder) {
+class Chest @JvmOverloads constructor(
+ gameItemsHolder: GameItemsHolder,
+ initialItems: List<InventoryItem>? = null
+) : Container(SIZE, gameItemsHolder, initialItems), Saveable {
override fun update(gameItemsHolder: GameItemsHolder) {
// no-op
}
+ override fun getSaveData(): SaveDataDto.ChestSaveData {
+ return SaveDataDto.ChestSaveData(
+ version = SAVE_DATA_VERSION,
+ size = size,
+ items = items.map(InventoryItem::getSaveData)
+ )
+ }
+
companion object {
+ private const val SAVE_DATA_VERSION = 1
private const val SIZE = 27
+
+ fun fromSaveData(saveData: SaveDataDto.ChestSaveData, gameItemsHolder: GameItemsHolder): Chest {
+ saveData.verifyVersion(SAVE_DATA_VERSION)
+
+ return Chest(
+ gameItemsHolder = gameItemsHolder,
+ initialItems = saveData.items.map { item -> InventoryItem.fromSaveData(item, gameItemsHolder) }
+ )
+ }
}
}
\ No newline at end of file