DEADSOFTWARE

Maybe fix animation
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / Player.java
index 272992a29973735c1d38c7b6c10bd2c68d225ae4..3335b7f5ebc69322478b8e1eeb7cf82f043b2baa 100644 (file)
@@ -41,6 +41,10 @@ public class Player extends Mob {
         return new Vector2(8 - getWidth() / 2, (float) y * 16 - getHeight());
     }
 
+    private boolean isAnimationIncreasing() {
+        return mAnim > 0 && mAnimDelta > 0 || mAnim < 0 && mAnimDelta < 0;
+    }
+
     public void setDir(Direction dir) {
         if (dir != getDirection()) {
             switchDir();
@@ -57,20 +61,26 @@ public class Player extends Mob {
 
     @Override
     public void draw(SpriteBatch spriteBatch, float x, float y, float delta) {
-        final float correctedAnimationDelta = mAnimDelta * delta;
-
-        if (mVelocity.x != 0 || Math.abs(Assets.playerSprite[0][2].getRotation()) > Math.abs(correctedAnimationDelta)) {
-            Assets.playerSprite[0][2].rotate(correctedAnimationDelta);
-            Assets.playerSprite[1][2].rotate(-correctedAnimationDelta);
-            Assets.playerSprite[0][3].rotate(-correctedAnimationDelta);
-            Assets.playerSprite[1][3].rotate(correctedAnimationDelta);
+        if (mVelocity.x != 0f || Math.abs(mAnim) > 5f) {
+            mAnim += mAnimDelta * delta;
         } else {
-            Assets.playerSprite[0][2].setRotation(0);
-            Assets.playerSprite[1][2].setRotation(0);
-            Assets.playerSprite[0][3].setRotation(0);
-            Assets.playerSprite[1][3].setRotation(0);
+            mAnim = 0;
         }
-        if (Assets.playerSprite[0][2].getRotation() >= 60 || Assets.playerSprite[0][2].getRotation() <= -60) {
+
+        Assets.playerSprite[0][2].setRotation(mAnim);
+        Assets.playerSprite[1][2].setRotation(-mAnim);
+        Assets.playerSprite[0][3].setRotation(-mAnim);
+        Assets.playerSprite[1][3].setRotation(mAnim);
+
+        if (mAnim > 60f) {
+            mAnim = 60f;
+            mAnimDelta = -ANIMATION_SPEED;
+        } else if (mAnim < -60f) {
+            mAnim = -60f;
+            mAnimDelta = ANIMATION_SPEED;
+        }
+
+        if (mVelocity.x == 0f && isAnimationIncreasing()) {
             mAnimDelta = -mAnimDelta;
         }