import { _decorator, Component, Game, Node } from "cc" import { GameCtr } from "../gameCtr" const { ccclass, property } = _decorator @ccclass("processCtr") export class processCtr extends Component { //消息队列 public messageQueue = [] public isProcessing = false private gameCtr: GameCtr = null; start() { } update(deltaTime: number) { } public init(gameCtr: GameCtr) { this.gameCtr = gameCtr; } processNextMessage = function () { if (this.isProcessing || this.messageQueue.length === 0) { return; // If a message is currently being processed or there's no message in the queue, exit } const data = this.messageQueue.shift(); // Dequeue the next message this.isProcessing = true; console.log("processDoing 处理消息:" + data.type + " 消息队列剩余:" + this.messageQueue.length) switch (data.type) { case "plot": this.handlePlotMessage(data) break case "options": this.handleOptionsMessage(data) break case "votes": this.handleVotesMessage(data) break case "voteResult": this.handleVoteResultMessage(data) break case "state": this.handleStateMessage(data) break case "timeChange": this.handleTimeMessage(data) break case "newCharactor": this.handleNewPalyerMessage(data) break case "death": this.handleDeathMessage(data) break case "reset": this.handleResetMessage(data) break default: console.warn("Unknown message type:", data.type) this.doneProcessing(); // Ensure processing flag is reset even for unknown types } }; doneProcessing = () => { this.isProcessing = false; this.processNextMessage(); // Check if there are more messages to process after current one is done }; private handlePlotMessage(data: any) { console.log("Received plot message:", data) // 在这里处理 "展示剧情" 类型的消息 this.gameCtr.handleStoryPannelMove(data); } private handleOptionsMessage(data: any) { console.log("Received options message:", data) // 在这里处理 "options" 类型的消息 this.gameCtr.handleOptions(data); } private handleVoteResultMessage(data: any) { console.log("Received VoteResult message:", data) // 在这里处理 "VoteResult" 类型的消息 this.gameCtr.handleVoteResul(data); } private handleVotesMessage(data: any) { console.log("Received votes message:", data) this.gameCtr.handleVotes(data); } private handleStateMessage(data: any) { console.log("Received State message:", data) // 在这里处理 "State" 类型的消息. this.gameCtr.handleStateResul(data); } private handleTimeMessage(data: any) { console.log("Received timeChange message:", data) // 在这里处理 "time change" 类型的消息. this.gameCtr.updateDateByWS(data); } private handleNewPalyerMessage(data: any) { console.log("Received newPlayer message:", data) // 在这里处理 "time change" 类型的消息. this.gameCtr.handleNewPlayer(data); } private handleResetMessage(data: any) { console.log("Received reset message:", data) // 在这里处理 "reset" 类型的消息. this.gameCtr.handleReset(data); } private handleDeathMessage(data: any) { console.log("Received death message:", data) // 在这里处理 "death" 类型的消息. this.gameCtr.handleDeath(data); } }