Refactor inventory drag to use dragDropEventEffect
Replace manual pointer event handling with the framework's dragDropEventEffect utility. Update DragController to manage DisposableBag for cleanup and pass containers instead of pointers to drag callbacks. Add framework path alias to tsconfig and fix loop variable shadowing in LostItemManager.
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
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';
|
||||
import { GameFlowScene } from '@/scenes/GameFlowScene';
|
||||
import { PlaceholderEncounterScene } from '@/scenes/PlaceholderEncounterScene';
|
||||
import { createGameState } from '@/state/gameState';
|
||||
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";
|
||||
import { GameFlowScene } from "@/scenes/GameFlowScene";
|
||||
import { PlaceholderEncounterScene } from "@/scenes/PlaceholderEncounterScene";
|
||||
import { createGameState } from "@/state/gameState";
|
||||
|
||||
// 全局游戏状态单例
|
||||
const gameState = createGameState();
|
||||
@@ -18,18 +18,36 @@ export default function App() {
|
||||
const gridViewerScene = useMemo(() => new GridViewerScene(), []);
|
||||
const shapeViewerScene = useMemo(() => new ShapeViewerScene(), []);
|
||||
const gameFlowScene = useMemo(() => new GameFlowScene(gameState), []);
|
||||
const placeholderEncounterScene = useMemo(() => new PlaceholderEncounterScene(gameState), []);
|
||||
const placeholderEncounterScene = useMemo(
|
||||
() => new PlaceholderEncounterScene(gameState),
|
||||
[],
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col h-screen">
|
||||
<div className="flex-1 flex relative justify-center items-center">
|
||||
<PhaserGame initialScene="IndexScene" config={{ width: 1920, height: 1080 }}>
|
||||
<PhaserScene sceneKey="IndexScene" scene={indexScene} />
|
||||
<PhaserScene sceneKey="MapViewerScene" scene={mapViewerScene} />
|
||||
<PhaserScene sceneKey="GridViewerScene" scene={gridViewerScene} />
|
||||
<PhaserScene sceneKey="ShapeViewerScene" scene={shapeViewerScene} />
|
||||
<PhaserScene sceneKey="GameFlowScene" scene={gameFlowScene} />
|
||||
<PhaserScene sceneKey="PlaceholderEncounterScene" scene={placeholderEncounterScene} />
|
||||
<PhaserGame
|
||||
initialScene="IndexScene"
|
||||
config={{ width: 1920, height: 1080 }}
|
||||
>
|
||||
<PhaserScene sceneKey="IndexScene" scene={indexScene as any} />
|
||||
<PhaserScene
|
||||
sceneKey="MapViewerScene"
|
||||
scene={mapViewerScene as any}
|
||||
/>
|
||||
<PhaserScene
|
||||
sceneKey="GridViewerScene"
|
||||
scene={gridViewerScene as any}
|
||||
/>
|
||||
<PhaserScene
|
||||
sceneKey="ShapeViewerScene"
|
||||
scene={shapeViewerScene as any}
|
||||
/>
|
||||
<PhaserScene sceneKey="GameFlowScene" scene={gameFlowScene as any} />
|
||||
<PhaserScene
|
||||
sceneKey="PlaceholderEncounterScene"
|
||||
scene={placeholderEncounterScene as any}
|
||||
/>
|
||||
</PhaserGame>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user