import { RoleConf } from "../ui/tower/conf/RoleConf";

//服务器端返回的英雄数据
interface RoleServer {
    id: string; //英雄id 动物形象id
    grade: number;  //星级
    dna_lv: string;   //基因等级
    dna_attr: { any }   //基因属性
    equip: [];//读取状态
    skin: [];//皮肤
    fight_force: number;//战力
    conf: {}//配置
}
//出战英雄数据[种族1 typeID,种族2 typeID,种族3 typeID,种族4 typeID]
export type FightRole = [number, number, number, number]

class Data {

    private _roles: { [id: string]: RoleServer } = {};
    //上阵英雄
    private _fightRole: FightRole = [0, 0, 0, 0];
    //羁绊
    private _fate: { [id: string]: number } = {};
    setData(data: { [id: string]: RoleServer }): void {
        let rConf = RoleConf.data;
        if (data) {
            for (const id in data) {
                if (data.hasOwnProperty(id)) {
                    if (rConf[id]) {
                        const role = data[id];
                        role.conf = rConf[id];
                        this._roles[id] = role;
                        // console.log(`ID: ${id}, Name: ${role.name}, Level: ${role.level}`);
                    }
                }
            }
        }
    }

    getData() {
        return this._roles;
    }

    getRoleDataByID(id: string | number): RoleServer {
        if (typeof id === 'number') {
            id = id.toString();
        }
        return this._roles[id];
    }

    setRoleDataByID(id: string | number, data: RoleServer) {
        if (typeof id === 'number') {
            id = id.toString();
        }
        if (this._roles[id]) {
            this._roles[id] = data;
        }
    }

    //设置出战角色  data {"1":"xxx","2":"xxx","3":"xxx","4":"xxx"}
    set fightRole(data: { [key: string]: string } | FightRole) {
        if (!data) return;
        this._fightRole = [0, 0, 0, 0];
        if (Array.isArray(data)) {
            this._fightRole = data as FightRole;
        } else {
            for (let i = 0; i < this._fightRole.length; i++) {
                this._fightRole[i] = Number(data[(i + 1).toString()] || "0");
            }
        }
    }

    //获取出战角色
   get fightRole() :FightRole{
        // return [101,201,301,401];
        return this._fightRole;

    }

    set fate(data: { [key: string]: number }) {

    }

    get fate() {
        return this._fate;
    }


}

export let RoleData = new Data;