mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-08-01 18:29:24 -04:00
The map worked out the player's zone from geometry alone: of the WorldMapArea boxes containing them, take the one they sit deepest inside. Those boxes are axis-aligned rectangles around irregular zones, so neighbours overlap heavily — the comment on that code already says as much — and the answer is a guess. It guessed wrong often enough to open on a zone the player was merely near. The server says which zone the player is in, in SMSG_INIT_WORLD_STATES, and the client has been tracking it as worldStateZoneId_ for other things all along. It is the same AreaTable id space WorldMapArea keys on, so it names a zone directly. Use it, and keep the geometry only for when the server has not said — before the first world-state packet, or for a zone that is not on the map currently displayed. Threaded to the exploration tracker and the player marker as well as the zone the map opens on. All three answered this question separately, so leaving any of them on the guess would show as a marker or a revealed area disagreeing with the zone in front of you. Tests cover the id winning over the geometry, the id winning even where the player's own zone box does not reach them, and the fallback for an id that names nothing on this map.