11import { useEffect , useRef } from "react" ;
2- import Game from "./game" ;
3- import type { Result } from "./game" ;
2+ import type { Result } from "./game /game" ;
3+ import Game from "./game /game" ;
44
55export interface User {
66 name : string ;
@@ -26,6 +26,7 @@ type EmulatorProps = {
2626 executionId : number ; // エミュレーターそのものを更新するためのId
2727 handleStatuses : ( statuses : Status [ ] ) => void ;
2828 onGameCompleted ?: ( result : Result ) => void ;
29+ gameModeId : number ;
2930} ;
3031
3132export default function Emulator ( props : EmulatorProps ) {
@@ -38,19 +39,32 @@ export default function Emulator(props: EmulatorProps) {
3839 executionId,
3940 handleStatuses,
4041 onGameCompleted,
42+ gameModeId,
4143 } = props ;
4244 const canvasRef = useRef < HTMLCanvasElement > ( null ) ;
43- const gameRef = useRef < Game > ( ) ;
45+ const gameRef = useRef < any > ( ) ;
4446 useEffect ( ( ) => {
4547 if ( ! canvasRef . current ) throw new Error ( ) ;
46- const game = new Game ( users , canvasRef . current , ( newStatuses : Status [ ] ) => {
47- handleStatuses ( newStatuses ) ;
48- } ) ;
48+ let GameClass ;
49+ switch ( gameModeId ) {
50+ case 0 :
51+ GameClass = Game ;
52+ break ;
53+ default :
54+ GameClass = Game ;
55+ }
56+ const game = new GameClass (
57+ users ,
58+ canvasRef . current ,
59+ ( newStatuses : Status [ ] ) => {
60+ handleStatuses ( newStatuses ) ;
61+ }
62+ ) ;
4963 gameRef . current = game ;
5064 return ( ) => {
5165 game . destroy ( ) ;
5266 } ;
53- } , [ users , executionId , handleStatuses ] ) ;
67+ } , [ users , executionId , handleStatuses , gameModeId ] ) ;
5468 useEffect ( ( ) => {
5569 if ( ! gameRef . current ) throw new Error ( ) ;
5670 gameRef . current . onCompleted = ( result : Result ) => {
0 commit comments