aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOsmium Sorcerer <os@sof.beauty>2026-03-16 15:59:07 +0000
committerOsmium Sorcerer <os@sof.beauty>2026-06-06 03:06:43 +0000
commite4604f27947052a3ba04fda9218a3aeb40b332d0 (patch)
tree38329469fdf43b700c351c45fd05f895c6f2d506
parent1b0cc14d58d0d8ed4479003286bff797b70ab189 (diff)
Remove hardcoded (a) and (b) emote subdirectories
Note: this is an old commit that was relevant prior to 10b413c ("Add asset preloading system for IC message rendering") WebAO assumes every character has an idle and talking animations which reside in fixed "(a)" and "(b)" subdirectories. This assumption, of course, breaks many valid characters that don't use these magical directory names, as it prepends them to every emote URL. This commit removes this fossil. Animation, or any character structure at all, shouldn't depend on magical subdirectory names, and instead defined explicitly.
-rw-r--r--webAO/client/setEmote.ts5
-rw-r--r--webAO/viewport/utils/preloadMessageAssets.ts11
-rw-r--r--webAO/viewport/viewport.ts10
3 files changed, 12 insertions, 14 deletions
diff --git a/webAO/client/setEmote.ts b/webAO/client/setEmote.ts
index 4c05afc3..7e4a1d43 100644
--- a/webAO/client/setEmote.ts
+++ b/webAO/client/setEmote.ts
@@ -12,7 +12,6 @@ const setEmote = async (
client: Client,
charactername: string,
emotename: string,
- prefix: string,
pair: boolean,
side: string,
) => {
@@ -43,8 +42,8 @@ const setEmote = async (
)}.webp`;
} else {
url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(
- prefix,
- )}${encodeURI(emotename)}${extension}`;
+ emotename,
+ )}${extension}`;
}
const exists = await fileExists(url);
if (exists) {
diff --git a/webAO/viewport/utils/preloadMessageAssets.ts b/webAO/viewport/utils/preloadMessageAssets.ts
index f3924cdb..aeae1914 100644
--- a/webAO/viewport/utils/preloadMessageAssets.ts
+++ b/webAO/viewport/utils/preloadMessageAssets.ts
@@ -18,7 +18,6 @@ function buildEmoteUrls(
extensions: string[],
charactername: string,
emotename: string,
- prefix: string,
): string[] {
const characterFolder = `${AO_HOST}characters/`;
const urls: string[] = [];
@@ -30,7 +29,7 @@ function buildEmoteUrls(
} else if (extension === ".webp.static") {
url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(emotename)}.webp`;
} else {
- url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(prefix)}${encodeURI(emotename)}${extension}`;
+ url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(emotename)}${extension}`;
}
urls.push(url);
}
@@ -66,8 +65,8 @@ export default async function preloadMessageAssets(
const doPreload = async (): Promise<PreloadedAssets> => {
// Build candidate URL lists for each emote
- const idleUrls = buildEmoteUrls(AO_HOST, emoteExtensions, charName, charEmote, "(a)");
- const talkingUrls = buildEmoteUrls(AO_HOST, emoteExtensions, charName, charEmote, "(b)");
+ const idleUrls = buildEmoteUrls(AO_HOST, emoteExtensions, charName, charEmote);
+ const talkingUrls = buildEmoteUrls(AO_HOST, emoteExtensions, charName, charEmote);
const hasPreanim =
chatmsg.type === 1 &&
@@ -76,12 +75,12 @@ export default async function preloadMessageAssets(
chatmsg.preanim !== "";
const preanimUrls = hasPreanim
- ? buildEmoteUrls(AO_HOST, emoteExtensions, charName, chatmsg.preanim!, "")
+ ? buildEmoteUrls(AO_HOST, emoteExtensions, charName, chatmsg.preanim!)
: null;
const hasPair = !!chatmsg.other_name;
const pairIdleUrls = hasPair
- ? buildEmoteUrls(AO_HOST, emoteExtensions, chatmsg.other_name!, chatmsg.other_emote!, "(a)")
+ ? buildEmoteUrls(AO_HOST, emoteExtensions, chatmsg.other_name!, chatmsg.other_emote!)
: null;
// Shout SFX per-character path
diff --git a/webAO/viewport/viewport.ts b/webAO/viewport/viewport.ts
index 70ec5c55..1421c671 100644
--- a/webAO/viewport/viewport.ts
+++ b/webAO/viewport/viewport.ts
@@ -255,7 +255,7 @@ const viewport = (): Viewport => {
if (chatmsg.preloadedAssets) {
setEmoteFromUrl(chatmsg.preloadedAssets.idleUrl, false, chatmsg.side);
} else {
- setEmote(AO_HOST, client, charName, charEmote, "(a)", false, chatmsg.side);
+ setEmote(AO_HOST, client, charName, charEmote, false, chatmsg.side);
}
charLayers.style.opacity = "1";
waitingBox.style.opacity = "1";
@@ -354,7 +354,7 @@ const viewport = (): Viewport => {
setEmoteFromUrl(chatmsg.preloadedAssets.preanimUrl, false, chatmsg.side);
} else {
const preanim = chatmsg.preanim;
- setEmote(AO_HOST, client, charName, preanim, "", false, chatmsg.side);
+ setEmote(AO_HOST, client, charName, preanim, false, chatmsg.side);
}
}
@@ -444,7 +444,7 @@ const viewport = (): Viewport => {
if (chatmsg.preloadedAssets) {
setEmoteFromUrl(chatmsg.preloadedAssets.pairIdleUrl, true, chatmsg.side);
} else {
- setEmote(AO_HOST, client, pairName, pairEmote, "(a)", true, chatmsg.side);
+ setEmote(AO_HOST, client, pairName, pairEmote, true, chatmsg.side);
}
pairLayers.style.opacity = "1";
} else {
@@ -454,7 +454,7 @@ const viewport = (): Viewport => {
if (chatmsg.preloadedAssets) {
setEmoteFromUrl(chatmsg.preloadedAssets.talkingUrl, false, chatmsg.side);
} else {
- setEmote(AO_HOST, client, charName, charEmote, "(b)", false, chatmsg.side);
+ setEmote(AO_HOST, client, charName, charEmote, false, chatmsg.side);
}
charLayers.style.opacity = "1";
@@ -462,7 +462,7 @@ const viewport = (): Viewport => {
if (chatmsg.preloadedAssets) {
setEmoteFromUrl(chatmsg.preloadedAssets.idleUrl, false, chatmsg.side);
} else {
- setEmote(AO_HOST, client, charName, charEmote, "(a)", false, chatmsg.side);
+ setEmote(AO_HOST, client, charName, charEmote, false, chatmsg.side);
}
charLayers.style.opacity = "1";
waitingBox.style.opacity = "1";