#ifndef PAK_H
#define PAK_H

#include "aliases.h"
#include <stdbool.h>

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 pak_read pak_read_t;

bool create_asset_pack(const char *dirpath, const char *output);
pak_read_t *load_asset_pack(const char *filepath);
// buf_t read_file_from_pack(pak_read_t *pack, const char *filename);
void close_asset_pack(pak_read_t **pack);

#endif // !PAK_H