split animation frame and facing direction

This commit is contained in:
Sara 2023-11-22 13:57:27 +01:00
parent ad983812f6
commit 918e73c306
2 changed files with 12 additions and 4 deletions

View file

@ -11,11 +11,13 @@ Player* MakePlayer() {
*self = (Player){
.transform = IdentityTransform,
.faceDirection = 0,
.animationStateMachine = state_machine_init(self, PlayerIdle()),
.animFrame = 0,
.sprite = sprite_from_spritesheet(walk, 0),
.stand = idle,
.walk = walk,
.animFrameInterval = 1.0f/8.0f,
.animFrameInterval = 1.0f/4.0f,
.animFrameTimer = 0.0f,
};
@ -34,7 +36,9 @@ Player* SpawnPlayer(Vector location) {
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) {
state_machine_destroy(self->animationStateMachine);
@ -59,11 +63,12 @@ const State* PlayerAnimationUpdate(Player* self, float deltaTime) {
self->animFrameTimer += deltaTime;
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);
if (nextFrame > spritesheet_get_tile_count(sprite_get_spritesheet(self->sprite))) {
return PlayerIdle(); // TODO!
return PlayerIdle();
}
}

View file

@ -11,8 +11,11 @@
typedef struct Player {
Transform transform;
unsigned short faceDirection;
StateMachine* animationStateMachine;
size_t animFrame;
float animFrameTimer;
float animFrameInterval;