X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmobs%2FPig.kt;h=b080e4078730713b897e8a45f1e1ba3655b81239;hb=3a443514027417133d7a7e18766720dfea028a87;hp=68c457ee05887ee81521ac93bffe0740e8e84688;hpb=f42029ab3edd3d0f04ebf1910cef834abb16ed0b;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt index 68c457e..b080e40 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt @@ -1,10 +1,10 @@ package ru.deadsoftware.cavedroid.game.mobs import com.badlogic.gdx.graphics.g2d.SpriteBatch -import com.badlogic.gdx.math.MathUtils import com.badlogic.gdx.math.Vector2 import ru.deadsoftware.cavedroid.game.GameItemsHolder -import ru.deadsoftware.cavedroid.game.world.GameWorld +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto +import ru.deadsoftware.cavedroid.game.model.item.InventoryItem import ru.deadsoftware.cavedroid.misc.utils.drawSprite import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBackgroundLeg import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBody @@ -13,7 +13,7 @@ import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLeftLegRelati import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLegsRelativeY import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getRightLegRelativeX -class Pig(x: Float, y: Float) : Mob(x, y, WIDTH, HEIGHT, randomDir(), Type.MOB, MAX_HEALTH) { +class Pig(x: Float, y: Float) : PeacefulMob(x, y, WIDTH, HEIGHT, randomDir(), MAX_HEALTH) { override fun getSpeed(): Float { return SPEED @@ -38,14 +38,8 @@ class Pig(x: Float, y: Float) : Mob(x, y, WIDTH, HEIGHT, randomDir(), Type.MOB, } } - override fun ai(world: GameWorld, gameItemsHolder: GameItemsHolder, mobsController: MobsController, delta: Float) { - if (MathUtils.randomBoolean(delta)) { - if (velocity.x != 0f) { - velocity.x = 0f - } else { - changeDir() - } - } + override fun getDrop(gameItemsHolder: GameItemsHolder): List { + return listOf(gameItemsHolder.getItem("porkchop_raw").toInventoryItem()) } override fun draw(spriteBatch: SpriteBatch, x: Float, y: Float, delta: Float) { @@ -61,13 +55,52 @@ class Pig(x: Float, y: Float) : Mob(x, y, WIDTH, HEIGHT, randomDir(), Type.MOB, spriteBatch.drawSprite(getForegroundLeg(), leftLegX, legY, anim, tint = tintColor) spriteBatch.drawSprite(getForegroundLeg(), rightLegX, legY, anim, tint = tintColor) } + + override fun getSaveData(): SaveDataDto.PigSaveData { + return SaveDataDto.PigSaveData( + 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 + ) + } - - private companion object { + companion object { + private const val SAVE_DATA_VERSION = 1 + private const val WIDTH = 25f private const val HEIGHT = 18f private const val SPEED = 48f private const val JUMP_VELOCITY = -133.332f private const val MAX_HEALTH = 10 + + fun fromSaveData(saveData: SaveDataDto.PigSaveData): Pig { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return Pig(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