UnionManager.ts 4.5 KB

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