Kelsidavis-WoWee/tools/editor/cli_transit_schedule_catalog.hpp

13 lines
245 B
C++
Raw Normal View History

feat(pipeline): WTSC transit schedule catalog (128th open format) Novel replacement for the implicit taxi/zeppelin/boat scheduling that vanilla WoW drove from a tangle of TaxiNodes.dbc + TaxiPath.dbc + per-zeppelin GameObject scripts + hard-coded transport interval timers in the server's MapManager. Each WTSC entry binds one scheduled passenger route to its origin / destination coords, vehicle type (Taxi/Zeppelin/Boat/Mount), departure interval, in-flight duration, capacity, and faction- access gate. Initially designed with magic 'WTRN' but discovered collision with existing trainers catalog (also WTRN) — renamed to 'WTSC' (Transit SChedule) and updated all CLI flags. Three presets: --gen-trn-zeppelins 3 vanilla Horde zeppelin routes (OG<->UC 240s interval, OG<->Grom'Gol, UC<->Grom'Gol) --gen-trn-boats 3 vanilla boat routes (Auberdine<-> Stormwind Alliance, Menethil<->Theramore Alliance, BootyBay<->Ratchet Neutral cross-faction) --gen-trn-taxis 3 taxi gryphon/wyvern routes — capacity=0 indicates solo gryphon ride CRITICAL scheduling invariant validator catches: when capacity > 0 the departureInterval MUST be >= travelDuration. A zeppelin with interval=60s + travel=90s with capacity=40 would overflow the vehicle pool — next zeppelin departs before prior arrives. Solo gryphon (capacity=0) is exempt because each ride is independent. Validator also catches: id+name+origin+destination required, vehicleType/factionAccess range, zero intervals/travel, duplicate routeIds, duplicate route names. Warns on same-map routes (originMapId == destinationMapId) — preset taxi route Crossroads to Razor Hill triggered this warning in smoke-test (both in Kalimdor mapId=1, intentional). Format count 127 -> 128. CLI flag count 1346 -> 1353.
2026-05-10 03:54:39 -07:00
#pragma once
namespace wowee {
namespace editor {
namespace cli {
bool handleTransitScheduleCatalog(int& i, int argc, char** argv,
int& outRc);
} // namespace cli
} // namespace editor
} // namespace wowee