mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-06 00:53:52 +00:00
feat(editor): zone validation for open format completeness scoring
- ContentPacker::validateZone() scans a zone directory and checks for all open format files (WOT, WHM, PNG, WOM, zone.json, etc.) - openFormatScore(): returns 0-5 based on how many open formats present - summary(): human-readable list of found formats - Foundation for quality gate on WCP export: warn if zone uses Blizzard formats that could be converted to open versions
This commit is contained in:
parent
8517ae3778
commit
a54ce494be
2 changed files with 47 additions and 0 deletions
|
|
@ -171,5 +171,42 @@ bool ContentPacker::readInfo(const std::string& wcpPath, ContentPackInfo& info)
|
|||
return true;
|
||||
}
|
||||
|
||||
ContentPacker::ValidationResult ContentPacker::validateZone(const std::string& zoneDir) {
|
||||
namespace fs = std::filesystem;
|
||||
ValidationResult r;
|
||||
if (!fs::exists(zoneDir)) return r;
|
||||
|
||||
for (auto& entry : fs::recursive_directory_iterator(zoneDir)) {
|
||||
if (!entry.is_regular_file()) continue;
|
||||
std::string ext = entry.path().extension().string();
|
||||
std::string name = entry.path().filename().string();
|
||||
if (ext == ".wot") r.hasWot = true;
|
||||
if (ext == ".whm") r.hasWhm = true;
|
||||
if (ext == ".wom") r.hasWom = true;
|
||||
if (ext == ".png") r.hasPng = true;
|
||||
if (name == "zone.json") r.hasZoneJson = true;
|
||||
if (name == "creatures.json") r.hasCreatures = true;
|
||||
if (name == "quests.json") r.hasQuests = true;
|
||||
if (name == "objects.json") r.hasObjects = true;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
int ContentPacker::ValidationResult::openFormatScore() const {
|
||||
int score = 0;
|
||||
if (hasWot) score++; if (hasWhm) score++; if (hasZoneJson) score++;
|
||||
if (hasPng) score++; if (hasWom) score++;
|
||||
return score; // max 5 for fully open
|
||||
}
|
||||
|
||||
std::string ContentPacker::ValidationResult::summary() const {
|
||||
std::string s;
|
||||
s += hasWot ? "WOT " : ""; s += hasWhm ? "WHM " : "";
|
||||
s += hasZoneJson ? "zone.json " : ""; s += hasPng ? "PNG " : "";
|
||||
s += hasWom ? "WOM " : ""; s += hasCreatures ? "creatures " : "";
|
||||
s += hasQuests ? "quests " : ""; s += hasObjects ? "objects " : "";
|
||||
return s.empty() ? "(empty)" : s;
|
||||
}
|
||||
|
||||
} // namespace editor
|
||||
} // namespace wowee
|
||||
|
|
|
|||
|
|
@ -34,6 +34,16 @@ public:
|
|||
|
||||
// Read pack info without extracting
|
||||
static bool readInfo(const std::string& wcpPath, ContentPackInfo& info);
|
||||
|
||||
// Validate that a zone directory has all required open format files
|
||||
struct ValidationResult {
|
||||
bool hasWot = false, hasWhm = false, hasZoneJson = false;
|
||||
bool hasPng = false, hasWom = false, hasCreatures = false;
|
||||
bool hasQuests = false, hasObjects = false;
|
||||
int openFormatScore() const;
|
||||
std::string summary() const;
|
||||
};
|
||||
static ValidationResult validateZone(const std::string& zoneDir);
|
||||
};
|
||||
|
||||
} // namespace editor
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue