feat: server-synced bag sort, fix world map continent bounds, update docs

Inventory sort: clicking "Sort Bags" now generates CMSG_SWAP_ITEM packets
to move items server-side (one swap per frame to avoid race conditions).
Client-side sort runs immediately for visual preview; server swaps follow.
New Inventory::computeSortSwaps() computes minimal swap sequence using
selection-sort permutation on quality→itemId→stackCount comparator.

World map: fix continent bounds derivation that used intersection (max/min)
instead of union (min/max) of child zone bounds, causing continent views
to display zoomed-in/clipped.

Update README.md and docs/status.md with current features, release info,
and known gaps (v1.8.2-preview, 664 opcode handlers, NPC voices, bag
independence, CharSections auto-detect, quest GO server limitation).
This commit is contained in:
Kelsi 2026-03-24 09:24:09 -07:00
parent 62e99da1c2
commit c18720f0f0
7 changed files with 145 additions and 22 deletions

View file

@ -6,6 +6,7 @@
#include <vulkan/vulkan.h>
#include <imgui.h>
#include <array>
#include <deque>
#include <functional>
#include <memory>
#include <unordered_map>
@ -195,6 +196,9 @@ private:
int splitCount_ = 1;
std::string splitItemName_;
// Server-side bag sort swap queue (one swap per frame)
std::deque<game::Inventory::SwapOp> sortSwapQueue_;
// Pending chat item link from shift-click
std::string pendingChatItemLink_;