import { ItemEnum } from "../common/InterfaceAddEnum"; import { LoginMgr } from "../common/LoginManager"; import { EquipConf } from "../config/EquipConf"; import { EquipstrengthenConf } from "../config/EquipstrengthenConf"; import { Equip, EquipData } from "../data/EquipData"; export class EquipManager { /** * 根据参数获取装备(或奖励装备) * @param id 装备id_经验exp_星级star * @param count 数量 * @param isWear 是否穿戴 */ static getEquipById(id: string, count: number, isWear: boolean) { let conf = EquipConf.data; let arr = id.split('_'); let eConf = conf[arr[0]]; if (eConf) { let lvAdd = this.getEquipLevelByExp(arr[0], Number(arr[1])); let attrAdd = eConf.Stat1.split(':') let equipData: Equip = { id: id, count: count, exp: Number(arr[1]), star: Number(arr[2]), wear: isWear, type: ItemEnum.equip, fightForce: (1 + lvAdd.atkMod) * attrAdd[1], conf: eConf } return equipData; } return null; } /** * 根据参数获取装备(或奖励装备) * @param id 装备id * @param exp 经验 */ static getEquipLevelByExp(id: string, exp: number) { let strengConf = EquipstrengthenConf.data; let data = []; for (const key in strengConf) { if (Object.prototype.hasOwnProperty.call(strengConf, key)) { const element = strengConf[key]; data.push(element); } } data.sort((a, b) => { return Number(a.id) < Number(b.id) ? -1 : 1; }); let level = 0; let atkMod = 0; for (const element of data) { if (exp >= element.NeedExp) { level = element.Id; atkMod = element.AttackMod } else { break; } } return { level: level, atkMod: atkMod }; } //获取阵营穿戴装备 static getEquipWearRaceGroup() { let equips = {}; for (let x = 1; x <= 4; x++) { for (let y = 1; y <= 4; y++) { equips[x] = {}; equips[x][y] = 0; } } let data = EquipData.getData(); for (const key in data) { if (Object.prototype.hasOwnProperty.call(data, key)) { const element = data[key]; if (element.wear) { equips[element.conf['Race']][element.conf['Slot']] = element; } } } return equips; } //获取阵营装备 static getEquipRaceSlotGroup(race) { let equips = { 1: [], 2: [], 3: [], 4: [] }; let data = EquipData.getData(); for (const key in data) { if (Object.prototype.hasOwnProperty.call(data, key)) { const element = data[key]; if (!element.wear && element.conf['Race'] == race) { equips[element.conf['Slot']].push(element); } } } return equips; } //消息-穿戴装备 static sendWearMsg(args: { eid: string, slot: number , race: number}, callback) { LoginMgr.sendPost('equip', 'wear', (data) => { console.log(data); // MailData.setMailReadById(args.id) }, args) } static setData(bagData, equipData) { EquipData.equipData = {}; EquipData.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) { EquipData.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) { EquipData.bagData[key + '_' + race] = equip; } } } } } } console.log('=========_bagData========',EquipData.bagData); } }