feat: custom zone discovery system for client auto-detection

- CustomZoneDiscovery scans directories for zone.json manifest files
- Discovers custom zones in custom_zones/ and output/ directories
- Reports: name, author, description, creature/quest availability
- Client can list all available custom expansions at startup
- Foundation for a zone selection menu in the client UI
This commit is contained in:
Kelsi 2026-05-05 10:01:05 -07:00
parent 954894460e
commit d10d962e31
3 changed files with 95 additions and 0 deletions

View file

@ -0,0 +1,31 @@
#pragma once
#include <string>
#include <vector>
#include <cstdint>
namespace wowee {
namespace pipeline {
struct CustomZoneInfo {
std::string name;
std::string author;
std::string description;
std::string directory;
uint32_t mapId = 9000;
std::vector<std::pair<int, int>> tiles;
bool hasCreatures = false;
bool hasQuests = false;
};
class CustomZoneDiscovery {
public:
// Scan directories for custom zones (checks for zone.json files)
static std::vector<CustomZoneInfo> scan(const std::vector<std::string>& searchPaths);
// Scan a single directory
static std::vector<CustomZoneInfo> scanDirectory(const std::string& path);
};
} // namespace pipeline
} // namespace wowee