diff --git a/EXPANSION_GUIDE.md b/EXPANSION_GUIDE.md index 6a2dc26e..a1257a21 100644 --- a/EXPANSION_GUIDE.md +++ b/EXPANSION_GUIDE.md @@ -7,6 +7,7 @@ WoWee supports three World of Warcraft expansions in a unified codebase using an - **Vanilla (Classic) 1.12** - Original World of Warcraft - **The Burning Crusade (TBC) 2.4.3** - First expansion - **Wrath of the Lich King (WotLK) 3.3.5a** - Second expansion +- **Turtle WoW 1.17** - Custom Vanilla-based server with extended content ## Architecture Overview @@ -17,9 +18,9 @@ The multi-expansion support is built on the **Expansion Profile** system: - Specifies which packet parsers to use 2. **Packet Parsers** - Expansion-specific message handling - - `packet_parsers_classic.cpp` - Vanilla 1.12 message parsing + - `packet_parsers_classic.cpp` - Vanilla 1.12 / Turtle WoW message parsing - `packet_parsers_tbc.cpp` - TBC 2.4.3 message parsing - - `packet_parsers_wotlk.cpp` (default) - WotLK 3.3.5a message parsing + - Default (WotLK 3.3.5a) parsers in `game_handler.cpp` and domain handlers 3. **Update Fields** - Expansion-specific entity data layout - Loaded from `update_fields.json` in expansion data directory @@ -78,17 +79,19 @@ WOWEE_EXPANSION=classic ./wowee # Force Classic ### Checking Current Expansion ```cpp -#include "game/expansion_profile.hpp" +#include "game/game_utils.hpp" -// Global helper -bool isClassicLikeExpansion() { - auto profile = ExpansionProfile::getActive(); - return profile && (profile->name == "Classic" || profile->name == "Vanilla"); +// Shared helpers (defined in game_utils.hpp) +if (isActiveExpansion("tbc")) { + // TBC-specific code } -// Specific check -if (GameHandler::getInstance().isActiveExpansion("tbc")) { - // TBC-specific code +if (isClassicLikeExpansion()) { + // Classic or Turtle WoW +} + +if (isPreWotlk()) { + // Classic, Turtle, or TBC (not WotLK) } ``` @@ -96,7 +99,7 @@ if (GameHandler::getInstance().isActiveExpansion("tbc")) { ```cpp // In packet_parsers_*.cpp, implement expansion-specific logic -bool parseXxxPacket(BitStream& data, ...) { +bool TbcPacketParsers::parseXxx(network::Packet& packet, XxxData& data) { // Custom logic for this expansion's packet format } ``` @@ -121,6 +124,7 @@ bool parseXxxPacket(BitStream& data, ...) { ## References - `include/game/expansion_profile.hpp` - Expansion metadata -- `docs/status.md` - Current feature support by expansion -- `src/game/packet_parsers_*.cpp` - Format-specific parsing logic +- `include/game/game_utils.hpp` - `isActiveExpansion()`, `isClassicLikeExpansion()`, `isPreWotlk()` +- `src/game/packet_parsers_classic.cpp` / `packet_parsers_tbc.cpp` - Expansion-specific parsing +- `docs/status.md` - Current feature support - `docs/` directory - Additional protocol documentation diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md index cdf80306..4240f97e 100644 --- a/GETTING_STARTED.md +++ b/GETTING_STARTED.md @@ -39,20 +39,24 @@ WoWee needs game assets from your WoW installation: **Using provided script (Windows)**: ```powershell -.\extract_assets.ps1 -WowDirectory "C:\Program Files\World of Warcraft" +.\extract_assets.ps1 "C:\Games\WoW-3.3.5a\Data" ``` **Manual extraction**: 1. Install [StormLib](https://github.com/ladislav-zezula/StormLib) -2. Extract to `./Data/`: +2. Use `asset_extract` or extract manually to `./Data/`: ``` Data/ - ├── dbc/ # DBC files - ├── map/ # World map data - ├── adt/ # Terrain chunks - ├── wmo/ # Building models - ├── m2/ # Character/creature models - └── blp/ # Textures + ├── manifest.json # File index (generated by asset_extract) + ├── expansions// # Per-expansion config and DB + ├── character/ # Character textures + ├── creature/ # Creature models/textures + ├── interface/ # UI textures and icons + ├── item/ # Item model textures + ├── spell/ # Spell effect models + ├── terrain/ # ADT terrain, WMO, M2 doodads + ├── world/ # World map images + └── sound/ # Audio files ``` ### Step 3: Connect to a Server @@ -84,15 +88,19 @@ WoWee needs game assets from your WoW installation: | Strafe Right | D | | Jump | Space | | Toggle Chat | Enter | -| Interact (talk to NPC, loot) | F | -| Open Inventory | B | +| Open Character Screen | C | +| Open Inventory | I | +| Open All Bags | B | | Open Spellbook | P | -| Open Talent Tree | T | -| Open Quest Log | Q | -| Open World Map | W (when not typing) | -| Toggle Minimap | M | +| Open Talents | N | +| Open Quest Log | L | +| Open World Map | M | | Toggle Nameplates | V | -| Toggle Party Frames | F | +| Toggle Raid Frames | F | +| Open Guild Roster | O | +| Open Dungeon Finder | J | +| Open Achievements | Y | +| Open Skills | K | | Toggle Settings | Escape | | Target Next Enemy | Tab | | Target Previous Enemy | Shift+Tab | @@ -171,7 +179,7 @@ WOWEE_EXPANSION=tbc ./wowee # Force TBC ### General Issues - Comprehensive troubleshooting: See [TROUBLESHOOTING.md](TROUBLESHOOTING.md) -- Check logs in `~/.wowee/logs/` for errors +- Check `logs/wowee.log` in the working directory for errors - Verify expansion matches server requirements ## Server Configuration