import { Position } from './Position';

/**
 * 玩家角色数据
 */
export interface Player {
    /** 玩家唯一ID */
    id: string;
    
    /** 玩家昵称 */
    name: string;
    
    /** 当前位置 */
    position: Position;
    
    /** 出生点位置 */
    spawnPoint: Position;
    
    /** 当前生命值 */
    hp: number;
    
    /** 最大生命值 */
    maxHp: number;
    
    /** 是否存活 */
    isAlive: boolean;
    
    /** 创建时间 */
    createdAt: number;
    
    /** 最后登录时间 */
    lastLoginAt: number;
}

/**
 * 创建新玩家
 */
export function createPlayer(id: string, name: string, spawnPoint: Position): Player {
    const maxHp = 10; // 初始最大生命值10点
    
    return {
        id,
        name,
        position: { ...spawnPoint }, // 初始位置在出生点
        spawnPoint: { ...spawnPoint },
        hp: maxHp,
        maxHp,
        isAlive: true,
        createdAt: Date.now(),
        lastLoginAt: Date.now()
    };
}

/**
 * 玩家复活
 */
export function respawnPlayer(player: Player): void {
    player.position = { ...player.spawnPoint };
    player.hp = player.maxHp;
    player.isAlive = true;
}

/**
 * 玩家受伤
 */
export function damagePlayer(player: Player, damage: number): void {
    player.hp = Math.max(0, player.hp - damage);
    if (player.hp <= 0) {
        player.isAlive = false;
    }
}
