| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- 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 () {
- console.log('加入队列')
- console.log(this.messageQueue)
- 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);
- }
- }
|