#ifndef TOPDOWN_PLAYER_H #define TOPDOWN_PLAYER_H #include "sprite.h" #include "spritesheet.h" #include "sprite_entity.h" #include "drop.h" #include "behaviour_entity.h" #include "state_machine.h" #include "transformable.h" typedef struct Player { Transform transform; unsigned short faceDirection; StateMachine* animationStateMachine; size_t animFrame; float animFrameTimer; float animFrameInterval; Spritesheet* walk; Spritesheet* stand; Sprite* sprite; } Player; extern Player* MakePlayer(); extern Player* SpawnPlayer(Vector location); extern void PlayerUpdate(Player* self, float deltaTime); extern void PlayerStart(Player* self); extern void PlayerDestroy(Player* self); extern void PlayerDraw(Player* self); extern Sprite* PlayerGetSprite(Player* self); extern Transform* PlayerGetTransform(Player* self); impl_Drop_for(Player, PlayerDestroy ) impl_Transformable_for(Player, PlayerGetTransform ) impl_BehaviourEntity_for(Player, PlayerStart, PlayerUpdate, SpawnPlayer, PlayerDraw ) impl_SpriteEntity_for(Player, PlayerGetSprite ) extern const State* PlayerAnimationUpdate(Player* player, float deltaTime); extern void PlayerAnimationExit(Player* player); extern void PlayerIdleEnter(Player* player); DefineState(PlayerIdle, PlayerIdleEnter, PlayerAnimationExit, PlayerAnimationUpdate ) #endif // !TOPDOWN_PLAYER_H