mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-10 19:13:52 +00:00
feat(editor): add WACT (Action Bar Layout) open catalog format
Open replacement for the hardcoded per-class default action bar
bindings. Defines which abilities auto-populate which action
button slots when a new character is created or a class is
reset. A Warrior's button 1 binds Heroic Strike, button 2
Charge, button 3 Rend, etc. — new characters of that class get
those buttons pre-populated so the action bar isn't empty on
first login.
Distinct from WKBD (Keybindings) which maps physical keys to
action button slots — WACT maps action button slots to
abilities. The two together complete the default-control
configuration: Key 1 -> Action Slot 1 (WKBD) -> Heroic Strike
(WACT).
Seven barMode values cover the major action bar contexts:
- Main (slots 0-11, standard 12-button bar)
- Pet (hunter/warlock pet action bar)
- Vehicle (mounted/vehicle action bar)
- Stance1/2/3 (warrior battle/defensive/berserker; druid
bear/cat/tree)
- Custom (server-custom bar overlay)
Cross-references back to WCHC (classMask layout), WSPL (spellId
for the bound ability), and WIT (itemId for item-macro bindings
like Hearthstone in slot 12). findByClass(classBit, barMode)
returns the bindings sorted by buttonSlot — used directly by
character creation to populate action bars.
Three preset emitters: --gen-act (10 Warrior starter bindings on
Main bar with canonical 3.3.5a abilities), --gen-act-mage (10
Mage starter bindings including Counterspell + Polymorph),
--gen-act-pet (10 Hunter pet-bar bindings using barMode=Pet for
Attack/Stance/Bite/Claw/Dismiss).
Validation enforces id+name+classMask presence, barMode 0..6,
no duplicate ids; warns on:
- buttonSlot > 143 (max is 12 bars × 12 slots = 144)
- both spellId and itemId set (engine prefers spellId, item
is silently ignored)
- both spellId=0 AND itemId=0 (button will render empty)
- (classMask + barMode + buttonSlot) collisions for
overlapping classes — multiple bindings fighting for the
same physical slot
Wired through the cross-format table; WACT appears in all 18
cross-format utilities. Format count 94 -> 95; CLI flag count
1083 -> 1088.
This commit is contained in:
parent
48ca202716
commit
48dbf72f11
10 changed files with 692 additions and 0 deletions
|
|
@ -2083,6 +2083,16 @@ void printUsage(const char* argv0) {
|
|||
std::printf(" Export binary .wstm to a human-editable JSON sidecar (defaults to <base>.wstm.json)\n");
|
||||
std::printf(" --import-wstm-json <json-path> [out-base]\n");
|
||||
std::printf(" Import a .wstm.json sidecar back into binary .wstm (accepts curveKind int OR curveKindName string)\n");
|
||||
std::printf(" --gen-act <wact-base> [name]\n");
|
||||
std::printf(" Emit .wact 10 Warrior starter bindings on Main bar (Heroic Strike / Charge / Rend / Thunder Clap / Battle Shout / Sunder Armor / Mocking Blow / Hamstring / Overpower / Victory Rush)\n");
|
||||
std::printf(" --gen-act-mage <wact-base> [name]\n");
|
||||
std::printf(" Emit .wact 10 Mage starter bindings on Main bar (Fireball / Frostbolt / Frost Nova / Polymorph / Mage Armor / Arcane Intellect / Counterspell / Blink / Fire Blast / Conjure Water)\n");
|
||||
std::printf(" --gen-act-pet <wact-base> [name]\n");
|
||||
std::printf(" Emit .wact 10 Hunter pet-bar bindings on Pet bar mode (Attack / Follow / Stay / Aggressive / Defensive / Passive / Bite / Claw / Growl / Dismiss)\n");
|
||||
std::printf(" --info-wact <wact-base> [--json]\n");
|
||||
std::printf(" Print WACT entries (id / classMask / barMode / buttonSlot / spellId / itemId / name)\n");
|
||||
std::printf(" --validate-wact <wact-base> [--json]\n");
|
||||
std::printf(" Static checks: id+name+classMask required, barMode 0..6, no duplicate ids; warns on slot>143, both spellId+itemId set, both 0 (empty button), and (classMask+barMode+slot) collisions for overlapping classes\n");
|
||||
std::printf(" --gen-weather-temperate <wow-base> [zoneName]\n");
|
||||
std::printf(" Emit .wow weather schedule: clear-dominant + occasional rain + fog (forest / grassland)\n");
|
||||
std::printf(" --gen-weather-arctic <wow-base> [zoneName]\n");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue