diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | webAO/client.ts | 3 | ||||
| -rw-r--r-- | webAO/packets/handlers/handleDONE.ts | 29 | ||||
| -rw-r--r-- | webAO/packets/handlers/handleMC.ts | 4 | ||||
| -rw-r--r-- | webAO/packets/handlers/handlePV.ts | 1 | ||||
| -rw-r--r-- | webAO/utils/queryParser.ts | 4 | ||||
| -rw-r--r-- | webAO/viewport/utils/setSide.ts | 2 |
7 files changed, 40 insertions, 5 deletions
@@ -62,3 +62,5 @@ node_modules # lockfiles bun.lock package-lock.json + +.claude diff --git a/webAO/client.ts b/webAO/client.ts index 5f35c69..703ce73 100644 --- a/webAO/client.ts +++ b/webAO/client.ts @@ -23,7 +23,8 @@ import { } from "./client/fetchLists"; import getCookie from "./utils/getCookie"; import setCookie from "./utils/setCookie"; -const { ip: serverIP, connect, mode, theme, serverName } = queryParser(); +const { ip: serverIP, connect, mode, theme, serverName, char: autoChar, area: autoArea } = queryParser(); +export { autoChar, autoArea }; document.title = serverName; diff --git a/webAO/packets/handlers/handleDONE.ts b/webAO/packets/handlers/handleDONE.ts index 676c807..947e2a1 100644 --- a/webAO/packets/handlers/handleDONE.ts +++ b/webAO/packets/handlers/handleDONE.ts @@ -1,5 +1,6 @@ import queryParser from "../../utils/queryParser"; -import { client, clientState } from "../../client"; +import { client, clientState, autoChar, autoArea } from "../../client"; +import { area_click } from "../../dom/areaClick"; const { mode } = queryParser(); /** @@ -16,4 +17,30 @@ export const handleDONE = (_args: string[]) => { // Spectators don't need to pick a character document.getElementById("client_waiting")!.style.display = "none"; } + + if (autoArea) { + const areaIndex = client.areas.findIndex( + (a: any) => a && a.name.toLowerCase() === autoArea.toLowerCase() + ); + if (areaIndex !== -1) { + const el = document.getElementById(`area${areaIndex}`); + if (el) { + area_click(el as HTMLElement); + } + } + } + + if (autoChar) { + // Hide charselect immediately (spectator mode) so the user isn't stuck + // on the selection screen. If the CC request succeeds, PV will confirm it. + document.getElementById("client_waiting")!.style.display = "none"; + document.getElementById("client_charselect")!.style.display = "none"; + + const charIndex = client.chars.findIndex( + (c: any) => c && c.name.toLowerCase() === autoChar.toLowerCase() + ); + if (charIndex !== -1) { + client.sender.sendCharacter(charIndex); + } + } }; diff --git a/webAO/packets/handlers/handleMC.ts b/webAO/packets/handlers/handleMC.ts index 44237ea..187a9cd 100644 --- a/webAO/packets/handlers/handleMC.ts +++ b/webAO/packets/handlers/handleMC.ts @@ -39,9 +39,9 @@ export const handleMC = (args: string[]) => { if (charID >= 0) { musicname = client.chars[charID].name; - appendICLog(`${musicname} changed music to ${track} ${looptext}`,showname); + appendICLog(`changed music to ${track} ${looptext}`, showname, musicname); } else { - appendICLog(`The music was changed to ${track} ${looptext}`,showname); + appendICLog(`The music was changed to ${track} ${looptext}`, showname); } document.getElementById("client_trackstatustext")!.innerText = track; diff --git a/webAO/packets/handlers/handlePV.ts b/webAO/packets/handlers/handlePV.ts index 1ee13c8..90e47f1 100644 --- a/webAO/packets/handlers/handlePV.ts +++ b/webAO/packets/handlers/handlePV.ts @@ -102,4 +102,5 @@ export const handlePV = async (args: string[]) => { } else { document.getElementById("button_4")!.style.display = "none"; } + }; diff --git a/webAO/utils/queryParser.ts b/webAO/utils/queryParser.ts index 5263f6e..9a91795 100644 --- a/webAO/utils/queryParser.ts +++ b/webAO/utils/queryParser.ts @@ -7,6 +7,8 @@ interface QueryParams { asset: string; theme: string; serverName: string; + char: string; + area: string; } const queryParser = (): QueryParams => { @@ -19,6 +21,8 @@ const queryParser = (): QueryParams => { asset: urlParams.get("asset") || `${protocol}//attorneyoffline.de/base/`, theme: urlParams.get("theme") || "default", serverName: urlParams.get("serverName") || "Attorney Online session", + char: urlParams.get("char") || "", + area: urlParams.get("area") || "", }; return queryParams as QueryParams; }; diff --git a/webAO/viewport/utils/setSide.ts b/webAO/viewport/utils/setSide.ts index 658d959..564d477 100644 --- a/webAO/viewport/utils/setSide.ts +++ b/webAO/viewport/utils/setSide.ts @@ -77,7 +77,7 @@ export const set_side = async ({ if (showSpeedLines === true) { court.src = `${AO_HOST}themes/default/${encodeURI(speedLines)}`; } else { - setBackgroundImage("client_court_classic",client.viewport.getBackgroundName(),bg); + setBackgroundImage(court.id, client.viewport.getBackgroundName(), bg); } if (showDesk === true && desk) { |
