B4JS4Z3VVAD5RJJ272S7GJM5BUNIHHMGNK2VSKVGZFPOVFP2YO4QC
ED3IWKTSVYYD52TWW5TOC4H63YZ7FTO3E53YO5NELPG5I3RLRAYAC
N2M7CWXHD722QWM6IIIEOD66YMR3SSZEJZLDCGEIPXRCVNF6YBSQC
DPJCZOPIKAKQIS4YRXETBSJA5ZTL2KQESSJE2TEZFLRQARXUVFXQC
6EXHALB3E5HP3IQVC47M4RVZE2JERJHX37GOOHPYIVAFBWSWUX7QC
HXHNGFB2VCXB6YXDND35HJI22GBJC3QTSUR2TK3M3LXGJHVNXVHAC
OPUQ6NVYM2BN4H2FENH6EBGVU25XQBY2GRRZANPZEBEACZMDOGEAC
DNNKTYMMT2SXGZDMTFYZOQPZ3IX5EF6ESQAMGO5UUDFUA44FXMGAC
FLGWAOMMMGBO5ICWD3SXBOGJQA6LL2ZHTIQIMGY5VNFAETKDPPYAC
Y7VEWZEPUKX2WWPTQCUSIF7YMRUC6JZQNUU5OX3HQDB4GSDSTQZAC
OYNCMT7YDCHK7TFRZDVCMODYMYXRQKK3AU7EOZU7KRA76QGKI3EQC
5BA7VZ3D36S2TC7NZ64R3O364TGXPY5BJUJTGCFZHWZ6JWAXJMUQC
JG36CDUKVUWJT25PJVMWKWI4KFRHM24PFBKPXXRY3D2XVDKUVI7QC
IYRYOO3B2EFA2O3JJKOQLEQ6WWDCCGEH3LSFCZJUMBXTVYFZS44QC
EMED7UWAGESRTWJJWVXRL27O4XMBGZDDAU4LNVF3MQAYKFKRDNXQC
X77LI6U3MBQUEVD6KZ5GTHOCQU2OSUXAMQ52TJKOBFVKAPUENBLAC
OEKGYL6XZFMUSQPDFFMGGNAPDDKNW4XJNY6ALYQILBLNCRD5BFRAC
T6RGFAV3VFISSGKMFKK544MGGXCURAO4ARG22R5O75UBUKPHFM5AC
4TYJCGT4MTCAH7GSJJWFQPPHZNAUQZDEIZYT365EYTMXS7D2MTNAC
XF75MWE3S7HPZXDNR5A5BCRAYO3AYCPUQ4KS6JAAH5DWJRYBKJTQC
AAKN4XJLZ2GARZMUFYX3CJZKYHTRRZDYNTFRLMY7VPAY7K6W4N3QC
ZHOSSPNKGFIKSFPDXCGLMSYMMX2J433VU2BUUWBKUH7TOLQUBSPQC
RSF65T43YUPY7YJ56XUDB2VECU7SE6PH2ORQXFGKIN5ZDLH6FSIAC
4UKXFJRZYO5WEPH5PKMYDZCWVWSEAXFSPL35G5NFIUBCMH3BCXEQC
THNMNMVRZQVPZTEXHIK6WGYN3QDEFPKFOVOCB5HTWCYC5BOBYQ5AC
VQJBTLNEKPLH62WALLZABSTLHLEMS4SFVEVFUOXJ4EFABHISYF5QC
import { PointNodeRef } from "../data/GameState";
import { GameState, PointNodeRef } from "../data/GameState";
import { PixiWrapperComponent } from "./PixiWrapperComponent";
import { DeepReadonly, UpdaterGeneratorType } from "../lib/util/misc";
export type PixiComponentState = {
innerWidth: number,
innerHeight: number,
}
export function PixiComponent({
onFocusedNodeChange,
}: {
whatever?: any;
export function PixiComponent(props: {
// gameState: DeepReadonly<GameState>,
// gameStateUpdaters: UpdaterGeneratorType<GameState>,
// application.register(container.current!);
container.current!.appendChild(newApp.app.view);
// container.current!.appendChild(application.app.view)
// console.log(container.current!)
// // application.register(container.current!);
// container.current!.appendChild(newApp.app.view);
// // container.current!.appendChild(application.app.view)
// // console.log(container.current!)
import React, { useContext, useEffect, useRef } from "react";
import { UseGameStateContext } from "../contexts";
import { GameState } from "../data/GameState";
import { DeepReadonly, UpdaterGeneratorType } from "../lib/util/misc";
import { Application } from "../pixi/Application";
export function PixiWrapperComponent(props: {
application: Application | undefined
}) {
const container = useRef<HTMLDivElement>(null);
const [gameState, gameStateUpdaters] = useContext(UseGameStateContext);
useEffect(() => {
if (props.application) {
container.current!.appendChild(props.application.app.view);
}
}, [props.application]);
// Trigger component rerender when game state is updated
props.application?.rerender({
gameState
})
return (
<>
<div ref={container} />
</>
);
}
// should be OK, just remember to populate the context
export const GameContext = React.createContext<GameState>(null as any);
// nullable, but should be OK, just remember to populate the context
// export const GameContext = React.createContext<GameState>(null as any);
// export const GameUpdatersContext = React.createContext<UpdaterGeneratorType<GameState>>(null as any);
export const UseGameStateContext = React.createContext<[DeepReadonly<GameState>, UpdaterGeneratorType<GameState>]>([] as any);