diff options
| author | David Skoland <davidskoland@gmail.com> | 2026-02-07 21:53:59 +0100 |
|---|---|---|
| committer | David Skoland <davidskoland@gmail.com> | 2026-02-07 21:53:59 +0100 |
| commit | 95e4124b0c02b4e5be383c41ed4241566f40e6e6 (patch) | |
| tree | 0a51910da18759700b9e152aa428e76f055b8af4 /webAO/dom | |
| parent | 5eeb7ac9d90137c3b5ce9578c47bcc2ccff21c7e (diff) | |
Prefetch char.ini for characters present in area via playerlist
Store player data (charId, area) in an in-memory Map on the client,
updated by PR/PU packet handlers. Use this to eagerly load char.ini
when a player's character appears in our area or when switching areas,
eliminating the lazy-load delay on first IC message.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'webAO/dom')
| -rw-r--r-- | webAO/dom/areaClick.ts | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/webAO/dom/areaClick.ts b/webAO/dom/areaClick.ts index 1e41f4b..19953a5 100644 --- a/webAO/dom/areaClick.ts +++ b/webAO/dom/areaClick.ts @@ -1,5 +1,6 @@ import { client } from "../client"; import { updatePlayerAreas } from "./updatePlayerAreas"; +import { ensureCharIni } from "../client/handleCharacterInfo"; /** * Triggered when an item on the area list is clicked. * @param {HTMLElement} el @@ -14,5 +15,12 @@ export function area_click(el: HTMLElement) { document.getElementById("client_log")!.appendChild(areaHr); client.area = Number(el.id.substring(4)); updatePlayerAreas(client.area); + + // Prefetch char.ini for all characters present in the new area + for (const player of client.players.values()) { + if (player.area === client.area && player.charId >= 0) { + ensureCharIni(player.charId); + } + } } window.area_click = area_click; |
