Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 1x 15x | import React from 'react';
import { ActionType } from '@uniquegood/realworld-web-interface/lib/models/game/Action';
import { Expression, ValuableExpressionType } from '@uniquegood/realworld-web-interface/lib/models/game/Expression';
interface ParameterMap {
[key: string]: Partial<{
[key in ActionType]: Record<string, Expression<ValuableExpressionType>>;
}>;
}
const GameParameterContext = React.createContext<{
parameterMapRef: React.MutableRefObject<ParameterMap>;
resetParameterMap: (key: string) => unknown;
}>({
parameterMapRef: { current: {} },
resetParameterMap: () => {
// mock
}
});
interface GameParameterContextProps {
children: JSX.Element | JSX.Element[];
}
export const useGameParameterContext = () => React.useContext(GameParameterContext);
function GameParameterProvider({ children }: GameParameterContextProps): JSX.Element {
const parameterMapRef = React.useRef<ParameterMap>({});
const resetParameterMap = React.useCallback((key: string) => {
parameterMapRef.current[key] = {};
}, []);
const value = React.useMemo(
() => ({
parameterMapRef,
resetParameterMap
}),
[resetParameterMap]
);
return <GameParameterContext.Provider value={value}>{children}</GameParameterContext.Provider>;
}
export { GameParameterContext, GameParameterProvider };
|