From bb25328c49c63961ac6170c3b6539a117592f564 Mon Sep 17 00:00:00 2001 From: MeowcaTheoRange Date: Mon, 10 Jun 2024 13:11:54 -0500 Subject: [PATCH] do things like "enhance commercial compatibility" --- assets/images/grid.png | Bin 9362 -> 0 bytes assets/scripts/KaplayMap/map.js | 21 ----- assets/scripts/KaplayMap/mapper.js | 8 ++ assets/scripts/script.js | 17 +++- assets/styles/style.css | 4 + package-lock.json | 131 +++++++++++++++++++++++++++-- package.json | 1 + pages/index.html | 5 ++ scripts/server.js | 15 ++-- 9 files changed, 168 insertions(+), 34 deletions(-) delete mode 100644 assets/images/grid.png diff --git a/assets/images/grid.png b/assets/images/grid.png deleted file mode 100644 index 34e5f03ccdedeaa7df54eadc0b29437aaff48c50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9362 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 { - this.kp.drawSprite({ - sprite: grid, - tiled: true, - opacity: 0.25, - width: this.kp.width() + 200, - height: this.kp.height() + 200, - anchor: "center", - pos: this.kp.vec2( - Math.floor(this.kp.camPos().x / 100) * 100 + 0.5, - Math.floor(this.kp.camPos().y / 100) * 100 + 0.5 - ), - }); - }); - - return grid; - } - clearMouseMode() { this.lastReleaseTime = null; this.lastReleasePos = null; diff --git a/assets/scripts/KaplayMap/mapper.js b/assets/scripts/KaplayMap/mapper.js index d578bfd..605174b 100644 --- a/assets/scripts/KaplayMap/mapper.js +++ b/assets/scripts/KaplayMap/mapper.js @@ -45,6 +45,12 @@ export class EventMapperManager { // Init + __initFloor() { + const allFloors = Array.from(this.getAllFocusObject("floor").keys()); + + location.hash = allFloors[0]; + } + async load() { this.uimanager.setLoading(true); @@ -68,6 +74,8 @@ export class EventMapperManager { window.addEventListener("hashchange", () => this.hashchange()); + this.__initFloor(); + await this.hashchange(); this.uimanager.setLoading(false); diff --git a/assets/scripts/script.js b/assets/scripts/script.js index 71d4c1a..f1d712c 100644 --- a/assets/scripts/script.js +++ b/assets/scripts/script.js @@ -22,7 +22,22 @@ const kaplaymap = new KaplayMap(kp, {}); const eventmappermanager = new EventMapperManager(kaplaymap, mapUi); async function main() { - kaplaymap.initGrid(); + const grid = kp.loadSprite(null, "/files/images/grid.png"); + + kp.onDraw(() => { + kp.drawSprite({ + sprite: grid, + tiled: true, + opacity: 0.25, + width: kp.width() + 200, + height: kp.height() + 200, + anchor: "center", + pos: kp.vec2( + Math.floor(kp.camPos().x / 100) * 100 + 0.5, + Math.floor(kp.camPos().y / 100) * 100 + 0.5 + ), + }); + }); await eventmappermanager.load(); } diff --git a/assets/styles/style.css b/assets/styles/style.css index e1a7635..be20c35 100644 --- a/assets/styles/style.css +++ b/assets/styles/style.css @@ -1,6 +1,10 @@ @import url("./components.css"); @import url("./elements.css"); +@keyframes load { + to { transform: rotate(1turn) } +} + body, html { margin: 0; height: 100%; diff --git a/package-lock.json b/package-lock.json index 0b6b594..e5e7cd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,12 +10,29 @@ "license": "MIT", "dependencies": { "express": "^4.19.2", + "http-proxy-middleware": "^3.0.0", "https": "^1.0.0" }, "devDependencies": { "nodemon": "^3.1.1" } }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -101,7 +118,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -283,6 +299,11 @@ "node": ">= 0.6" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", @@ -328,7 +349,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -353,6 +373,25 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -500,6 +539,56 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", + "dependencies": { + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/https": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", @@ -551,7 +640,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -560,7 +648,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -572,11 +659,21 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -598,6 +695,18 @@ "node": ">= 0.6" } }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -749,7 +858,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -823,6 +931,11 @@ "node": ">=8.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -975,7 +1088,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -1018,6 +1130,11 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 2540068..53a2141 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "MIT", "dependencies": { "express": "^4.19.2", + "http-proxy-middleware": "^3.0.0", "https": "^1.0.0" }, "devDependencies": { diff --git a/pages/index.html b/pages/index.html index cb7099d..9262358 100644 --- a/pages/index.html +++ b/pages/index.html @@ -10,6 +10,10 @@ rel="stylesheet" href="/assets/styles/style.css" /> + @@ -84,5 +88,6 @@ + diff --git a/scripts/server.js b/scripts/server.js index 9aa9663..32c73e0 100644 --- a/scripts/server.js +++ b/scripts/server.js @@ -1,4 +1,5 @@ import express from 'express'; +import { createProxyMiddleware } from 'http-proxy-middleware'; import config from "../eventmapper_config.json" with { type: "json" }; @@ -9,11 +10,15 @@ app.use("/assets", express.static('assets')); app.use("/", express.static('pages')); app.use("/dataServer", express.static('data')); // Example data file-server -app.use("/files", express.static('files')); // Example file file-server +app.use("/fileServer", express.static('files')); // Example file file-server + +app.use("/files", createProxyMiddleware({ + target: config.files_url +})); app.get('/data/:lang/events/:floor', async (req, res) => { // Get events - let eventsReq = await fetch(new URL(`events/${req.params.floor}.json`, config.data_url)); + let eventsReq = await fetch(new URL(`./events/${req.params.floor}.json`, config.data_url)); let events; if (eventsReq.ok) events = await eventsReq.json(); @@ -39,7 +44,7 @@ app.get('/data/:lang/events/:floor', async (req, res) => { app.get('/data/:lang/events/', async (req, res) => { // Get floors - let floorsReq = await fetch(new URL("floors.json", config.data_url)); + let floorsReq = await fetch(new URL("./floors.json", config.data_url)); let floors; if (floorsReq.ok) floors = await floorsReq.json(); @@ -49,7 +54,7 @@ app.get('/data/:lang/events/', async (req, res) => { let allEvents = []; await Promise.allSettled(floors.map(async (curFloor) => { - let eventsReq = await fetch(new URL(`events/${curFloor.id}.json`, config.data_url)); + let eventsReq = await fetch(new URL(`./events/${curFloor.id}.json`, config.data_url)); let events; if (eventsReq.ok) events = await eventsReq.json(); @@ -78,7 +83,7 @@ app.get('/data/:lang/events/', async (req, res) => { app.get('/data/:lang/floors', async (req, res) => { // Get floors - let floorsReq = await fetch(new URL("floors.json", config.data_url)); + let floorsReq = await fetch(new URL("./floors.json", config.data_url)); let floors; if (floorsReq.ok) floors = await floorsReq.json();