DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / FallingBlock.kt
1 package ru.deadsoftware.cavedroid.game.mobs
3 import com.badlogic.gdx.graphics.g2d.SpriteBatch
4 import ru.deadsoftware.cavedroid.game.GameItemsHolder
5 import ru.deadsoftware.cavedroid.game.model.block.Block
6 import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto
7 import ru.deadsoftware.cavedroid.game.world.GameWorld
8 import ru.deadsoftware.cavedroid.misc.utils.bl
9 import ru.deadsoftware.cavedroid.misc.utils.px
11 class FallingBlock(
12 private val blockKey: String,
13 x: Float,
14 y: Float,
15 ) : Mob(x, y, 1.px, 1.px, Direction.RIGHT, Type.FALLING_BLOCK, Int.MAX_VALUE) {
17 private var _block: Block? = null
19 init {
20 velocity.y = 1f
21 }
23 override fun changeDir() = Unit
25 override fun getSpeed() = 0f
27 override fun jump() = Unit
29 override fun ai(
30 gameWorld: GameWorld,
31 gameItemsHolder: GameItemsHolder,
32 mobsController: MobsController,
33 delta: Float
34 ) {
35 if (_block == null) {
36 _block = gameItemsHolder.getBlock(blockKey)
37 }
39 if (velocity.isZero) {
40 gameWorld.setForeMap(x.bl, y.bl, _block)
41 kill()
42 }
43 }
45 override fun draw(
46 spriteBatch: SpriteBatch,
47 x: Float,
48 y: Float,
49 delta: Float
50 ) {
51 _block?.draw(spriteBatch, x, y)
52 }
54 override fun getSaveData(): SaveDataDto.FallingBlockSaveData {
55 return SaveDataDto.FallingBlockSaveData(
56 version = SAVE_DATA_VERSION,
57 x = x,
58 y = y,
59 width = width,
60 height = height,
61 velocityX = velocity.x,
62 velocityY = velocity.y,
63 type = mType,
64 animDelta = mAnimDelta,
65 anim = mAnim,
66 direction = mDirection,
67 dead = mDead,
68 canJump = mCanJump,
69 flyMode = mFlyMode,
70 maxHealth = mMaxHealth,
71 health = mHealth,
72 blockKey = blockKey,
73 )
74 }
76 companion object {
77 private const val SAVE_DATA_VERSION = 1
79 fun fromSaveData(saveData: SaveDataDto.FallingBlockSaveData): FallingBlock {
80 saveData.verifyVersion(SAVE_DATA_VERSION)
82 return FallingBlock(saveData.blockKey, saveData.x, saveData.y).apply {
83 velocity.x = saveData.velocityX
84 velocity.y = saveData.velocityY
85 mAnimDelta = saveData.animDelta
86 mAnim = saveData.anim
87 mDirection = saveData.direction
88 mDead = saveData.dead
89 mCanJump = saveData.canJump
90 mFlyMode = saveData.flyMode
91 mMaxHealth = saveData.maxHealth
92 mHealth = saveData.health
93 }
94 }
95 }
96 }