diff options
| author | stonedDiscord <Tukz@gmx.de> | 2025-09-03 12:20:42 +0200 |
|---|---|---|
| committer | stonedDiscord <Tukz@gmx.de> | 2025-09-03 12:20:42 +0200 |
| commit | 183fd0fdddbcf194eec08f8e79e6a1709e18d3a9 (patch) | |
| tree | 733426bb0261d3d0593b7739166ea9ab578564b9 | |
| parent | d8d2fbc8b7bf91dbedc7042daa1081ebd0d1330f (diff) | |
also do bgs
| -rw-r--r-- | webAO/__tests__/tryBackgroundUrls.test.ts | 28 | ||||
| -rw-r--r-- | webAO/client/fetchLists.ts | 1 | ||||
| -rw-r--r-- | webAO/dom/updateBackgroundPreview.ts | 17 | ||||
| -rw-r--r-- | webAO/packets/handlers/handleBN.ts | 76 | ||||
| -rw-r--r-- | webAO/utils/tryBackgroundUrls.ts | 15 | ||||
| -rw-r--r-- | webAO/viewport/utils/setSide.ts | 3 |
6 files changed, 58 insertions, 82 deletions
diff --git a/webAO/__tests__/tryBackgroundUrls.test.ts b/webAO/__tests__/tryBackgroundUrls.test.ts deleted file mode 100644 index cfbf3f9..0000000 --- a/webAO/__tests__/tryBackgroundUrls.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import fileExists from "../utils/fileExists"; -import tryBackgroundUrls from "../utils/tryBackgroundUrls"; -import transparentPng from "../constants/transparentPng"; -jest.mock("../utils/fileExists"); - -const mockFileExists = fileExists as jest.MockedFunction<typeof fileExists>; - -describe("tryBackgroundUrls", () => { - it("Should try multiple file extensions", async () => { - const url = "localhost/stoneddiscord/assets"; - mockFileExists - .mockReturnValueOnce(Promise.resolve(false)) - .mockReturnValueOnce(Promise.resolve(false)) - .mockReturnValueOnce(Promise.resolve(false)) - .mockReturnValueOnce(Promise.resolve(true)); - const actual = await tryBackgroundUrls(url); - const expected = "localhost/stoneddiscord/assets.apng"; - expect(actual).toBe(expected); - }); - - it("Should return a transparent png if it cant find any assets", async () => { - const url = "localhost/stoneddiscord/assets"; - mockFileExists.mockReturnValue(Promise.resolve(false)); - const actual = await tryBackgroundUrls(url); - const expected = transparentPng; - expect(actual).toBe(expected); - }); -}); diff --git a/webAO/client/fetchLists.ts b/webAO/client/fetchLists.ts index 3d590b9..d391fac 100644 --- a/webAO/client/fetchLists.ts +++ b/webAO/client/fetchLists.ts @@ -78,6 +78,7 @@ export const fetchExtensions = async () => { console.log("charicons "+client.charicon_extensions) console.log("emotes "+client.emote_extensions) console.log("emotions "+client.emotions_extensions) + console.log("backgrounds "+client.background_extensions) } catch (err) { console.warn("there was no extensions.json file"); } diff --git a/webAO/dom/updateBackgroundPreview.ts b/webAO/dom/updateBackgroundPreview.ts index 61186e0..2b8a18b 100644 --- a/webAO/dom/updateBackgroundPreview.ts +++ b/webAO/dom/updateBackgroundPreview.ts @@ -1,5 +1,20 @@ import { AO_HOST } from "../client/aoHost"; -import tryBackgroundUrls from "../utils/tryBackgroundUrls"; +import fileExists from "../utils/fileExists"; +import transparentPng from "../constants/transparentPng"; + +const urlExtensionsToTry = [".png", ".gif", ".webp", ".apng"]; +const tryBackgroundUrls = async (url: string) => { + for (let i = 0; i < urlExtensionsToTry.length; i++) { + const extension = urlExtensionsToTry[i]; + const fullFileUrl = url + extension; + const exists = await fileExists(fullFileUrl); + if (exists) { + return fullFileUrl; + } + } + return transparentPng; +}; +export default tryBackgroundUrls; /** * Update background preview. diff --git a/webAO/packets/handlers/handleBN.ts b/webAO/packets/handlers/handleBN.ts index 5e9e8f8..769a0dc 100644 --- a/webAO/packets/handlers/handleBN.ts +++ b/webAO/packets/handlers/handleBN.ts @@ -5,7 +5,29 @@ import { updateBackgroundPreview } from "../../dom/updateBackgroundPreview"; import { getIndexFromSelect } from "../../dom/getIndexFromSelect"; import { switchPanTilt } from "../../dom/switchPanTilt"; import transparentPng from "../../constants/transparentPng"; -import tryBackgroundUrls from "../../utils/tryBackgroundUrls"; +import fileExists from "../../utils/fileExists"; + +function setBackgroundImage(elementid: string, bgname: string, bgpart: string): boolean { + + let url; + let success = false; + for (const extension of client.background_extensions) { + url = `${AO_HOST}background/${encodeURI(bgname.toLowerCase())}/${bgpart}${extension}`; + + const exists = fileExists(url); + + if (exists) { + success = true; + break; + } + } + if (success) + (<HTMLImageElement>document.getElementById(elementid)).src = url; + else + (<HTMLImageElement>document.getElementById(elementid)).src = transparentPng; + return success; +} + /** * Handles a background change. @@ -28,43 +50,25 @@ export const handleBN = (args: string[]) => { client.viewport.getBackgroundName(); } - tryBackgroundUrls( - `${AO_HOST}background/${encodeURI(args[1].toLowerCase())}/defenseempty`, - ).then((resp) => { - (<HTMLImageElement>document.getElementById("bg_preview")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}defensedesk`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_def_bench")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}stand`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_wit_bench")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}prosecutiondesk`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_pro_bench")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}court`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_court")).src = resp; - if (resp !== transparentPng) { - (<HTMLInputElement>document.getElementById("client_pantilt")).checked = + + setBackgroundImage("bg_preview",args[1],"defenseempty") + + setBackgroundImage("client_def_bench",args[1],"defensedesk") + setBackgroundImage("client_wit_bench",args[1],"stand") + setBackgroundImage("client_pro_bench",args[1],"prosecutiondesk") + + setBackgroundImage("client_court_def",args[1],"defenseempty") + setBackgroundImage("client_court_wit",args[1],"witnessempty") + setBackgroundImage("client_court_pro",args[1],"prosecutorempty") + + setBackgroundImage("client_court_deft",args[1],"transition_def") + setBackgroundImage("client_court_prot",args[1],"transition_pro") + + if(setBackgroundImage("client_court",args[1],"court")) { + (<HTMLInputElement>document.getElementById("client_pantilt")).checked = true; switchPanTilt(); - } - }); - tryBackgroundUrls(`${bgfolder}defenseempty`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_court_def")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}transition_def`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_court_deft")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}witnessempty`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_court_wit")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}transition_pro`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_court_prot")).src = resp; - }); - tryBackgroundUrls(`${bgfolder}prosecutorempty`).then((resp) => { - (<HTMLImageElement>document.getElementById("client_court_pro")).src = resp; - }); + } if (client.charID === -1) { client.viewport.set_side({ diff --git a/webAO/utils/tryBackgroundUrls.ts b/webAO/utils/tryBackgroundUrls.ts deleted file mode 100644 index 154978b..0000000 --- a/webAO/utils/tryBackgroundUrls.ts +++ /dev/null @@ -1,15 +0,0 @@ -import fileExists from "./fileExists"; -import transparentPng from "../constants/transparentPng"; -const urlExtensionsToTry = [".png", ".gif", ".webp", ".apng"]; -const tryBackgroundUrls = async (url: string) => { - for (let i = 0; i < urlExtensionsToTry.length; i++) { - const extension = urlExtensionsToTry[i]; - const fullFileUrl = url + extension; - const exists = await fileExists(fullFileUrl); - if (exists) { - return fullFileUrl; - } - } - return transparentPng; -}; -export default tryBackgroundUrls; diff --git a/webAO/viewport/utils/setSide.ts b/webAO/viewport/utils/setSide.ts index 5966a52..c9948e2 100644 --- a/webAO/viewport/utils/setSide.ts +++ b/webAO/viewport/utils/setSide.ts @@ -1,7 +1,6 @@ import { positions } from "../constants/positions"; import { AO_HOST } from "../../client/aoHost"; import { client } from "../../client"; -import tryBackgroundUrls from "../../utils/tryBackgroundUrls"; import findImgSrc from "../../utils/findImgSrc"; /** @@ -55,7 +54,7 @@ export const set_side = async ({ if (showSpeedLines === true) { court.src = `${AO_HOST}themes/default/${encodeURI(speedLines)}`; } else { - court.src = await tryBackgroundUrls(client.viewport.getBackgroundFolder() + bg); + //court.src = await tryBackgroundUrls(client.viewport.getBackgroundFolder() + bg); } if (showDesk === true && desk) { |
