Start moving away from wrapping libc stuff in akerror, and move towards akstdlib that does this for me
This commit is contained in:
@@ -9,6 +9,7 @@ find_package(SDL3_image REQUIRED)
|
||||
find_package(SDL3_mixer REQUIRED)
|
||||
find_package(SDL3_ttf REQUIRED)
|
||||
find_package(akerror REQUIRED)
|
||||
find_package(akstdlib REQUIRED)
|
||||
find_package(jansson REQUIRED)
|
||||
find_package(box2d REQUIRED)
|
||||
|
||||
@@ -87,18 +88,19 @@ target_link_libraries(akgl
|
||||
SDL3_image::SDL3_image
|
||||
SDL3_mixer::SDL3_mixer
|
||||
SDL3_ttf::SDL3_ttf
|
||||
akstdlib::akstdlib
|
||||
)
|
||||
|
||||
target_link_libraries(test_actor PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_bitmasks PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_character PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_registry PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_sprite PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_staticstring PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_tilemap PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_util PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_actor PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_bitmasks PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_character PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_registry PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_sprite PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_staticstring PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_tilemap PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(test_util PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
|
||||
target_link_libraries(charviewer PRIVATE akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
target_link_libraries(charviewer PRIVATE akstdlib::akstdlib akerror::akerror akgl SDL3::SDL3 SDL3_ttf::SDL3_ttf SDL3_image::SDL3_image SDL3_mixer::SDL3_mixer box2d::box2d jansson::jansson -lm)
|
||||
|
||||
set(main_lib_dest "lib/akgl-${MY_LIBRARY_VERSION}")
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/akgl.pc DESTINATION "lib/pkgconfig/")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef _SDL_GAMECONTROLLERDB_H_
|
||||
#define _SDL_GAMECONTROLLERDB_H_
|
||||
|
||||
// Taken from https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt on Sat May 9 02:26:29 PM EDT 2026
|
||||
// Taken from https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt on Sat May 9 11:58:41 PM EDT 2026
|
||||
|
||||
#define AKGL_SDL_GAMECONTROLLER_DB_LEN 2227
|
||||
|
||||
|
||||
31
src/game.c
31
src/game.c
@@ -6,6 +6,7 @@
|
||||
#include <akerror.h>
|
||||
#include <semver.h>
|
||||
|
||||
#include <akstdlib.h>
|
||||
#include <akgl/game.h>
|
||||
#include <akgl/controller.h>
|
||||
#include <akgl/tilemap.h>
|
||||
@@ -235,9 +236,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_save(char *fpath)
|
||||
|
||||
ATTEMPT {
|
||||
FAIL_ZERO_BREAK(errctx, fpath, AKERR_NULLPOINTER, "NULL file path");
|
||||
fp = fopen(fpath, "wb");
|
||||
FAIL_ZERO_BREAK(errctx, fp, errno, "%s", fpath);
|
||||
fwrite(&game, 1, sizeof(akgl_Game), fp);
|
||||
CATCH(errctx, aksl_fopen(fpath, "wb", &fp));
|
||||
CATCH(errctx, aksl_fwrite(&game, 1, sizeof(akgl_Game), fp));
|
||||
CATCH(errctx, akgl_game_save_actors(fp));
|
||||
} PROCESS(errctx) {
|
||||
} CLEANUP {
|
||||
@@ -256,18 +256,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load_objectnamemap(FILE *fp, SDL_Pr
|
||||
|
||||
PREPARE_ERROR(errctx);
|
||||
while ( 1 ) {
|
||||
retval = fread((void *)&objname, 1, namelength, fp);
|
||||
FAIL_NONZERO_RETURN(
|
||||
errctx,
|
||||
(retval != namelength),
|
||||
AKERR_IO,
|
||||
"Corrupt save file");
|
||||
retval = fread((void *)&ptr, 1, ptrlength, fp);
|
||||
FAIL_NONZERO_RETURN(
|
||||
errctx,
|
||||
(retval != ptrlength),
|
||||
AKERR_IO,
|
||||
"Corrupt save file");
|
||||
CATCH(errctx, aksl_fread((void *)&objname, 1, namelength, fp));
|
||||
CATCH(errctx, aksl_fread((void *)&ptr, 1, ptrlength, fp));
|
||||
// End of the map
|
||||
if ( ptr == 0x00 && objname[0] == 0x00 ) {
|
||||
break;
|
||||
@@ -280,7 +270,7 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load_objectnamemap(FILE *fp, SDL_Pr
|
||||
|
||||
// SDL_Properties objects can only use string keys, so we can't use the
|
||||
// old pointer as a key without first converting it to a string.
|
||||
memset((void *)&ptrstring, 0x00, 32);
|
||||
CATCH(errctx, aksl_memset((void *)&ptrstring, 0x00, 32));
|
||||
snprintf((char *)&ptrstring, 32, "%p", ptr);
|
||||
SDL_SetPointerProperty(
|
||||
map,
|
||||
@@ -344,13 +334,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load(char *fpath)
|
||||
FAIL_ZERO_RETURN(errctx, fpath, AKERR_NULLPOINTER, "NULL file path");
|
||||
|
||||
ATTEMPT {
|
||||
fp = fopen(fpath, "rb");
|
||||
FAIL_ZERO_BREAK(errctx, fp, errno, "%s", fpath);
|
||||
FAIL_NONZERO_BREAK(
|
||||
errctx,
|
||||
(fread((void *)&savegame, 1, sizeof(akgl_Game), fp) < sizeof(akgl_Game)),
|
||||
AKERR_IO,
|
||||
"Corrupt save file");
|
||||
CATCH(errctx, aksl_fopen(fpath, "rb", &fp));
|
||||
CATCH(errctx, aksl_fread((void *)&savegame, 1, sizeof(akgl_Game), fp));
|
||||
CATCH(errctx, akgl_game_load_versioncmp("library", (char *)&savegame.libversion, (char *)AKGL_VERSION));
|
||||
CATCH(errctx, akgl_game_load_versioncmp("game", (char *)&savegame.version, (char *)&game.version));
|
||||
FAIL_NONZERO_RETURN(
|
||||
|
||||
Reference in New Issue
Block a user