Adapt to gamemap, renderer, physics and camera being a pointer

This commit is contained in:
2026-06-02 13:15:41 -04:00
parent fa0584f28f
commit 3608c68764
7 changed files with 65 additions and 17 deletions

View File

@@ -111,6 +111,22 @@
"nextlayerid":5, "nextlayerid":5,
"nextobjectid":18, "nextobjectid":18,
"orientation":"orthogonal", "orientation":"orthogonal",
"properties":[
{
"name":"physics.drag.y",
"type":"string",
"value":"0.0"
},
{
"name":"physics.gravity.y",
"type":"string",
"value":"0.0"
},
{
"name":"physics.model",
"type":"string",
"value":"arcade"
}],
"renderorder":"right-down", "renderorder":"right-down",
"tiledversion":"1.8.2", "tiledversion":"1.8.2",
"tileheight":16, "tileheight":16,

View File

@@ -63,6 +63,22 @@
"nextlayerid":4, "nextlayerid":4,
"nextobjectid":2, "nextobjectid":2,
"orientation":"orthogonal", "orientation":"orthogonal",
"properties":[
{
"name":"physics.drag.y",
"type":"string",
"value":"1.0"
},
{
"name":"physics.gravity.y",
"type":"string",
"value":"1024.0"
},
{
"name":"physics.model",
"type":"string",
"value":"arcade"
}],
"renderorder":"right-down", "renderorder":"right-down",
"tiledversion":"1.8.2", "tiledversion":"1.8.2",
"tileheight":32, "tileheight":32,

View File

@@ -88,6 +88,22 @@
"nextlayerid":4, "nextlayerid":4,
"nextobjectid":3, "nextobjectid":3,
"orientation":"orthogonal", "orientation":"orthogonal",
"properties":[
{
"name":"physics.drag.y",
"type":"string",
"value":"0.0"
},
{
"name":"physics.gravity.y",
"type":"string",
"value":"0.0"
},
{
"name":"physics.model",
"type":"string",
"value":"arcade"
}],
"renderorder":"right-down", "renderorder":"right-down",
"tiledversion":"1.8.2", "tiledversion":"1.8.2",
"tileheight":16, "tileheight":16,

2
deps/libakgl vendored

View File

@@ -19,8 +19,8 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
CATCH(e, akgl_game_init()); CATCH(e, akgl_game_init());
CATCH(e, akgl_game_state_lock()); CATCH(e, akgl_game_state_lock());
CATCH(e, akgl_registry_load_properties("assets/properties.json")); CATCH(e, akgl_registry_load_properties("assets/properties.json"));
CATCH(e, akgl_render_init2d(&renderer)); CATCH(e, akgl_render_init2d(renderer));
CATCH(e, akgl_physics_init_sidescroller(&physics)); CATCH(e, akgl_physics_init_arcade(physics));
CATCH(e, akgl_controller_list_keyboards()); CATCH(e, akgl_controller_list_keyboards());
CATCH(e, akgltest_load_assets()); CATCH(e, akgltest_load_assets());

View File

