#ifndef PACK_ARCHIVE_H #define PACK_ARCHIVE_H #include #include "zip.h" #include #include "ni_parser.h" #include "json.hpp" class PackArchive { public: PackArchive(); bool Load(const std::string &filePath); std::string OpenImage(const std::string &fileName); bool ImportStudioFormat(const std::string &fileName, const std::string &outputDir); std::string CurrentImage(); std::string CurrentSound(); std::string CurrentSoundName(); bool AutoPlay(); void OkButton(); bool HasImage(); std::vector GetImages(); std::string GetImage(const std::string &fileName); bool IsRoot() const; bool IsWheelEnabled() const; void Next(); void Previous(); void Unzip(const std::string &filePath, const std::string &parent_dest_dir); void DecipherAll(const std::string &packFileName, const std::string &parent_dest_dir); std::string HexDump(const char *desc, const void *addr, int len); private: Zip mZip; std::string mPackName; uint32_t mCurrentNodeId = 0; uint32_t mNodeIdForChoice = 0; node_info_t mNodeForChoice; node_info_t mCurrentNode; ni_file_t mNiFile; // key: resource tag // value: resource file name std::map m_resources; bool ParseNIFile(const std::string &root); std::string GetFileName(const std::string &path); std::string GetFileExtension(const std::string &FileName); void ReplaceCharacter(std::string &theString, const std::string &toFind, const std::string &toReplace); void EraseString(std::string &theString, const std::string &toErase); std::string ToUpper(const std::string &input); void DecipherFileOnDisk(const std::string &fileName); void DecipherFiles(const std::string &directory, const std::string &suffix); std::vector FilesToJson(const std::string &type, const uint8_t *data, uint32_t nb_elements); }; #endif // PACK_ARCHIVE_H