DEADSOFTWARE

Remove java serialization
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / FallingBlock.kt
index f2735044aee27572ed2045f7f0978712aabeb4a9..d4494a30b5ae531f141a3b4fc7b13ef729590e76 100644 (file)
@@ -3,6 +3,7 @@ package ru.deadsoftware.cavedroid.game.mobs
 import com.badlogic.gdx.graphics.g2d.SpriteBatch
 import ru.deadsoftware.cavedroid.game.GameItemsHolder
 import ru.deadsoftware.cavedroid.game.model.block.Block
+import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto
 import ru.deadsoftware.cavedroid.game.world.GameWorld
 import ru.deadsoftware.cavedroid.misc.utils.bl
 import ru.deadsoftware.cavedroid.misc.utils.px
@@ -13,7 +14,6 @@ class FallingBlock(
     y: Float,
 ) : Mob(x, y, 1.px, 1.px, Direction.RIGHT, Type.FALLING_BLOCK, Int.MAX_VALUE) {
 
-    @Transient
     private var _block: Block? = null
 
     init {
@@ -50,4 +50,47 @@ class FallingBlock(
     ) {
         _block?.draw(spriteBatch, x, y)
     }
+
+    override fun getSaveData(): SaveDataDto.FallingBlockSaveData {
+        return SaveDataDto.FallingBlockSaveData(
+            version = SAVE_DATA_VERSION,
+            x = x,
+            y = y,
+            width = width,
+            height = height,
+            velocityX = velocity.x,
+            velocityY = velocity.y,
+            type = mType,
+            animDelta = mAnimDelta,
+            anim = mAnim,
+            direction = mDirection,
+            dead = mDead,
+            canJump = mCanJump,
+            flyMode = mFlyMode,
+            maxHealth = mMaxHealth,
+            health = mHealth,
+            blockKey = blockKey,
+        )
+    }
+
+    companion object {
+        private const val SAVE_DATA_VERSION = 1
+
+        fun fromSaveData(saveData: SaveDataDto.FallingBlockSaveData): FallingBlock {
+            saveData.verifyVersion(SAVE_DATA_VERSION)
+
+            return FallingBlock(saveData.blockKey, saveData.x, saveData.y).apply {
+                velocity.x = saveData.velocityX
+                velocity.y = saveData.velocityY
+                mAnimDelta = saveData.animDelta
+                mAnim = saveData.anim
+                mDirection = saveData.direction
+                mDead = saveData.dead
+                mCanJump = saveData.canJump
+                mFlyMode = saveData.flyMode
+                mMaxHealth = saveData.maxHealth
+                mHealth = saveData.health
+            }
+        }
+    }
 }
\ No newline at end of file