DEADSOFTWARE

Add food
[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.Vector2
5 import ru.deadsoftware.cavedroid.game.GameItemsHolder
6 import ru.deadsoftware.cavedroid.game.model.item.InventoryItem
7 import ru.deadsoftware.cavedroid.misc.utils.drawSprite
8 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBackgroundLeg
9 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBody
10 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getForegroundLeg
11 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLeftLegRelativeX
12 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLegsRelativeY
13 import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getRightLegRelativeX
15 class Pig(x: Float, y: Float) : PeacefulMob(x, y, WIDTH, HEIGHT, randomDir(), MAX_HEALTH) {
17 override fun getSpeed(): Float {
18 return SPEED
19 }
21 override fun changeDir() {
22 switchDir()
23 velocity = Vector2(direction.basis * speed, 0f)
24 }
26 override fun jump() {
27 velocity.y = JUMP_VELOCITY
28 }
30 override fun damage(damage: Int) {
31 super.damage(damage)
33 if (damage > 0) {
34 if (canJump()) {
35 jump()
36 }
37 }
38 }
40 override fun getDrop(gameItemsHolder: GameItemsHolder): List<InventoryItem> {
41 return listOf(gameItemsHolder.getItem("porkchop_raw").toInventoryItem())
42 }
44 override fun draw(spriteBatch: SpriteBatch, x: Float, y: Float, delta: Float) {
45 updateAnimation(delta)
47 val leftLegX = x + getLeftLegRelativeX(direction)
48 val rightLegX = x + getRightLegRelativeX(direction)
49 val legY = y + getLegsRelativeY()
51 spriteBatch.drawSprite(getBackgroundLeg(), leftLegX, legY, -anim, tint = tintColor)
52 spriteBatch.drawSprite(getBackgroundLeg(), rightLegX, legY, -anim, tint = tintColor)
53 spriteBatch.drawSprite(getBody(direction), x, y, tint = tintColor)
54 spriteBatch.drawSprite(getForegroundLeg(), leftLegX, legY, anim, tint = tintColor)
55 spriteBatch.drawSprite(getForegroundLeg(), rightLegX, legY, anim, tint = tintColor)
56 }
59 private companion object {
60 private const val WIDTH = 25f
61 private const val HEIGHT = 18f
62 private const val SPEED = 48f
63 private const val JUMP_VELOCITY = -133.332f
64 private const val MAX_HEALTH = 10
65 }
66 }