import { ItemEnum } from "../common/InterfaceAddEnum";
import { EquipConf } from "../config/EquipConf";
import { EquipManager } from "../manager/EquipManager";

export interface Equip {
    id: string;
    count: number;
    exp: number;
    star: number;
    wear: boolean;
    type: ItemEnum;
    fightForce: number
    conf: {};
}

class Data {
    private _equipData: { [id: string]: Equip } = {};
    private _bagData: { [id: string]: Equip } = {};

    init(): void {
        this.reset();
    }

    reset(): void {
        this._equipData = {};
        this._bagData = {};
    }

    purge(): void {
        this.reset();
    }

    setData(bagData, equipData) {
        this._equipData = {};
        this._bagData = {};


        for (const key in bagData) {
            if (Object.prototype.hasOwnProperty.call(bagData, key)) {
                const element = bagData[key];
                let equip = EquipManager.getEquipById(key, element, false);
                if (equip) {
                    this._bagData[key] = equip;
                }
            }
        }

        let conf = EquipConf.data;
        for (const race in equipData) {
            if (Object.prototype.hasOwnProperty.call(equipData, race)) {
                const element = equipData[race];
                for (const key in element) {
                    if (Object.prototype.hasOwnProperty.call(element, key)) {
                        const eid = element[key];
                        if (eid != 0) {
                            let equip = EquipManager.getEquipById(eid, 1, true);
                            if (equip) {
                                this._bagData[key + '_' + race] = equip;
                            }
                        }
                    }
                }
            }
        }

        console.log('=========_bagData========',this._bagData);
    }

    getData() {
        return this._bagData;
    }
}

export let EquipData = new Data;