Files
akgl-test/src/SDL_AppInit.c

61 lines
1.9 KiB
C
Raw Normal View History

#include <akgltest.h>
SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
{
akgl_Actor *actorptr = NULL;
*appstate = (void *)&game.state;
PREPARE_ERROR(e);
AKGL_BITMASK_ADD(game.state.flags, AKGLTEST_STATE_LOADING);
ATTEMPT {
FAIL_ZERO_BREAK(e, appstate, AKERR_NULLPOINTER, "NULL appstate pointer");
strcpy((char *)&game.name, "sdl3-gametest");
strcpy((char *)&game.version, "0.0.1");
strcpy((char *)&game.uri, "net.aklabs.games.sdl3-gametest");
//CATCH(e, akgl_game_load("assets/savegame.bin"));
CATCH(e, akgl_game_init());
CATCH(e, akgl_game_state_lock());
CATCH(e, akgl_registry_load_properties("assets/properties.json"));
CATCH(e, akgl_render_init2d(&renderer));
CATCH(e, akgl_physics_init_sidescroller(&physics));
CATCH(e, akgl_controller_list_keyboards());
CATCH(e, akgltest_load_assets());
CATCH(e, akgl_heap_next_actor(&actorptr));
CATCH(e, akgl_actor_initialize((akgl_Actor *)actorptr, "player"));
actorptr->basechar = SDL_GetPointerProperty(
AKGL_REGISTRY_CHARACTER,
"little guy",
NULL);
FAIL_ZERO_BREAK(e, actorptr->basechar, AKERR_REGISTRY, "Can't load character 'little guy' from the registry");
actorptr->movement_controls_face = false;
actorptr->state = (AKGL_ACTOR_STATE_ALIVE | AKGL_ACTOR_STATE_FACE_LEFT);
actorptr->x = 320;
actorptr->y = 240;
actorptr->visible = false;
strcpy((char *)&dirnamebuf, "assets/memories.mp3");
CATCH(e, akgl_load_start_bgm((char *)&dirnamebuf));
CATCH(e, music_toggle(NULL, NULL));
CATCH(e, akgl_text_loadfont("C64Pro", "assets/C64_Pro-STYLE.ttf", 18));
} CLEANUP {
IGNORE(akgl_game_state_unlock());
} PROCESS(e) {
} HANDLE_DEFAULT(e) {
LOG_ERROR(e);
return SDL_APP_FAILURE;
} FINISH_NORETURN(e);
AKGL_BITMASK_DEL(game.state.flags, AKGLTEST_STATE_LOADING);
AKGL_BITMASK_ADD(game.state.flags, AKGLTEST_STATE_WAITFORINPUT);
return SDL_APP_CONTINUE;
}