WTINQMZSNRT5MSAXLMMZVM6OU6TMD4AP4OEUYAXZUFNY5IWFLZSQC ZGS4FTTFBXTF2SHYTPAJJBWEUVWVYXPSJVEFI5NYJWTW273B4NHAC WSDL57547MWQ2WUVY24A6KUOUJ4XBIS5QHHZ44X2RFOXE6NWAIAAC DPJCZOPIKAKQIS4YRXETBSJA5ZTL2KQESSJE2TEZFLRQARXUVFXQC ED3IWKTSVYYD52TWW5TOC4H63YZ7FTO3E53YO5NELPG5I3RLRAYAC HXHNGFB2VCXB6YXDND35HJI22GBJC3QTSUR2TK3M3LXGJHVNXVHAC FLGWAOMMMGBO5ICWD3SXBOGJQA6LL2ZHTIQIMGY5VNFAETKDPPYAC B64CHUFO4VD44N2D4GCL7PKDT4CMYQ3KPMISTCQQDEV2GQQ6O5FAC OPUQ6NVYM2BN4H2FENH6EBGVU25XQBY2GRRZANPZEBEACZMDOGEAC B4JS4Z3VVAD5RJJ272S7GJM5BUNIHHMGNK2VSKVGZFPOVFP2YO4QC DNNKTYMMT2SXGZDMTFYZOQPZ3IX5EF6ESQAMGO5UUDFUA44FXMGAC 5BA7VZ3D36S2TC7NZ64R3O364TGXPY5BJUJTGCFZHWZ6JWAXJMUQC JG36CDUKVUWJT25PJVMWKWI4KFRHM24PFBKPXXRY3D2XVDKUVI7QC OET27TXMNRKBX3HWDSLQWCWAJOWNY5NU4XDKLO5N7Z3EE23CSWOAC IYRYOO3B2EFA2O3JJKOQLEQ6WWDCCGEH3LSFCZJUMBXTVYFZS44QC 4TYJCGT4MTCAH7GSJJWFQPPHZNAUQZDEIZYT365EYTMXS7D2MTNAC 6OD22ZHHEANTKREVSWHHAWEDVUFWTZHUKJD35ICBPWYERYPABGDQC HUH4SI4HXIP72KQSJP2I4ELHX5KUQZM7FFGKZZGJ33DF7E3JHMYQC TQ57VE45BHV7MOZ6GKTYZEAMAOTXLPQ3ROCWJ2FUCITQWOYVMUIAC N2M7CWXHD722QWM6IIIEOD66YMR3SSZEJZLDCGEIPXRCVNF6YBSQC AAKN4XJLZ2GARZMUFYX3CJZKYHTRRZDYNTFRLMY7VPAY7K6W4N3QC A75BWKGRLUDH3KF4M2HJYLNC6BSV5MAJFV2RJSF757F46HLRLCKQC THNMNMVRZQVPZTEXHIK6WGYN3QDEFPKFOVOCB5HTWCYC5BOBYQ5AC const [gameState, setGameState] = useState<GameState>(new GameStateFactory({}).create());
// const x_initialGameState = useMemo(() => new GameStateFactory({}).create(), []);// const [gameState, setGameState] = useState<GameState>(x_initialGameState);const [gameState, setGameState] = useState<GameState>(initialGameState.get());// const [gameState, setGameState] = useState<GameState>(() => new GameStateFactory({}).create());// useEffect(() => {// setGameState(new GameStateFactory({}).create());// }, []);// if (!gameState) {// setGameState(new GameStateFactory({}).create());// }// if (gameState === undefined) {// throw new Error();// }
const [application, setApplication] = useState<Application>(new Application({originalWindowWidth: window.innerWidth,originalWindowHeight: window.innerHeight,}));
const [application, setApplication] = useState<Application>(initialApplication.get());
}const assertOnlyCalledOnceData: { [k: string]: string } = {};export function assertOnlyCalledOnce(id: string | number) {let k = id.toString();if (assertOnlyCalledOnceData[k] !== undefined) {throw new Error("Error, called twice with same id: " + k + " , callback the first time was : " + assertOnlyCalledOnceData[k]);} else {const stacktrace = new Error().stack!assertOnlyCalledOnceData[k] = stacktrace;}}export class Lazy<T> {private _wasConstructed: boolean = false;private _value: T | undefined = undefined;private _factory: () => Tconstructor(factory: () => T) {this._factory = factory;}public get(): T {// T might have undefined as a valid valueif (this._value !== undefined || this._wasConstructed === true) {return this._value!;} else {this._value = this._factory();this._wasConstructed = true;return this._value;}}