#pragma once
#include
#include
#include
namespace lightningbolt {
struct BoltReader {
enum class Game {
LooseBolt, ///< Use this for games with no bolt entry
SimpsonsSkateboarding,
NamcoMuseumGCN
};
// Guess the game the user wants to extract
static Game GuessGame(const fs::path& path);
struct File {
std::string_view filename;
u16 index;
u16 gid;
bool compressed;
u8* uncompressedData { nullptr };
usize uncompressedSize;
};
BoltReader(Game game = Game::SimpsonsSkateboarding);
~BoltReader();
ErrorOr OpenBolt(const fs::path& path);
void ForEachFile(std::function f);
private:
struct Impl;
Unique impl;
};
} // namespace lightningbolt