import { _decorator, Component, Director, director, Node, UITransform, } from "cc"; import { StartGameUINode } from "./StartGameUINode"; import { CharacterType, GamerNode } from "./GamerNode"; import { BaseSprite } from "../GlobalScript/CommonComponent/BaseSprite"; import { NpkImage } from "../Tool/NPKImage"; import { AnimationNode } from "../GlobalScript/Animation/AnimationNode"; import { BaseButtonState } from "../GlobalScript/CommonComponent/BaseButton"; import { DiceButtonNode } from "./DiceButtonNode"; import { OtherWinNode, otherWinType } from "./OtherWinNode"; import { BoardRoot } from "./BoardRoot"; const { ccclass } = _decorator; @ccclass("UIRoot") export class UIRoot extends Component { /// 等待玩家 private awaitGamerNode: Node; /// 玩家一 private gamerOne: GamerNode; /// 玩家二 private gamerTwo: GamerNode; /// 玩家三 private gamerThree: GamerNode; /// 投骰子按钮 private diceButton: DiceButtonNode; /// 其他胜利条件 private otherWinNode: OtherWinNode; /// 初始化开始游戏界面的UI initStartGameUI() { const startGameUINode = new StartGameUINode(); startGameUINode.addComponent(UITransform).setContentSize(1067, 600); this.node.addChild(startGameUINode); } /// 初始化游戏界面UI initGameUI() { /// 玩家UI this.initGamerUI(); /// 右下骰子操作按钮 this.initDiceButton(); /// 等待玩家加载 this.initAwaitGamerUI(); /// 其他胜利条件 this.initOtherNode(); } /// 初始化玩家UI initGamerUI() { this.gamerOne = new GamerNode("玩家一"); this.gamerOne.setPosition(0, -540); this.gamerOne.charchterType = CharacterType.JianHun; this.node.addChild(this.gamerOne); this.gamerTwo = new GamerNode(""); this.gamerTwo.setPosition(877, 0); this.node.addChild(this.gamerTwo); this.gamerThree = new GamerNode(""); this.node.addChild(this.gamerThree); this.initDiceButton(); } /// 初始化加载UI initAwaitGamerUI() { const node = new Node(); node.setPosition(177.5, -244.5); this.node.addChild(node); const spr = node.addComponent(BaseSprite); spr.updateSpriteFrame(NpkImage.loading_loop, 0); const ani = new AnimationNode("ani/loading_loop01.ani"); ani.setPosition(350, -110); node.addChild(ani); this.awaitGamerNode = node; /// 2秒后 结束加载 setTimeout(() => { /// 这一帧结束之后销毁 director.once(Director.EVENT_END_FRAME, () => { // 销毁 this.awaitGamerNode.destroy(); /// 初始化开始倒计时动画 // this.initCountFontAni(5); }); this.aniDone(); }, 2000); } /// 初始化倒计时动画 initCountFontAni(index: number) { const ani = new AnimationNode("ani/dnf_quiz_" + index + ".ani", () => { director.once(Director.EVENT_END_FRAME, () => { ani.destroy(); }); if (index > 1) { this.initCountFontAni(index - 1); } else { /// 动画结束 this.aniDone(); } }); ani.setPosition(420, -180); this.node.addChild(ani); } /// 初始化投骰子按钮 initDiceButton() { 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; const boardNode = this.node.parent.getChildByName("BoardRoot"); /// 显示最底层的地图块 const board = boardNode.getComponent(BoardRoot); board.initMapTile(); } start() { this.node.addComponent(UITransform).setContentSize(1067, 600); this.initStartGameUI(); } update(deltaTime: number) {} }