From 533d30359d31c33a1130c4dd3daa6b521a2801e1 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sat, 4 Nov 2023 14:29:54 +0000 Subject: [PATCH] Add asset pack reader library --- CMakeLists.txt | 6 +++++ intern/pakrd/libpakrd.a | Bin 0 -> 53682 bytes intern/pakrd/pak.h | 48 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 intern/pakrd/libpakrd.a create mode 100644 intern/pakrd/pak.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 150046e..e515a06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,12 +35,17 @@ add_library(${PROJECT_NAME} SHARED target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} include + intern/pakrd extern/SDL2/SDL/include extern/SDL2/SDL_mixer/include extern/SDL2/SDL_image extern/SDL2/SDL_ttf ) + +target_link_directories(${PROJECT_NAME} PUBLIC intern/pakrd) + target_link_libraries(${PROJECT_NAME} PUBLIC + pakrd SDL2 SDL2_image SDL2_mixer @@ -59,6 +64,7 @@ install(FILES include/BitmapFont.h include/reusable_ids.h include/math_utils.h + intern/pakrd/pak.h CONFIGURATIONS Release DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) diff --git a/intern/pakrd/libpakrd.a b/intern/pakrd/libpakrd.a new file mode 100644 index 0000000000000000000000000000000000000000..07232e9a35189b07567188c59c2eb5332e826513 GIT binary patch literal 53682 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 A@&Et; literal 0 HcmV?d00001 diff --git a/intern/pakrd/pak.h b/intern/pakrd/pak.h new file mode 100644 index 0000000..12e4cb5 --- /dev/null +++ b/intern/pakrd/pak.h @@ -0,0 +1,48 @@ +#ifndef PAK_H +#define PAK_H + +#include "aliases.h" +#include + +typedef struct { + u64 size; + u8 data[]; +} buf_t; + +typedef struct { + u64 offset; + u64 length; + char name[]; +} toc_entry_t; + +typedef struct { + u64 count; + u64 size; +} toc_t; + +typedef struct { + u64 major; + u64 minor; + u64 patch; +} pak_ver_t; + +typedef struct { + u64 size; + u8 data[]; +} pak_entry_t; + +typedef struct { + u64 magic; + pak_ver_t version; + toc_t toc; +} pak_t; + +typedef struct asset_pack asset_pack_t; + +bool create_asset_pack(const char *dirpath, const char *output); +asset_pack_t *load_asset_pack(const char *filepath); +buf_t *read_file_from_pack(asset_pack_t *pack, const char *filename); +void close_pack_file(buf_t **buf); +void close_asset_pack(asset_pack_t **pack); + +#endif // !PAK_H