import { _decorator, Component, find, Label } from 'cc'; import { JCMGO } from '../ThirdParty/JCMGO'; const { ccclass, property } = _decorator; @ccclass('GameState') export class GameState extends Component { /**权威状态 */ authGameSystemState: GameSystemState; /**当前状态 */ gameSystemState: GameSystemState; /**本地存储的模拟服务器帧(用于本地预测) */ localMoniFrames: JCMGO.Frame[] = []; /**上一次上传帧输入到服务器的标志 */ lastSign: number = 0; /**最后一次上传帧输入的时间点 */ lastUploadTime: number = 0; /**我在房间内的索引位置 */ myPlayerIndex: number = 0; /**AI标志数组 */ aiFlags: boolean[] = []; /**房间匹配完成后的玩家信息列表 */ matchPlayerInfos: MatchPlayerInfo[]; /**帧同步是否已经开始 */ isFrameSyncStarted: boolean = false; onLoad() { let gameSystemState: GameSystemState = { time: 0, playerStates: [], winPlayerIndex: -1, readyComplete: false, gameOver: false, }; for (let i = 0; i < window.gm.config.maxMembers; i++) { let playerState: PlayerState = { index: i, moveX: 0, speedX: 0, lastAccTime: 0, accCount: 0, }; gameSystemState.playerStates.push(playerState); } this.authGameSystemState = gameSystemState; this.gameSystemState = JCMGO.ObjectUtils.merge({}, this.authGameSystemState) as GameSystemState; } }