X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fobjects%2Fcontainer%2FChest.kt;h=a9e893be3cbad21c09b3eb81c9c40167c95b92e2;hb=0d6ab84418440a30f2de555cb30ce21af8dac12e;hp=be820bc3e2a19a73cf70b35ded134bd6683b82ae;hpb=cb0605053ce3de493b0d1f43cd7ec1e4a9cf0ac5;p=cavedroid.git 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 be820bc..a9e893b 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt @@ -1,14 +1,38 @@ 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? = 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