BattleManager.ts 5.3 KB

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