| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import { _decorator, Component, Node, SpriteFrame, find, Sprite, Vec3, UITransform, EventHandler } from 'cc';
- import { DataSystem } from '../core/data/DataSystem';
- import { ResourceLoader } from '../core/resourceManager/ResourceLoader';
- import { Sound } from '../core/sound/Sound';
- import { WindowSystem } from '../core/ui/window/WindowSystem';
- import { Utils } from '../core/utils/Utils';
- import { UserData } from '../data/UserData';
- import { LevelBonusData } from '../levelBonus/LevelBonusData';
- import { UserInfo } from '../main/UserInfo';
- import { Trajectory } from './Trajectory';
- const { ccclass, property, requireComponent } = _decorator;
- @ccclass('PrizeFly')
- @requireComponent(ResourceLoader)
- export class PrizeFly extends Component {
- @property({ tooltip: "飞行动画结束回调", type: EventHandler }) public tweenBack: EventHandler;
- @property({ tooltip: "粮草飞行节点", type: Node }) private money: Node;
- @property({ tooltip: "元宝飞行节点", type: Node }) private diamond: Node;
- @property({ tooltip: "元宝飞行节点点将台元宝", type: Node }) private diamondRecruit: Node;
- @property({ tooltip: "元宝飞行节点抽卡页元宝", type: Node }) private diamondRecruitGeneral: Node;
- @property({ tooltip: "红包币飞行节点", type: Node }) private bonus: Node;
- @property({ tooltip: "关卡红包飞行节点", type: Node }) private redBox: Node;
- @property({ tooltip: "威望石飞行节点", type: Node }) private prestige: Node;
- @property({ tooltip: "音效节点", type: Sound }) private sound: Sound;
- private backTimes = 6;
- private prizeNum = 0;//奖品数目
- private prizeType = 0;//奖品类型
- start() {
- }
- //窗口打开回调
- public async setData(data: { type: number, num: number, position: Vec3, isWorldPos: boolean }) {
- this.prizeNum = data.num;
- this.prizeType = data.type;
- let targetNode: Node = null;
- let iconType = 0;
- switch (this.prizeType) {
- case 1://粮草
- iconType = 3;
- targetNode = this.money;
- // targetNode = find("Canvas/界面层/底部布局/底部按钮/训练");
- break;
- case 2://元宝
- iconType = 6;
- targetNode = this.diamond;
- // targetNode = find("Canvas/界面层/点将按钮/当前元宝信息/元宝图标");
- break;
- case 3://红包币
- iconType = 1;
- targetNode = this.bonus;
- // targetNode = find("Canvas/界面层/玩家信息/红包币框/红包图标");
- break;
- case 4://关卡红包
- iconType = 9;
- targetNode = this.redBox;
- break
- case 5://元宝飞行节点点将台元宝
- iconType = 6;
- targetNode = this.diamondRecruit;
- break
- case 6://元宝飞行节点抽卡页元宝
- iconType = 6;
- targetNode = this.diamondRecruitGeneral;
- break
- case 7://威望石飞行节点
- iconType = 8;
- targetNode = this.prestige;
- break
- default:
- WindowSystem.close(this.node);
- return;
- }
- let img = await this.getComponent(ResourceLoader).load<SpriteFrame>("image/icons/icon" + iconType + "/spriteFrame", SpriteFrame);
- this.prizeType == 4 && (this.backTimes = 1);
- for (let i = 0; i < this.backTimes; i++) {
- let node = new Node();
- //附加图片组件
- node.addComponent(Sprite);
- node.getComponent(Sprite).spriteFrame = img;
- node.addComponent(Trajectory);
- if (data.position) {
- data.isWorldPos ? node.worldPosition = this.node.getComponent(UITransform).convertToNodeSpaceAR(data.position) : node.setPosition(data.position);
- } else {
- node.setPosition(new Vec3(0, 105, 0));
- }
- let trajectory = node.getComponent(Trajectory);
- trajectory.startPoint = node.position;
- trajectory.ctrl1Point = new Vec3(Utils.random_both(80, -80) + node.position.x, Utils.random_both(0, -200) + node.position.y);
- trajectory.ctrl2Point = new Vec3(Utils.random_both(50, -50) + node.position.x, Utils.random_both(100, -100) + node.position.y);
- trajectory.endPoint = this.node.getComponent(UITransform).convertToNodeSpaceAR(targetNode.getWorldPosition());
- trajectory.backFn = this.tweenBack;
- this.node.addChild(node);
- }
- this.prizeType != 4 && this.sound.play();
- }
- public backFn() {
- this.backTimes--;
- if (!this.backTimes) {
- this.prizeType == 4 && this.sound.play(1);
- WindowSystem.close(this.node);
- }
- }
- onDestroy() {
- switch (this.prizeType) {
- case 1://粮草
- DataSystem.getData(UserData).money += this.prizeNum;
- break;
- case 2://元宝
- DataSystem.getData(UserData).diamond += this.prizeNum;
- break;
- case 3://红包币
- DataSystem.getData(UserData).bonus += this.prizeNum;
- break;
- case 4:
- DataSystem.getData(LevelBonusData).showSaveTimes += this.prizeNum;
- break;
- case 5://元宝
- DataSystem.getData(UserData).diamond += this.prizeNum;
- break;
- case 6://元宝
- DataSystem.getData(UserData).diamond += this.prizeNum;
- break;
- case 7://威望石
- DataSystem.getData(UserData).prestige += this.prizeNum;
- break;
- }
- }
- }
|