aboutsummaryrefslogtreecommitdiff
path: root/webAO
diff options
context:
space:
mode:
authorstonedDiscord <Tukz@gmx.de>2026-02-25 20:59:26 +0100
committerGitHub <noreply@github.com>2026-02-25 20:59:26 +0100
commit0fb9f2bb4f1b34ba55cdc06a83dc06a4a5754f97 (patch)
tree688e69beed25c60b03d6d655dd5553ce4c28e05c /webAO
parent8d8cbea3e027afd37c45b7aecca6f6f0e44121ad (diff)
parente80eb66cfd4e3abf22a5a228368e4c3bfdb7c65b (diff)
Merge pull request #292 from AttorneyOnline/pause
Pause
Diffstat (limited to 'webAO')
-rw-r--r--webAO/viewport/viewport.ts30
1 files changed, 28 insertions, 2 deletions
diff --git a/webAO/viewport/viewport.ts b/webAO/viewport/viewport.ts
index a7363a9..aea43f1 100644
--- a/webAO/viewport/viewport.ts
+++ b/webAO/viewport/viewport.ts
@@ -176,10 +176,17 @@ const viewport = (): Viewport => {
gamewindow.style.removeProperty("animation");
};
+ const pause = async (digits?: string) => {
+ // Default to 100ms if no number specified
+ const multiplier = !digits || digits === "" ? 1 : parseInt(digits, 10) || 1;
+ await delay(multiplier * 100);
+ };
+
const commands = new Map(
Object.entries({
s: shake,
f: flash,
+ p: pause,
}),
);
const textSpeeds = new Set(["{", "}"]);
@@ -208,10 +215,29 @@ const viewport = (): Viewport => {
if (
characterElement.innerHTML === COMMAND_IDENTIFIER &&
- commands.has(nextCharacterElement?.innerHTML)
+ (commands.has(nextCharacterElement?.innerHTML) ||
+ nextCharacterElement?.innerHTML === "p")
) {
textnow = chatmsg.content.substring(0, textnow.length + 1);
- await commands.get(nextCharacterElement.innerHTML)();
+ const commandChar = nextCharacterElement.innerHTML;
+
+ if (commandChar === "p") {
+ // Collect digits after \p for pause duration
+ const startPos = textnow.length;
+ let digits = "";
+ let offset = 1;
+ while (
+ startPos + offset <= chatmsg.content.length &&
+ /\d/.test(chatmsg.parsed[startPos + offset - 1]?.innerHTML || "")
+ ) {
+ digits += chatmsg.parsed[startPos + offset - 1].innerHTML;
+ textnow = chatmsg.content.substring(0, startPos + offset);
+ offset++;
+ }
+ await pause(digits);
+ } else {
+ await commands.get(commandChar)();
+ }
} else {
chatBoxInner.appendChild(chatmsg.parsed[textnow.length - 1]);
}