Spaces:
Sleeping
Sleeping
import { Graphics } from '@pixi/react'; | |
import { Graphics as PixiGraphics } from 'pixi.js'; | |
import { useCallback } from 'react'; | |
import { Doc } from '../../convex/_generated/dataModel'; | |
import { Player } from '../../convex/aiTown/player'; | |
import { unpackPathComponent } from '../../convex/util/types'; | |
export function DebugPath({ player, tileDim }: { player: Player; tileDim: number }) { | |
const path = player.pathfinding?.state.kind == 'moving' && player.pathfinding.state.path; | |
const draw = useCallback( | |
(g: PixiGraphics) => { | |
g.clear(); | |
if (!path) { | |
return; | |
} | |
let first = true; | |
for (const p of path) { | |
const { position } = unpackPathComponent(p as any); | |
const x = position.x * tileDim + tileDim / 2; | |
const y = position.y * tileDim + tileDim / 2; | |
if (first) { | |
g.moveTo(x, y); | |
g.lineStyle(2, debugColor(player.id), 0.5); | |
first = false; | |
} else { | |
g.lineTo(x, y); | |
} | |
} | |
}, | |
[path], | |
); | |
return path ? <Graphics draw={draw} /> : null; | |
} | |
function debugColor(_id: string) { | |
return { h: 0, s: 50, l: 90 }; | |
} | |