import {ReactNode, RefObject, useRef} from "react" import "../../style/player.css" import Draggable from "react-draggable" import {PlayerPiece} from "./PlayerPiece" import {Player} from "../../tactic/Player" import {calculateRatio} from "../../Utils" export interface PlayerProps { player: Player onDrag: () => void, onChange: (p: Player) => void onRemove: () => void parentRef: RefObject availableActions: (ro: RefObject) => A[] } /** * A player that is placed on the court, which can be selected, and moved in the associated bounds * */ export default function CourtPlayer({ player, onDrag, onChange, onRemove, parentRef, availableActions, }: PlayerProps) { const x = player.rightRatio const y = player.bottomRatio const hasBall = player.hasBall const pieceRef = useRef(null); return ( { const pieceBounds = pieceRef.current!.getBoundingClientRect() const parentBounds = parentRef.current!.getBoundingClientRect() const { x, y } = calculateRatio(pieceBounds, parentBounds) onChange({ id: player.id, rightRatio: x, bottomRatio: y, team: player.team, role: player.role, hasBall: player.hasBall, } as Player) }}>
{ if (e.key == "Delete") onRemove() }}>
{availableActions(pieceRef)}
) }