import { ArtifactModelType } from "../../db/Artifact";
import { Connect, EPlace, HeroType } from "../../db/Hero";
import { JewelType } from "../../db/Jewel";
import { HeroScore } from "../battleField/pvp";

export class TaskParamInter {
    hero?: HeroType;          // 武将数据
    heroes?: HeroType[];      // 很多武将数据
    count?: number;           // 次数

    warId?: number;           // 当前关卡id
    towerLv?: number;         // 镇念塔层数
    lv?: number;              // 现玩家等级
    chatType?: number;        // 聊天：聊天类型
    battleHeroes?: number[];  // 战斗时候使用的
    battleStar?: number;      // 战斗结算时候的星级
    heroNum?: number;         // 武将数量
    trainCount?: number;      // 武将训练次数
    stageUpCnt?: number;      // 武将升阶次数
    shipId?: number;          // 羁绊id
    oldConnections?: Connect[]; // 旧的羁绊
    connections?: Connect[];  // 羁绊
    isSuccess?: boolean;      // pvp是否胜利
    heroScores?: HeroScore[]; // pvp各武将积分
    eventType?: number;       // 奇遇类型

    point?: number;           // 远征宝箱点数
    pvpRank?: number;         // pvp等级
    guildJob?: number;        // 军团职位
    isComplete?: boolean;     // 练兵场是否压制
    oldLadderRank?: number;   // 名将擂台原排名
    ladderRank?: number;      // 名将擂台排名

    oldLv?: number;           // 原武将等级，原玩家等级
    oldStar?: number;         // 原武将星级
    oldColorStar?: number;    // 原武将彩星
    oldJob?: number;          // 原武将职业
    oldJobStage?: number;     // 原武将职业阶
    oldFavourLv?: number;     // 原好感度等级

    quality?: number;         // 图纸品质
    aid?: number;             // 军团活动id

    gid?: number;             // 物品id
    hid?: number;             // 百家学宫当前武将
    preHid?: number;          // 百家学宫前一个武将位置
    title?: number;           // 当前爵位
    oldTitle?: number;        // 之前的爵位
    scrollActive?: boolean;  // 是否是激活

    oldEplace?: EPlace[];     // 原装备栏
    newEplace?: EPlace[];     // 新装备栏
    ePlaceId?: number;        // 装备栏上更新的装备（一个）
    ePlaceIds?: number[];     // 装备栏上更新的装备
    oldEquip?: EPlace;        // 原装备栏（一个）
    newEquip?: EPlace;        // 新装备栏（一个）
    jewels?: JewelType[];     // 天晶石
    skinId?: number;         // 皮肤id

    artifacts?: ArtifactModelType[]; // 宝物
    
    skipTower?: boolean;
    debugInfo?: {condition: number};
};

export class TaskParam extends TaskParamInter {

    public setParam(params: TaskParamInter = {}) {
        for(let key in params) {
            this[key] = params[key];
        } 
    }

}


export class TaskListReturn {
    type: number;      // 类型
    id: number;        // 任务id
    count: number;     // 达成次数
    received: boolean; // 是否领取
}

export interface UpdateTaskParam {
    inc?: number;        // 直接增
    set?: number;        // 直接设
    records?: string[];     // 检查是否有这条记录、没有的话增
}