[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / item / InventoryItem.kt
diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt b/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt
index 3cd406b731f5e2e0dc8a128926a4baef24d5a246..f420120b2844e7bd2d77ae4d01513837bac80c74 100644 (file)
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.glutils.ShapeRenderer
import ru.deadsoftware.cavedroid.game.GameItemsHolder
+import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto
import ru.deadsoftware.cavedroid.misc.Assets
+import ru.deadsoftware.cavedroid.misc.Saveable
import ru.deadsoftware.cavedroid.misc.utils.drawSprite
import ru.deadsoftware.cavedroid.misc.utils.drawString
import ru.deadsoftware.cavedroid.misc.utils.px
-import java.io.Serializable
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
class InventoryItem @JvmOverloads constructor(
val itemKey: String,
_amount: Int = 1,
-) : Serializable {
+) : Saveable {
var amount = _amount
set(value) {
}
}
- @Transient
private var _item: Item? = null
var item: Item
}
}
+ override fun getSaveData(): SaveDataDto.InventoryItemSaveData {
+ return SaveDataDto.InventoryItemSaveData(
+ version = SAVE_DATA_VERSION,
+ itemKey = itemKey,
+ amount = amount,
+ )
+ }
+
companion object {
+ private const val SAVE_DATA_VERSION = 1
@OptIn(ExperimentalContracts::class)
fun InventoryItem?.isNoneOrNull(): Boolean {
contract { returns(false) implies(this@isNoneOrNull != null) }
return this?.item == null || this.item.isNone()
}
+
+
+ fun fromSaveData(
+ saveData: SaveDataDto.InventoryItemSaveData,
+ gameItemsHolder: GameItemsHolder? = null
+ ): InventoryItem {
+ saveData.verifyVersion(SAVE_DATA_VERSION)
+
+ val inventoryItem = InventoryItem(saveData.itemKey, saveData.amount)
+ gameItemsHolder?.let(inventoryItem::init)
+
+ return inventoryItem
+ }
}
+
}