diff --git a/assets/images/logos/logo.svg b/assets/images/logos/logo.svg new file mode 100644 index 0000000..d1da010 --- /dev/null +++ b/assets/images/logos/logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/images/logos/spinner.svg b/assets/images/logos/spinner.svg new file mode 100644 index 0000000..84f61ec --- /dev/null +++ b/assets/images/logos/spinner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/images/noise/space_fine.png b/assets/images/noise/space_fine.png new file mode 100644 index 0000000..2a69e76 Binary files /dev/null and b/assets/images/noise/space_fine.png differ diff --git a/assets/images/noise/space_sparse.png b/assets/images/noise/space_sparse.png new file mode 100644 index 0000000..dae9af8 Binary files /dev/null and b/assets/images/noise/space_sparse.png differ diff --git a/assets/sounds/music/title.opus b/assets/sounds/music/title.opus new file mode 100644 index 0000000..cbee681 Binary files /dev/null and b/assets/sounds/music/title.opus differ diff --git a/package.json b/package.json index 0fed3ac..2c7d5af 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,16 @@ "license": "MIT", "dependencies": { "@msgpack/msgpack": "^2.2.0", + "@reduxjs/toolkit": "^1.4.0", + "@types/react": "^16.9.50", + "@types/react-dom": "^16.9.8", + "@types/react-redux": "^7.1.9", "parcel-bundler": "^1.12.4", + "pixi.js": "^5.3.3", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-redux": "^7.2.1", + "redux": "^4.0.5", "sass": "^1.26.11", "typescript": "^4.0.3" }, diff --git a/src/graphics/filters/InGameSpace.ts b/src/graphics/filters/InGameSpace.ts new file mode 100644 index 0000000..3edb86e --- /dev/null +++ b/src/graphics/filters/InGameSpace.ts @@ -0,0 +1,49 @@ +import { Filter, Renderer, Texture, WRAP_MODES } from "pixi.js"; +import RTTShader from "../utils/RTTShader"; + +//@ts-expect-error Frag file +import filter_src from "./frag/InGameSpace.frag"; + +export interface SpaceTextures { + noise_sparse; + noise_fine; +} + +export default class InGameSpaceFilter extends RTTShader { + private elapsed: number; + private filter: Filter; + + constructor(renderer: Renderer, scale: number, textures: SpaceTextures) { + const noise_sparse = textures.noise_sparse.texture as Texture; + const noise_fine = textures.noise_fine.texture as Texture; + + noise_sparse.baseTexture.wrapMode = WRAP_MODES.REPEAT; + noise_fine.baseTexture.wrapMode = WRAP_MODES.REPEAT; + + const filter = new Filter(null, filter_src, { + time: 0, + ires: [renderer.width / scale, renderer.height / scale], + noise_sparse, + noise_fine, + scroll_speed: 0, + warp_boost: 0, + warp_opacity: 0, + }); + super(renderer, filter, scale); + this.elapsed = 0; + this.filter = filter; + } + + rescale(scale: number) { + super.rescale(scale); + this.filter.uniforms.ires = [ + this.renderer.width / scale, + this.renderer.height / scale, + ]; + } + + update(delta: number) { + this.filter.uniforms.time = this.elapsed; + this.elapsed += delta / 60; + } +} diff --git a/src/graphics/filters/MenuBackground.ts b/src/graphics/filters/MenuBackground.ts new file mode 100644 index 0000000..efc1da0 --- /dev/null +++ b/src/graphics/filters/MenuBackground.ts @@ -0,0 +1,33 @@ +import { Filter, Renderer } from "pixi.js"; +import RTTShader from "../utils/RTTShader"; + +//@ts-expect-error Frag file +import filter_src from "./frag/MenuBackground.frag"; + +export default class MenuBackgroundFilter extends RTTShader { + private elapsed: number; + private filter: Filter; + + constructor(renderer: Renderer, scale: number) { + const filter = new Filter(null, filter_src, { + iTime: 0, + iResolution: [renderer.width / scale, renderer.height / scale], + }); + super(renderer, filter, scale); + this.elapsed = 0; + this.filter = filter; + } + + rescale(scale: number) { + super.rescale(scale); + this.filter.uniforms.iResolution = [ + this.renderer.width / scale, + this.renderer.height / scale, + ]; + } + + update(delta: number) { + this.filter.uniforms.iTime = this.elapsed; + this.elapsed += delta / 60; + } +} diff --git a/src/graphics/filters/frag/InGameSpace.frag b/src/graphics/filters/frag/InGameSpace.frag new file mode 100644 index 0000000..a5efdd3 --- /dev/null +++ b/src/graphics/filters/frag/InGameSpace.frag @@ -0,0 +1,47 @@ +precision mediump float; + +uniform sampler2D noise_sparse; +uniform sampler2D noise_fine; + +uniform vec2 ires; +uniform float scroll_speed; +uniform float warp_boost; +uniform float warp_opacity; +uniform float time; + +const float noise_sparse_scale = 0.0007; +const float noise_fine_scale = 0.004; +const float warp_clouds_scale = 0.0003; +const vec2 scroll_dir = vec2(1,0); +const vec2 blink_scroll = vec2(50.0, 0); +const float PI = 3.1415; + +void main() { + vec2 uv=gl_FragCoord.xy/ires.xy; + float scroll = scroll_speed * time; + float sparse = texture2D(noise_sparse, (gl_FragCoord.xy + scroll_dir * scroll)*noise_sparse_scale).r; + sparse = ((sparse * sparse) - 0.2) * 1.2; + float fine = texture2D(noise_fine, (gl_FragCoord.xy + scroll_dir * scroll)*noise_fine_scale).r; + fine = fine - 0.62; + if (fine > 0.) { + fine = fine * 10.0; + } + if (fine > 0.3) { + float fine_blink_fade = texture2D(noise_sparse, (gl_FragCoord.xy + blink_scroll*time)*noise_sparse_scale).r; + fine = fine - ((fine_blink_fade * fine_blink_fade) - 0.2) * 1.2; + } + vec4 clouds = vec4(vec3(0.3, 0.5, 0.7) * sparse, 1.0); + vec4 stars = vec4(fine); + + vec2 warp_scroll = scroll_dir * scroll; + vec2 warp_uv = (gl_FragCoord.xy * sin(uv.y * PI) + warp_scroll)*warp_clouds_scale; + vec2 warp_uv_inv = (gl_FragCoord.xy * sin((abs(uv.y-0.5)) * uv.x * PI) + warp_scroll*0.5)*warp_clouds_scale; + float warp_clouds_sparse = texture2D(noise_sparse, vec2(0.5,1) * warp_uv).r; + float warp_clouds_fine = texture2D(noise_sparse, vec2(2,1) * warp_uv_inv).r; + + vec4 warp = vec4(vec3(0), 1); + warp += vec4(vec3(0.3,0.2,0.9)*warp_clouds_sparse, 0); + warp += vec4(vec3(0.5,0.0,0.5)*(warp_clouds_fine*0.5+warp_clouds_sparse)*abs(uv.y-0.5), 0); + + gl_FragColor = mix(clouds + stars, warp*warp_boost, warp_opacity); +} \ No newline at end of file diff --git a/src/graphics/filters/frag/MenuBackground.frag b/src/graphics/filters/frag/MenuBackground.frag new file mode 100644 index 0000000..d80e8ab --- /dev/null +++ b/src/graphics/filters/frag/MenuBackground.frag @@ -0,0 +1,69 @@ +// Star Nest by Pablo Roman Andrioli +// This content is under the MIT License. +precision mediump float; + +uniform vec2 iResolution; +uniform float iTime; + +#define iterations 17 +#define formuparam 0.53 + +#define volsteps 20 +#define stepsize 0.1 + +#define zoom 0.800 +#define tile 0.850 +#define speed 0.001 + +#define brightness 0.0015 +#define darkmatter 0.300 +#define distfading 0.730 +#define saturation 0.850 + +#define rotx 0. +#define roty 0.001 + +void main() +{ + //get coords and direction + vec2 uv=gl_FragCoord.xy/iResolution.xy-.5; + uv.y*=iResolution.y/iResolution.x; + vec3 dir=vec3(uv*zoom,1.); + float time=iTime*speed+.25; + + float a1=.5+iTime*rotx; + float a2=.8+iTime*roty; + mat2 rot1=mat2(vec2(cos(a1),sin(a1)),vec2(-sin(a1),cos(a1))); + mat2 rot2=mat2(vec2(cos(a2),sin(a2)),vec2(-sin(a2),cos(a2))); + dir.xz*=rot1; + dir.xy*=rot2; + vec3 from=vec3(1.,.5,0.5); + from+=vec3(time*2.,time,-2.); + from.xz*=rot1; + from.xy*=rot2; + + //volumetric rendering + float s=0.1,fade=1.; + vec3 v=vec3(0.); + for (int r=0; r6) fade*=1.-dm; // dark matter, don't render near + //v+=vec3(dm,dm*.5,0.); + v+=fade; + v+=vec3(s,s*s,s*s*s*s)*a*brightness*fade; // coloring based on distance + fade*=distfading; // distance fading + s+=stepsize; + } + v=mix(vec3(length(v)),v,saturation); //color adjust + gl_FragColor = vec4(v*.01,1.); + +} \ No newline at end of file diff --git a/src/graphics/utils/RTTShader.ts b/src/graphics/utils/RTTShader.ts new file mode 100644 index 0000000..8a32859 --- /dev/null +++ b/src/graphics/utils/RTTShader.ts @@ -0,0 +1,30 @@ +import { RenderTexture, Container, Renderer, Filter } from "pixi.js"; + +export default class RTTShader { + readonly texture: RenderTexture; + readonly container: Container; + readonly renderer: Renderer; + + constructor(renderer: Renderer, filter: Filter, scale: number = 2) { + this.renderer = renderer; + this.texture = RenderTexture.create({ + width: this.renderer.width / scale, + height: this.renderer.height / scale, + }); + this.container = new Container(); + this.container.filterArea = this.texture.frame; + this.container.filters = [filter]; + } + + rescale(scale: number) { + this.texture.resize( + this.renderer.width / scale, + this.renderer.height / scale + ); + this.container.filterArea = this.texture.frame; + } + + render() { + this.renderer.render(this.container, this.texture); + } +} diff --git a/src/index.html b/src/index.html index 85cc5af..3fe391a 100644 --- a/src/index.html +++ b/src/index.html @@ -7,6 +7,8 @@ +
+
diff --git a/src/index.ts b/src/index.ts index 22d263d..663289a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,14 +1,7 @@ -import messages, { decode } from "./network/messages"; +import { createRoot } from "~ui"; +import NetworkClient from "./network/client"; +import RenderBackend from "./rendering/backend"; -const url = "ws://localhost:9000"; -const protocols = ["odyssey-1-unstable"]; -const webSocket = new WebSocket(url, protocols); -webSocket.binaryType = "arraybuffer"; -webSocket.onopen = function (event) { - console.log(event); - webSocket.send(messages.Hello()); -}; -webSocket.onmessage = function (ev) { - const data = decode(ev.data); - console.log("Received ", data); -}; +const netclient = new NetworkClient("ws://localhost:9000"); +const renderer = new RenderBackend(document.getElementById("renderer")); +const ui = createRoot(document.getElementById("ui-cont")); diff --git a/src/network/client.ts b/src/network/client.ts new file mode 100644 index 0000000..03fbb6c --- /dev/null +++ b/src/network/client.ts @@ -0,0 +1,17 @@ +import messages, { decode, CLIENT_PROTOCOL } from "./messages"; + +export default class NetworkClient { + private socket: WebSocket; + + constructor(private readonly url) { + this.socket = new WebSocket(url, [CLIENT_PROTOCOL]); + this.socket.binaryType = "arraybuffer"; + this.socket.onopen = () => { + console.log("Connected"); + }; + this.socket.onmessage = (ev) => { + const data = decode(ev.data); + console.log("Received ", data); + }; + } +} diff --git a/src/network/messages.ts b/src/network/messages.ts index 1c613c0..d2ad8b9 100644 --- a/src/network/messages.ts +++ b/src/network/messages.ts @@ -1,6 +1,6 @@ import { encode as encodeMP, decode as decodeMP } from "@msgpack/msgpack"; -const CLIENT_PROTOCOL = "odynet-a1"; +export const CLIENT_PROTOCOL = "odynet-a1"; interface ServerCmdHello { type: "Hello"; diff --git a/src/rendering/backend.ts b/src/rendering/backend.ts new file mode 100644 index 0000000..3594c7a --- /dev/null +++ b/src/rendering/backend.ts @@ -0,0 +1,24 @@ +import { PrefixUnaryExpression } from "typescript"; + +import * as PIXI from "pixi.js"; + +PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST; + +export default class RenderBackend { + private app: PIXI.Application; + + constructor(elem: HTMLElement) { + this.app = new PIXI.Application({ + resizeTo: window, + antialias: false, + transparent: false, + resolution: 1, + }); + elem.appendChild(this.app.view); + + window.addEventListener("resize", () => { + this.app.queueResize(); + }); + this.app.queueResize(); + } +} diff --git a/src/rendering/viewport.ts b/src/rendering/viewport.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/store/reducer.ts b/src/store/reducer.ts new file mode 100644 index 0000000..714c993 --- /dev/null +++ b/src/store/reducer.ts @@ -0,0 +1,6 @@ +import { combineReducers } from "@reduxjs/toolkit"; +import uiReducer from "./ui/reducer"; + +const reducer = combineReducers({ ui: uiReducer }); + +export default reducer; diff --git a/src/store/state.ts b/src/store/state.ts new file mode 100644 index 0000000..d3fa593 --- /dev/null +++ b/src/store/state.ts @@ -0,0 +1,5 @@ +import UIStore from "./ui/state"; + +export interface GameStore { + ui: UIStore; +} diff --git a/src/store/ui/reducer.ts b/src/store/ui/reducer.ts new file mode 100644 index 0000000..b5d248b --- /dev/null +++ b/src/store/ui/reducer.ts @@ -0,0 +1,56 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import UIStore, { UILayer } from "./state"; + +const initialState: UIStore = { + layers: [], +}; + +export interface AddLayerPayload { + id: string; + data: UILayer; +} + +export interface LayerActionPayload { + id: string; +} + +const uiSlice = createSlice({ + name: "ui", + initialState, + reducers: { + addLayer(state, action: PayloadAction) { + state.layers.push({ ...action.payload, visible: false }); + }, + removeLayer(state, action: PayloadAction) { + const index = state.layers.findIndex( + (layer) => layer.id == action.payload.id + ); + if (index < 0) { + return; + } + state.layers.splice(index, 1); + }, + showLayer(state, action: PayloadAction) { + const index = state.layers.findIndex( + (layer) => layer.id == action.payload.id + ); + if (index < 0) { + return; + } + + state.layers[index] = { ...state.layers[index], visible: true }; + }, + hideLayer(state, action: PayloadAction) { + const index = state.layers.findIndex( + (layer) => layer.id == action.payload.id + ); + if (index < 0) { + return; + } + state.layers[index] = { ...state.layers[index], visible: false }; + }, + }, +}); + +export const { addLayer, removeLayer, showLayer, hideLayer } = uiSlice.actions; +export default uiSlice.reducer; diff --git a/src/store/ui/state.ts b/src/store/ui/state.ts new file mode 100644 index 0000000..796ca2b --- /dev/null +++ b/src/store/ui/state.ts @@ -0,0 +1,9 @@ +import { LoadingScreenLayer } from "~ui/Loading"; + +export type UILayer = LoadingScreenLayer; + +export type LayerList = { id: string; data: UILayer; visible: boolean }[]; + +export default interface UIStore { + layers: LayerList; +} diff --git a/src/style.scss b/src/style.scss index 9750c88..59c3a9e 100644 --- a/src/style.scss +++ b/src/style.scss @@ -4,3 +4,24 @@ body { padding: 0; background-color: black; } + +#ui-cont { + display: flex; + align-items: center; + justify-content: center; + p { + font-size: 20pt; + color: white; + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + font-style: italic; + } +} + +#renderer, +#ui-cont { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; +} diff --git a/src/ui/Loading.tsx b/src/ui/Loading.tsx new file mode 100644 index 0000000..6f121ce --- /dev/null +++ b/src/ui/Loading.tsx @@ -0,0 +1,16 @@ +import React from "react"; + +//@ts-expect-error Image resource +import spinner from "~/../assets/images/logos/spinner.svg"; + +export interface LoadingScreenLayer { + type: "LoadingScreen"; +} + +export default function LoadingScreenUI() { + return ( +
+ +
+ ); +} diff --git a/src/ui/UI.tsx b/src/ui/UI.tsx new file mode 100644 index 0000000..af9bb2d --- /dev/null +++ b/src/ui/UI.tsx @@ -0,0 +1,27 @@ +import React from "react"; +import { useSelector } from "react-redux"; +import { GameStore } from "../store/state"; +import { UILayer, LayerList } from "../store/ui/state"; +import LoadingScreenUI from "./Loading"; + +function renderLayer(data: UILayer) { + switch (data.type) { + case "LoadingScreen": + return ; + default: + throw new Error("unknown or invalid ui layer"); + } +} + +export default function UI() { + const layers = useSelector((state) => state.ui.layers); + return ( +
+ {layers.map(({ id, data, visible }) => ( +
+ {renderLayer(data)} +
+ ))} +
+ ); +} diff --git a/src/ui/index.tsx b/src/ui/index.tsx new file mode 100644 index 0000000..b3d90ed --- /dev/null +++ b/src/ui/index.tsx @@ -0,0 +1,17 @@ +import { configureStore } from "@reduxjs/toolkit"; +import React from "react"; +import ReactDOM from "react-dom"; +import { Provider } from "react-redux"; +import UI from "./UI"; +import reducer from "~store/reducer"; + +const store = configureStore({ reducer }); + +export const createRoot = (elem: Element) => { + ReactDOM.render( + + + , + elem + ); +}; diff --git a/src/ui/utils/useLayer.ts b/src/ui/utils/useLayer.ts new file mode 100644 index 0000000..913f324 --- /dev/null +++ b/src/ui/utils/useLayer.ts @@ -0,0 +1,32 @@ +import { useEffect, useState } from "react"; +import { useDispatch } from "react-redux"; +import { addLayer, removeLayer, showLayer, hideLayer } from "~store/ui/reducer"; +import { UILayer } from "~store/ui/state"; + +export default function useUILayer(data: UILayer, show: boolean = true) { + const dispatch = useDispatch(); + + const [id] = useState(data.type + "-" + Math.random().toString(32).slice(2)); + const [visible, setVisible] = useState(show); + + useEffect(() => { + dispatch(addLayer({ id, data })); + return () => { + dispatch(removeLayer({ id })); + }; + }, []); + + useEffect(() => { + if (visible) { + dispatch(showLayer({ id })); + } else { + dispatch(hideLayer({ id })); + } + }, [visible]); + + if (show != visible) { + setVisible(show); + } + + return id; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ad76ded --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2020", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "react", + "baseUrl": ".", + "paths": { + "~*": ["./src/*"] + } + } +} diff --git a/yarn.lock b/yarn.lock index f9dc332..994579e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -837,7 +837,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": version "7.11.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== @@ -941,11 +941,371 @@ "@parcel/utils" "^1.11.0" physical-cpu-count "^2.0.0" +"@pixi/accessibility@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/accessibility/-/accessibility-5.3.3.tgz#b7bab17e3cf5eb5f511471df943155a4eadf0c6e" + integrity sha512-wC/enJtw5CrdWnu6l5u3VN9UIZPumNSNXlGez2BULY0osiLTywHJPdHpmXMz2YPXw75GsEBzkEvK4LTtnTp21A== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/app@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/app/-/app-5.3.3.tgz#6357e2e5acc1ed118b7f94c1179cef55ce6ed59c" + integrity sha512-OkO7Kq3N+FPRshVmApuiHKBpobic56VYbLVCMYPy6rjV0hc5ctkchKGFyouJuPt/rHeI6FrqZ0TaON1TShnKiA== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + +"@pixi/constants@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/constants/-/constants-5.3.3.tgz#faaed2d0ce364d67fe3e69ac97e9db1f6ad6c041" + integrity sha512-IybgxzLlEPm7ihp70cLNKc3IPyqkFuW+idk9Zw2St+OayJTw5ctCnLAg9cducwIVHjPYTvN46BYDa+n0KRWZYw== + +"@pixi/core@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/core/-/core-5.3.3.tgz#4b973ee3d18f6324d63311e8a00a68ecb1996532" + integrity sha512-taw50LnzV+TQVMx5HQA2ZJgF9wuhZ6DeoXHW2KkevYB0ekKYnEO2VMMiRDMcmchtyvHclJebzjeHZLGqDtKDgw== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/runner" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/ticker" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/display@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/display/-/display-5.3.3.tgz#14646b35b80b8586316be3495e3c0e7fa610f499" + integrity sha512-dPm7Vk2BH9byu6RHBYsI9MtjUU8x1HNm/PIi6lIlxANhTjWnhxwfvmrGE7ZcRLThTenNdDVlZ2ke2XAXP98UgA== + dependencies: + "@pixi/math" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/extract@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/extract/-/extract-5.3.3.tgz#5ab8e2977823d0ea75db003e45d6c6d72bc2b642" + integrity sha512-CE0GA+tEBPurpaXER2B1aq1sdumKLtCqE/Mms6fYUkIKF9D0Ogw9rqo79QCL9XkLMexa7xVeC3KPPiXW5wrOaA== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/filter-alpha@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/filter-alpha/-/filter-alpha-5.3.3.tgz#2d3e10e8f42f787a5115e81b13265839b2162797" + integrity sha512-AxyHLnvO892va9raZbMMtMtEGDVqO8SvEHHNnCjTBEZ67kVKy0HEYXFOBA6nJZ6BiTgGp9js+7kevi11tfqnJQ== + dependencies: + "@pixi/core" "5.3.3" + +"@pixi/filter-blur@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/filter-blur/-/filter-blur-5.3.3.tgz#c530e40038dec1725a399753ac97faa3418559cf" + integrity sha512-vLN1DL6PQXo4p7j/32PZIf+lhcBVfb9hdphSmtbxlAlpbhMWI52n3YUkeInwHs7Ev08NyhI/UhNWHqjN/lAM3w== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/settings" "5.3.3" + +"@pixi/filter-color-matrix@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/filter-color-matrix/-/filter-color-matrix-5.3.3.tgz#c1ecf83a44f68d78b5436b920b459c5222f373a5" + integrity sha512-HFr+vth5ZHHEFJYcjtWZ+O0s7Z2YWJyDyxr+nTd5Q8AT7gMDTVehpNVrm7ByaCKeEovOZzZI6A347+WmHcNpGg== + dependencies: + "@pixi/core" "5.3.3" + +"@pixi/filter-displacement@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/filter-displacement/-/filter-displacement-5.3.3.tgz#f25193f738b90cc75cd04bbbcd0aefe9ea037af1" + integrity sha512-kvrKMgqW4ELg+yT2p5vmu6h/IER/L8GD1PWyXovnzpI8RG7k8l136F9VvA3wkB6sYuNcXiDtqMtRQy5e6O4+rw== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/math" "5.3.3" + +"@pixi/filter-fxaa@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/filter-fxaa/-/filter-fxaa-5.3.3.tgz#c7701631d60f485b6ec1052f71afb0637ca5f0b8" + integrity sha512-p4vKdBwaoGRNZcoHz2ET8hBF1SoWvy9xU2B3Ci32+c0dg89ZUdGTEW0zimUHi2gMdU+2v/T0lqZ9NC9B6WVYAg== + dependencies: + "@pixi/core" "5.3.3" + +"@pixi/filter-noise@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/filter-noise/-/filter-noise-5.3.3.tgz#5d821d9f83f97d83d4be52f3ecc7e2d06ff1c084" + integrity sha512-HCky3XPk6BYGXTS7d9/FnAHnqq7Rwm5Rlj2XtWW3JItXGCScEBII227xYwrJu5Ke84tpVlDXK4W1/BevZ1AwlQ== + dependencies: + "@pixi/core" "5.3.3" + +"@pixi/graphics@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/graphics/-/graphics-5.3.3.tgz#cfaf5a0a94a811f7359c20875547c14095f1ecec" + integrity sha512-1bn9Jptg3JXgVOw0SrEMdmjSwkTBYDm6fPnPnh4goF3yDozh0xEqmXobVtCgy2fulMfHRzIfbgtRxrBf2mkCAg== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/sprite" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/interaction@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/interaction/-/interaction-5.3.3.tgz#07348e7d25b8e67473ed54f679ebe84ab9ee0400" + integrity sha512-Tjuw4XwmrG1fhGzfn5oGspRJT2OtlH+6V7AHscH0v5Ht1Kvk6aKjNncZuSCXllhGGlIuMu3Nn9WPvDEIvW3JNw== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/ticker" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/loaders@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/loaders/-/loaders-5.3.3.tgz#d415f25f9af64d97810e459caa2c0aca4b6a1b7c" + integrity sha512-wj0DzniApfDoZA/buMmO/CgCB7Q7SsESForHh7wSd7UC8rrCmz5prUTEICmJGhdHpBuVB7KDPtwaaLtr9Q/kQg== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/utils" "5.3.3" + resource-loader "^3.0.1" + +"@pixi/math@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/math/-/math-5.3.3.tgz#5d40d36fa1701e195083adb84bddf2f6420c2f4c" + integrity sha512-k5C3kQpxlGm2AdBJEUjjW2l2YlSvTKf+54vNOjD4UcEfRoDevC5p4Zg49q3UAu855lrs5qw49AbkrFKsQvPIRA== + +"@pixi/mesh-extras@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/mesh-extras/-/mesh-extras-5.3.3.tgz#99c712fdb1b0a9db66fd95a76de26361a7055ab4" + integrity sha512-V2hARC7nUPaTEFxd+B8GDkSMrMZ38S8/IInqtYzGUy6FtFs7IYKty9Rz/G665eN7ThIq8tZrOVZOl6JRBtEC8A== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/core" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/mesh" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/mesh@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/mesh/-/mesh-5.3.3.tgz#f0adf0362c18e6e7646b7abaccec47d304cbb405" + integrity sha512-q8w70oAFNdArzOHVnsn7ban68NmO5S5TMg6qSez4A8te6cebMRQsNrT/0dQ/nZcG7ACFK4jiYfbXRQivO+jgVA== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/mixin-cache-as-bitmap@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-5.3.3.tgz#cac6a2ecf3b72fbae58ab3657998360ddbda7382" + integrity sha512-P1mo3HKDWS8IZLgaP8gujiy4We4vRcxJH6EvQAevf+GsBzdjKfcGgkKzVb9HlyQvsXML5gpTOJuw5eKgRTxSQA== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/sprite" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/mixin-get-child-by-name@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-5.3.3.tgz#828dc9a7beae603648ebe2ccb67517c7137bff19" + integrity sha512-CksDZ5ZG4/tHZfDOwSuznANduasJg5JR89X3D6E9DVYx4CLVE3G2K1sbeiOJNXfGIKy30UoSD7Y7IFmUzLxp/g== + dependencies: + "@pixi/display" "5.3.3" + +"@pixi/mixin-get-global-position@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/mixin-get-global-position/-/mixin-get-global-position-5.3.3.tgz#5700b03794e5b21f61c015aeda733c3cb625fc75" + integrity sha512-M3faQYDW/ISa1+lhVkjHXRALJ33BMzLN+7x9ucx8VeCmUWvcaLlRo3CaxZsgiR+52Fii5WHl/PF/cMzdkRMF9g== + dependencies: + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + +"@pixi/particles@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/particles/-/particles-5.3.3.tgz#3e9d2d317d6cd11a3736830dfbd4cc0c3a1082c8" + integrity sha512-t+lG8iGNYyS6ujKvC9qQjKzyxvjxqbFxvB6hkXcOKR98JWM2726ZguHouFlIbOzOxYAGoeuHIWSDlnQNvnVE2g== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/polyfill@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/polyfill/-/polyfill-5.3.3.tgz#4d0050b0bb75a7b51841f7bfec4c29243a605be7" + integrity sha512-gmx67A6VmwKllxfIMQWzMUNJ8wJfWPT5FlUR0SoPastdTB/SfbgbyQBgKLZHqgmc6LOh2CrOLhN423lNiAroeA== + dependencies: + es6-promise-polyfill "^1.2.0" + object-assign "^4.1.1" + +"@pixi/prepare@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/prepare/-/prepare-5.3.3.tgz#a3466ecf5256a5c3fb9b86a555db17cc72d54c87" + integrity sha512-DPsKWfYJ97J67YCjPU6uvU+LBdw+64O9LG9vmzfChmYXom5VMQF9yUC6ZoYTHUPmH31iilqzGeMlPUTobnqSog== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/graphics" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/text" "5.3.3" + "@pixi/ticker" "5.3.3" + +"@pixi/runner@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/runner/-/runner-5.3.3.tgz#79fb35b12620d7724c65f4a7aa507190ea825ac0" + integrity sha512-7eLZxxT+PwxuwzcRL1egrnEdLHwD41yFb24pMSo6XM86ppP1tdBjrv5+pLDnUuDEfNjZQxx07FAlZY+sMKANmw== + +"@pixi/settings@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/settings/-/settings-5.3.3.tgz#3ff5f8afc8376d12c7627be043ec317eba139dcd" + integrity sha512-1MYJokqpPUtvYEX0BVi0Pq2Xi6KGmWDV5hlQnTXY9NGv6tmqrPYvIb/uHFaDyVUWmrqsFL3xZ4W5zMo+c/dwVA== + dependencies: + ismobilejs "^1.1.0" + +"@pixi/sprite-animated@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/sprite-animated/-/sprite-animated-5.3.3.tgz#f24949ae04aeff9ff44e22544bc8b7f336d5209e" + integrity sha512-nG5j8veJ/cFXQTgzafPLkZqaHKbuaHcIj+ZYN1I2f31Y85/pfr2PQQLHbGr+3441wOYkEHht9nHhmZHWlOOZ0Q== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/sprite" "5.3.3" + "@pixi/ticker" "5.3.3" + +"@pixi/sprite-tiling@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/sprite-tiling/-/sprite-tiling-5.3.3.tgz#d7306256b7bf6f13c181ea4a2d95905f5ae69b9d" + integrity sha512-+Xk9AUh82rpArtrnZkw+9aJchrmHZ8QkpjsPRJcgPFHx3WEfABIkT6QEoYbRKiYH34OgO7ZOUXy9hcGPHnxjvw== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/sprite" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/sprite@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/sprite/-/sprite-5.3.3.tgz#1681d5fd0a725581bfee3c9c2c490537bf8d21ea" + integrity sha512-qo7DG0oWS1uIBqfxw2jZPn34RCR6gQ+IjZRBpFxZPKPB1cL359scZmDBqBbQ4bd4rJ/6QXQfzUdGhXfQJtc9oQ== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/spritesheet@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/spritesheet/-/spritesheet-5.3.3.tgz#e307400d0afe4aa6e1d8d756a519e391706b5f35" + integrity sha512-pTkOCTL8jsmyAguCgcbz03UPYu+3buRkgua1g/vGyeoZBN2eJ04iSXdB0pfPrsPisxkvThGHyU23UqEDYVtXRQ== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/loaders" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/text-bitmap@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/text-bitmap/-/text-bitmap-5.3.3.tgz#0d658473d6e02ce598f779c207c42333741e15bd" + integrity sha512-QRRdEAFBwmRctp8PCPii5WUPM57T1I3r/EwyTvFCCDubOYOZu4aX/iFpCKZMl5GIphDFaGp8mNvbl+BwjUmBCA== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/loaders" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/mesh" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/text" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/text@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/text/-/text-5.3.3.tgz#d6fc00c52bc054450ae43e2d5c6f7cedcee9ecd2" + integrity sha512-juinZC2yFXnzucWWxSdty9nfIIOAq2WA8DD2k40YL+7Y5L52/ggkgnokeQ2lrTb1BvTfx6YVNlvAsKonUek0Og== + dependencies: + "@pixi/core" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/sprite" "5.3.3" + "@pixi/utils" "5.3.3" + +"@pixi/ticker@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/ticker/-/ticker-5.3.3.tgz#a8766d8417879fffd7507175de869805aee25eb2" + integrity sha512-p5F/dwJGwfZWUg5cCPqOnEx5iYGW+huQlZZtrTKKd1KoVehFsrzHeRBOEp4d584jsOmBf7fjJaUTyzsFn0YtOQ== + dependencies: + "@pixi/settings" "5.3.3" + +"@pixi/utils@5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@pixi/utils/-/utils-5.3.3.tgz#525321f3bb00e3e001e341020a3edee94cc0d00a" + integrity sha512-GDP2h1Mph9Uei4zmJjzDK6GZ5S9O2A09VySVfWyKgWwP3SQ/Ss0bGYm4sE6+u1NMSz1WCrLgu66H82XuXs2Cbg== + dependencies: + "@pixi/constants" "5.3.3" + "@pixi/settings" "5.3.3" + earcut "^2.1.5" + eventemitter3 "^3.1.0" + url "^0.11.0" + +"@reduxjs/toolkit@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.4.0.tgz#ee2e2384cc3d1d76780d844b9c2da3580d32710d" + integrity sha512-hkxQwVx4BNVRsYdxjNF6cAseRmtrkpSlcgJRr3kLUcHPIAMZAmMJkXmHh/eUEGTMqPzsYpJLM7NN2w9fxQDuGw== + dependencies: + immer "^7.0.3" + redux "^4.0.0" + redux-thunk "^2.3.0" + reselect "^4.0.0" + +"@types/hoist-non-react-statics@^3.3.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + "@types/q@^1.5.1": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/react-dom@^16.9.8": + version "16.9.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" + integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== + dependencies: + "@types/react" "*" + +"@types/react-redux@^7.1.9": + version "7.1.9" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.9.tgz#280c13565c9f13ceb727ec21e767abe0e9b4aec3" + integrity sha512-mpC0jqxhP4mhmOl3P4ipRsgTgbNofMRXJb08Ms6gekViLj61v1hOZEKWDCyWsdONr6EjEA6ZHXC446wdywDe0w== + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + +"@types/react@*", "@types/react@^16.9.50": + version "16.9.50" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.50.tgz#cb5f2c22d42de33ca1f5efc6a0959feb784a3a2d" + integrity sha512-kPx5YsNnKDJejTk1P+lqThwxN2PczrocwsvqXnjvVvKpFescoY62ZiM3TV7dH1T8lFhlHZF+PE5xUyimUwqEGA== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + abab@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -1893,6 +2253,11 @@ cssstyle@^1.1.1: dependencies: cssom "0.3.x" +csstype@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" + integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2078,6 +2443,11 @@ duplexer2@~0.1.4: dependencies: readable-stream "^2.0.2" +earcut@^2.1.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11" + integrity sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -2180,6 +2550,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-promise-polyfill@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz#f38925f23cb3e3e8ce6cda8ff774fcebbb090cde" + integrity sha1-84kl8jyz4+jObNqP93T867sJDN4= + escalade@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" @@ -2244,6 +2619,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + events@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" @@ -2618,6 +2998,13 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + hsl-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" @@ -2713,6 +3100,11 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +immer@^7.0.3: + version "7.0.9" + resolved "https://registry.yarnpkg.com/immer/-/immer-7.0.9.tgz#28e7552c21d39dd76feccd2b800b7bc86ee4a62e" + integrity sha512-Vs/gxoM4DqNAYR7pugIxi0Xc8XAun/uy7AQu4fLLqaTBHxjOP9pJ266Q9MWA/ly4z6rAFZbvViOtihxUZ7O28A== + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -2996,6 +3388,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +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== + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -3193,7 +3590,7 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -loose-envify@^1.0.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3299,6 +3696,11 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mini-signals@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mini-signals/-/mini-signals-1.2.0.tgz#45b08013c5fae51a24aa1a935cd317c9ed721d74" + integrity sha1-RbCAE8X65RokqhqTXNMXye1yHXQ= + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -3683,6 +4085,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-uri@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/parse-uri/-/parse-uri-1.0.3.tgz#f3c24a74907a4e357c1741e96ca9faadecfd6db5" + integrity sha512-upMnGxNcm+45So85HoguwZTVZI9u11i36DdxJfGF2HYWS2eh3TIx7+/tTi7qrEq15qzGkVhsKjesau+kCk48pA== + parse5@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" @@ -3749,6 +4156,46 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +pixi.js@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/pixi.js/-/pixi.js-5.3.3.tgz#6e326a52542f4acd97ea3f8593cb0aeae502df9a" + integrity sha512-uFQOXXyPMAVVayDebSFBS1AFfPT6QYNuz9Vu11yI2/k1DAef/rbYoJpSMM6SeB6dezDJPtIAaXXNxdaYzbe+kg== + dependencies: + "@pixi/accessibility" "5.3.3" + "@pixi/app" "5.3.3" + "@pixi/constants" "5.3.3" + "@pixi/core" "5.3.3" + "@pixi/display" "5.3.3" + "@pixi/extract" "5.3.3" + "@pixi/filter-alpha" "5.3.3" + "@pixi/filter-blur" "5.3.3" + "@pixi/filter-color-matrix" "5.3.3" + "@pixi/filter-displacement" "5.3.3" + "@pixi/filter-fxaa" "5.3.3" + "@pixi/filter-noise" "5.3.3" + "@pixi/graphics" "5.3.3" + "@pixi/interaction" "5.3.3" + "@pixi/loaders" "5.3.3" + "@pixi/math" "5.3.3" + "@pixi/mesh" "5.3.3" + "@pixi/mesh-extras" "5.3.3" + "@pixi/mixin-cache-as-bitmap" "5.3.3" + "@pixi/mixin-get-child-by-name" "5.3.3" + "@pixi/mixin-get-global-position" "5.3.3" + "@pixi/particles" "5.3.3" + "@pixi/polyfill" "5.3.3" + "@pixi/prepare" "5.3.3" + "@pixi/runner" "5.3.3" + "@pixi/settings" "5.3.3" + "@pixi/sprite" "5.3.3" + "@pixi/sprite-animated" "5.3.3" + "@pixi/sprite-tiling" "5.3.3" + "@pixi/spritesheet" "5.3.3" + "@pixi/text" "5.3.3" + "@pixi/text-bitmap" "5.3.3" + "@pixi/ticker" "5.3.3" + "@pixi/utils" "5.3.3" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -4161,6 +4608,15 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -4252,6 +4708,41 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +react-dom@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" + integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-is@^16.7.0, react-is@^16.8.1, react-is@^16.9.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-redux@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.1.tgz#8dedf784901014db2feca1ab633864dee68ad985" + integrity sha512-T+VfD/bvgGTUA74iW9d2i5THrDQWbweXP0AVNI8tNd1Rk5ch1rnMiJkDD67ejw7YBKM4+REvcvqRuWJb7BLuEg== + dependencies: + "@babel/runtime" "^7.5.5" + hoist-non-react-statics "^3.3.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.9.0" + +react@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -4290,6 +4781,19 @@ readdirp@~3.4.0: dependencies: picomatch "^2.2.1" +redux-thunk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" + integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== + +redux@^4.0.0, redux@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -4408,6 +4912,11 @@ request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -4425,6 +4934,14 @@ resolve@^1.1.5, resolve@^1.3.2, resolve@^1.4.0: dependencies: path-parse "^1.0.6" +resource-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/resource-loader/-/resource-loader-3.0.1.tgz#33355bb5421e2994f59454bbc7f6dbff8df06d47" + integrity sha512-fBuCRbEHdLCI1eglzQhUv9Rrdcmqkydr1r6uHE2cYHvRBrcLXeSmbE/qI/urFt8rPr/IGxir3BUwM5kUK8XoyA== + dependencies: + mini-signals "^1.2.0" + parse-uri "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -4504,6 +5021,14 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -4863,6 +5388,11 @@ svgo@^1.0.0, svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"