@@ -6,7 +6,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_set_gamemode_menu(akgl_Actor *appsta
PREPARE_ERROR(e); PREPARE_ERROR(e);
AKGL_BITMASK_DEL(game.state.flags, AKGLTEST_STATE_WAITFORINPUT); AKGL_BITMASK_DEL(game.state.flags, AKGLTEST_STATE_WAITFORINPUT);
AKGL_BITMASK_DEL(game.state.flags, AKGLTEST_STATE_RUNNING); AKGL_BITMASK_DEL(game.state.flags, AKGLTEST_STATE_RUNNING);
PASS(e, akgl_tilemap_release(&gamemap)); PASS(e, akgl_tilemap_release(gamemap));
PASS(e, akgl_registry_init_actor()); PASS(e, akgl_registry_init_actor());
PASS(e, akgl_heap_init_actor()); PASS(e, akgl_heap_init_actor());
PASS(e, akgltest_init_menupointer()); PASS(e, akgltest_init_menupointer());
@@ -17,7 +17,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_set_gamemode_menu(akgl_Actor *appsta
PASS(e, aksl_memset((void *)GAME_ControlMaps, 0x00, (sizeof(akgl_ControlMap) * AKGL_MAX_CONTROL_MAPS))); PASS(e, aksl_memset((void *)GAME_ControlMaps, 0x00, (sizeof(akgl_ControlMap) * AKGL_MAX_CONTROL_MAPS)));
PASS(e, akgltest_controller_bind_universal("menupointer", AKGLTEST_CONTROLMAP_MENU, kbid, jsid)); PASS(e, akgltest_controller_bind_universal("menupointer", AKGLTEST_CONTROLMAP_MENU, kbid, jsid));
PASS(e, aksl_memset((void *)&gamemap, 0x00, sizeof(akgl_Tilemap))); PASS(e, aksl_memset(gamemap, 0x00, sizeof(akgl_Tilemap)));
AKGL_BITMASK_ADD(game.state.flags, AKGLTEST_STATE_MAPMENU); AKGL_BITMASK_ADD(game.state.flags, AKGLTEST_STATE_MAPMENU);
SUCCEED_RETURN(e); SUCCEED_RETURN(e);
} }
@@ -39,13 +39,13 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_set_gamemode_running(akgl_Actor *app
if ( menuselection == 0 ) { if ( menuselection == 0 ) {
strcpy((char *)&dirnamebuf, "assets/imagemap.tmj"); strcpy((char *)&dirnamebuf, "assets/imagemap.tmj");
PASS(e, akgl_tilemap_load((char *)&dirnamebuf, (akgl_Tilemap *)&gamemap)); PASS(e, akgl_tilemap_load((char *)&dirnamebuf, gamemap));
} else if ( menuselection == 1 ) { } else if ( menuselection == 1 ) {
strcpy((char *)&dirnamebuf, "assets/tilemap.tmj"); strcpy((char *)&dirnamebuf, "assets/tilemap.tmj");
PASS(e, akgl_tilemap_load((char *)&dirnamebuf, (akgl_Tilemap *)&gamemap)); PASS(e, akgl_tilemap_load((char *)&dirnamebuf, gamemap));
} else if ( menuselection == 2 ) { } else if ( menuselection == 2 ) {
strcpy((char *)&dirnamebuf, "assets/sidescroller.tmj"); strcpy((char *)&dirnamebuf, "assets/sidescroller.tmj");
PASS(e, akgl_tilemap_load((char *)&dirnamebuf, (akgl_Tilemap *)&gamemap)); PASS(e, akgl_tilemap_load((char *)&dirnamebuf, gamemap));
} else if ( menuselection == 3 ) { } else if ( menuselection == 3 ) {
AKGL_BITMASK_DEL(game.state.flags, AKGLTEST_STATE_RUNNING); AKGL_BITMASK_DEL(game.state.flags, AKGLTEST_STATE_RUNNING);
AKGL_BITMASK_ADD(game.state.flags, AKGLTEST_STATE_QUIT); AKGL_BITMASK_ADD(game.state.flags, AKGLTEST_STATE_QUIT);
@@ -63,10 +63,10 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_iterate_mapmenu(void)
}; };
PREPARE_ERROR(e); PREPARE_ERROR(e);
ATTEMPT { ATTEMPT {
CATCH(e, renderer.frame_start(&renderer)) CATCH(e, renderer->frame_start(renderer))
SDL_SetRenderDrawColor(renderer.sdl_renderer, 0, 0, 0, 255); SDL_SetRenderDrawColor(renderer->sdl_renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer.sdl_renderer); SDL_RenderClear(renderer->sdl_renderer);
PASS(e, akgl_text_rendertextat( PASS(e, akgl_text_rendertextat(
SDL_GetPointerProperty( SDL_GetPointerProperty(
AKGL_REGISTRY_FONT, AKGL_REGISTRY_FONT,
@@ -115,7 +115,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_iterate_mapmenu(void)
FAIL_ZERO_BREAK(e, menupointer, AKERR_NULLPOINTER, "actor missing from registry"); FAIL_ZERO_BREAK(e, menupointer, AKERR_NULLPOINTER, "actor missing from registry");
menupointer->visible = true; menupointer->visible = true;
CATCH(e, akgl_game_update(&opflags)); CATCH(e, akgl_game_update(&opflags));
CATCH(e, renderer.frame_end(&renderer)) CATCH(e, renderer->frame_end(renderer))
} CLEANUP { } CLEANUP {
} PROCESS(e) { } PROCESS(e) {
} FINISH(e, true); } FINISH(e, true);
@@ -141,7 +141,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_iterate_waitforinput(void)
40, 40,
120) 120)
); );
PASS(e, renderer.frame_end(&renderer)); PASS(e, renderer->frame_end(renderer));
SUCCEED_RETURN(e); SUCCEED_RETURN(e);
} }
@@ -155,7 +155,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_iterate_running(void)
int count; int count;
PREPARE_ERROR(e); PREPARE_ERROR(e);
PASS(e, renderer.frame_start(&renderer)); PASS(e, renderer->frame_start(renderer));
player = SDL_GetPointerProperty(AKGL_REGISTRY_ACTOR, "player", NULL); player = SDL_GetPointerProperty(AKGL_REGISTRY_ACTOR, "player", NULL);
FAIL_ZERO_RETURN(e, player, AKERR_NULLPOINTER, "player not in registry"); FAIL_ZERO_RETURN(e, player, AKERR_NULLPOINTER, "player not in registry");
gamefont = SDL_GetPointerProperty(AKGL_REGISTRY_FONT, "C64Pro", NULL); gamefont = SDL_GetPointerProperty(AKGL_REGISTRY_FONT, "C64Pro", NULL);
@@ -195,7 +195,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_iterate_running(void)
30) 30)
); );
memset((char *)&screenText, 0x00, 128); memset((char *)&screenText, 0x00, 128);
snprintf((char *)&screenText, 127, "DY: %f", physics.drag_y); snprintf((char *)&screenText, 127, "DY: %f", physics->drag_y);
PASS(e, akgl_text_rendertextat( PASS(e, akgl_text_rendertextat(
gamefont, gamefont,
(char *)&screenText, (char *)&screenText,
@@ -226,6 +226,6 @@ akerr_ErrorContext AKERR_NOIGNORE *akgltest_iterate_running(void)
30) 30)
); );
PASS(e, renderer.frame_end(&renderer)); PASS(e, renderer->frame_end(renderer));
SUCCEED_RETURN(e); SUCCEED_RETURN(e);
} }