185 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
		
		
			
		
	
	
			185 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
|  | /* | |||
|  |  * @Author: WoNiu | |||
|  |  * @Date: 2024-03-26 11:44:58 | |||
|  |  * @LastEditTime: 2024-03-26 15:41:01 | |||
|  |  * @LastEditors: WoNiu | |||
|  |  * @Description: 幸运硬币效果类型 | |||
|  |  */ | |||
|  | import { | |||
|  |   _decorator, | |||
|  |   Sprite, | |||
|  |   Director, | |||
|  |   director, | |||
|  |   Node, | |||
|  |   tween, | |||
|  |   UITransform, | |||
|  |   v2, | |||
|  |   Color, | |||
|  | } from "cc"; | |||
|  | import { AnimationNode } from "../../GlobalScript/Animation/AnimationNode"; | |||
|  | import { BaseSprite } from "../../GlobalScript/CommonComponent/BaseSprite"; | |||
|  | import { NpkImage } from "../../Tool/NPKImage"; | |||
|  | import { CloseButtonNode } from "../Common/CloseButtonNode"; | |||
|  | import { GameRootSingleton } from "../GameRootController"; | |||
|  | import { ShowNodeBorder } from "../../GlobalScript/CommonComponent/ShowNodeBorder"; | |||
|  | const { ccclass, property } = _decorator; | |||
|  | 
 | |||
|  | /** | |||
|  |  * @description: 幸运硬币效果类型 | |||
|  |  */ | |||
|  | export enum LuckyType { | |||
|  |   // 前进三格
 | |||
|  |   GoThree = 0, | |||
|  |   // 移动到月光酒馆
 | |||
|  |   YeGuangJiuGuan, | |||
|  |   // 移动到决斗场
 | |||
|  |   JueDouChang, | |||
|  |   // 移动到海上列车
 | |||
|  |   HaiShangLieChe, | |||
|  |   // 我要双倍,点数x2
 | |||
|  |   Double, | |||
|  |   // 这是我的钱,点数减半
 | |||
|  |   Halve, | |||
|  |   // 骑士马战 ,点数+2w
 | |||
|  |   HorseCombat, | |||
|  |   // 装备修理, 点数-2w
 | |||
|  |   Servicing, | |||
|  |   // 收取费用,夺取其他人 2w 点数
 | |||
|  |   Charge, | |||
|  | } | |||
|  | 
 | |||
|  | @ccclass("LuckyCoinsNode") | |||
|  | export class LuckyCoinsNode extends Node { | |||
|  |   luckyType: LuckyType; | |||
|  | 
 | |||
|  |   // 幸运硬币的结果
 | |||
|  |   resultNode: Node; | |||
|  | 
 | |||
|  |   static show(type: LuckyType) { | |||
|  |     const node = new LuckyCoinsNode(type); | |||
|  |     GameRootSingleton.getInstance().DialogRootNode.addChild(node); | |||
|  |   } | |||
|  | 
 | |||
|  |   constructor(type: LuckyType) { | |||
|  |     super(); | |||
|  |     this.luckyType = type; | |||
|  | 
 | |||
|  |     this.addComponent(UITransform).anchorPoint = v2(0, 1); | |||
|  |     this.addComponent(ShowNodeBorder); | |||
|  | 
 | |||
|  |     this.initResultNode(); | |||
|  |     this.initLuckyAni(); | |||
|  |     this.delayShowResult(); | |||
|  |   } | |||
|  | 
 | |||
|  |   initActionButton() { | |||
|  |     const node = new CloseButtonNode(() => { | |||
|  |       this.initLuckyAni(); | |||
|  |     }); | |||
|  |     this.addChild(node); | |||
|  |   } | |||
|  | 
 | |||
|  |   initResultNode() { | |||
|  |     const node = new Node(); | |||
|  |     this.addChild(node); | |||
|  | 
 | |||
|  |     node.setPosition(443, -200); | |||
|  |     this.resultNode = node; | |||
|  | 
 | |||
|  |     node.active = false; | |||
|  | 
 | |||
|  |     const bs = node.addComponent(BaseSprite); | |||
|  |     bs.updateSpriteFrame(NpkImage.luckycoin, this.luckyType); | |||
|  |   } | |||
|  | 
 | |||
|  |   initLuckyAni() { | |||
|  |     const lucky = new AnimationNode("ani/luckycoin01.ani", () => { | |||
|  |       /// 这一帧结束之后调用
 | |||
|  |       director.once(Director.EVENT_END_FRAME, () => { | |||
|  |         // 销毁,销毁节点只能在当前帧结束后
 | |||
|  |         lucky.destroy(); | |||
|  |       }); | |||
|  |     }); | |||
|  |     lucky.setPosition(318.5, -107.5); | |||
|  |     this.addChild(lucky); | |||
|  |   } | |||
|  | 
 | |||
|  |   // 延迟显示结果
 | |||
|  |   delayShowResult() { | |||
|  |     setTimeout(() => { | |||
|  |       this.resultNode.active = true; | |||
|  |       setTimeout(() => { | |||
|  |         this.resultTweenDestroy(); | |||
|  |       }, 1000); | |||
|  |     }, 1600); | |||
|  |   } | |||
|  | 
 | |||
|  |   // 缓动消失
 | |||
|  |   resultTweenDestroy() { | |||
|  | 
 | |||
|  |     let obj = { x: 255 }; | |||
|  | 
 | |||
|  |     tween(obj) | |||
|  |       .to(0.5, { x: 1 }, { onUpdate: () => { | |||
|  |         const spr = this.resultNode.getComponent(Sprite); | |||
|  |         spr.color = new Color(255,255,255,obj.x); | |||
|  | 
 | |||
|  |         console.log(spr.color.a + ' - ' + obj.x); | |||
|  | 
 | |||
|  |       }, onComplete: () => { | |||
|  |         this.resultNode.active = false; | |||
|  |       },easing:'linear'}) | |||
|  |       .start(); | |||
|  |   } | |||
|  | 
 | |||
|  |   close(){ | |||
|  | 
 | |||
|  |   } | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | /** | |||
|  |  * @description: 幸运硬币事件 | |||
|  |  */ | |||
|  | export class LuckyAction { | |||
|  |     // 前进三格
 | |||
|  |   static GoThreeAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 移动到月光酒馆
 | |||
|  |   YeGuangJiuGuanAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 移动到决斗场
 | |||
|  |   JueDouChangAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 移动到海上列车
 | |||
|  |   HaiShangLieCheAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 我要双倍,点数x2
 | |||
|  |   DoubleAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 这是我的钱,点数减半
 | |||
|  |   HalveAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 骑士马战 ,点数+2w
 | |||
|  |   HorseCombatAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 装备修理, 点数-2w
 | |||
|  |   ServicingAction(){ | |||
|  |      | |||
|  |   } | |||
|  |   // 收取费用,夺取其他人 2w 点数
 | |||
|  |   ChargeAction(){ | |||
|  |      | |||
|  |   } | |||
|  |    | |||
|  |    | |||
|  |   } |