From cb40c0a43c249c57328f7c5deb981606f925e8c1 Mon Sep 17 00:00:00 2001 From: "DESKTOP-J7I1C4E\\a9350" Date: Thu, 14 Mar 2024 14:19:45 +0800 Subject: [PATCH] =?UTF-8?q?1=20=E6=B7=BB=E5=8A=A0=E4=BA=86=20=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=BA=8B=E4=BB=B6=20Component=202=20=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E8=83=9C=E5=88=A9=E6=9D=A1=E4=BB=B6=203=20=E5=B0=86?= =?UTF-8?q?=20close=20=E6=8C=89=E9=92=AE=E5=B0=81=E8=A3=85=204=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=86=20=E6=8A=95=E9=AA=B0=E5=AD=90=20=E5=92=8C=20?= =?UTF-8?q?UIRoot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommonComponent/BaseButtonAction.ts | 55 ++++++++++++++++++ .../CommonComponent/BaseButtonAction.ts.meta | 9 +++ assets/Script/DiceButtonNode.ts | 56 +++++++++++------- assets/Script/OtherWinNode.ts | 58 +++++++++++++++++++ assets/Script/OtherWinNode.ts.meta | 9 +++ assets/Script/StartGameUINode.ts | 35 +++++------ assets/Script/UIRoot.ts | 38 +++++++++++- assets/Script/common.meta | 9 +++ assets/Script/common/closeButtonNode.ts | 29 ++++++++++ assets/Script/common/closeButtonNode.ts.meta | 9 +++ 10 files changed, 260 insertions(+), 47 deletions(-) create mode 100644 assets/GlobalScript/CommonComponent/BaseButtonAction.ts create mode 100644 assets/GlobalScript/CommonComponent/BaseButtonAction.ts.meta create mode 100644 assets/Script/OtherWinNode.ts create mode 100644 assets/Script/OtherWinNode.ts.meta create mode 100644 assets/Script/common.meta create mode 100644 assets/Script/common/closeButtonNode.ts create mode 100644 assets/Script/common/closeButtonNode.ts.meta diff --git a/assets/GlobalScript/CommonComponent/BaseButtonAction.ts b/assets/GlobalScript/CommonComponent/BaseButtonAction.ts new file mode 100644 index 0000000..7f09784 --- /dev/null +++ b/assets/GlobalScript/CommonComponent/BaseButtonAction.ts @@ -0,0 +1,55 @@ +import { _decorator, Component, EventMouse, Node } from 'cc'; +const { ccclass, property } = _decorator; + +@ccclass('BaseButtonAction') +export class BaseButtonAction extends Component { + + onMouseUp?: Function; + onMouseLeftUp?: Function; + onMouseRightUp?: Function; + + onMouseDown?: Function; + onMouseLeftDown?: Function; + onMouseRightDown?: Function; + + start() { + this.node.on(Node.EventType.MOUSE_UP,this._onMouseUp,this); + this.node.on(Node.EventType.MOUSE_DOWN,this._onMouseDown,this); + } + + private _onMouseUp(event:EventMouse){ + if (this.onMouseUp) this.onMouseUp(); + + switch (event.getButton()) { + case EventMouse.BUTTON_LEFT: + if (this.onMouseLeftUp) this.onMouseLeftUp(); + break; + case EventMouse.BUTTON_RIGHT: + if (this.onMouseRightUp) this.onMouseRightUp(); + break; + default: + break; + } + } + + private _onMouseDown(event:EventMouse){ + if (this.onMouseDown) this.onMouseDown(); + + switch (event.getButton()) { + case EventMouse.BUTTON_LEFT: + if (this.onMouseLeftDown) this.onMouseLeftDown(); + break; + case EventMouse.BUTTON_RIGHT: + if (this.onMouseRightDown) this.onMouseRightDown(); + break; + default: + break; + } + } + + update(deltaTime: number) { + + } +} + + diff --git a/assets/GlobalScript/CommonComponent/BaseButtonAction.ts.meta b/assets/GlobalScript/CommonComponent/BaseButtonAction.ts.meta new file mode 100644 index 0000000..12b1f7b --- /dev/null +++ b/assets/GlobalScript/CommonComponent/BaseButtonAction.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "297493e6-04d1-4d0f-a06b-0c8bd259ad71", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Script/DiceButtonNode.ts b/assets/Script/DiceButtonNode.ts index 6a7c95e..4866c5e 100644 --- a/assets/Script/DiceButtonNode.ts +++ b/assets/Script/DiceButtonNode.ts @@ -1,14 +1,21 @@ -import { _decorator, Component, EventMouse, Node } from 'cc'; +import { _decorator, Component, EventMouse, EventTouch, Node, UITransform } from 'cc'; import { BaseSprite } from '../GlobalScript/CommonComponent/BaseSprite'; import { NpkImage } from '../Tool/NPKImage'; import { BaseButton, BaseButtonState } from '../GlobalScript/CommonComponent/BaseButton'; -const { ccclass, property } = _decorator; +import { BaseButtonAction } from '../GlobalScript/CommonComponent/BaseButtonAction'; +const { ccclass } = _decorator; + +/// 投骰子按钮的整个节点 @ccclass('DiceButtonNode') export class DiceButtonNode extends Node { winButtonComponent: BaseButton; spaceButtonComponent: BaseButton; + + winButtonBlock: Function; + spaceDownBlock: Function; + spaceUpBlock: Function; constructor(){ super(); @@ -20,6 +27,12 @@ export class DiceButtonNode extends Node { /// 其他获胜条件 const winButtonNode = new Node(); + this.addChild(winButtonNode); + winButtonNode.setPosition(20.5,-123); + + const winBa = winButtonNode.addComponent(BaseButtonAction); + winBa.onMouseUp = this.winOnMouseUp.bind(this); + this.winButtonComponent = winButtonNode.addComponent( BaseButton ); this.winButtonComponent.ButtonState = BaseButtonState.Disable; this.winButtonComponent.ImgPath = NpkImage.ingame; @@ -27,13 +40,17 @@ export class DiceButtonNode extends Node { this.winButtonComponent.HoverImgIndex = 59; this.winButtonComponent.PressImgIndex = 60; this.winButtonComponent.DisableImgIndex = 61; - - this.addChild(winButtonNode); - winButtonNode.setPosition(20.5,-123); - // winButtonNode.on(Node.EventType.MOUSE_UP,this.winOnTouchUp,this); + /// space const spaceButtonNode = new Node(); + this.addChild(spaceButtonNode); + spaceButtonNode.setPosition(89,-57); + + const spaceBc = spaceButtonNode.addComponent( BaseButtonAction); + spaceBc.onMouseLeftDown = this.spaceOnMouseDown.bind(this); + spaceBc.onMouseLeftUp = this.spaceOnMouseUp.bind(this); + this.spaceButtonComponent = spaceButtonNode.addComponent( BaseButton ); this.spaceButtonComponent.ButtonState = BaseButtonState.Disable; this.spaceButtonComponent.ImgPath = NpkImage.ingame; @@ -42,27 +59,22 @@ export class DiceButtonNode extends Node { this.spaceButtonComponent.PressImgIndex = 10; this.spaceButtonComponent.DisableImgIndex = 11; - this.addChild(spaceButtonNode); - spaceButtonNode.setPosition(89,-57); - // spaceButtonNode.on(Node.EventType.MOUSE_DOWN,this.spaceOnTouchDown,this); - // spaceButtonNode.on(Node.EventType.MOUSE_UP,this.spaceOnTouchUp,this); - } - winOnTouchUp(event:EventMouse){ - if (event.getButton() != EventMouse.BUTTON_LEFT) return; - + /// 其他获胜条件 + private winOnMouseUp(event:EventMouse){ + if (this.winButtonComponent.ButtonState == BaseButtonState.Disable ) return; + if (this.winButtonBlock) this.winButtonBlock(); } - spaceOnTouchDown(event:EventMouse){ - if (event.getButton() != EventMouse.BUTTON_LEFT) return; - + /// 投骰子 + private spaceOnMouseDown(event:EventMouse){ + if (this.spaceButtonComponent.ButtonState == BaseButtonState.Disable ) return; + if (this.spaceDownBlock) this.spaceDownBlock(); } - spaceOnTouchUp(event:EventMouse){ - if (event.getButton() != EventMouse.BUTTON_LEFT) return; - + private spaceOnMouseUp(event: EventMouse){ + if (this.spaceButtonComponent.ButtonState == BaseButtonState.Disable ) return; + if (this.spaceUpBlock) this.spaceUpBlock(); } } - - diff --git a/assets/Script/OtherWinNode.ts b/assets/Script/OtherWinNode.ts new file mode 100644 index 0000000..a1e2f60 --- /dev/null +++ b/assets/Script/OtherWinNode.ts @@ -0,0 +1,58 @@ +import { _decorator, BlockInputEvents, Component, Node, Size, UITransform, v2 } from 'cc'; +import { BaseSprite } from '../GlobalScript/CommonComponent/BaseSprite'; +import { NpkImage } from '../Tool/NPKImage'; +import { closeButtonNode } from './common/closeButtonNode'; +const { ccclass, property } = _decorator; + +export enum otherWinType{ + /// 长跑达人 + longRun = 0, + /// 地轨中心的王 + groundKing = 1, + /// 哈林的王 + halinKing = 2, + /// 魔界大战的王 + hellWarKing = 3, + /// 切斯特小镇的王 + townsKing = 4, + /// 区域独占 + districtExclusive = 5 + +} + +/// 其他获胜条件 +@ccclass('OtherWinNode') +export class OtherWinNode extends Node { + + constructor(type:otherWinType){ + super(); + + this.setPosition(0,0); + this.addComponent( UITransform).setContentSize(new Size(1067,600)); + this.getComponent(UITransform).anchorPoint = v2(0, 1); + this.addComponent( BlockInputEvents ); + + /// 获胜条件图片 + const winImgNode = new Node(); + this.addChild(winImgNode); + + this.setPosition(366,-176.5); + + const winBs = winImgNode.addComponent( BaseSprite ); + winBs.updateSpriteFrame(NpkImage.conditionsofvictory,type); + + + /// 关闭按钮 + const closeNode = new closeButtonNode(()=>{ + this.active = false; + }); + winImgNode.addChild(closeNode); + + closeNode.setPosition(310,-15); + + } + + +} + + diff --git a/assets/Script/OtherWinNode.ts.meta b/assets/Script/OtherWinNode.ts.meta new file mode 100644 index 0000000..2e2d610 --- /dev/null +++ b/assets/Script/OtherWinNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "b5b4e31e-b152-4a72-968b-3aa98a6aaa77", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Script/StartGameUINode.ts b/assets/Script/StartGameUINode.ts index 3b975cf..cdbd4d1 100644 --- a/assets/Script/StartGameUINode.ts +++ b/assets/Script/StartGameUINode.ts @@ -5,6 +5,7 @@ import { BaseButton } from '../GlobalScript/CommonComponent/BaseButton'; import { AnimationNode } from '../GlobalScript/Animation/AnimationNode'; import { CharacterType, GamerNode } from './GamerNode'; import { UIRoot } from './UIRoot'; +import {closeButtonNode } from './common/closeButtonNode'; const { ccclass } = _decorator; /// 开始游戏按钮界面 @@ -118,14 +119,17 @@ export class StartGameUINode extends Node { initPressen(){ /// 节点 this.pressenNode = new Node('Pressen'); - this.pressenNode.setPosition(0,9999); + this.pressenNode.active = false; + this.addChild(this.pressenNode); + + this.pressenNode.setPosition(0,0); this.pressenNode.addComponent( UITransform).setContentSize(1067,600); this.pressenNode.getComponent(UITransform).anchorPoint = v2(0, 1); /// 拦截下层的点击事件 this.pressenNode.addComponent( BlockInputEvents ); - /// 给节点添加 img 节点 + /// 给节点添加 img const imgNode = new Node('PressenImage'); imgNode.setPosition(134,-21.5); const imgComponent = imgNode.addComponent( BaseSprite ); @@ -133,35 +137,22 @@ export class StartGameUINode extends Node { this.pressenNode.addChild(imgNode); /// 关闭按钮 - const closeButtonNode = new Node('closeButton'); - closeButtonNode.setPosition(767,-10); - imgNode.addChild(closeButtonNode); - - /// 给节点添加 button 组件 - const buttonComponent = closeButtonNode.addComponent( BaseButton ); - buttonComponent.ImgPath = NpkImage.ingame; - buttonComponent.NormalImgIndex = 39; - buttonComponent.HoverImgIndex = 40; - buttonComponent.PressImgIndex = 41; - buttonComponent.DisableImgIndex = 42; - - closeButtonNode.on(Node.EventType.MOUSE_UP,this.closeOnTouchEnd,this); - - this.addChild(this.pressenNode); + const closeNode = new closeButtonNode(this.closeOnTouchEnd.bind(this)); + closeNode.setPosition(767,-10); + imgNode.addChild(closeNode); + } /// 打开玩法介绍 pressenOnTouchEnd(event:EventMouse){ if ( event.getButton() === EventMouse.BUTTON_LEFT ){ - this.pressenNode.setPosition(0,0); + this.pressenNode.active = true; } } - /// 关闭玩法介绍 + closeOnTouchEnd(event:EventMouse){ - if ( event.getButton() === EventMouse.BUTTON_LEFT ){ - this.pressenNode.setPosition(0,9999); - } + this.pressenNode.active = false; } /// 开始游戏 diff --git a/assets/Script/UIRoot.ts b/assets/Script/UIRoot.ts index b51dae8..8124b88 100644 --- a/assets/Script/UIRoot.ts +++ b/assets/Script/UIRoot.ts @@ -6,6 +6,7 @@ import { NpkImage } from '../Tool/NPKImage'; import { AnimationNode } from '../GlobalScript/Animation/AnimationNode'; import { BaseButton, BaseButtonState } from '../GlobalScript/CommonComponent/BaseButton'; import { DiceButtonNode } from './DiceButtonNode'; +import { OtherWinNode, otherWinType } from './OtherWinNode'; const { ccclass } = _decorator; @ccclass('UIRoot') @@ -21,6 +22,8 @@ export class UIRoot extends Component { private gamerThree: GamerNode; /// 投骰子按钮 private diceButton: DiceButtonNode; + /// 其他胜利条件 + private otherWinNode: OtherWinNode; /// 初始化开始游戏界面的UI @@ -32,10 +35,14 @@ export class UIRoot extends Component { /// 初始化游戏界面UI initGameUI(){ - /// 初始化玩家UI + /// 玩家UI this.initGamerUI(); + /// 右下骰子操作按钮 this.initDiceButton(); + /// 等待玩家加载 this.initAwaitGamerUI(); + /// 其他胜利条件 + this.initOtherNode(); } /// 初始化玩家UI @@ -80,8 +87,10 @@ export class UIRoot extends Component { this.awaitGamerNode.destroy(); }); + this.aniDone(); + /// 初始化开始倒计时 - this.initCountFontAni(5); + // this.initCountFontAni(5); },2); } @@ -95,7 +104,8 @@ export class UIRoot extends Component { if (index > 1){ this.initCountFontAni(index-1); }else{ - this.diceButton.winButtonComponent.ButtonState = BaseButtonState.Normal; + /// 动画结束 + this.aniDone(); } }); ani.setPosition(420,-180); @@ -109,8 +119,30 @@ export class UIRoot extends Component { this.diceButton = new DiceButtonNode(); this.diceButton.setPosition(849,-453); this.node.addChild(this.diceButton); + + /// 显示其他胜利条件 + this.diceButton.winButtonBlock = ()=>{ + this.otherWinNode.active = true; + }; } + /// 初始化其他胜利条件 + initOtherNode(){ + this.otherWinNode = new OtherWinNode(otherWinType.longRun); + this.node.addChild(this.otherWinNode); + + this.otherWinNode.active = false; + } + + + aniDone(){ + /// 恢复其他胜利按钮的状态 + this.diceButton.winButtonComponent.ButtonState = BaseButtonState.Normal; + /// 显示其他胜利条件 + this.otherWinNode.active = true; + } + + start() { diff --git a/assets/Script/common.meta b/assets/Script/common.meta new file mode 100644 index 0000000..3c3be38 --- /dev/null +++ b/assets/Script/common.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "d818878d-a3a8-44f6-b015-3baf1193c4b9", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/Script/common/closeButtonNode.ts b/assets/Script/common/closeButtonNode.ts new file mode 100644 index 0000000..781458b --- /dev/null +++ b/assets/Script/common/closeButtonNode.ts @@ -0,0 +1,29 @@ +import { _decorator, Component, Node } from 'cc'; +import { BaseButton } from '../../GlobalScript/CommonComponent/BaseButton'; +import { NpkImage } from '../../Tool/NPKImage'; +import { BaseButtonAction } from '../../GlobalScript/CommonComponent/BaseButtonAction'; +const { ccclass, property } = _decorator; + +@ccclass('closeButtonNode') +export class closeButtonNode extends Node { + + constructor(onMouseLeftUp?:Function){ + super(); + + /// 给节点添加 button 组件 + const buttonComponent = this.addComponent( BaseButton ); + buttonComponent.ImgPath = NpkImage.ingame; + buttonComponent.NormalImgIndex = 39; + buttonComponent.HoverImgIndex = 40; + buttonComponent.PressImgIndex = 41; + buttonComponent.DisableImgIndex = 42; + + /// 添加点击事件 + const bba = this.addComponent( BaseButtonAction ); + bba.onMouseLeftUp = onMouseLeftUp; + + } + +} + + diff --git a/assets/Script/common/closeButtonNode.ts.meta b/assets/Script/common/closeButtonNode.ts.meta new file mode 100644 index 0000000..edffe9e --- /dev/null +++ b/assets/Script/common/closeButtonNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "9860c0fa-a57e-4bc5-9466-5d71cc5026ad", + "files": [], + "subMetas": {}, + "userData": {} +}