| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import { _decorator, Component, Node, Label, Sprite, ImageAsset, SpriteFrame, Texture2D } from 'cc';
- import { DataSystem } from '../../core/data/DataSystem';
- import { Http, HttpResponseCode } from '../../core/net/Http';
- import { ResourceLoader } from '../../core/resourceManager/ResourceLoader';
- import { BitmapFont } from '../../core/ui/BitmapFont';
- import { WindowOpenMode } from '../../core/ui/window/WindowOpenMode';
- import { WindowSystem } from '../../core/ui/window/WindowSystem';
- import { ConfigData } from '../../data/ConfigData';
- import { ISJSB } from '../../data/jsb/platform';
- import { UserHeroData } from '../../hero/UserHeroData';
- import { PVPCardData } from '../../pvp/PVP';
- const { ccclass, property } = _decorator;
- /**好友约战Item*/
- @ccclass('FriendFightItem')
- export class FriendFightItem extends Component {
- @property({ type: ResourceLoader, displayName: "资源加载组件", tooltip: "资源加载组件" }) res: ResourceLoader = null;
- @property({ type: Http, displayName: "Http组件", tooltip: "Http组件" }) http: Http = null;
- @property({ type: Sprite, displayName: "头像", tooltip: "头像" }) imgHead: Sprite = null;
- @property({ type: Label, displayName: "文本昵称", tooltip: "文本昵称" }) txtNickName: Label = null;
- @property({ type: BitmapFont, displayName: "文本秒伤", tooltip: "文本秒伤" }) txtDevote: BitmapFont = null;
- @property({ type: Node, displayName: "挑战按钮", tooltip: "挑战按钮" }) nodeChallenge: Node = null;
- @property({ type: Node, displayName: "挑战胜利", tooltip: "挑战胜利" }) nodeWin: Node = null;
- private friendData: any;
- private isCanClick = true;
- /**当数据改动时*/
- public async onDataChange(data: { id: number, avator: string, nickName: string, attack: number, isChallengeWin: boolean }, index: number) {
- this.friendData = data;
- this.txtNickName.string = data.nickName;
- this.txtDevote.string = `${data.attack > 1000 ? (data.attack / 1000).toFixed(1) + "k" : data.attack}`;
- this.nodeChallenge.active = !data.isChallengeWin;
- this.nodeWin.active = data.isChallengeWin;
- if (ISJSB() && data.avator) {
- let img = await this.res.loadRemote<ImageAsset>(data.avator, { ext: ".png" });
- const spriteFrame = new SpriteFrame();
- const texture = new Texture2D();
- texture.image = img;
- spriteFrame.texture = texture;
- this.imgHead.spriteFrame = spriteFrame;
- }
- }
- 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 };
- }
- private async onClickChallenge() {
- if (!this.isCanClick) return;
- this.isCanClick = false;
- let result = await this.http.send("/api/pvp/ReadyPVP", { type: 3, enemyID: this.friendData.id });
- if (result && result.code == HttpResponseCode.Success) {
- let param = this.getPVPParam(result.data);
- WindowSystem.open("prefabs/pvp/pvp", WindowOpenMode.NotCloseAndCover, [param]);
- this.isCanClick = true;
- } else {
- WindowSystem.showTips("请求失败");
- this.isCanClick = true;
- }
- }
- }
|