|
@@ -24,12 +24,34 @@ public class HeroAnimator extends EntityAnimator
|
|
|
|
|
|
private final Image JUMP = Utils.getImage("snuvi/jump", true);
|
|
|
|
|
|
- private final static Image[] BLOCK = new Image[]
|
|
|
+ static
|
|
|
{
|
|
|
- Utils.getImage("snuvi/block/block_f1", true),
|
|
|
- Utils.getImage("snuvi/block/block_f2", true),
|
|
|
- Utils.getImage("snuvi/block/block_f3", true)
|
|
|
- };
|
|
|
+ Image block3 = Utils.getImage("snuvi/block/block_f3", true);
|
|
|
+ BLOCK = new Image[]
|
|
|
+ {
|
|
|
+ Utils.getImage("snuvi/block/block_f1", true),
|
|
|
+ Utils.getImage("snuvi/block/block_f2", true),
|
|
|
+ block3,
|
|
|
+ block3,
|
|
|
+ block3,
|
|
|
+ block3,
|
|
|
+ block3,
|
|
|
+ block3,
|
|
|
+ block3,
|
|
|
+ block3
|
|
|
+ };
|
|
|
+
|
|
|
+ Image headHit3 = Utils.getImage("snuvi/combat/cbat_hit_f3", true);
|
|
|
+ COMBAT_HEAD_HIT = new Image[]
|
|
|
+ {
|
|
|
+ Utils.getImage("snuvi/combat/cbat_hit_f1", true),
|
|
|
+ Utils.getImage("snuvi/combat/cbat_hit_f2", true),
|
|
|
+ headHit3,
|
|
|
+ headHit3
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ private final static Image[] BLOCK;
|
|
|
|
|
|
private final static Image[] DEATH = new Image[]
|
|
|
{
|
|
@@ -109,12 +131,7 @@ public class HeroAnimator extends EntityAnimator
|
|
|
Utils.getImage("snuvi/combat/cbat_head_f14", true)
|
|
|
};
|
|
|
|
|
|
- private final static Image[] COMBAT_HEAD_HIT = new Image[]
|
|
|
- {
|
|
|
- Utils.getImage("snuvi/combat/cbat_hit_f1", true),
|
|
|
- Utils.getImage("snuvi/combat/cbat_hit_f2", true),
|
|
|
- Utils.getImage("snuvi/combat/cbat_hit_f3", true)
|
|
|
- };
|
|
|
+ private final static Image[] COMBAT_HEAD_HIT;
|
|
|
|
|
|
private final Image COMBAT_ARMS_IDLE = Utils.getImage("snuvi/combat/cbat_arms_idle", true);
|
|
|
|
|
@@ -165,14 +182,20 @@ public class HeroAnimator extends EntityAnimator
|
|
|
|
|
|
|
|
|
private int counter = 0;
|
|
|
+ private int counterIdle = 0;
|
|
|
+ private int counterBody = 0;
|
|
|
+ private int counterHead = 0;
|
|
|
+ private int counterArms = 0;
|
|
|
+ private int frame = 0;
|
|
|
+ private int frameIdle = 0;
|
|
|
private int frameBody = 0;
|
|
|
private int frameHead = 0;
|
|
|
+ private int frameHeadHit = 0;
|
|
|
private int frameArms = 0;
|
|
|
|
|
|
private int attackCounter = 0;
|
|
|
|
|
|
private boolean flipped = false;
|
|
|
- private int blink = 0;
|
|
|
|
|
|
public HeroAnimator(Entity ent)
|
|
|
{
|
|
@@ -202,13 +225,40 @@ public class HeroAnimator extends EntityAnimator
|
|
|
{
|
|
|
return DEATH.length * 5;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
- public void resetFrames()
|
|
|
+ public void resetDefaultFrames()
|
|
|
{
|
|
|
counter = 0;
|
|
|
- frameBody = 0;
|
|
|
+ frame = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void resetIdleFrames()
|
|
|
+ {
|
|
|
+ counterIdle = 0;
|
|
|
+ frameIdle = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void resetHeadFrames()
|
|
|
+ {
|
|
|
+ counterHead = 0;
|
|
|
frameHead = 0;
|
|
|
+ frameHeadHit = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void resetBodyFrames()
|
|
|
+ {
|
|
|
+ counterBody = 0;
|
|
|
+ frameBody = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void resetArmsFrames()
|
|
|
+ {
|
|
|
+ counterArms = 0;
|
|
|
frameArms = 0;
|
|
|
}
|
|
|
|
|
@@ -221,17 +271,17 @@ public class HeroAnimator extends EntityAnimator
|
|
|
if(ent.getHealth().isDead())
|
|
|
{
|
|
|
x -= (drawImageFlipped() ? ent.getWidth() : 0);
|
|
|
- if(frameBody >= DEATH.length)
|
|
|
+ if(frame >= DEATH.length)
|
|
|
{
|
|
|
- frameBody = 0;
|
|
|
+ frame = 0;
|
|
|
}
|
|
|
if(ent.getController().isInCombatMode())
|
|
|
{
|
|
|
- renderer.drawImage(COMBAT_DEATH[frameBody], x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_DEATH[frame], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- renderer.drawImage(DEATH[frameBody], x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(DEATH[frame], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
}
|
|
|
else if(ent.getController().isInCombatMode())
|
|
@@ -239,12 +289,12 @@ public class HeroAnimator extends EntityAnimator
|
|
|
x -= (drawImageFlipped() ? ent.getWidth() : 0);
|
|
|
if(ent.getController().isBlocking())
|
|
|
{
|
|
|
- if(frameBody >= BLOCK.length)
|
|
|
+ if(frame >= BLOCK.length)
|
|
|
{
|
|
|
- frameBody = 0;
|
|
|
+ frame = 0;
|
|
|
}
|
|
|
- bindSlot(BLOCK[frameBody]);
|
|
|
- renderer.drawImage(BLOCK[frameBody], x, y, drawImageFlipped());
|
|
|
+ bindSlot(BLOCK[frame]);
|
|
|
+ renderer.drawImage(BLOCK[frame], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -252,17 +302,17 @@ public class HeroAnimator extends EntityAnimator
|
|
|
if(!ent.isOnGround())
|
|
|
{
|
|
|
bindSlot(COMBAT_BODY_JUMP);
|
|
|
- renderer.drawImage(COMBAT_BODY_JUMP, x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_BODY_JUMP, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else if(ent.getController().isDashing())
|
|
|
{
|
|
|
bindSlot(COMBAT_BODY_DASH);
|
|
|
- renderer.drawImage(COMBAT_BODY_DASH, x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_BODY_DASH, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else if(ent.getController().isDodging())
|
|
|
{
|
|
|
bindSlot(COMBAT_BODY_DODGE);
|
|
|
- renderer.drawImage(COMBAT_BODY_DODGE, x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_BODY_DODGE, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else if(ent.getPreviousMotionX() != 0)
|
|
|
{
|
|
@@ -271,12 +321,12 @@ public class HeroAnimator extends EntityAnimator
|
|
|
frameBody = 0;
|
|
|
}
|
|
|
bindSlot(COMBAT_BODY_WALK[frameBody]);
|
|
|
- renderer.drawImage(COMBAT_BODY_WALK[frameBody], x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_BODY_WALK[frameBody], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
bindSlot(COMBAT_BODY_IDLE);
|
|
|
- renderer.drawImage(COMBAT_BODY_IDLE, x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_BODY_IDLE, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
|
|
|
// arms rendering
|
|
@@ -289,7 +339,7 @@ public class HeroAnimator extends EntityAnimator
|
|
|
combatStart += COMBAT_SWITCH.length;
|
|
|
}
|
|
|
bindSlot(COMBAT_SWITCH[combatStart]);
|
|
|
- renderer.drawImage(COMBAT_SWITCH[combatStart], x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_SWITCH[combatStart], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else if(ent.getController().isAttacking())
|
|
|
{
|
|
@@ -304,23 +354,19 @@ public class HeroAnimator extends EntityAnimator
|
|
|
}
|
|
|
}
|
|
|
bindSlot(attack[frameArms]);
|
|
|
- renderer.drawImage(attack[frameArms], x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(attack[frameArms], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
bindSlot(COMBAT_ARMS_IDLE);
|
|
|
- renderer.drawImage(COMBAT_ARMS_IDLE, x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_ARMS_IDLE, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
|
|
|
// head rendering
|
|
|
- if(ent.getHealth().wasHurt())
|
|
|
+ if(ent.getHealth().hasInvincibility() && frameHeadHit < COMBAT_HEAD_HIT.length)
|
|
|
{
|
|
|
- if(frameHead >= COMBAT_HEAD_HIT.length)
|
|
|
- {
|
|
|
- frameHead = 0;
|
|
|
- }
|
|
|
bindSlot(COMBAT_HEAD_HIT[frameHead]);
|
|
|
- renderer.drawImage(COMBAT_HEAD_HIT[frameHead], x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_HEAD_HIT[frameHead], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -329,7 +375,7 @@ public class HeroAnimator extends EntityAnimator
|
|
|
frameHead = 0;
|
|
|
}
|
|
|
bindSlot(COMBAT_HEAD[frameHead]);
|
|
|
- renderer.drawImage(COMBAT_HEAD[frameHead], x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(COMBAT_HEAD[frameHead], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -337,27 +383,27 @@ public class HeroAnimator extends EntityAnimator
|
|
|
{
|
|
|
if(ent.getPreviousMotionX() != 0)
|
|
|
{
|
|
|
- if(frameBody >= WALK.length)
|
|
|
+ if(frame >= WALK.length)
|
|
|
{
|
|
|
- frameBody = 0;
|
|
|
+ frame = 0;
|
|
|
}
|
|
|
- bindSlot(WALK[frameBody]);
|
|
|
- renderer.drawImage(WALK[frameBody], x, y, drawImageFlipped());
|
|
|
+ bindSlot(WALK[frame]);
|
|
|
+ renderer.drawImage(WALK[frame], x, y, ent.getWidth(), ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(frameBody >= IDLE.length)
|
|
|
+ if(frameIdle >= IDLE.length)
|
|
|
{
|
|
|
- frameBody = 0;
|
|
|
+ frameIdle = 0;
|
|
|
}
|
|
|
- bindSlot(IDLE[frameBody]);
|
|
|
- renderer.drawImage(IDLE[frameBody], x, y, drawImageFlipped());
|
|
|
+ bindSlot(IDLE[frameIdle]);
|
|
|
+ renderer.drawImage(IDLE[frameIdle], x, y, ent.getWidth(), ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
bindSlot(JUMP);
|
|
|
- renderer.drawImage(JUMP, x, y, drawImageFlipped());
|
|
|
+ renderer.drawImage(JUMP, x, y, ent.getWidth(), ent.getHeight(), drawImageFlipped());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -369,15 +415,44 @@ public class HeroAnimator extends EntityAnimator
|
|
|
|
|
|
@Override
|
|
|
public void tick()
|
|
|
- {
|
|
|
+ {
|
|
|
counter++;
|
|
|
- if(counter >= 6)
|
|
|
+ counterIdle++;
|
|
|
+ counterBody++;
|
|
|
+ counterHead++;
|
|
|
+ counterArms++;
|
|
|
+ if(counter >= 6)
|
|
|
{
|
|
|
counter = 0;
|
|
|
+ frame++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(counterIdle >= 12)
|
|
|
+ {
|
|
|
+ counterIdle = 0;
|
|
|
+ frameIdle++;
|
|
|
+ }
|
|
|
+ if(counterBody >= 9)
|
|
|
+ {
|
|
|
+ counterBody = 0;
|
|
|
frameBody++;
|
|
|
- frameHead++;
|
|
|
+ }
|
|
|
+ if(counterArms >= 9)
|
|
|
+ {
|
|
|
+ counterArms = 0;
|
|
|
frameArms++;
|
|
|
}
|
|
|
+ if(counterHead >= 12)
|
|
|
+ {
|
|
|
+ counterHead = 0;
|
|
|
+ frameHead++;
|
|
|
+ frameHeadHit++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(frameIdle < 0)
|
|
|
+ {
|
|
|
+ frameIdle = 0;
|
|
|
+ }
|
|
|
|
|
|
if(frameBody < 0)
|
|
|
{
|
|
@@ -394,12 +469,6 @@ public class HeroAnimator extends EntityAnimator
|
|
|
frameArms = 0;
|
|
|
}
|
|
|
|
|
|
- blink++;
|
|
|
- if(blink > 9)
|
|
|
- {
|
|
|
- blink = 0;
|
|
|
- }
|
|
|
-
|
|
|
if(ent.getController().isInCombatMode())
|
|
|
{
|
|
|
if(KeyHandler.COMBAT_SWITCH_FACE.wasJustReleased())
|
|
@@ -431,14 +500,7 @@ public class HeroAnimator extends EntityAnimator
|
|
|
}
|
|
|
else if(h.wasHurt())
|
|
|
{
|
|
|
- if(blink >= 5)
|
|
|
- {
|
|
|
- image.bindSlot(0);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- image.bindSlot(-1);
|
|
|
- }
|
|
|
+ image.bindSlot(0);
|
|
|
}
|
|
|
else
|
|
|
{
|