From 9ed156ba674106ec3e0676fab20b236fd10d2eda Mon Sep 17 00:00:00 2001 From: core Date: Mon, 27 Nov 2023 17:17:00 -0500 Subject: [PATCH] initial work on pixijs --- starkingdoms-client/package.json | 3 +- starkingdoms-client/src/main.ts | 16 +- starkingdoms-client/src/rendering.ts | 175 ++++-------- starkingdoms-client/src/textures.ts | 42 +-- starkingdoms-client/yarn.lock | 394 +++++++++++++++++++++++++++ 5 files changed, 465 insertions(+), 165 deletions(-) diff --git a/starkingdoms-client/package.json b/starkingdoms-client/package.json index 452e786c6e290393eb0e0683bc03d3d2b3dd030c..d6775051a47a9cd078fcc98713916e4730bf0731 100644 --- a/starkingdoms-client/package.json +++ b/starkingdoms-client/package.json @@ -16,6 +16,7 @@ "vite": "^5.0.0" }, "dependencies": { - "debug": "^4.3.4" + "debug": "^4.3.4", + "pixi.js": "^7.3.2" } } diff --git a/starkingdoms-client/src/main.ts b/starkingdoms-client/src/main.ts index f86abac3348e74570b86aae5e25030d30c205a20..06021ab28d0276f88859a40568876dc50c84ce7b 100644 --- a/starkingdoms-client/src/main.ts +++ b/starkingdoms-client/src/main.ts @@ -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; + planet_sprite_map: Map; + part_sprite_map: Map; +} + export interface GlobalMe { username: string; part_id: number; } -export interface GlobalRendering { - canvas: HTMLCanvasElement; - ctx: CanvasRenderingContext2D; -} export const global: GlobalData = { client: null, diff --git a/starkingdoms-client/src/rendering.ts b/starkingdoms-client/src/rendering.ts index ca53b6d945caf58827d2368444428df06ff9a99d..57060d274ca2fe9e540da5cdac7699401bf176dd 100644 --- a/starkingdoms-client/src/rendering.ts +++ b/starkingdoms-client/src/rendering.ts @@ -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(app.view); + (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; + } + } + }); } diff --git a/starkingdoms-client/src/textures.ts b/starkingdoms-client/src/textures.ts index f02b5fe21eac81f0b55e4ce3a6cb018cff5d1662..e57ea5c6e73fb11fe1cbe611ea9af81619ce79ee 100644 --- a/starkingdoms-client/src/textures.ts +++ b/starkingdoms-client/src/textures.ts @@ -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 = 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 { - 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 = 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 { - 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); - } - }); -} diff --git a/starkingdoms-client/yarn.lock b/starkingdoms-client/yarn.lock index 2e1f814b486cbf4657dcec632e9279dd5a33f347..bc208bfb9dcee7d01aebb9b5ec7eace0eeb7c158 100644 --- a/starkingdoms-client/yarn.lock +++ b/starkingdoms-client/yarn.lock @@ -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"