split animation frame and facing direction
This commit is contained in:
parent
ad983812f6
commit
918e73c306
|
@ -11,11 +11,13 @@ Player* MakePlayer() {
|
||||||
|
|
||||||
*self = (Player){
|
*self = (Player){
|
||||||
.transform = IdentityTransform,
|
.transform = IdentityTransform,
|
||||||
|
.faceDirection = 0,
|
||||||
.animationStateMachine = state_machine_init(self, PlayerIdle()),
|
.animationStateMachine = state_machine_init(self, PlayerIdle()),
|
||||||
|
.animFrame = 0,
|
||||||
.sprite = sprite_from_spritesheet(walk, 0),
|
.sprite = sprite_from_spritesheet(walk, 0),
|
||||||
.stand = idle,
|
.stand = idle,
|
||||||
.walk = walk,
|
.walk = walk,
|
||||||
.animFrameInterval = 1.0f/8.0f,
|
.animFrameInterval = 1.0f/4.0f,
|
||||||
.animFrameTimer = 0.0f,
|
.animFrameTimer = 0.0f,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,7 +36,9 @@ Player* SpawnPlayer(Vector location) {
|
||||||
|
|
||||||
void PlayerStart(Player* self) {}
|
void PlayerStart(Player* self) {}
|
||||||
|
|
||||||
void PlayerUpdate(Player* self, float deltaTime) {}
|
void PlayerUpdate(Player* self, float deltaTime) {
|
||||||
|
state_machine_update(self->animationStateMachine, deltaTime);
|
||||||
|
}
|
||||||
|
|
||||||
void PlayerDestroy(Player* self) {
|
void PlayerDestroy(Player* self) {
|
||||||
state_machine_destroy(self->animationStateMachine);
|
state_machine_destroy(self->animationStateMachine);
|
||||||
|
@ -59,11 +63,12 @@ const State* PlayerAnimationUpdate(Player* self, float deltaTime) {
|
||||||
self->animFrameTimer += deltaTime;
|
self->animFrameTimer += deltaTime;
|
||||||
|
|
||||||
if (self->animFrameTimer > self->animFrameInterval) {
|
if (self->animFrameTimer > self->animFrameInterval) {
|
||||||
size_t nextFrame = sprite_get_tile(self->sprite) + 1;
|
self->animFrameTimer = 0.f;
|
||||||
|
size_t nextFrame = self->animFrame + 8;
|
||||||
sprite_set_tile(self->sprite, nextFrame);
|
sprite_set_tile(self->sprite, nextFrame);
|
||||||
|
|
||||||
if (nextFrame > spritesheet_get_tile_count(sprite_get_spritesheet(self->sprite))) {
|
if (nextFrame > spritesheet_get_tile_count(sprite_get_spritesheet(self->sprite))) {
|
||||||
return PlayerIdle(); // TODO!
|
return PlayerIdle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,11 @@
|
||||||
|
|
||||||
typedef struct Player {
|
typedef struct Player {
|
||||||
Transform transform;
|
Transform transform;
|
||||||
|
|
||||||
|
unsigned short faceDirection;
|
||||||
|
|
||||||
StateMachine* animationStateMachine;
|
StateMachine* animationStateMachine;
|
||||||
|
size_t animFrame;
|
||||||
float animFrameTimer;
|
float animFrameTimer;
|
||||||
float animFrameInterval;
|
float animFrameInterval;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue