import { Position } from '../models/Position';

/**
 * 坐标转换工具
 * 处理服务器内部坐标和客户端坐标之间的转换
 * 客户端坐标 = 服务器坐标 * 1000（取整）
 * 服务器坐标 = 客户端坐标 / 1000
 */

/**
 * 将服务器内部坐标转换为客户端坐标
 * @param gamePos 服务器内部坐标（实际坐标）
 * @returns 客户端坐标（放大1000倍后取整）
 */
export function gameToClientPosition(gamePos: Position): Position {
    return {
        x: Math.round(gamePos.x * 1000),
        y: Math.round(gamePos.y * 1000)
    };
}

/**
 * 将客户端坐标转换为服务器内部坐标
 * @param clientPos 客户端坐标（放大1000倍后的整数）
 * @returns 服务器内部坐标（实际坐标）
 */
export function clientToGamePosition(clientPos: Position): Position {
    return {
        x: clientPos.x / 1000,
        y: clientPos.y / 1000
    };
}

/**
 * 批量转换服务器坐标为客户端坐标
 * @param gamePositions 服务器内部坐标数组
 * @returns 客户端坐标数组
 */
export function gameToClientPositions(gamePositions: Position[]): Position[] {
    return gamePositions.map(gameToClientPosition);
}

/**
 * 批量转换客户端坐标为服务器坐标
 * @param clientPositions 客户端坐标数组
 * @returns 服务器内部坐标数组
 */
export function clientToGamePositions(clientPositions: Position[]): Position[] {
    return clientPositions.map(clientToGamePosition);
}