BattleManager.ts 4.3 KB

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