DEADSOFTWARE

Abstract falling block
[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.world.GameWorld
7 import ru.deadsoftware.cavedroid.misc.utils.bl
8 import ru.deadsoftware.cavedroid.misc.utils.px
10 class FallingBlock(
11 private val blockKey: String,
12 x: Float,
13 y: Float,
14 ) : Mob(x, y, 1.px, 1.px, Direction.RIGHT, Type.FALLING_BLOCK, Int.MAX_VALUE) {
16 @Transient
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 }
53 }