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:
45
src/events.c
Normal file
45
src/events.c
Normal file
@@ -0,0 +1,45 @@
|
||||
#include <akgltest.h>
|
||||
|
||||
akerr_ErrorContext AKERR_NOIGNORE *savegame(akgl_Actor *obj, SDL_Event *event)
|
||||
{
|
||||
return akgl_game_save("assets/savegame.bin");
|
||||
}
|
||||
|
||||
akerr_ErrorContext AKERR_NOIGNORE *quit_game(akgl_Actor *obj, SDL_Event *event)
|
||||
{
|
||||
PREPARE_ERROR(e);
|
||||
AKGL_BITMASK_ADD(game.state.flags, AKGLTEST_STATE_QUIT);
|
||||
SDL_Log("Quitting game");
|
||||
SUCCEED_RETURN(e);
|
||||
}
|
||||
|
||||
SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
|
||||
{
|
||||
PREPARE_ERROR(e);
|
||||
|
||||
ATTEMPT {
|
||||
CATCH(e, akgl_game_state_lock());
|
||||
FAIL_ZERO_BREAK(e, appstate, AKERR_NULLPOINTER, "NULL appstate pointer");
|
||||
FAIL_ZERO_BREAK(e, event, AKERR_NULLPOINTER, "NULL event pointer");
|
||||
|
||||
if ( AKGL_BITMASK_HAS(game.state.flags, AKGLTEST_STATE_WAITFORINPUT) ) {
|
||||
if ( event->type == SDL_EVENT_GAMEPAD_BUTTON_DOWN ||
|
||||
event->type == SDL_EVENT_GAMEPAD_BUTTON_UP ||
|
||||
event->type == SDL_EVENT_KEY_DOWN ||
|
||||
event->type == SDL_EVENT_KEY_UP ) {
|
||||
// get the player's default keyboard or gamepad id from the event
|
||||
CATCH(e, akgltest_controller_get_defaults(appstate, event));
|
||||
CATCH(e, akgltest_set_gamemode_menu(appstate, event));
|
||||
}
|
||||
} else {
|
||||
CATCH(e, akgl_controller_handle_event(appstate, event));
|
||||
}
|
||||
if (event->type == SDL_EVENT_QUIT) {
|
||||
return SDL_APP_SUCCESS; /* end the program, reporting success to the OS. */
|
||||
}
|
||||
} CLEANUP {
|
||||
IGNORE(akgl_game_state_unlock());
|
||||
} PROCESS(e) {
|
||||
} FINISH_NORETURN(e);
|
||||
return SDL_APP_CONTINUE; /* carry on with the program! */
|
||||
}
|
||||
Reference in New Issue
Block a user