refactor: details

This commit is contained in:
hyper 2026-04-12 16:31:10 +08:00
parent 59fa0e6122
commit f8a19653ba
2 changed files with 4 additions and 5 deletions

View File

@ -59,7 +59,7 @@ export interface PhaserSceneProps<TData extends Record<string, unknown> = {}> {
children?: any; children?: any;
} }
export const phaserSceneContext = createContext<ReadonlySignal<Phaser.Scene | undefined>>(signal(undefined)); export const phaserSceneContext = createContext<ReadonlySignal<ReactiveScene> | null>(null);
export function PhaserScene<TData extends Record<string, unknown> = {}>(props: PhaserSceneProps<TData>) { export function PhaserScene<TData extends Record<string, unknown> = {}>(props: PhaserSceneProps<TData>) {
const phaserGameSignal = useContext(phaserContext); const phaserGameSignal = useContext(phaserContext);
const sceneSignal = useSignal<Phaser.Scene>(); const sceneSignal = useSignal<Phaser.Scene>();
@ -83,5 +83,5 @@ export function PhaserScene<TData extends Record<string, unknown> = {}>(props: P
}; };
}); });
return <phaserSceneContext.Provider value={sceneSignal}>{props.children}</phaserSceneContext.Provider>; return <phaserSceneContext.Provider value={sceneSignal as ReadonlySignal<ReactiveScene>}>{props.children}</phaserSceneContext.Provider>;
} }

View File

@ -1,10 +1,9 @@
import {useComputed} from '@preact/signals'; import {useComputed} from '@preact/signals';
import { createGameHost, type GameModule } from 'boardgame-core'; import { createGameHost, type GameModule } from 'boardgame-core';
import Phaser from 'phaser';
import { h } from 'preact'; import { h } from 'preact';
import { PhaserGame, PhaserScene } from 'boardgame-phaser'; import {PhaserGame, PhaserScene, ReactiveScene} from 'boardgame-phaser';
export default function App<TState extends Record<string, unknown>>(props: { gameModule: GameModule<TState>, gameScene: { new(): Phaser.Scene } }) { export default function App<TState extends Record<string, unknown>>(props: { gameModule: GameModule<TState>, gameScene: { new(): ReactiveScene } }) {
const gameHost = useComputed(() => { const gameHost = useComputed(() => {
const gameHost = createGameHost(props.gameModule); const gameHost = createGameHost(props.gameModule);