#pragma once #include #include #include namespace lightningbolt { struct BoltReader { enum class Game { LooseBolt, ///< Use this for games with no bolt entry SimpsonsSkateboarding, NamcoMuseumGCN = LooseBolt }; 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