2026-04-13 12:33:42 +08:00
|
|
|
import { h } from 'preact';
|
|
|
|
|
import { PhaserGame, PhaserScene } from 'boardgame-phaser';
|
|
|
|
|
import { useMemo } from 'preact/hooks';
|
|
|
|
|
import { IndexScene } from '@/scenes/IndexScene';
|
|
|
|
|
import { MapViewerScene } from '@/scenes/MapViewerScene';
|
|
|
|
|
import { GridViewerScene } from '@/scenes/GridViewerScene';
|
|
|
|
|
import { ShapeViewerScene } from '@/scenes/ShapeViewerScene';
|
|
|
|
|
|
|
|
|
|
export default function App() {
|
|
|
|
|
const indexScene = useMemo(() => new IndexScene(), []);
|
|
|
|
|
const mapViewerScene = useMemo(() => new MapViewerScene(), []);
|
|
|
|
|
const gridViewerScene = useMemo(() => new GridViewerScene(), []);
|
|
|
|
|
const shapeViewerScene = useMemo(() => new ShapeViewerScene(), []);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div className="flex flex-col h-screen">
|
|
|
|
|
<div className="flex-1 flex relative justify-center items-center">
|
2026-04-13 14:57:00 +08:00
|
|
|
<PhaserGame initialScene="IndexScene" config={{ width: 1920, height: 1080 }}>
|
2026-04-13 12:33:42 +08:00
|
|
|
<PhaserScene sceneKey="IndexScene" scene={indexScene} />
|
|
|
|
|
<PhaserScene sceneKey="MapViewerScene" scene={mapViewerScene} />
|
|
|
|
|
<PhaserScene sceneKey="GridViewerScene" scene={gridViewerScene} />
|
|
|
|
|
<PhaserScene sceneKey="ShapeViewerScene" scene={shapeViewerScene} />
|
|
|
|
|
</PhaserGame>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|