From 0eca0198dd73dec5c019d9c643aea6cc890da633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Mon, 20 Jan 2025 11:10:49 +0100 Subject: [PATCH] Emscripten: handle missing assets --- emscripten/static/index.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/emscripten/static/index.js b/emscripten/static/index.js index c6265cca6e..7eab066565 100644 --- a/emscripten/static/index.js +++ b/emscripten/static/index.js @@ -64,7 +64,11 @@ window_scale = 1.750000 `); } - await updateAssets(); + const assetsOK = await updateAssets(); + if (!assetsOK) + { + return + } Module.FS.writeFile("/OpenRCT2/changelog.txt", `EMSCRIPTEN --- README @@ -134,12 +138,26 @@ async function updateAssets() { console.log("Updating assets to", assetsVersion); document.getElementById("loadingWebassembly").innerText = "Asset update found. Downloading..."; await clearDatabase("/OpenRCT2/"); - await extractZip(await (await fetch("assets.zip")).blob(), () => - { + + // Fetch the assets.zip file + const response = await fetch("assets.zip"); + if (!response.ok) { + if (response.status === 404) { + document.getElementById("loadingWebassembly").innerText = "Error! Assets file not found (404)."; + } else { + document.getElementById("loadingWebassembly").innerText = `Error! Failed to download assets (status: ${response.status}).`; + } + return false; + } else { + document.getElementById("loadingWebassembly").innerText = "Downloaded assets.zip"; + } + + await extractZip(await response.blob(), () => { return "/OpenRCT2/"; }); Module.FS.writeFile("/OpenRCT2/version", assetsVersion.toString()); } + return true; } async function extractZip(data, checkZip) {