2025-08-03 10:07:35 -04:00
|
|
|
#include <SDL3/SDL.h>
|
2026-01-05 08:58:06 -05:00
|
|
|
#include <akerror.h>
|
2025-08-03 10:07:35 -04:00
|
|
|
|
2025-08-03 10:41:09 -04:00
|
|
|
#include <sdl3game/sprite.h>
|
|
|
|
|
#include <sdl3game/registry.h>
|
|
|
|
|
#include <sdl3game/iterator.h>
|
|
|
|
|
#include <sdl3game/actor.h>
|
2025-08-03 10:07:35 -04:00
|
|
|
|
|
|
|
|
SDL_PropertiesID REGISTRY_ACTOR;
|
|
|
|
|
SDL_PropertiesID REGISTRY_ACTOR_STATE_STRINGS;
|
|
|
|
|
SDL_PropertiesID REGISTRY_SPRITE;
|
|
|
|
|
SDL_PropertiesID REGISTRY_SPRITESHEET;
|
|
|
|
|
SDL_PropertiesID REGISTRY_CHARACTER;
|
|
|
|
|
|
2026-05-03 23:57:55 -04:00
|
|
|
akerr_ErrorContext *registry_init()
|
2025-08-03 10:07:35 -04:00
|
|
|
{
|
|
|
|
|
PREPARE_ERROR(errctx);
|
|
|
|
|
ATTEMPT {
|
|
|
|
|
CATCH(errctx, registry_init_spritesheet());
|
|
|
|
|
CATCH(errctx, registry_init_sprite());
|
|
|
|
|
CATCH(errctx, registry_init_character());
|
|
|
|
|
CATCH(errctx, registry_init_actor());
|
|
|
|
|
CATCH(errctx, registry_init_actor_state_strings());
|
|
|
|
|
} CLEANUP {
|
|
|
|
|
} PROCESS(errctx) {
|
|
|
|
|
} FINISH(errctx, true);
|
|
|
|
|
SUCCEED_RETURN(errctx);
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-03 23:57:55 -04:00
|
|
|
akerr_ErrorContext *registry_init_actor()
|
2025-08-03 10:07:35 -04:00
|
|
|
{
|
|
|
|
|
PREPARE_ERROR(errctx);
|
|
|
|
|
REGISTRY_ACTOR = SDL_CreateProperties();
|
2026-05-03 23:57:55 -04:00
|
|
|
FAIL_ZERO_RETURN(errctx, REGISTRY_ACTOR, AKERR_NULLPOINTER, "Error initializing actor registry");
|
2025-08-03 10:07:35 -04:00
|
|
|
SUCCEED_RETURN(errctx);
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-03 23:57:55 -04:00
|
|
|
akerr_ErrorContext *registry_init_actor_state_strings()
|
2025-08-03 10:07:35 -04:00
|
|
|
{
|
|
|
|
|
int i = 0;
|
|
|
|
|
int flag = 0;
|
|
|
|
|
PREPARE_ERROR(errctx);
|
|
|
|
|
REGISTRY_ACTOR_STATE_STRINGS = SDL_CreateProperties();
|
2026-05-03 23:57:55 -04:00
|
|
|
FAIL_ZERO_RETURN(errctx, REGISTRY_ACTOR_STATE_STRINGS, AKERR_NULLPOINTER, "Error initializing actor state strings registry");
|
2025-08-03 10:07:35 -04:00
|
|
|
for ( i = 0 ; i < ACTOR_MAX_STATES; i++ ) {
|
|
|
|
|
flag = (1 << i);
|
|
|
|
|
SDL_SetNumberProperty(
|
|
|
|
|
REGISTRY_ACTOR_STATE_STRINGS,
|
|
|
|
|
ACTOR_STATE_STRING_NAMES[i],
|
|
|
|
|
flag);
|
|
|
|
|
}
|
|
|
|
|
SUCCEED_RETURN(errctx);
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-03 23:57:55 -04:00
|
|
|
akerr_ErrorContext *registry_init_sprite()
|
2025-08-03 10:07:35 -04:00
|
|
|
{
|
|
|
|
|
PREPARE_ERROR(errctx);
|
|
|
|
|
REGISTRY_SPRITE = SDL_CreateProperties();
|
2026-05-03 23:57:55 -04:00
|
|
|
FAIL_ZERO_RETURN(errctx, REGISTRY_SPRITE, AKERR_NULLPOINTER, "Error initializing sprite registry");
|
2025-08-03 10:07:35 -04:00
|
|
|
SUCCEED_RETURN(errctx);
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-03 23:57:55 -04:00
|
|
|
akerr_ErrorContext *registry_init_spritesheet()
|
2025-08-03 10:07:35 -04:00
|
|
|
{
|
|
|
|
|
PREPARE_ERROR(errctx);
|
|
|
|
|
REGISTRY_SPRITESHEET = SDL_CreateProperties();
|
2026-05-03 23:57:55 -04:00
|
|
|
FAIL_ZERO_RETURN(errctx, REGISTRY_SPRITESHEET, AKERR_NULLPOINTER, "Error initializing spritesheet registry");
|
2025-08-03 10:07:35 -04:00
|
|
|
SUCCEED_RETURN(errctx);
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-03 23:57:55 -04:00
|
|
|
akerr_ErrorContext *registry_init_character()
|
2025-08-03 10:07:35 -04:00
|
|
|
{
|
|
|
|
|
PREPARE_ERROR(errctx);
|
|
|
|
|
REGISTRY_CHARACTER = SDL_CreateProperties();
|
2026-05-03 23:57:55 -04:00
|
|
|
FAIL_ZERO_RETURN(errctx, REGISTRY_CHARACTER, AKERR_NULLPOINTER, "Error initializing character registry");
|
2025-08-03 10:07:35 -04:00
|
|
|
SUCCEED_RETURN(errctx);
|
|
|
|
|
}
|