Exemplo n.º 1
0
        public FrameState GetPlayerState(long guid)
        {
            if (!m_frameStateDic.ContainsKey(guid) || m_frameStateDic[guid].Count <= 0)
            {
                return(FrameState.zero);
            }

            int        curFrame        = Math.Min(m_frameStateDic[guid].Count, syncInOutMuti + 1);
            FrameState result          = m_frameStateDic[guid][curFrame - 1];
            int        willRemoveFrams = 0;

            if (m_frameStateDic[guid].Count <= syncInOutMuti)
            {
                willRemoveFrams = curFrame - 1;
            }
            else if (m_frameStateDic[guid].Count > syncInOutMuti + maxFrameBuffedSize)
            {
                willRemoveFrams = m_frameStateDic[guid].Count - 1;
            }
            else
            {
                willRemoveFrams = syncInOutMuti;
            }
            for (int i = 0; i < willRemoveFrams; i++)
            {
                m_frameStateDic[guid].RemoveAt(0);
            }
            return(result);
        }
Exemplo n.º 2
0
        void CS_MoveSyncHandle(long guid, CS_MoveSync msg)
        {
            EntryManager.Instance.MoveSync(guid, msg.pos, msg.dir);
            FrameState frameState = new FrameState(msg.pos, msg.dir);

            FrameSyncManager.Instance.FrameAdd(guid, frameState);
        }
Exemplo n.º 3
0
 public void FrameAdd(long guid, FrameState state)
 {
     if (!m_frameStateDic.ContainsKey(guid))
     {
         m_frameStateDic.Add(guid, new List <FrameState>());
     }
     m_frameStateDic[guid].Add(state);
 }
Exemplo n.º 4
0
        void UpdatePlayerMoveSyncOther()
        {
            m_playerMoveSyncTime += deltaTime;
            if (m_playerMoveSyncTime < GameConfig.PlayerMoveSyncInterval)
            {
                return;
            }
            m_playerMoveSyncTime -= GameConfig.PlayerMoveSyncInterval;

            List <Player> playerList = GetPlayerList();

            for (int i = playerList.Count - 1; i >= 0; i--)
            {
                Player             player  = playerList[i];
                SC_MoveSyncOther   msg     = new SC_MoveSyncOther();
                List <PlayerState> tmpList = new List <PlayerState>();
                for (int j = playerList.Count - 1; j >= 0; j--)
                {
                    Player otherPlayer = playerList[j];
                    if (otherPlayer.guid != player.guid)
                    {
                        FrameState  fState = FrameSyncManager.Instance.GetPlayerState(otherPlayer.guid);
                        PlayerState pState = new PlayerState();
                        pState.guid   = otherPlayer.guid;
                        pState.pos    = fState.pos;
                        pState.dir    = fState.dir;
                        pState.radius = otherPlayer.radius;
                        tmpList.Add(pState);
                    }
                }

                msg.playerStateList = tmpList.ToArray <PlayerState>();
                if (msg.playerStateList.Length > 0)
                {
                    SessionManager.Instance.SendTo(player.guid, msg);
                }
            }
        }