//@ts-check import { renderToDom } from '@zardoy/react-util' import { LeftTouchArea, RightTouchArea, useUsingTouch, useInterfaceState } from '@dimaka/interface' import { css } from '@emotion/css' import { useSnapshot } from 'valtio' import { QRCodeSVG } from 'qrcode.react' import { createPortal } from 'react-dom' import { contro } from './controls' import { miscUiState } from './globalState' import { options, watchValue } from './optionsStorage' import DeathScreenProvider from './react/DeathScreenProvider' import OptionsRenderApp from './react/OptionsRenderApp' import MainMenuRenderApp from './react/MainMenuRenderApp' import AppStatus from './react/AppStatus' // todo useInterfaceState.setState({ isFlying: false, uiCustomization: { touchButtonSize: 40, }, updateCoord ([coord, state]) { const coordToAction = [ ['z', -1, 'KeyW'], ['z', 1, 'KeyS'], ['x', -1, 'KeyA'], ['x', 1, 'KeyD'], ['y', 1, 'Space'], // todo jump ['y', -1, 'ShiftLeft'], // todo jump ] // todo refactor const actionAndState = state === 0 ? coordToAction.filter(([axis]) => axis === coord) : coordToAction.find(([axis, value]) => axis === coord && value === state) if (!bot) return if (state === 0) { for (const action of actionAndState) { contro.pressedKeyOrButtonChanged({ code: action[2] }, false) } } else { //@ts-expect-error contro.pressedKeyOrButtonChanged({ code: actionAndState[2] }, true) } } }) watchValue(options, (o) => { useInterfaceState.setState({ uiCustomization: { touchButtonSize: o.touchButtonsSize, }, }) }) const TouchControls = () => { // todo setting const usingTouch = useUsingTouch() if (!usingTouch) return null return (
div { pointer-events: auto; } `} >
) } const Portal = ({ children, to }) => { return createPortal(children, to) } const DisplayQr = () => { const { currentDisplayQr } = useSnapshot(miscUiState) if (!currentDisplayQr) return null return
{ miscUiState.currentDisplayQr = null }} >
} const InGameUi = () => { const { gameLoaded } = useSnapshot(miscUiState) if (!gameLoaded) return return <> {/* apply scaling */} } const App = () => { return
} renderToDom(, { strictMode: false, selector: '#react-root', })