M starkingdoms-client/package.json => starkingdoms-client/package.json +2 -1
@@ 16,6 16,7 @@
"vite": "^5.0.0"
},
"dependencies": {
- "debug": "^4.3.4"
+ "debug": "^4.3.4",
+ "pixi.js": "^7.3.2"
}
}
M starkingdoms-client/src/main.ts => starkingdoms-client/src/main.ts +11 -5
@@ 4,6 4,7 @@ import { ConfigServer, loadConfig } from "./config.ts";
import "./css/style.css";
import "./css/themes/catppuccin-mocha/colors.css";
import { Part, Planet } from "./protocol.ts";
+import * as PIXI from "pixi.js";
let config = await loadConfig();
@@ 11,13 12,15 @@ const logger = createDebug("main");
logger(
`Hello, world! StarKingdoms ${APP_VERSION} (${COMMIT_HASH}) at your service!`,
);
-
+/*
if (window.localStorage.getItem("stk-packet-mode") === "debug") {
document.getElementById("packet_log")!.classList.remove("log-hidden");
} else {
document.getElementById("packet_log")!.remove();
}
+ */
+
export interface GlobalData {
client: ClientHub | null;
me: GlobalMe | null;
@@ 37,14 40,17 @@ export interface GlobalData {
rendering: GlobalRendering | null;
}
+export interface GlobalRendering {
+ app: PIXI.Application;
+ player_text_map: Map<number, PIXI.Text>;
+ planet_sprite_map: Map<number, PIXI.Sprite>;
+ part_sprite_map: Map<number, PIXI.Sprite>;
+}
+
export interface GlobalMe {
username: string;
part_id: number;
}
-export interface GlobalRendering {
- canvas: HTMLCanvasElement;
- ctx: CanvasRenderingContext2D;
-}
export const global: GlobalData = {
client: null,
M starkingdoms-client/src/rendering.ts => starkingdoms-client/src/rendering.ts +56 -119
@@ 1,9 1,9 @@
+import * as PIXI from "pixi.js";
import { global, player } from "./main.ts";
-import { part_texture, planet_texture } from "./textures.ts";
-import { planet_color } from "./planet_colors.ts";
+import { part_texture_url, planet_texture_url } from "./textures.ts";
-//let t = performance.now();
-//let delta = 0.0;
+const PART_WIDTH = 25;
+const PART_HEIGHT = 25;
export function startRender() {
// hide the launch popup
@@ 12,125 12,62 @@ export function startRender() {
document.getElementById("hud")!.classList.remove("hidden");
// and chat
document.getElementById("chat")!.classList.remove("hidden");
- // create the canvas
- let canvas = document.createElement("canvas");
- canvas.classList.add("game");
- // append it
- document.getElementById("gamewindow")!.appendChild(canvas);
- let ctx = canvas.getContext("2d")!;
- ctx.canvas.width = window.innerWidth;
- ctx.canvas.height = window.innerHeight;
- window.onresize = () => {
- ctx.canvas.width = window.innerWidth;
- ctx.canvas.height = window.innerHeight;
- };
+ let app = new PIXI.Application({
+ width: window.innerWidth,
+ height: window.innerHeight,
+ });
+ document
+ .getElementById("gamewindow")!
+ .appendChild(<HTMLCanvasElement>app.view);
+ (<HTMLCanvasElement>app.view).classList.add("game");
global.rendering = {
- canvas: canvas,
- ctx: ctx,
+ app: app,
+ player_text_map: new Map(),
+ planet_sprite_map: new Map(),
+ part_sprite_map: new Map(),
};
- //t = performance.now();
- //delta = 0.0;
- // start the render loop
- requestAnimationFrame(renderLoop);
-}
-
-async function renderLoop(_newT: DOMHighResTimeStamp) {
- //delta = newT - t;
- //t = newT;
-
- let viewer_size_x = global.rendering?.canvas.width!;
- let viewer_size_y = global.rendering?.canvas.height!;
-
- global.rendering!.canvas.style.setProperty(
- "background-position",
- `${player()?.transform.x! / 5}px ${-player()?.transform.y! / 5}px`,
- );
-
- global.rendering!.ctx.setTransform(1, 0, 0, 1, 0, 0);
- global.rendering!.ctx.clearRect(0, 0, viewer_size_x, viewer_size_y);
-
- // *dont* translate the camera. we're moving everything else around us. cameracentrism.
- // only translation will be to center our core module.
-
- global.rendering!.ctx.translate(viewer_size_x / 2, viewer_size_y / 2);
-
- /*
- todo: track indicator
- */
-
- for (let [_id, planet] of global.planets_map) {
- global.rendering!.ctx.drawImage(
- await planet_texture(planet.planet_type),
- planet.transform.x - planet.radius - player()?.transform.x!, // dx
- planet.transform.y - planet.radius - player()?.transform.y!, // dy
- planet.radius * 2, // dw
- planet.radius * 2, // dh
- );
-
- global.rendering!.ctx.beginPath();
- global.rendering!.ctx.strokeStyle = planet_color(planet.planet_type);
- global.rendering!.ctx.lineWidth = 5;
- global.rendering!.ctx.moveTo(
- player()!.transform.x - player()!.transform.x,
- player()!.transform.y - player()!.transform.y,
- );
- global.rendering!.ctx.lineTo(
- planet.transform.x - player()!.transform.x,
- planet.transform.y - player()!.transform.y,
- );
- global.rendering!.ctx.stroke();
- }
-
- for (let [_id, part] of global.parts_map) {
- global.rendering!.ctx.save();
-
- // x_{screen} = x_{world} - player_{x_{world}}
- // x_{world} = x_{screen} + player_{x_{world}}
- global.rendering!.ctx.translate(
- part.transform.x - player()!.transform.x,
- part.transform.y - player()!.transform.y,
- );
-
- global.rendering!.ctx.rotate(part.transform.rot);
-
- global.rendering!.ctx.drawImage(
- await part_texture(part.part_type),
- -25,
- -25,
- 50,
- 50,
- );
-
- global.rendering!.ctx.restore();
-
- // todo: clicked stuff
- }
-
- for (let [id, username] of global.players_map) {
- let part = global.parts_map.get(id);
-
- if (part !== undefined) {
- global.rendering!.ctx.save();
-
- global.rendering!.ctx.translate(
- part!.transform.x - player()!.transform.x,
- part!.transform.y - player()!.transform.y,
- );
-
- global.rendering!.ctx.textAlign = "center";
- global.rendering!.ctx.font =
- '30px ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"';
- global.rendering!.ctx.fillStyle = "white";
- global.rendering!.ctx.fillText(username, 0, -35);
-
- global.rendering!.ctx.restore();
+ app.ticker.add(() => {
+ // RENDER STAGE 1: UPDATE POSITION
+ app.stage.setTransform(player()?.transform.x!, player()?.transform.y!);
+ // RENDER STAGE 2: UPDATE SPRITES
+ for (let [id, planet] of global.planets_map) {
+ let planet_sprite;
+
+ if (global.rendering!.planet_sprite_map.has(id)) {
+ planet_sprite = global.rendering!.planet_sprite_map.get(id)!;
+ } else {
+ planet_sprite = PIXI.Sprite.from(
+ planet_texture_url(planet.planet_type),
+ );
+ global.rendering!.app.stage.addChild(planet_sprite);
+ }
+
+ planet_sprite.height = planet.radius * 2;
+ planet_sprite.width = planet.radius * 2;
+ planet_sprite.x = planet.transform.x;
+ planet_sprite.y = planet.transform.y;
+ planet_sprite.rotation = planet.transform.rot;
}
- }
-
- // particles stuff
-
- requestAnimationFrame(renderLoop);
+ // RENDER STAGE 3: UPDATE PARTS
+ for (let [id, part] of global.parts_map) {
+ let part_sprite;
+
+ if (global.rendering!.part_sprite_map.has(id)) {
+ part_sprite = global.rendering!.part_sprite_map.get(id)!;
+ } else {
+ part_sprite = PIXI.Sprite.from(part_texture_url(part.part_type));
+ global.rendering!.app.stage.addChild(part_sprite);
+
+ console.log(part.transform);
+ part_sprite.height = PART_HEIGHT;
+ part_sprite.width = PART_WIDTH;
+ part_sprite.x = part.transform.x;
+ part_sprite.y = part.transform.y;
+ part_sprite.rotation = part.transform.rot;
+ }
+ }
+ });
}
M starkingdoms-client/src/textures.ts => starkingdoms-client/src/textures.ts +2 -40
@@ 3,54 3,16 @@ import tex_earth from "./assets/earth.svg";
import tex_hearty from "./assets/hearty.svg";
import tex_missing from "./assets/missing.svg";
-let planet_textures: Map<PlanetType, HTMLImageElement> = new Map();
-
-function planet_texture_url(type: PlanetType): string {
+export function planet_texture_url(type: PlanetType): string {
if (type == PlanetType.Earth) {
return tex_earth;
}
return tex_missing;
}
-export async function planet_texture(
- type: PlanetType,
-): Promise<HTMLImageElement> {
- return new Promise((resolve, reject) => {
- if (planet_textures.has(type)) {
- resolve(planet_textures.get(type)!);
- } else {
- let img = new Image();
- img.onload = () => {
- planet_textures.set(type, img);
- resolve(img);
- };
- img.onerror = reject;
- img.src = planet_texture_url(type);
- }
- });
-}
-
-let part_textures: Map<PartType, HTMLImageElement> = new Map();
-
-function part_texture_url(type: PartType): string {
+export function part_texture_url(type: PartType): string {
if (type == PartType.Hearty) {
return tex_hearty;
}
return tex_missing;
}
-
-export async function part_texture(type: PartType): Promise<HTMLImageElement> {
- return new Promise((resolve, reject) => {
- if (part_textures.has(type)) {
- resolve(part_textures.get(type)!);
- } else {
- let img = new Image();
- img.onload = () => {
- part_textures.set(type, img);
- resolve(img);
- };
- img.onerror = reject;
- img.src = part_texture_url(type);
- }
- });
-}
M starkingdoms-client/yarn.lock => starkingdoms-client/yarn.lock +394 -0
@@ 112,6 112,226 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz#02c4446f802706098d8e6ee70cf2b7aba96ded0b"
integrity sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==
+"@pixi/accessibility@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/accessibility/-/accessibility-7.3.2.tgz#e823d96a2d032a5bbaccdf547fcf46746bfb865a"
+ integrity sha512-MdkU22HTauRvq9cMeWZIQGaDDa86sr+m12rKNdLV+FaDQgP/AhP+qCVpK7IKeJa9BrWGXaYMw/vueij7HkyDSA==
+
+"@pixi/app@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/app/-/app-7.3.2.tgz#7121aaa11ffbf586738e2422db7e12464f6c46e7"
+ integrity sha512-3YRFSMvAxDebAz3/JJv+2jzbPkT8cHC0IHmmLRN8krDL1pZV+YjMLgMwN/Oeyv5TSbwNqnrF5su5whNkRaxeZQ==
+
+"@pixi/assets@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/assets/-/assets-7.3.2.tgz#9f460f9939b60d12a6af184bf21978f714876421"
+ integrity sha512-yteq6ptAxA09EcwU9D9hl7qr5yWIqy+c2PsXkTDkc76vTAwIamLY3KxLq2aR5y1U4L4O6aHFJd26uNhHcuTPmw==
+ dependencies:
+ "@types/css-font-loading-module" "^0.0.7"
+
+"@pixi/color@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/color/-/color-7.3.2.tgz#3a9f03ece87ed03748e1ee71658e1fc627c19981"
+ integrity sha512-jur5PvdOtUBEUTjmPudW5qdQq6yYGlVGsi3HyhasJw14bN+GKJwiCKgIsyrsiNL5HBUXmje4ICwQohf6BqKqxA==
+ dependencies:
+ "@pixi/colord" "^2.9.6"
+
+"@pixi/colord@^2.9.6":
+ version "2.9.6"
+ resolved "https://registry.yarnpkg.com/@pixi/colord/-/colord-2.9.6.tgz#7e4e7851480da6fd3cef4e331f008d60be7e1204"
+ integrity sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==
+
+"@pixi/compressed-textures@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/compressed-textures/-/compressed-textures-7.3.2.tgz#2a0f6c809e5bbdfdf4933c47cd261d89f38a9612"
+ integrity sha512-J3ENMHDPQO6CJRei55gqI0WmiZJIK6SgsW5AEkShT0aAe5miEBSomv70pXw/58ru+4/Hx8cXjamsGt4aQB2D0Q==
+
+"@pixi/constants@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/constants/-/constants-7.3.2.tgz#185b1fe4e65c936cdd59748111432f0878ee47d9"
+ integrity sha512-Q8W3ncsFxmfgC5EtokpG92qJZabd+Dl+pbQAdHwiPY3v+8UNq77u4VN2qtl1Z04864hCcg7AStIYEDrzqTLF6Q==
+
+"@pixi/core@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/core/-/core-7.3.2.tgz#9c72234da688b665325fd5f8362537e0877a2443"
+ integrity sha512-Pta3ee8MtJ3yKxGXzglBWgwbEOKMB6Eth+FpLTjL0rgxiqTB550YX6jsNEQQAzcGjCBlO3rC/IF57UZ2go/X6w==
+ dependencies:
+ "@pixi/color" "7.3.2"
+ "@pixi/constants" "7.3.2"
+ "@pixi/extensions" "7.3.2"
+ "@pixi/math" "7.3.2"
+ "@pixi/runner" "7.3.2"
+ "@pixi/settings" "7.3.2"
+ "@pixi/ticker" "7.3.2"
+ "@pixi/utils" "7.3.2"
+ "@types/offscreencanvas" "^2019.6.4"
+
+"@pixi/display@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/display/-/display-7.3.2.tgz#5d4005045ebd47db9974327df2f861e95ad84028"
+ integrity sha512-cY5AnZ3TWt5GYGx4e5AQ2/2U9kP+RorBg/O30amJ+8e9bFk9rS8cjh/DDq/hc4lql96BkXAInTl40eHnAML5lQ==
+
+"@pixi/events@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/events/-/events-7.3.2.tgz#ff985f7dae291a440298b2d5d91dd63341aa36d7"
+ integrity sha512-Moca9epu8jk1wIQCdVYjhz2pD9Ol21m50wvWUKvpgt9yM/AjkCLSDt8HO/PmTpavDrkhx5pVVWeDDA6FyUNaGA==
+
+"@pixi/extensions@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/extensions/-/extensions-7.3.2.tgz#8e5589c534d3866ddae023666891a793b308a256"
+ integrity sha512-Qw84ADfvmVu4Mwj+zTik/IEEK9lWS5n4trbrpQCcEZ+Mb8oRAXWvKz199mi1s7+LaZXDqeCY1yr2PHQaFf1KBA==
+
+"@pixi/extract@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/extract/-/extract-7.3.2.tgz#b9a29e147bc1817d0400a7dfcd4fb7dbf972ce41"
+ integrity sha512-KsoflvQZV/XD8A8xbtRnmI4reYekbI4MOi7ilwQe5tMz6O1mO7IzrSukxkSMD02f6SpbAqbi7a1EayTjvY0ECQ==
+
+"@pixi/filter-alpha@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-alpha/-/filter-alpha-7.3.2.tgz#7404c5e1a73f148579d32547680a35dcf5a45a67"
+ integrity sha512-nZMdn310wH5ZK1slwv3X4qT8eLoAGO7SgYGCy5IsMtpCtNObzE9XA4tAfhXrjihyzPS9KvszgAbnv1Qpfh0/uw==
+
+"@pixi/filter-blur@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-blur/-/filter-blur-7.3.2.tgz#290eb8b464ab3885829918cde38f1b5e10532dc8"
+ integrity sha512-unu3zhwHMhN+iAe7Td2rK40i2UJ2GOhzWK+6jcU3ZkMOsFCT5kgBoMRTejeQVcvCs6GoYK8imbkE7mXt05Vj6A==
+
+"@pixi/filter-color-matrix@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-color-matrix/-/filter-color-matrix-7.3.2.tgz#80e6dfb75caa7118e51a39686d46371f3c5f2010"
+ integrity sha512-rbyjes/9SMoV9jjPiK0sLMkmLfN8D17GoTJIfq/KLv1x9646W5fL2QSKkN04UkZ+020ndWvIOxK1S97tvRyCfg==
+
+"@pixi/filter-displacement@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-displacement/-/filter-displacement-7.3.2.tgz#648a46b6c3afadc188d4b700834ca722f870338e"
+ integrity sha512-ZHl7Sfb8JYd9Z6j96OHCC0NhMKhhXJRE5AbkSDohjEMVCK1BV5rDGAHV8WVt/2MJ/j83CXUpydzyMhdM4lMchg==
+
+"@pixi/filter-fxaa@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-fxaa/-/filter-fxaa-7.3.2.tgz#47c6ac6703284a32570adfe2cbf77bba5295c3cf"
+ integrity sha512-9brtlxDnQTZk2XiFBKdBK9e+8CX9LdxxcL7LRpjEyiHuAPvTlQgu9B85LrJ4GzWKqJJKaIIZBzhIoiCLUnfeXg==
+
+"@pixi/filter-noise@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/filter-noise/-/filter-noise-7.3.2.tgz#e5f1ea435611fa1a6f3c5a30f4ce3c86d90cc267"
+ integrity sha512-F8GQQ20n7tCjThX6GCXckiXz2YffOCxicTJ0oat9aVDZh+sVsAxYX0aKSdHh0hhv18F0yuc6tPsSL5DYb63xFg==
+
+"@pixi/graphics@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/graphics/-/graphics-7.3.2.tgz#42928e8840c24b4f53882b26c95cbc5ef227bfdb"
+ integrity sha512-PhU6j1yub4tH/s+/gqByzgZ3mLv1mfb6iGXbquycg3+WypcxHZn0opFtI/axsazaQ9SEaWxw1m3i40WG5ANH5g==
+
+"@pixi/math@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/math/-/math-7.3.2.tgz#bcf2357d8bfa2a7836d645063b1f854c4a24d745"
+ integrity sha512-dutoZ0IVJ5ME7UtYNo2szu4D7qsgtJB7e3ylujBVu7BOP2e710BVtFwFSFV768N14h9H5roGnuzVoDiJac2u+w==
+
+"@pixi/mesh-extras@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/mesh-extras/-/mesh-extras-7.3.2.tgz#fc00a6acb811a0780ce7b54ade844b32d20c9621"
+ integrity sha512-s/tg9TsTZZxLEdCDKWnBChDGkc041HCTP7ykJv4fEROzb9B0lskULYyvv+/YNNKa2Ugb9WnkMknpOdOXCpjyyg==
+
+"@pixi/mesh@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/mesh/-/mesh-7.3.2.tgz#e0159b03c1ae60dfba7c8e87f84c4400e4bcc9c7"
+ integrity sha512-LFkt7ELYXQLgbgHpjl68j6JD5ejUwma8zoPn2gqSBbY+6pK/phjvV1Wkh76muF46VvNulgXF0+qLIDdCsfrDaA==
+
+"@pixi/mixin-cache-as-bitmap@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-7.3.2.tgz#dc6b53f370444b12e58593aebc87231fff88f20e"
+ integrity sha512-bZRlyUN5+9kCUjn67V0IFtYIrbmx9Vs4sMOmXyrX3Q4B4gPLE46IzZz3v0IVaTjp32udlQztfJalIaWbuqgb3A==
+
+"@pixi/mixin-get-child-by-name@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-7.3.2.tgz#59ac446c3c75e096aee8d36bdb72bd4aa1430a4d"
+ integrity sha512-mbUi3WxXrkViH7qOgjk4fu2BN36NwNb7u+Fy1J5dS8Bntj57ZVKmEV9PbUy0zYjXE8rVmeAvSu/2kbn5n9UutQ==
+
+"@pixi/mixin-get-global-position@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/mixin-get-global-position/-/mixin-get-global-position-7.3.2.tgz#84efe8bf315e7e1f539435281302c938d98725ab"
+ integrity sha512-1nhWbBgmw6rK7yQJxzeI9yjKYYEkM5i3pee8qVu4YWo3b1xWVQA7osQG7aGM/4qywDkXaA1ZvciA5hfg6f4Q5Q==
+
+"@pixi/particle-container@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/particle-container/-/particle-container-7.3.2.tgz#7e2826ea986a1cf2954830eab99b7f8bee4042d7"
+ integrity sha512-JYc4j4z97KmxyLp+1Lg0SNi8hy6RxcBBNQGk+CSLNXeDWxx3hykT5gj/ORX1eXyzHh1ZCG1XzeVS9Yr8QhlFHA==
+
+"@pixi/prepare@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/prepare/-/prepare-7.3.2.tgz#d643bbab6df768c52819806a186063ea13bb2c73"
+ integrity sha512-aLPAXSYLUhMwxzJtn9m0TSZe+dQlZCt09QNBqYbSi8LZId54QMDyvfBb4zBOJZrD2xAZgYL5RIJuKHwZtFX6lQ==
+
+"@pixi/runner@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/runner/-/runner-7.3.2.tgz#5cd89cba0a604272e7320d292fedca36a681c486"
+ integrity sha512-maKotoKJCQiQGBJwfM+iYdQKjrPN/Tn9+72F4WIf706zp/5vKoxW688Rsktg5BX4Mcn7ZkZvcJYTxj2Mv87lFA==
+
+"@pixi/settings@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/settings/-/settings-7.3.2.tgz#6c14babf416d6c9ddb72f07b0c517ae0353a38b6"
+ integrity sha512-vtxzuARDTbFe0fRYSqB53B+mPpX7v+QjjnCUmVMVvZiWr3QcngMWVml6c6dQDln7IakWoKZRrNG4FpggvDgLVg==
+ dependencies:
+ "@pixi/constants" "7.3.2"
+ "@types/css-font-loading-module" "^0.0.7"
+ ismobilejs "^1.1.0"
+
+"@pixi/sprite-animated@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/sprite-animated/-/sprite-animated-7.3.2.tgz#a35891380b4c0e4029170fe5cbcbbb9edbba07c5"
+ integrity sha512-j9pyUe4cefxE9wecNfbWQyL5fBQKvCGYaOA0DE1X46ukBHrIuhA8u3jg2X3N3r4IcbVvxpWFYDrDsWXWeiBmSw==
+
+"@pixi/sprite-tiling@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/sprite-tiling/-/sprite-tiling-7.3.2.tgz#d1c75c7a4ffd7e92a68f95cd4bbb5be0b9eb6c66"
+ integrity sha512-tWVVb/rMIx5AczfUrVxa0dZaIufP5C0IOL7IGfFUDQqDu5JSAUC0mwLe4F12jAXBVsqYhCGYx5bIHbPiI5vcSQ==
+
+"@pixi/sprite@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/sprite/-/sprite-7.3.2.tgz#421bea2ccfc51230886e3533d99eeb00e5bf6bf8"
+ integrity sha512-IpWTKXExJNXVcY7ITopJ+JW48DahdbCo/81D2IYzBImq3jyiJM2Km5EoJgvAM5ZQ3Ev3KPPIBzYLD+HoPWcxdw==
+
+"@pixi/spritesheet@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/spritesheet/-/spritesheet-7.3.2.tgz#9fd551cef05c2302d1999c895510eeba038350e7"
+ integrity sha512-UkwqrPYDqrEdK5ub9qn/9VBvt5caA8ffV5iYR6ssCvrpaQovBKmS+b5pr/BYf8xNTExDpR3OmPIo8iDEYWWLuw==
+
+"@pixi/text-bitmap@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/text-bitmap/-/text-bitmap-7.3.2.tgz#68a7c21ce4174d34e46d4a957d4083f687fed3be"
+ integrity sha512-p8KLgtZSPowWU/Zj+GVtfsUT8uGYo4TtKKYbLoWuxkRA5Pc1+4C9/rV/EOSFfoZIdW5C+iFg5VxRgBllUQf+aA==
+
+"@pixi/text-html@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/text-html/-/text-html-7.3.2.tgz#443f669a3444386a62e28dd8f3da66e45593df05"
+ integrity sha512-IYhBWEPOvqUtlHkS5/c1Hseuricj5jrrGd21ivcvHmcnK/x2m+CRGvvzeBp1mqoYBnDbQVrD2wSXSe4Dv9tEJA==
+
+"@pixi/text@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/text/-/text-7.3.2.tgz#c38dcecd3b6aceec53b1d4207327812d88b1cf26"
+ integrity sha512-LdtNj+K5tPB/0UcDcO52M/C7xhwFTGFhtdF42fPhRuJawM23M3zm1Y8PapXv+mury+IxCHT1w30YlAi0qTVpKQ==
+
+"@pixi/ticker@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/ticker/-/ticker-7.3.2.tgz#898278eb07da4dc4c38cc710c1fff0c7ad5c6099"
+ integrity sha512-5kIPhBeXwDJohCzKzJJ6T7f1oAGbHAgeiwOjlTO+9lNXUX8ZPj0407V3syuF+64kFqJzIBCznBRpI+fmT4c9SA==
+ dependencies:
+ "@pixi/extensions" "7.3.2"
+ "@pixi/settings" "7.3.2"
+ "@pixi/utils" "7.3.2"
+
+"@pixi/utils@7.3.2":
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/@pixi/utils/-/utils-7.3.2.tgz#556499eae6439259551ab9b86efb039522b61611"
+ integrity sha512-KhNvj9YcY7Zi2dTKZgDpx8C6OxKKR541vwtG6JgdBZZYDeMBOIghN2Vi5zn4diW5BhDfHBmdSJ1wZXEtE2MDwg==
+ dependencies:
+ "@pixi/color" "7.3.2"
+ "@pixi/constants" "7.3.2"
+ "@pixi/settings" "7.3.2"
+ "@types/earcut" "^2.1.0"
+ earcut "^2.2.4"
+ eventemitter3 "^4.0.0"
+ url "^0.11.0"
+
"@rollup/rollup-android-arm-eabi@4.5.2":
version "4.5.2"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.5.2.tgz#fa3e9ba323449f098b8d144ecaa4f044d2ff2ee3"
@@ 172,6 392,11 @@
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.5.2.tgz#7e59216d929a6b444304000be40c32d2d127fe4f"
integrity sha512-pL0RXRHuuGLhvs7ayX/SAHph1hrDPXOM5anyYUQXWJEENxw3nfHkzv8FfVlEVcLyKPAEgDRkd6RKZq2SMqS/yg==
+"@types/css-font-loading-module@^0.0.7":
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz#2f98ede46acc0975de85c0b7b0ebe06041d24601"
+ integrity sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==
+
"@types/debug@^4.1.12":
version "4.1.12"
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
@@ 179,6 404,11 @@
dependencies:
"@types/ms" "*"
+"@types/earcut@^2.1.0":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@types/earcut/-/earcut-2.1.4.tgz#5811d7d333048f5a7573b22ddc84923e69596da6"
+ integrity sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==
+
"@types/ms@*":
version "0.7.34"
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433"
@@ 191,6 421,20 @@
dependencies:
undici-types "~5.26.4"
+"@types/offscreencanvas@^2019.6.4":
+ version "2019.7.3"
+ resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz#90267db13f64d6e9ccb5ae3eac92786a7c77a516"
+ integrity sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==
+
+call-bind@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
+ integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
+ dependencies:
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.1"
+ set-function-length "^1.1.1"
+
debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
@@ 198,6 442,20 @@ debug@^4.3.4:
dependencies:
ms "2.1.2"
+define-data-property@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
+ integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
+ dependencies:
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
+earcut@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a"
+ integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==
+
esbuild@^0.19.3:
version "0.19.7"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.7.tgz#b9a7235097b81278dcf090e2532ed13c95a2ee84"
@@ 226,11 484,67 @@ esbuild@^0.19.3:
"@esbuild/win32-ia32" "0.19.7"
"@esbuild/win32-x64" "0.19.7"
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
+ integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
+ dependencies:
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+has-property-descriptors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340"
+ integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
+ dependencies:
+ get-intrinsic "^1.2.2"
+
+has-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+hasown@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+ dependencies:
+ function-bind "^1.1.2"
+
+ismobilejs@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e"
+ integrity sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==
+
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
@@ 241,11 555,52 @@ nanoid@^3.3.6:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+object-inspect@^1.9.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
+ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+pixi.js@^7.3.2:
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/pixi.js/-/pixi.js-7.3.2.tgz#86f0287a3763e9141691f496e384a2763fb6552c"
+ integrity sha512-GJickUrT3UcBInGT1CU6cv2oktCdocE5QM74CD3t+weiJPPWIzleNlp7zrBR5QIDdU6bEO8CUgUXH2Y9QvlCMw==
+ dependencies:
+ "@pixi/accessibility" "7.3.2"
+ "@pixi/app" "7.3.2"
+ "@pixi/assets" "7.3.2"
+ "@pixi/compressed-textures" "7.3.2"
+ "@pixi/core" "7.3.2"
+ "@pixi/display" "7.3.2"
+ "@pixi/events" "7.3.2"
+ "@pixi/extensions" "7.3.2"
+ "@pixi/extract" "7.3.2"
+ "@pixi/filter-alpha" "7.3.2"
+ "@pixi/filter-blur" "7.3.2"
+ "@pixi/filter-color-matrix" "7.3.2"
+ "@pixi/filter-displacement" "7.3.2"
+ "@pixi/filter-fxaa" "7.3.2"
+ "@pixi/filter-noise" "7.3.2"
+ "@pixi/graphics" "7.3.2"
+ "@pixi/mesh" "7.3.2"
+ "@pixi/mesh-extras" "7.3.2"
+ "@pixi/mixin-cache-as-bitmap" "7.3.2"
+ "@pixi/mixin-get-child-by-name" "7.3.2"
+ "@pixi/mixin-get-global-position" "7.3.2"
+ "@pixi/particle-container" "7.3.2"
+ "@pixi/prepare" "7.3.2"
+ "@pixi/sprite" "7.3.2"
+ "@pixi/sprite-animated" "7.3.2"
+ "@pixi/sprite-tiling" "7.3.2"
+ "@pixi/spritesheet" "7.3.2"
+ "@pixi/text" "7.3.2"
+ "@pixi/text-bitmap" "7.3.2"
+ "@pixi/text-html" "7.3.2"
+
postcss@^8.4.31:
version "8.4.31"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
@@ 260,6 615,18 @@ prettier@^3.1.0:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e"
integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==
+punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
+
+qs@^6.11.2:
+ version "6.11.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9"
+ integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
+ dependencies:
+ side-channel "^1.0.4"
+
rollup@^4.2.0:
version "4.5.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.5.2.tgz#2cf0ef0a57cb4038c50a66356684fd30071d0595"
@@ 279,6 646,25 @@ rollup@^4.2.0:
"@rollup/rollup-win32-x64-msvc" "4.5.2"
fsevents "~2.3.2"
+set-function-length@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
+ integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
+ dependencies:
+ define-data-property "^1.1.1"
+ get-intrinsic "^1.2.1"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.0"
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
@@ 294,6 680,14 @@ undici-types@~5.26.4:
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+url@^0.11.0:
+ version "0.11.3"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad"
+ integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==
+ dependencies:
+ punycode "^1.4.1"
+ qs "^6.11.2"
+
vite@^5.0.0:
version "5.0.2"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.2.tgz#3c94627dace83b9bf04b64eaf618038e30fb95c0"