import GVGTeam, { GVGTeamType } from "../../db/GVGTeam";
import { nowSeconds } from "../../pubUtils/timeUtil";

// 积分点分类统计，1-3级积分点代表从小到大
export class LeagueCityPoint {
    // 玩家id
    roleId: string;
    // 军团id
    guildCode: string;
    // 联军id
    leagueCode: string;

    // 计分点数
    pointCnt1: number;
    pointCnt2: number;
    pointCnt3: number;
    // 击杀守卫数
    guardCnt1: number;
    // 击杀投石车数
    catapultCnt1: number;
}

// 队伍状态
export class GVGTeamMem extends GVGTeam {
    isMoving: boolean;

    constructor(team: GVGTeamType) {
        super();
        this.updateTeam(team);
    }

    public updateTeam(team: GVGTeamType) {
        for(let key in team) {
            if(key == 'lineup' || key == '_id' || key == 'createdAt' || key == 'updatedAt') continue;
            this[key] = team[key];
        }
        this.isMoving = this.stopMoveTime > nowSeconds();
    }

    public setCity(cityId: number, areaId = 0, pointId = 0) {
        this.cityId = cityId;
        this.areaId = areaId;
        this.pointId = pointId;
    }

    public moveToArea(areaId: number, fromAreaId: number, startMoveTime: number, stopMoveTime: number) {
        this.areaId = areaId;
        this.fromAreaId = fromAreaId;
        this.startMoveTime = startMoveTime;
        this.stopMoveTime = stopMoveTime;
    }

    public updateInfo(info: { leagueName?: string, roleName?: string, lv?: number }) {
        if(!info) return
        if(info.leagueName) this.leagueName = info.leagueName;
        if(info.roleName) this.roleName = info.roleName;
        if(info.lv) this.lv = info.lv;
    }
}
