[Add] New animation type.
This commit is contained in:
parent
4f08f51ae3
commit
35468417a4
Binary file not shown.
BIN
bin/tfg/AnimationType.class
Normal file
BIN
bin/tfg/AnimationType.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -22,10 +22,7 @@ public class AnimatedSprite {
|
||||
* Keeps track of time between frame changes.
|
||||
*/
|
||||
private int frameCounter = 0;
|
||||
/**
|
||||
* Whether or not the sprite is currently animated.
|
||||
*/
|
||||
private boolean animating = false;
|
||||
|
||||
/**
|
||||
* The position at which the sprite is rendered.
|
||||
*/
|
||||
@ -43,6 +40,11 @@ public class AnimatedSprite {
|
||||
*/
|
||||
private final Vector2i spriteSize = new Vector2i(32, 48);
|
||||
|
||||
/**
|
||||
* The current animation to play.
|
||||
*/
|
||||
private AnimationType currentAnimationType = AnimationType.NONE;
|
||||
|
||||
/**
|
||||
* Create a new animated sprite.
|
||||
* @param s The sprite to animate.
|
||||
@ -53,21 +55,14 @@ public class AnimatedSprite {
|
||||
entityLoc = l;
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the animation.
|
||||
*/
|
||||
public void startWalkingAnimation() {
|
||||
startAnimation();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update animation.
|
||||
*/
|
||||
public void animate() {
|
||||
if(animating) { /* Then update animation. */
|
||||
if(currentAnimationType != AnimationType.NONE) {
|
||||
if(frameCounter >= animationSpeed) { /* If 15Hz has passed. */
|
||||
stopAnimation();
|
||||
} else {
|
||||
} else if(currentAnimationType == AnimationType.WALKING) {
|
||||
/* Get the position between old and new. */
|
||||
spritePosition = entityLoc.interpolate(animationSpeed, frameCounter);
|
||||
Vector2i entityPos = entityLoc.getPosition(); /* Get the entity position. */
|
||||
@ -86,6 +81,17 @@ public class AnimatedSprite {
|
||||
} else if(change >= .75f && change <= 1.0f) {
|
||||
animationFrame = 3;
|
||||
}
|
||||
} else if(currentAnimationType== AnimationType.STATIONARY_WALK) {
|
||||
float steps = animationSpeed / 4;
|
||||
if(frameCounter >= 0.f && frameCounter < steps) {
|
||||
animationFrame = 0;
|
||||
} else if(frameCounter >= steps && frameCounter < (2*steps)) {
|
||||
animationFrame = 1;
|
||||
} else if(frameCounter >= (2*steps)&&frameCounter<(3*steps)) {
|
||||
animationFrame = 2;
|
||||
} else if(frameCounter >= (3*steps)&&frameCounter<=(4*steps)) {
|
||||
animationFrame = 3;
|
||||
}
|
||||
}
|
||||
frameCounter++; /* Increment on each update to keep track of time. */
|
||||
}
|
||||
@ -96,7 +102,7 @@ public class AnimatedSprite {
|
||||
*/
|
||||
private void stopAnimation() {
|
||||
/* Reset the following. */
|
||||
animating = false;
|
||||
currentAnimationType = AnimationType.NONE;
|
||||
frameCounter = 0;
|
||||
animationFrame = 0;
|
||||
}
|
||||
@ -104,8 +110,8 @@ public class AnimatedSprite {
|
||||
/**
|
||||
* Start the animation.
|
||||
*/
|
||||
private void startAnimation() {
|
||||
animating = true;
|
||||
public void startAnimation(AnimationType t) {
|
||||
currentAnimationType = t;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -113,7 +119,7 @@ public class AnimatedSprite {
|
||||
* @return If the animation finished.
|
||||
*/
|
||||
public boolean finishedAnimating() {
|
||||
return !animating;
|
||||
return currentAnimationType == AnimationType.NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
7
src/tfg/AnimationType.java
Normal file
7
src/tfg/AnimationType.java
Normal file
@ -0,0 +1,7 @@
|
||||
package tfg;
|
||||
|
||||
public enum AnimationType {
|
||||
NONE,
|
||||
WALKING,
|
||||
STATIONARY_WALK
|
||||
};
|
@ -66,6 +66,7 @@ public class Game {
|
||||
windowTitle);
|
||||
player.changeMap(new Map(10, 10, Tile.SAND));
|
||||
camera = new Camera(window);
|
||||
// window.setFramerateLimit(60);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,10 +17,6 @@ import java.nio.file.Paths;
|
||||
* @author Ritchie Cunningham
|
||||
*/
|
||||
public class Player extends Entity implements Drawable {
|
||||
/**
|
||||
* The players location.
|
||||
*/
|
||||
private Location playerLoc;
|
||||
/**
|
||||
* The texture for the sprite.
|
||||
*/
|
||||
@ -104,9 +100,14 @@ public class Player extends Entity implements Drawable {
|
||||
entityLoc.setDirection(d);
|
||||
if(currentMap.isValidLocation(newLoc)) {
|
||||
currentAction = PlayerAction.MOVING;
|
||||
entityLoc.setDirection(d);
|
||||
playerSprite.startWalkingAnimation();
|
||||
playerSprite.startAnimation(AnimationType.WALKING);
|
||||
} else if(cannotMove.getStatus() == SoundSource.Status.STOPPED) {
|
||||
/*
|
||||
* Play the stationary walk animation.
|
||||
* It appears like the player is trying to move, but can't.
|
||||
*/
|
||||
playerSprite.startAnimation(AnimationType.STATIONARY_WALK);
|
||||
/* Play an annoying sound. */
|
||||
cannotMove.play();
|
||||
}
|
||||
}
|
||||
@ -123,11 +124,11 @@ public class Player extends Entity implements Drawable {
|
||||
/* Actually move the location. */
|
||||
entityLoc = entityLoc.getRelativeLocation(entityLoc.getDirection());
|
||||
/* Update the sprite with new location. */
|
||||
playerSprite.updatePosition(entityLoc);
|
||||
} else {
|
||||
playerSprite.animate(); /* Proceed with the animation. */
|
||||
playerSprite.updatePosition(entityLoc);
|
||||
}
|
||||
}
|
||||
/* Update the animation, if there is no current animation, ignore. */
|
||||
playerSprite.animate();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -20,7 +20,7 @@ public enum Tile {
|
||||
|
||||
/**
|
||||
* Get the coords of a specific tile from the tile-set image.
|
||||
* @param t The tole to get the coordinates of.
|
||||
* @param t The tile to get the coordinates of.
|
||||
* @return Coords of the tile image in the tile-set.
|
||||
*/
|
||||
public static Vector2f getTextureCoords(Tile t) {
|
||||
|
Loading…
Reference in New Issue
Block a user