import { Framework } from "../../framework/Framework"; import { AwardData, BaseItem, ItemEnum } from "../common/InterfaceAddEnum"; import { BattleData } from "../data/BattleData"; import { EquipData } from "../data/EquipData"; import { GameEvent } from "../data/GameEvent"; import { GoodsData } from "../data/GoodsData"; import { MailData } from "../data/MailData"; import { RoleData } from "../data/RoleData"; import { UserData } from "../data/UserData"; import { BattleEventManager } from "../ui/tower/base/BattleEventManager"; import { BattleEventTarget } from "../ui/tower/base/BattleEventUtil"; import { RoleConf } from "../ui/tower/conf/RoleConf"; import { EquipManager } from "./EquipManager"; import { GoodsManager } from "./GoodsManager"; import { RoleManager } from "./RoleManager"; //所有manager的连接器 export class UnionManager { // 解析奖励数据 static parseServerAwards(data: { [key: string]: AwardData }) { let awards: Array = []; for (const key in Object.keys(data)) { const element = data[key]; console.log(element[0]); if (element[0] == ItemEnum.material) { let item = GoodsManager.addGoodsById(element[1].toString(), element[2]); awards.push(item); } else if (element[0] == ItemEnum.equip) { } else if (element[0] == ItemEnum.user) { let item: BaseItem = { conf: {}, count: element[2], id: element[1].toString(), type: ItemEnum.user }; let statu = UserData.status[element[1]] if (statu) { statu += element[2]; UserData.status[element[1]] = statu; awards.push(item); } } } return awards; } // 触发物品刷新事件 static fireEventWithItem(itemList: [BaseItem]) { let updateEvent = []; for (let i in itemList) { let item = itemList[i]; if (item.type == ItemEnum.user) { if (!updateEvent[GameEvent.StatusUpdate]) { Framework.event.fireEvent(GameEvent.StatusUpdate); } updateEvent[GameEvent.StatusUpdate] = true } else if (item.type == ItemEnum.equip) { if (!updateEvent[GameEvent.EquipChange]) { Framework.event.fireEvent(GameEvent.EquipChange); } updateEvent[GameEvent.EquipChange] = true } else if (item.type == ItemEnum.material) { if (!updateEvent[GameEvent.MaterialChange]) { Framework.event.fireEvent(GameEvent.MaterialChange); } updateEvent[GameEvent.MaterialChange] = true } } } static showItemTips(awards: Array) { let tipsStr: string = ""; for (const key in awards) { const element = awards[key]; tipsStr += element.count + "*" + element.id + " "; } Framework.tips.setTips(tipsStr); } // 处理登录数据 static dealLoginData(data) { UserData.init(data || {}); if (data.get_mails) { MailData.setData(data.get_mails) } if (data.equip && data.race_equip) { EquipManager.setData(data.equip, data.race_equip) } if (data.fight_role) { RoleData.fightRole = data.fight_role } if (data.fate) { RoleManager.setFateData(data.fate); } if (data.role_bag && data.role_bag.roles) { RoleManager.setData(data.role_bag.roles) } BattleData.setLoginData(data) if (data.inventory) { if (data.inventory.material) { GoodsData.setAllGoods(data.inventory.material) } } } // 更新角色属性 static UpdateRoleAttr(data: []) { for (const rId of data) { let role = RoleData.getRoleDataByID(rId); let newAttr = RoleManager.CalcRoleAttr(role); role.attr = newAttr; BattleEventManager.instance.fireEvent(BattleEventTarget.HeroAttr,role) Framework.event.fireEvent(GameEvent.RoleAttrChange, role) } } //根据种族获取所属英雄id static getRoleGroupByRace(race) { let rGroup = []; for (const key in RoleConf.data) { if (Object.prototype.hasOwnProperty.call(RoleConf.data, key)) { const element = RoleConf.data[key]; if (element.Race == race) { rGroup.push(element.Id); } } } return rGroup; } }