| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- import { _decorator, Component, Node, Label } from 'cc';
- import { DataSystem } from '../../core/data/DataSystem';
- import { Http, HttpResponseCode } from '../../core/net/Http';
- import { WindowOpenMode } from '../../core/ui/window/WindowOpenMode';
- import { WindowSystem } from '../../core/ui/window/WindowSystem';
- import { ConfigData } from '../../data/ConfigData';
- import { UserData } from '../../data/UserData';
- import { UserHeroData } from '../../hero/UserHeroData';
- import { PVPCardData } from '../../pvp/PVP';
- import { ReportThinking } from '../../ReportThinking';
- import { BeAttackBonusData, FightData } from '../FightData';
- import { FightRewardItem } from '../item/FightRewardItem';
- const { ccclass, property } = _decorator;
- @ccclass('RevengeNoticeUI')
- export class RevengeNoticeUI extends Component {
- @property({ type: Label, tooltip: "文本敌人名字" })
- txtEnemyName: Label = null;
- @property({ type: [FightRewardItem], tooltip: "奖励类型Item数组" })
- rewardItems: FightRewardItem[] = [];
- private revengeData: BeAttackBonusData;
- private isCanClick = true;
- start() {
- let fightData = DataSystem.getData(FightData);
- if (fightData.beAttackNoticeList && fightData.beAttackNoticeList.length > 0) {
- this.revengeData = fightData.beAttackNoticeList[0];
- this.txtEnemyName.string = this.revengeData.nickName;
- 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');
- let type = 1;
- switch (this.revengeData.lossType) {
- case "money": type = 1; DataSystem.getData(UserData).money >= this.revengeData.lossNum ? DataSystem.getData(UserData).money -= this.revengeData.lossNum : DataSystem.getData(UserData).money = 0; break;
- case "diamond": type = 2; DataSystem.getData(UserData).diamond >= this.revengeData.lossNum ? DataSystem.getData(UserData).diamond -= this.revengeData.lossNum : DataSystem.getData(UserData).diamond = 0; break;
- case "bonus": type = 3; DataSystem.getData(UserData).bonus >= this.revengeData.lossNum ? DataSystem.getData(UserData).bonus -= this.revengeData.lossNum : DataSystem.getData(UserData).bonus = 0; break;
- case "prestige": type = 4; DataSystem.getData(UserData).prestige >= this.revengeData.lossNum ? DataSystem.getData(UserData).prestige -= this.revengeData.lossNum : DataSystem.getData(UserData).prestige = 0; break;
- }
- this.rewardItems[type - 1].node.active = true;
- this.rewardItems[type - 1].txtRewardNum.string = `${this.revengeData.lossNum > 10000 ? (this.revengeData.lossNum / 1000).toFixed(1) + "k" : this.revengeData.lossNum}`;
- }
- }
- /**获取PVP战斗参数*/
- private getPVPParam(data: any) {
- let g1: Array<PVPCardData> = [];
- let g2: Array<PVPCardData> = [];
- let key: number = parseInt(data.key);
- let baseHit = DataSystem.getData(ConfigData).get("serverConfig").pvpBaseDamge;
- let buff = DataSystem.getData(ConfigData).get("buff");
- let myHeros: any[] = data.myHeroDatas.heroDatas;
- let myFHeros: any[] = data.myFriendHeroDatas;
- let enemyHeros: any[] = data.enemyHeroDatas.heroDatas;
- let enemyFHeros: any[] = data.enemyFriendHeroDatas;
- let userData = DataSystem.getData(UserHeroData);
- for (let i = 0; i < myHeros.length; i++) {
- let tempHero = userData.get(myHeros[i].id).client;
- let temp = new PVPCardData(myHeros[i].id, myHeros[i].lv, myHeros[i].star, tempHero.color, tempHero.camp, data.myHeroDatas.avator);
- g1.push(temp);
- }
- for (let i = 0; i < myFHeros.length; i++) {
- let tempHero = userData.get(myFHeros[i].heroData.id).client;
- let temp = new PVPCardData(myFHeros[i].heroData.id, myFHeros[i].heroData.lv, myFHeros[i].heroData.star, tempHero.color, tempHero.camp, myFHeros[i].avator);
- g1.push(temp);
- }
- for (let i = 0; i < enemyHeros.length; i++) {
- let tempHero = userData.get(enemyHeros[i].id).client;
- let temp = new PVPCardData(enemyHeros[i].id, enemyHeros[i].lv, enemyHeros[i].star, tempHero.color, tempHero.camp, data.enemyHeroDatas.avator);
- g2.push(temp);
- }
- for (let i = 0; i < enemyFHeros.length; i++) {
- let tempHero = userData.get(enemyFHeros[i].heroData.id).client;
- let temp = new PVPCardData(enemyFHeros[i].heroData.id, enemyFHeros[i].heroData.lv, enemyFHeros[i].heroData.star, tempHero.color, tempHero.camp, enemyFHeros[i].avator);
- g2.push(temp);
- }
- return { g1: g1, g2: g2, key: key, baseHit: baseHit, buff: buff };
- }
- /**
- * PVP准备
- * @param type pvp类型 0 随机 1 好友 2 复仇 3 挑战
- * @param enemyID 敌人编号 如果是随机 就填0
- */
- private async PvpReady(type: number, enemyID: number) {
- let result = await this.getComponent(Http).send("/api/pvp/ReadyPVP", { type: type, enemyID: enemyID });
- if (result && result.code == HttpResponseCode.Success) {
- let param = this.getPVPParam(result.data);
- console.log("Ready Param: ", param);
- WindowSystem.open("prefabs/pvp/pvp", WindowOpenMode.CloseAndAdd, [param]);
- } else {
- WindowSystem.showTips("请求失败");
- }
- }
- /**点击复仇*/
- private async onClickRevenge() {
- if (!this.isCanClick) return;
- this.isCanClick = false;
- await this.PvpReady(2, this.revengeData.enemyID);
- }
- onDestroy() {
- let fightData = DataSystem.getData(FightData);
- fightData.beAttackNoticeList && fightData.beAttackNoticeList.splice(0, 1);
- if (fightData.beAttackNoticeList && fightData.beAttackNoticeList.length > 0) {
- WindowSystem.open("prefabs/ui/fight/revengeNoticeUI", WindowOpenMode.NotCloseAndAdd);
- }
- }
- }
|