Ejemplo n.º 1
0
        public static List <SyncedData> Decode(byte[] data)
        {
            List <SyncedData> @new = SyncedData.poolList.GetNew();

            @new.Clear();
            int i   = 0;
            int num = BitConverter.ToInt32(data, i);

            i += 4;
            byte ownerID = data[i++];
            byte b       = data[i++];
            bool flag    = data[i++] == 1;
            int  num2    = num;

            while (i < data.Length)
            {
                SyncedData new2 = SyncedData.pool.GetNew();
                new2.Init(ownerID, num2--);
                new2.inputData.Deserialize(data, ref i);
                @new.Add(new2);
            }
            bool flag2 = @new.Count > 0;

            if (flag2)
            {
                @new[0].dropPlayer       = flag;
                @new[0].dropFromPlayerId = b;
            }
            return(@new);
        }
        private SyncedData UpdateData()
        {
            bool       flag = this.replayMode == ReplayMode.LOAD_REPLAY;
            SyncedData result;

            if (flag)             // 加载回放模式
            {
                result = null;
            }
            else // 非加载回放模式
            {
                SyncedData @new = SyncedData.pool.GetNew();                 // 从池中获取
                @new.Init(this.localPlayer.ID, this.ticks);
                this.GetLocalData(@new.inputData); // 把玩家操作数据放入SyncedData实例中
                this.localPlayer.AddData(@new);    // 把SyncedData实例放入本地玩家的操作数据字典中

                bool flag2 = this.communicator != null;
                if (flag2)                                                                                                                   // 有通信器
                {
                    this.localPlayer.GetSendData(this.ticks, this._syncedDataCacheUpdateData);                                               // 把最新的操作数据放入_syncedDataCacheUpdateData中
                    this.communicator.OpRaiseEvent(199, SyncedData.Encode(this._syncedDataCacheUpdateData), true, this.auxActivePlayersIds); // 发送操作数据
                }
                result = @new;
            }
            return(result);
        }
Ejemplo n.º 3
0
        public SyncedData clone()
        {
            SyncedData @new = SyncedData.pool.GetNew();

            @new.Init(this.inputData.ownerID, this.tick);
            @new.inputData.CopyFrom(this.inputData);
            return(@new);
        }