RevengeNoticeUI.ts 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { _decorator, Component, Node, Label } from 'cc';
  2. import { DataSystem } from '../../core/data/DataSystem';
  3. import { Http, HttpResponseCode } from '../../core/net/Http';
  4. import { WindowOpenMode } from '../../core/ui/window/WindowOpenMode';
  5. import { WindowSystem } from '../../core/ui/window/WindowSystem';
  6. import { ConfigData } from '../../data/ConfigData';
  7. import { UserData } from '../../data/UserData';
  8. import { UserHeroData } from '../../hero/UserHeroData';
  9. import { PVPCardData } from '../../pvp/PVP';
  10. import { ReportThinking } from '../../ReportThinking';
  11. import { BeAttackBonusData, FightData } from '../FightData';
  12. import { FightRewardItem } from '../item/FightRewardItem';
  13. const { ccclass, property } = _decorator;
  14. @ccclass('RevengeNoticeUI')
  15. export class RevengeNoticeUI extends Component {
  16. @property({ type: Label, tooltip: "文本敌人名字" })
  17. txtEnemyName: Label = null;
  18. @property({ type: [FightRewardItem], tooltip: "奖励类型Item数组" })
  19. rewardItems: FightRewardItem[] = [];
  20. private revengeData: BeAttackBonusData;
  21. private isCanClick = true;
  22. start() {
  23. let fightData = DataSystem.getData(FightData);
  24. if (fightData.beAttackNoticeList && fightData.beAttackNoticeList.length > 0) {
  25. this.revengeData = fightData.beAttackNoticeList[0];
  26. this.txtEnemyName.string = this.revengeData.nickName;
  27. ReportThinking.currency_decrease(this.revengeData.lossType, DataSystem.getData(UserData)[this.revengeData.lossType], this.revengeData.lossNum, -DataSystem.getData(UserData)[this.revengeData.lossType] - this.revengeData.lossNum, 'pvpLoss');
  28. let type = 1;
  29. switch (this.revengeData.lossType) {
  30. case "money": type = 1; DataSystem.getData(UserData).money >= this.revengeData.lossNum ? DataSystem.getData(UserData).money -= this.revengeData.lossNum : DataSystem.getData(UserData).money = 0; break;
  31. case "diamond": type = 2; DataSystem.getData(UserData).diamond >= this.revengeData.lossNum ? DataSystem.getData(UserData).diamond -= this.revengeData.lossNum : DataSystem.getData(UserData).diamond = 0; break;
  32. case "bonus": type = 3; DataSystem.getData(UserData).bonus >= this.revengeData.lossNum ? DataSystem.getData(UserData).bonus -= this.revengeData.lossNum : DataSystem.getData(UserData).bonus = 0; break;
  33. case "prestige": type = 4; DataSystem.getData(UserData).prestige >= this.revengeData.lossNum ? DataSystem.getData(UserData).prestige -= this.revengeData.lossNum : DataSystem.getData(UserData).prestige = 0; break;
  34. }
  35. this.rewardItems[type - 1].node.active = true;
  36. this.rewardItems[type - 1].txtRewardNum.string = `${this.revengeData.lossNum > 10000 ? (this.revengeData.lossNum / 1000).toFixed(1) + "k" : this.revengeData.lossNum}`;
  37. }
  38. }
  39. /**获取PVP战斗参数*/
  40. private getPVPParam(data: any) {
  41. let g1: Array<PVPCardData> = [];
  42. let g2: Array<PVPCardData> = [];
  43. let key: number = parseInt(data.key);
  44. let baseHit = DataSystem.getData(ConfigData).get("serverConfig").pvpBaseDamge;
  45. let buff = DataSystem.getData(ConfigData).get("buff");
  46. let myHeros: any[] = data.myHeroDatas.heroDatas;
  47. let myFHeros: any[] = data.myFriendHeroDatas;
  48. let enemyHeros: any[] = data.enemyHeroDatas.heroDatas;
  49. let enemyFHeros: any[] = data.enemyFriendHeroDatas;
  50. let userData = DataSystem.getData(UserHeroData);
  51. for (let i = 0; i < myHeros.length; i++) {
  52. let tempHero = userData.get(myHeros[i].id).client;
  53. let temp = new PVPCardData(myHeros[i].id, myHeros[i].lv, myHeros[i].star, tempHero.color, tempHero.camp, data.myHeroDatas.avator);
  54. g1.push(temp);
  55. }
  56. for (let i = 0; i < myFHeros.length; i++) {
  57. let tempHero = userData.get(myFHeros[i].heroData.id).client;
  58. let temp = new PVPCardData(myFHeros[i].heroData.id, myFHeros[i].heroData.lv, myFHeros[i].heroData.star, tempHero.color, tempHero.camp, myFHeros[i].avator);
  59. g1.push(temp);
  60. }
  61. for (let i = 0; i < enemyHeros.length; i++) {
  62. let tempHero = userData.get(enemyHeros[i].id).client;
  63. let temp = new PVPCardData(enemyHeros[i].id, enemyHeros[i].lv, enemyHeros[i].star, tempHero.color, tempHero.camp, data.enemyHeroDatas.avator);
  64. g2.push(temp);
  65. }
  66. for (let i = 0; i < enemyFHeros.length; i++) {
  67. let tempHero = userData.get(enemyFHeros[i].heroData.id).client;
  68. let temp = new PVPCardData(enemyFHeros[i].heroData.id, enemyFHeros[i].heroData.lv, enemyFHeros[i].heroData.star, tempHero.color, tempHero.camp, enemyFHeros[i].avator);
  69. g2.push(temp);
  70. }
  71. return { g1: g1, g2: g2, key: key, baseHit: baseHit, buff: buff };
  72. }
  73. /**
  74. * PVP准备
  75. * @param type pvp类型 0 随机 1 好友 2 复仇 3 挑战
  76. * @param enemyID 敌人编号 如果是随机 就填0
  77. */
  78. private async PvpReady(type: number, enemyID: number) {
  79. let result = await this.getComponent(Http).send("/api/pvp/ReadyPVP", { type: type, enemyID: enemyID });
  80. if (result && result.code == HttpResponseCode.Success) {
  81. let param = this.getPVPParam(result.data);
  82. console.log("Ready Param: ", param);
  83. WindowSystem.open("prefabs/pvp/pvp", WindowOpenMode.CloseAndAdd, [param]);
  84. } else {
  85. WindowSystem.showTips("请求失败");
  86. }
  87. }
  88. /**点击复仇*/
  89. private async onClickRevenge() {
  90. if (!this.isCanClick) return;
  91. this.isCanClick = false;
  92. await this.PvpReady(2, this.revengeData.enemyID);
  93. }
  94. onDestroy() {
  95. let fightData = DataSystem.getData(FightData);
  96. fightData.beAttackNoticeList && fightData.beAttackNoticeList.splice(0, 1);
  97. if (fightData.beAttackNoticeList && fightData.beAttackNoticeList.length > 0) {
  98. WindowSystem.open("prefabs/ui/fight/revengeNoticeUI", WindowOpenMode.NotCloseAndAdd);
  99. }
  100. }
  101. }