<!DOCTYPE html>
<!-- Ultimate Game Stash file-->
<!-- For the regularly updating doc go to https://docs.google.com/document/d/1_FmH3BlSBQI7FGgAQL59-ZPe8eCxs35wel6JUyVaG8Q/ -->
<html lang="en-us">
<head>
<base href="https://cdn.jsdelivr.net/gh/bubbls/UGS-Assets@5765230aac4c0072a5b1021eab4a6a4b9df597f9/stone-grass-mowing-simulator/">
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
</head>
<body style="margin:0;padding:0" class="noselect">
<div id="loading-text" style="color: black; font-size: 48px; font-family: cursive; text-align: center; margin-top: 20px;">LOADING...</div>
<canvas id="unity-canvas"
style="position:fixed;top:0;left:0;width:100%;height:100%;outline:none"></canvas>
<script>
const SPLIT_MAP = {"8e12edaf08bc00cba646a7df97480baf.wasm": null};
</script>
<script>
async function mergeParts(baseUrl) {
const parts = [];
for (let i = 1; i <= 99; i++) {
const testUrl = baseUrl + ".part" + i;
try {
const head = await fetch(testUrl, { method: "HEAD" });
if (!head.ok) break;
parts.push(testUrl);
} catch { break; }
}
if (parts.length === 0) return baseUrl;
const buffers = await Promise.all(parts.map(async (u) => {
const r = await fetch(u);
if (!r.ok) throw new Error("Failed part " + u);
return new Uint8Array(await r.arrayBuffer());
}));
const total = buffers.reduce((a, b) => a + b.length, 0);
const merged = new Uint8Array(total);
let offset = 0;
for (const b of buffers) { merged.set(b, offset); offset += b.length; }
return URL.createObjectURL(new Blob([merged]));
}
async function preMergeAll() {
const map = {};
const files = Object.entries(SPLIT_MAP);
const total = files.length;
let done = 0;
const loadingText = document.getElementById("loading-text");
for (const [file, _] of files) {
const merged = await mergeParts("Build/" + file);
map[file] = merged;
done++;
const percent = Math.floor((done / total) * 100);
loadingText.innerText = `LOADING... ${percent}%`;
console.log("Premerged:", file, "→", merged);
}
loadingText.style.display = "none";
return map;
}
(async () => {
const mergedMap = await preMergeAll();
window.SPLIT_MAP = mergedMap;
const origFetch = window.fetch;
window.fetch = async function(resource, options) {
if (typeof resource === "string") {
const key = resource.split("/").pop();
if (mergedMap[key]) {
console.log("Redirect fetch:", key);
return origFetch(mergedMap[key], options);
}
if (resource.includes("StreamingAssets")) {
return origFetch((document.querySelector('base').href !== null ? document.querySelector('base').href+"/" : "") + "StreamingAssets/"+resource.split("/StreamingAssets/")[1])
}
}
return origFetch(resource, options);
};
const OrigXHR = window.XMLHttpRequest;
window.XMLHttpRequest = function() {
const xhr = new OrigXHR();
const origOpen = xhr.open;
xhr.open = function(method, url, ...rest) {
const key = url.split("/").pop();
if (mergedMap[key]) {
console.log("Redirect XHR:", key);
origOpen.call(xhr, method, mergedMap[key], ...rest);
} else {
origOpen.call(xhr, method, url, ...rest);
}
};
return xhr;
};
const canvas = document.querySelector("#unity-canvas");
const loaderUrl = "Build/e40682cd4a2e8826aa72fb3216daf773.loader.js";
const config = {
dataUrl: "Build/5339d669eb849446a68aba9a48d61098.data",
frameworkUrl: "Build/9f98a295b940d80834f1bfc1792d2663.framework.js",
codeUrl: "Build/8e12edaf08bc00cba646a7df97480baf.wasm",
streamingAssetsUrl: "StreamingAssets",
companyName: "Stone Grass: Mowing Simulator",
productName: "Stone Grass: Mowing Simulator",
productVersion: "1.0.0"
};
const script = document.createElement("script");
script.src = loaderUrl;
script.onload = () => {
createUnityInstance(canvas, config, (progress) => {}).then((unityInstance) => {
window.gameInstance = unityInstance;
}).catch((message) => alert(message));
};
document.body.appendChild(script);
})();
</script>
<script>
function resizeCanvas() {
const canvas = document.getElementById("unity-canvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.style.width = window.innerWidth + "px";
canvas.style.height = window.innerHeight + "px";
}
window.addEventListener("load", resizeCanvas);
window.addEventListener("resize", resizeCanvas);
</script>
</body>
</html>
clgrassmowing.html
Displaying clgrassmowing.html.
/* Add your styles here */
// Add your code here