DEADSOFTWARE

Update README
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / Pig.kt
1 package ru.deadsoftware.cavedroid.game.mobs
3 import com.badlogic.gdx.graphics.g2d.SpriteBatch
4 import com.badlogic.gdx.math.MathUtils
5 import com.badlogic.gdx.math.Vector2
6 import ru.deadsoftware.cavedroid.game.GameItemsHolder
7 import ru.deadsoftware.cavedroid.game.world.GameWorld
8 import ru.deadsoftware.cavedroid.misc.utils.drawSprite
9 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBackgroundLeg
10 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBody
11 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getForegroundLeg
12 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLeftLegRelativeX
13 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLegsRelativeY
14 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getRightLegRelativeX
16 class Pig(x: Float, y: Float) : Mob(x, y, WIDTH, HEIGHT, randomDir(), Type.MOB, MAX_HEALTH) {
18 override fun getSpeed(): Float {
19 return SPEED
20 }
22 override fun changeDir() {
23 switchDir()
24 velocity = Vector2(direction.basis * speed, 0f)
25 }
27 override fun jump() {
28 velocity.y = JUMP_VELOCITY
29 }
31 override fun ai(world: GameWorld, gameItemsHolder: GameItemsHolder, delta: Float) {
32 if (MathUtils.randomBoolean(delta)) {
33 if (velocity.x != 0f) {
34 velocity.x = 0f
35 } else {
36 changeDir()
37 }
38 }
39 }
41 override fun draw(spriteBatch: SpriteBatch, x: Float, y: Float, delta: Float) {
42 updateAnimation(delta)
44 val leftLegX = x + getLeftLegRelativeX(direction)
45 val rightLegX = x + getRightLegRelativeX(direction)
46 val legY = y + getLegsRelativeY()
48 spriteBatch.drawSprite(getBackgroundLeg(), leftLegX, legY, -anim)
49 spriteBatch.drawSprite(getBackgroundLeg(), rightLegX, legY, -anim)
50 spriteBatch.drawSprite(getBody(direction), x, y)
51 spriteBatch.drawSprite(getForegroundLeg(), leftLegX, legY, anim)
52 spriteBatch.drawSprite(getForegroundLeg(), rightLegX, legY, anim)
53 }
56 private companion object {
57 private const val WIDTH = 25f
58 private const val HEIGHT = 18f
59 private const val SPEED = 69.072f
60 private const val JUMP_VELOCITY = -133.332f
61 private const val MAX_HEALTH = 10;
62 }
63 }