#ifndef _AKGL_CHARACTER_H_ #define _AKGL_CHARACTER_H_ #include #include "types.h" #include "sprite.h" #define AKGL_SPRITE_MAX_CHARACTER_NAME_LENGTH 128 #define AKGL_MAX_HEAP_CHARACTER 256 typedef struct akgl_Character { uint8_t refcount; char name[AKGL_SPRITE_MAX_CHARACTER_NAME_LENGTH]; SDL_PropertiesID state_sprites; uint64_t movementspeed; float32_t vx; float32_t vy; akerr_ErrorContext AKERR_NOIGNORE *(*sprite_add)(struct akgl_Character *, akgl_Sprite *, int); akerr_ErrorContext AKERR_NOIGNORE *(*sprite_get)(struct akgl_Character *, int, akgl_Sprite **); } akgl_Character; akerr_ErrorContext AKERR_NOIGNORE *akgl_character_initialize(akgl_Character *basechar, char *name); akerr_ErrorContext AKERR_NOIGNORE *akgl_character_sprite_add(akgl_Character *basechar, akgl_Sprite *ref, int state); akerr_ErrorContext AKERR_NOIGNORE *akgl_character_sprite_get(akgl_Character *basechar, int state, akgl_Sprite **dest); // This is an SDL iterator so we can't return our error state from it. void akgl_character_state_sprites_iterate(void *userdata, SDL_PropertiesID props, const char *name); akerr_ErrorContext AKERR_NOIGNORE *akgl_character_load_json(char *filename); #endif // _AKGL_CHARACTER_H_