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_mixer REQUIRED)
|
||||||
find_package(SDL3_ttf REQUIRED)
|
find_package(SDL3_ttf REQUIRED)
|
||||||
find_package(akerror REQUIRED)
|
find_package(akerror REQUIRED)
|
||||||
|
find_package(akstdlib REQUIRED)
|
||||||
find_package(jansson REQUIRED)
|
find_package(jansson REQUIRED)
|
||||||
find_package(box2d REQUIRED)
|
find_package(box2d REQUIRED)
|
||||||
|
|
||||||
@@ -87,18 +88,19 @@ target_link_libraries(akgl
|
|||||||
SDL3_image::SDL3_image
|
SDL3_image::SDL3_image
|
||||||
SDL3_mixer::SDL3_mixer
|
SDL3_mixer::SDL3_mixer
|
||||||
SDL3_ttf::SDL3_ttf
|
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_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 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 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 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 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 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 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 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}")
|
set(main_lib_dest "lib/akgl-${MY_LIBRARY_VERSION}")
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/akgl.pc DESTINATION "lib/pkgconfig/")
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/akgl.pc DESTINATION "lib/pkgconfig/")
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef _SDL_GAMECONTROLLERDB_H_
|
#ifndef _SDL_GAMECONTROLLERDB_H_
|
||||||
#define _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
|
#define AKGL_SDL_GAMECONTROLLER_DB_LEN 2227
|
||||||
|
|
||||||
|
|||||||
31
src/game.c
31
src/game.c
@@ -6,6 +6,7 @@
|
|||||||
#include <akerror.h>
|
#include <akerror.h>
|
||||||
#include <semver.h>
|
#include <semver.h>
|
||||||
|
|
||||||
|
#include <akstdlib.h>
|
||||||
#include <akgl/game.h>
|
#include <akgl/game.h>
|
||||||
#include <akgl/controller.h>
|
#include <akgl/controller.h>
|
||||||
#include <akgl/tilemap.h>
|
#include <akgl/tilemap.h>
|
||||||
@@ -235,9 +236,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_save(char *fpath)
|
|||||||
|
|
||||||
ATTEMPT {
|
ATTEMPT {
|
||||||
FAIL_ZERO_BREAK(errctx, fpath, AKERR_NULLPOINTER, "NULL file path");
|
FAIL_ZERO_BREAK(errctx, fpath, AKERR_NULLPOINTER, "NULL file path");
|
||||||
fp = fopen(fpath, "wb");
|
CATCH(errctx, aksl_fopen(fpath, "wb", &fp));
|
||||||
FAIL_ZERO_BREAK(errctx, fp, errno, "%s", fpath);
|
CATCH(errctx, aksl_fwrite(&game, 1, sizeof(akgl_Game), fp));
|
||||||
fwrite(&game, 1, sizeof(akgl_Game), fp);
|
|
||||||
CATCH(errctx, akgl_game_save_actors(fp));
|
CATCH(errctx, akgl_game_save_actors(fp));
|
||||||
} PROCESS(errctx) {
|
} PROCESS(errctx) {
|
||||||
} CLEANUP {
|
} CLEANUP {
|
||||||
@@ -256,18 +256,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load_objectnamemap(FILE *fp, SDL_Pr
|
|||||||
|
|
||||||
PREPARE_ERROR(errctx);
|
PREPARE_ERROR(errctx);
|
||||||
while ( 1 ) {
|
while ( 1 ) {
|
||||||
retval = fread((void *)&objname, 1, namelength, fp);
|
CATCH(errctx, aksl_fread((void *)&objname, 1, namelength, fp));
|
||||||
FAIL_NONZERO_RETURN(
|
CATCH(errctx, aksl_fread((void *)&ptr, 1, ptrlength, fp));
|
||||||
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");
|
|
||||||
// End of the map
|
// End of the map
|
||||||
if ( ptr == 0x00 && objname[0] == 0x00 ) {
|
if ( ptr == 0x00 && objname[0] == 0x00 ) {
|
||||||
break;
|
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
|
// 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.
|
// 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);
|
snprintf((char *)&ptrstring, 32, "%p", ptr);
|
||||||
SDL_SetPointerProperty(
|
SDL_SetPointerProperty(
|
||||||
map,
|
map,
|
||||||
@@ -344,13 +334,8 @@ akerr_ErrorContext AKERR_NOIGNORE *akgl_game_load(char *fpath)
|
|||||||
FAIL_ZERO_RETURN(errctx, fpath, AKERR_NULLPOINTER, "NULL file path");
|
FAIL_ZERO_RETURN(errctx, fpath, AKERR_NULLPOINTER, "NULL file path");
|
||||||
|
|
||||||
ATTEMPT {
|
ATTEMPT {
|
||||||
fp = fopen(fpath, "rb");
|
CATCH(errctx, aksl_fopen(fpath, "rb", &fp));
|
||||||
FAIL_ZERO_BREAK(errctx, fp, errno, "%s", fpath);
|
CATCH(errctx, aksl_fread((void *)&savegame, 1, sizeof(akgl_Game), fp));
|
||||||
FAIL_NONZERO_BREAK(
|
|
||||||
errctx,
|
|
||||||
(fread((void *)&savegame, 1, sizeof(akgl_Game), fp) < sizeof(akgl_Game)),
|
|
||||||
AKERR_IO,
|
|
||||||
"Corrupt save file");
|
|
||||||
CATCH(errctx, akgl_game_load_versioncmp("library", (char *)&savegame.libversion, (char *)AKGL_VERSION));
|
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));
|
CATCH(errctx, akgl_game_load_versioncmp("game", (char *)&savegame.version, (char *)&game.version));
|
||||||
FAIL_NONZERO_RETURN(
|
FAIL_NONZERO_RETURN(
|
||||||
|
|||||||
Reference in New Issue
Block a user