BattleManager.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import { Framework } from "../../framework/Framework";
  2. import { LoginMgr } from "../common/LoginManager";
  3. import { BattleData, BattleLayoutData, BattleLayoutPos, BattleLayoutScale, BattleOptsBase, BattleOptsKill, BattleOptsMerge, BattleOptsMove, BattleOptsNew, BattleOptsRemove, BattleOptsType } from "../data/BattleData";
  4. import { RoleData } from "../data/RoleData";
  5. import { UserData } from "../data/UserData";
  6. import { GoodsManager } from "./GoodsManager";
  7. //战斗消息管理
  8. export class BattleManager {
  9. /**
  10. * 发送战斗结束消息
  11. * @param id 新关卡id,
  12. * @param win 战斗结果(1-胜利,0-失败),
  13. * @param layout 布局信息, [key:BattleLayoutPos]:number
  14. * @param opts 操作指令顺序数组
  15. * @param callback
  16. */
  17. static sendBattleDuplicateMsg(id:number,win:boolean,layout:{[key:string]:number},opts:Array<BattleOptsBase>, callback,errorFun) {
  18. let args = {
  19. id:id, //新关卡id,
  20. win:win?1:0, // 战斗结果(1-胜利,0-失败),
  21. layout:layout, //布局信息,
  22. opts:[], //操作指令顺序数组
  23. }
  24. for(let item of opts) {
  25. switch(item.type) {
  26. case BattleOptsType.New:{
  27. let item_new = item as BattleOptsNew;
  28. args.opts.push([item_new.type, item_new.pos,item_new.raceID,item_new.level]);
  29. break;
  30. }
  31. case BattleOptsType.Move:{
  32. let item_move = item as BattleOptsMove;
  33. args.opts.push([item_move.type, item_move.srcPos,item_move.targetPos]);
  34. break;
  35. }
  36. case BattleOptsType.Merge:{
  37. let item_merge = item as BattleOptsMerge;
  38. args.opts.push([item_merge.type, item_merge.srcPos,item_merge.targetPos]);
  39. break;
  40. }
  41. case BattleOptsType.Remove:{
  42. let item_remove = item as BattleOptsRemove;
  43. args.opts.push([item_remove.type, item_remove.pos]);
  44. break;
  45. }
  46. case BattleOptsType.Kill:{
  47. let item_kill = item as BattleOptsKill;
  48. args.opts.push([item_kill.type, item_kill.typeID, item_kill.count]);
  49. break;
  50. }
  51. }
  52. }
  53. LoginMgr.sendPost('battle', 'duplicate', (data) => {
  54. console.log(data);
  55. if(data.duplicate){
  56. BattleData.duplicate = data.duplicate;
  57. }
  58. if(data.layout){
  59. BattleData.layout = data.layout;
  60. }
  61. if(data.awards){
  62. let awards = Framework.unionManager.parseServerAwards(data.awards);
  63. Framework.unionManager.fireEventWithItem(awards)
  64. Framework.unionManager.showItemTips(awards);
  65. }
  66. UserData.food_timer = data.food_timer;
  67. UserData.status.food = data.food;
  68. callback&&callback();
  69. }, args,errorFun)
  70. }
  71. // 重置新章节
  72. static sendBattleDuplicateResetMsg(mapID:number,callback) {
  73. let args = {
  74. chapter_id:mapID, //章节id,
  75. }
  76. LoginMgr.sendPost('battle', 'duplicate_reset', (data) => {
  77. console.log(data);
  78. callback&&callback();
  79. }, args)
  80. }
  81. //领取章节奖励
  82. static sendBattleDuplicateRewardMsg(mapID:number, callback) {
  83. let args = {
  84. chapter_id:mapID, //章节id
  85. }
  86. LoginMgr.sendPost('battle', 'duplicate', (data) => {
  87. console.log(data);
  88. for (const key in data.read_mails) {
  89. if (Object.prototype.hasOwnProperty.call(data.read_mails, key)) {
  90. const element = data.read_mails[key];
  91. // MailData.setMailReadById(key);
  92. callback&&callback();
  93. }
  94. }
  95. }, args)
  96. }
  97. //切换同种族角色
  98. static sendBattleDuplicateFightRoleMsg(typeID:number, callback) {
  99. let args = {
  100. rid:typeID, //角色id
  101. }
  102. LoginMgr.sendPost('battle', 'set_fight_role', (data) => {
  103. RoleData.fightRole = data.fight_role
  104. callback&&callback();
  105. }, args)
  106. }
  107. //根据布局数据获取类型ID
  108. static getDataWithLayoutValue(value:number):BattleLayoutData{
  109. let fightRole = RoleData.fightRole;
  110. let level = value%BattleLayoutScale;
  111. let raceID = (value-level)/BattleLayoutScale;
  112. let typeID = fightRole[raceID-1];
  113. return {typeID: typeID,raceID: raceID,level: level}
  114. }
  115. }