Permalink
Browse files

Replacement: Cut down on parsing for large inis.

  • Loading branch information...
unknownbrackets committed Sep 8, 2018
1 parent fd6c314 commit 1b4f1d7d4e659dcad481bdc513acc8c987ec1124
Showing with 10 additions and 15 deletions.
  1. +10 −15 Core/TextureReplacer.cpp
View
@@ -112,29 +112,24 @@ bool TextureReplacer::LoadIni() {
ERROR_LOG(G3D, "Unsupported texture replacement version %d, trying anyway", version);
}
std::vector<std::string> hashNames;
if (ini.GetKeys("hashes", hashNames)) {
auto hashes = ini.GetOrCreateSection("hashes");
if (ini.HasSection("hashes")) {
auto hashes = ini.GetOrCreateSection("hashes")->ToMap();
// Format: hashname = filename.png
for (std::string hashName : hashNames) {
for (const auto &item : hashes) {
ReplacementAliasKey key(0, 0, 0);
if (sscanf(hashName.c_str(), "%16llx%8x_%d", &key.cachekey, &key.hash, &key.level) >= 1) {
hashes->Get(hashName.c_str(), &aliases_[key], "");
if (sscanf(item.first.c_str(), "%16llx%8x_%d", &key.cachekey, &key.hash, &key.level) >= 1) {
aliases_[key] = item.second;
} else {
ERROR_LOG(G3D, "Unsupported syntax under [hashes]: %s", hashName.c_str());
ERROR_LOG(G3D, "Unsupported syntax under [hashes]: %s", item.first.c_str());
}
}
}
std::vector<std::string> hashrangeKeys;
if (ini.GetKeys("hashranges", hashrangeKeys)) {
auto hashranges = ini.GetOrCreateSection("hashranges");
if (ini.HasSection("hashranges")) {
auto hashranges = ini.GetOrCreateSection("hashranges")->ToMap();
// Format: addr,w,h = newW,newH
for (const std::string &key : hashrangeKeys) {
std::string value;
if (hashranges->Get(key.c_str(), &value, "")) {
ParseHashRange(key, value);
}
for (const auto &item : hashranges) {
ParseHashRange(item.first, item.second);
}
}
}

0 comments on commit 1b4f1d7

Please sign in to comment.