Break out the game demo into multiple source and include files, add a bunch of missing assets, conform to the new subsystems interface from libakgl
This commit is contained in:
60
src/SDL_AppInit.c
Normal file
60
src/SDL_AppInit.c
Normal file
@@ -0,0 +1,60 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user