processCtr.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { _decorator, Component, Game, Node } from "cc"
  2. import { GameCtr } from "../gameCtr"
  3. const { ccclass, property } = _decorator
  4. @ccclass("processCtr")
  5. export class processCtr extends Component {
  6. //消息队列
  7. public messageQueue = []
  8. public isProcessing = false
  9. private gameCtr :GameCtr = null;
  10. start() {
  11. }
  12. update(deltaTime: number) {
  13. }
  14. public init(gameCtr:GameCtr)
  15. {
  16. this.gameCtr = gameCtr;
  17. }
  18. processNextMessage = function() {
  19. console.log("processDoing"+this.isProcessing+" "+this.messageQueue.length)
  20. if (this.isProcessing || this.messageQueue.length === 0) {
  21. return; // If a message is currently being processed or there's no message in the queue, exit
  22. }
  23. const data = this.messageQueue.shift(); // Dequeue the next message
  24. this.isProcessing = true;
  25. switch (data.type) {
  26. case "plot":
  27. this.handlePlotMessage(data)
  28. break
  29. case "options":
  30. this.handleOptionsMessage(data)
  31. break
  32. case "votes":
  33. this.handleVotesMessage(data)
  34. break
  35. case "voteResult":
  36. this.handleVoteResultMessage(data)
  37. break
  38. case "state":
  39. this.handleStateMessage(data)
  40. break
  41. default:
  42. console.warn("Unknown message type:", data.type)
  43. this.doneProcessing(); // Ensure processing flag is reset even for unknown types
  44. }
  45. };
  46. doneProcessing = () => {
  47. this.isProcessing = false;
  48. this.processNextMessage(); // Check if there are more messages to process after current one is done
  49. };
  50. private handlePlotMessage(data: any) {
  51. console.log("Received plot message:", data)
  52. // 在这里处理 "展示剧情" 类型的消息
  53. this.gameCtr.handleStoryPannelMove(data);
  54. }
  55. private handleOptionsMessage(data: any) {
  56. console.log("Received options message:", data)
  57. // 在这里处理 "options" 类型的消息
  58. this.gameCtr.handleOptions(data);
  59. }
  60. private handleVoteResultMessage(data: any) {
  61. console.log("Received VoteResult message:", data)
  62. // 在这里处理 "VoteResult" 类型的消息
  63. this.gameCtr.handleVoteResul(data);
  64. }
  65. private handleVotesMessage(data: any) {
  66. console.log("Received votes message:", data)
  67. this.doneProcessing()
  68. }
  69. private handleStateMessage(data: any) {
  70. console.log("Received State message:", data)
  71. // 在这里处理 "State" 类型的消息.
  72. // this.gameCtr.handleStateResul(data);
  73. this.doneProcessing()
  74. }
  75. }