UnionManager.ts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { Framework } from "../../framework/Framework";
  2. import { AwardData, BaseItem, ItemEnum } from "../common/InterfaceAddEnum";
  3. import { BattleData } from "../data/BattleData";
  4. import { EquipData } from "../data/EquipData";
  5. import { GameEvent } from "../data/GameEvent";
  6. import { GoodsData } from "../data/GoodsData";
  7. import { MailData } from "../data/MailData";
  8. import { RoleData } from "../data/RoleData";
  9. import { UserData } from "../data/UserData";
  10. import { BattleEventManager } from "../ui/tower/base/BattleEventManager";
  11. import { BattleEventTarget } from "../ui/tower/base/BattleEventUtil";
  12. import { RoleConf } from "../ui/tower/conf/RoleConf";
  13. import { EquipManager } from "./EquipManager";
  14. import { GoodsManager } from "./GoodsManager";
  15. import { RoleManager } from "./RoleManager";
  16. //所有manager的连接器
  17. export class UnionManager {
  18. // 解析奖励数据
  19. static parseServerAwards(data: { [key: string]: AwardData }) {
  20. let awards: Array<BaseItem> = [];
  21. for (const key in Object.keys(data)) {
  22. const element = data[key];
  23. console.log(element[0]);
  24. if (element[0] == ItemEnum.material) {
  25. let item = GoodsManager.addGoodsById(element[1].toString(), element[2]);
  26. awards.push(item);
  27. } else if (element[0] == ItemEnum.equip) {
  28. } else if (element[0] == ItemEnum.user) {
  29. let item: BaseItem = {
  30. conf: {},
  31. count: element[2],
  32. id: element[1].toString(),
  33. type: ItemEnum.user
  34. };
  35. let statu = UserData.status[element[1]]
  36. if (statu) {
  37. statu += element[2];
  38. UserData.status[element[1]] = statu;
  39. awards.push(item);
  40. }
  41. }
  42. }
  43. return awards;
  44. }
  45. // 触发物品刷新事件
  46. static fireEventWithItem(itemList: [BaseItem]) {
  47. let updateEvent = [];
  48. for (let i in itemList) {
  49. let item = itemList[i];
  50. if (item.type == ItemEnum.user) {
  51. if (!updateEvent[GameEvent.StatusUpdate]) {
  52. Framework.event.fireEvent(GameEvent.StatusUpdate);
  53. }
  54. updateEvent[GameEvent.StatusUpdate] = true
  55. } else if (item.type == ItemEnum.equip) {
  56. if (!updateEvent[GameEvent.EquipChange]) {
  57. Framework.event.fireEvent(GameEvent.EquipChange);
  58. }
  59. updateEvent[GameEvent.EquipChange] = true
  60. } else if (item.type == ItemEnum.material) {
  61. if (!updateEvent[GameEvent.MaterialChange]) {
  62. Framework.event.fireEvent(GameEvent.MaterialChange);
  63. }
  64. updateEvent[GameEvent.MaterialChange] = true
  65. }
  66. }
  67. }
  68. static showItemTips(awards: Array<BaseItem>) {
  69. let tipsStr: string = "";
  70. for (const key in awards) {
  71. const element = awards[key];
  72. tipsStr += element.count + "*" + element.id + " ";
  73. }
  74. Framework.tips.setTips(tipsStr);
  75. }
  76. // 处理登录数据
  77. static dealLoginData(data) {
  78. UserData.init(data || {});
  79. if (data.get_mails) {
  80. MailData.setData(data.get_mails)
  81. }
  82. if (data.equip && data.race_equip) {
  83. EquipManager.setData(data.equip, data.race_equip)
  84. }
  85. if (data.fight_role) {
  86. RoleData.fightRole = data.fight_role
  87. }
  88. if (data.fate) {
  89. RoleManager.setFateData(data.fate);
  90. }
  91. if (data.role_bag && data.role_bag.roles) {
  92. RoleManager.setData(data.role_bag.roles)
  93. }
  94. BattleData.setLoginData(data)
  95. if (data.inventory) {
  96. if (data.inventory.material) {
  97. GoodsData.setAllGoods(data.inventory.material)
  98. }
  99. }
  100. }
  101. // 更新角色属性
  102. static UpdateRoleAttr(data: []) {
  103. for (const rId of data) {
  104. let role = RoleData.getRoleDataByID(rId);
  105. let newAttr = RoleManager.CalcRoleAttr(role);
  106. role.attr = newAttr;
  107. BattleEventManager.instance.fireEvent(BattleEventTarget.HeroAttr,role)
  108. Framework.event.fireEvent(GameEvent.RoleAttrChange, role)
  109. }
  110. }
  111. //根据种族获取所属英雄id
  112. static getRoleGroupByRace(race) {
  113. let rGroup = [];
  114. for (const key in RoleConf.data) {
  115. if (Object.prototype.hasOwnProperty.call(RoleConf.data, key)) {
  116. const element = RoleConf.data[key];
  117. if (element.Race == race) {
  118. rGroup.push(element.Id);
  119. }
  120. }
  121. }
  122. return rGroup;
  123. }
  124. }