mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-27 05:23:51 +00:00
docs: update documentation for PRs #59-63 refactors
- architecture.md: add chat system modules (src/ui/chat/), world map modules (src/rendering/world_map/), CatmullRomSpline (src/math/), transport decomposition, and updated namespace list - status.md: update timestamp to 2026-04-14, add recent refactors section and world map known gaps - CHANGELOG.md: add detailed entries for PRs #58-63 covering architecture, features, bug fixes, and 19 new test files - TESTING.md: expand test suite layout from 8 to 27 files organized by category (core, animation, transport, world map, chat) - CONTRIBUTING.md: update namespace table, testing section, and key files list to reflect new module directories - README.md: update status timestamp to 2026-04-14
This commit is contained in:
parent
3be40c3b69
commit
2f3a973444
6 changed files with 161 additions and 34 deletions
|
|
@ -125,6 +125,19 @@ Wowee follows a modular architecture with clear separation of concerns:
|
|||
- Distance-weighted light volume blending
|
||||
- Fog color/distance parameters
|
||||
|
||||
**World Map System** (`src/rendering/world_map/`) - Modular map architecture:
|
||||
- `WorldMapFacade` - Public API (PIMPL pattern), composes all components
|
||||
- `CompositeRenderer` - Vulkan tile pipeline + off-screen FBO compositing (1024×768 FBO, 1002×668 visible)
|
||||
- `DataRepository` - DBC zone loading, ZMP pixel map, POI/overlay storage
|
||||
- `CoordinateProjection` - UV projection, zone/continent spatial lookups
|
||||
- `ExplorationState` - Server exploration mask + local fog-of-war tracking
|
||||
- `ViewStateMachine` - COSMIC → WORLD → CONTINENT → ZONE navigation with transitions
|
||||
- `InputHandler` - Keyboard/mouse input → `InputAction` mapping
|
||||
- `OverlayRenderer` - Layer-based ImGui overlay system (Open/Closed Principle)
|
||||
- `MapResolver` - Cross-map navigation (Outland, Northrend detection)
|
||||
- `ZoneMetadata` - Zone level ranges and faction data for labels
|
||||
- 9 overlay layers (each implements `IOverlayLayer`): player marker, party dot, taxi node, POI marker, quest POI, corpse marker, zone highlight, coordinate display, subzone tooltip
|
||||
|
||||
### 3. Networking (`src/network/`)
|
||||
|
||||
**TCPSocket** (`tcp_socket.hpp/cpp`) - Platform TCP
|
||||
|
|
@ -183,10 +196,28 @@ Wowee follows a modular architecture with clear separation of concerns:
|
|||
- Player, Unit, GameObject subtypes
|
||||
- GUID-based lookup, field extraction (health, level, display ID, etc.)
|
||||
|
||||
**TransportManager** - Transport path evaluation
|
||||
- Catmull-Rom spline interpolation from TransportAnimation.dbc
|
||||
- Clock-based motion with server time synchronization
|
||||
- Time-closed looping paths (wrap point duplicated, no index wrapping)
|
||||
**TransportManager** - Transport lifecycle and server sync
|
||||
- Delegates path data to `TransportPathRepository`
|
||||
- Delegates spline math to `math::CatmullRomSpline`
|
||||
- Clock-based motion with `TransportClockSync`
|
||||
- Reduced from ~1,200 to ~500 lines after decomposition
|
||||
|
||||
**TransportPathRepository** - Transport path data
|
||||
- DBC loading (TransportAnimation.dbc, TaxiPathNode.dbc)
|
||||
- Path inference heuristics for server spawn→DBC mapping
|
||||
- Z-only elevator detection vs XY transport paths
|
||||
|
||||
**math::CatmullRomSpline** (`src/math/`) - Reusable spline module
|
||||
- Catmull-Rom interpolation with O(log n) binary search segment lookup
|
||||
- Fused position+tangent evaluation (single call per frame per transport)
|
||||
- Time-closed (looping) and clamped (non-looping) path modes
|
||||
- `orientationFromTangent()` for smooth transport/entity facing
|
||||
|
||||
**SplineBlockData** (`src/game/spline_packet.hpp/cpp`) - Unified spline parsing
|
||||
- Consolidates 7 duplicated spline parsers into shared functions
|
||||
- `parseMonsterMoveSplineBody()` (WotLK/TBC), `parseMonsterMoveSplineBodyVanilla()`
|
||||
- `parseWotlkMoveUpdateSpline()`, `parseClassicMoveUpdateSpline()`
|
||||
- Packed delta decoding (11+11+10-bit signed, ×0.25 scale)
|
||||
|
||||
**Expansion Helpers** (`game_utils.hpp`):
|
||||
- `isActiveExpansion("classic")` / `isActiveExpansion("tbc")` / `isActiveExpansion("wotlk")`
|
||||
|
|
@ -244,7 +275,7 @@ Wowee follows a modular architecture with clear separation of concerns:
|
|||
**Screens:**
|
||||
- `AuthScreen` - Login with username/password, server address, security code
|
||||
- `RealmScreen` - Realm list with population and type indicators
|
||||
- `CharacterScreen` - Character selection with 3D animated preview
|
||||
- `CharacterScreen` - Character selection with 3D animated preview, keyboard navigation
|
||||
- `CharacterCreateScreen` - Race/class/gender/appearance customization
|
||||
- `GameScreen` - Main HUD: chat, action bar, target frame, minimap, nameplates, combat text, tooltips
|
||||
- `InventoryScreen` - Equipment paper doll, backpack, bag windows, item tooltips with stats
|
||||
|
|
@ -253,6 +284,22 @@ Wowee follows a modular architecture with clear separation of concerns:
|
|||
- `TalentScreen` - Talent tree UI with point allocation
|
||||
- `SettingsScreen` - Graphics presets (LOW/MEDIUM/HIGH/ULTRA), audio, keybindings
|
||||
|
||||
**Chat System** (`src/ui/chat/`) - Modular chat architecture:
|
||||
- `ChatPanel` - Main chat UI (tabs, input, message display)
|
||||
- `ChatInput` - Input handling and history
|
||||
- `ChatTabManager` - Tab creation, switching, per-tab filters
|
||||
- `ChatTabCompleter` - Tab-completion for player names, commands, channels
|
||||
- `ChatCommandRegistry` - Slash command dispatch with `IChatCommand` interface
|
||||
- `ChatMarkupParser` / `ChatMarkupRenderer` - Item link parsing and colored rich-text rendering
|
||||
- `ChatBubbleManager` - Floating chat bubbles above entities
|
||||
- `ChatSettings` - Per-channel color, font size, timestamp options
|
||||
- `MacroEvaluator` - WoW-style macro conditional evaluation (`[mod:shift]`, `[target=focus]`, etc.)
|
||||
- `GameStateAdapter` / `InputModifierAdapter` - Testable abstractions over game state
|
||||
- `ItemTooltipRenderer` - Chat-embedded item tooltip rendering (510 LOC)
|
||||
- `CastSequenceTracker` - `/castsequence` state tracking
|
||||
- 11 command modules under `commands/`: channel, combat, emote, GM, group, guild, help, misc, social, system, target
|
||||
- 190-command GM data table with dot-prefix interception and `/gmhelp`
|
||||
|
||||
### 8. Audio System (`src/audio/`)
|
||||
|
||||
**AudioEngine** - miniaudio-based playback
|
||||
|
|
@ -313,7 +360,7 @@ Wowee follows a modular architecture with clear separation of concerns:
|
|||
## Code Style
|
||||
|
||||
- **C++20 standard**
|
||||
- **Namespaces**: `wowee::core`, `wowee::rendering`, `wowee::game`, `wowee::ui`, `wowee::network`, `wowee::auth`, `wowee::audio`, `wowee::pipeline`
|
||||
- **Namespaces**: `wowee::core`, `wowee::rendering`, `wowee::rendering::world_map`, `wowee::game`, `wowee::ui`, `wowee::ui::chat`, `wowee::math`, `wowee::network`, `wowee::auth`, `wowee::audio`, `wowee::pipeline`
|
||||
- **Naming**: PascalCase for classes, camelCase for functions/variables, kPascalCase for constants
|
||||
- **Headers**: `.hpp` extension, `#pragma once`
|
||||
- **Commits**: Conventional style (`feat:`, `fix:`, `refactor:`, `docs:`, `perf:`)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Project Status
|
||||
|
||||
**Last updated**: 2026-03-30
|
||||
**Last updated**: 2026-04-14
|
||||
|
||||
## What This Repo Is
|
||||
|
||||
|
|
@ -36,8 +36,19 @@ Implemented (working in normal use):
|
|||
- Multi-expansion: Classic/Vanilla, TBC, WotLK, and Turtle WoW (1.17) protocol and asset variants
|
||||
- CI: GitHub Actions for Linux (x86-64, ARM64), Windows (MSYS2 x86-64 + ARM64), macOS (ARM64); container builds via Podman
|
||||
|
||||
Recent refactors (PRs #59-63, April 2026):
|
||||
|
||||
- Chat system decomposed into 15+ modules under `src/ui/chat/` with 11 command modules, GM command support, macro evaluator, and tab completion
|
||||
- World map decomposed into 16 modules under `src/rendering/world_map/` with overlay layer system, view state machine, and ZMP-based hover detection
|
||||
- TransportManager decomposed: spline math extracted to `src/math/`, path data to TransportPathRepository, 7 duplicated spline parsers consolidated into `spline_packet.cpp`
|
||||
- Spell visual effects system with bone-tracked ribbons and particles
|
||||
- Entity movement improvements: multi-segment path interpolation, terrain height clamping, walk/run animation fix
|
||||
- 27 unit tests (up from 8), covering chat, world map, spline math, transport, and animation systems
|
||||
- Code quality fix pass: 7 issues resolved across hover detection, null safety, buffer bounds, and coordinate validation
|
||||
|
||||
In progress / known gaps:
|
||||
|
||||
- World map: zone hover detection has edge cases with some zone boundaries; cosmic highlight sizing is approximate
|
||||
- Transports: M2 transports (trams) working with position-delta riding; WMO transports (ships, zeppelins) working with path following; some edge cases remain
|
||||
- Quest GO interaction: CMSG_GAMEOBJ_USE + CMSG_LOOT sent correctly, but some AzerothCore/ChromieCraft servers don't grant quest credit for chest-type GOs (server-side limitation)
|
||||
- Visual edge cases: some M2/WMO rendering gaps (some particle effects)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue