summaryrefslogtreecommitdiff
path: root/src/Companion.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Companion.h')
-rw-r--r--src/Companion.h13
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);
};