diff options
Diffstat (limited to 'src/Companion.h')
| -rw-r--r-- | src/Companion.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/Companion.h b/src/Companion.h index 8af92f0..b82b83d 100644 --- a/src/Companion.h +++ b/src/Companion.h @@ -42,18 +42,21 @@ struct TorchConfig { GBIConfig gbi; SegmentConfig segment; std::string outputPath; + std::string moddingPath; ExportType exporterType; bool otrMode; bool debug; + bool modding; }; class Companion { public: static Companion* Instance; - explicit Companion(std::filesystem::path rom, const bool otr, const bool debug) : gRomPath(std::move(rom)), gCartridge(nullptr) { + explicit Companion(std::filesystem::path rom, const bool otr, const bool debug, const bool modding = false) : gRomPath(std::move(rom)), gCartridge(nullptr) { this->gConfig.otrMode = otr; this->gConfig.debug = debug; + this->gConfig.modding = modding; } void Init(ExportType type); @@ -73,6 +76,7 @@ public: std::optional<std::tuple<std::string, YAML::Node>> GetNodeByAddr(uint32_t addr); std::optional<std::shared_ptr<BaseFactory>> GetFactory(const std::string& type); + static std::string CalculateHash(const std::vector<uint8_t>& data); static void Pack(const std::string& folder, const std::string& output); std::string NormalizeAsset(const std::string& name) const; @@ -81,6 +85,7 @@ public: std::optional<std::tuple<std::string, YAML::Node>> RegisterAsset(const std::string& name, YAML::Node& node); private: TorchConfig gConfig; + YAML::Node gModdingConfig; fs::path gCurrentDirectory; std::vector<uint8_t> gRomData; std::filesystem::path gRomPath; @@ -92,11 +97,13 @@ private: uint32_t gCurrentPad = 0; std::variant<std::vector<std::string>, std::string> gWriteOrder; std::unordered_map<std::string, std::shared_ptr<BaseFactory>> gFactories; - std::map<std::string, std::map<std::string, std::pair<YAML::Node, bool>>> gAssetDependencies; - std::map<std::string, std::map<std::string, std::vector<std::pair<uint32_t, std::string>>>> gWriteMap; + std::unordered_map<std::string, std::string> gModdedAssetPaths; + std::unordered_map<std::string, std::map<std::string, std::pair<YAML::Node, bool>>> gAssetDependencies; + std::unordered_map<std::string, std::map<std::string, std::vector<std::pair<uint32_t, std::string>>>> gWriteMap; std::unordered_map<std::string, std::unordered_map<uint32_t, std::tuple<std::string, YAML::Node>>> gAddrMap; void ParseCurrentFileConfig(YAML::Node node); + void ParseModdingConfig(); void RegisterFactory(const std::string& type, const std::shared_ptr<BaseFactory>& factory); void ExtractNode(YAML::Node& node, std::string& name, SWrapper* binary); }; |
