X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmobs%2FMob.java;h=fc9d61bbe778e37f1c1186fa1387f0be207fb8d6;hb=9606fce8cc7c9b264abd7cb38583faaebb610540;hp=feb5ceb08a0165f58c00538678dbcc982e4a6812;hpb=1b645eda9f49799923666a57804fb3058cda1582;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java index feb5ceb..fc9d61b 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java @@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; +import ru.deadsoftware.cavedroid.game.GameItemsHolder; import ru.deadsoftware.cavedroid.game.world.GameWorld; import java.io.Serializable; @@ -98,17 +99,21 @@ public abstract class Mob extends Rectangle implements Serializable { } protected final void updateAnimation(float delta) { - if (mVelocity.x != 0f || Math.abs(mAnim) > mAnimDelta * delta) { - mAnim += mAnimDelta * delta; + final float velocityMultiplier = (Math.abs(getVelocity().x) / getSpeed()); + final float animMultiplier = (velocityMultiplier == 0f ? 1f : velocityMultiplier) * delta; + final float maxAnim = 60f * (velocityMultiplier == 0f ? 1f : velocityMultiplier); + + if (mVelocity.x != 0f || Math.abs(mAnim) > mAnimDelta * animMultiplier) { + mAnim += mAnimDelta * animMultiplier; } else { mAnim = 0; } - if (mAnim > 60f) { - mAnim = 60f; + if (mAnim > maxAnim) { + mAnim = maxAnim; mAnimDelta = -ANIMATION_SPEED; - } else if (mAnim < -60f) { - mAnim = -60f; + } else if (mAnim < -maxAnim) { + mAnim = -maxAnim; mAnimDelta = ANIMATION_SPEED; } @@ -241,6 +246,10 @@ public abstract class Mob extends Rectangle implements Serializable { } public void damage(int damage) { + if (damage == 0) { + return; + } + if (damage < 0) { Gdx.app.error(this.getClass().getSimpleName(), "Damage cant be negative!"); return; @@ -270,7 +279,7 @@ public abstract class Mob extends Rectangle implements Serializable { public abstract void draw(SpriteBatch spriteBatch, float x, float y, float delta); - public abstract void ai(GameWorld gameWorld, float delta); + public abstract void ai(GameWorld gameWorld, GameItemsHolder gameItemsHolder, float delta); public abstract void changeDir();