void ReceviceSyncEntity(SyncEntityMsg msg, params object[] objs)
    {
        //Debug.Log("ReceviceSyncEntity frame " + msg.frame);

        //SyncDebugSystem.LogAndDebug("ReceviceSyncEntity frame " + msg.frame);

        if (m_world.IsStart)
        {
            ServerCacheComponent rc = m_world.GetSingletonComp <ServerCacheComponent>();

            ServiceMessageInfo info = new ServiceMessageInfo();
            info.m_frame = msg.frame;
            info.m_type  = MessageType.SyncEntity;
            info.m_msg   = msg;

            //TODO 服务器缓存 未清除
            rc.m_messageList.Add(info);

            Recalc(msg.frame);
            clearReson = "ReceviceSyncEntity";
        }
        else
        {
            ExecuteSyncEntity(msg);
        }
    }
Пример #2
0
        private void InitComponentCache()
        {
            Components = new Dictionary <Type, GameServerComponent>();



            Components[typeof(MonolithComponent)]    = new MonolithComponent(this);
            Components[typeof(DaytimeComponent)]     = new DaytimeComponent(this);
            Components[typeof(MundaneComponent)]     = new MundaneComponent(this);
            Components[typeof(MessageComponent)]     = new MessageComponent(this);
            Components[typeof(ObjectComponent)]      = new ObjectComponent(this);
            Components[typeof(PingComponent)]        = new PingComponent(this);
            Components[typeof(ServerCacheComponent)] = new ServerCacheComponent(this);
        }
Пример #3
0
    List <ServiceMessageInfo> LoadMessage(int frameCount)
    {
        List <ServiceMessageInfo> list = new List <ServiceMessageInfo>();
        ServerCacheComponent      rc   = m_world.GetSingletonComp <ServerCacheComponent>();

        for (int i = 0; i < rc.m_messageList.Count; i++)
        {
            if (frameCount == rc.m_messageList[i].m_frame)
            {
                list.Add(rc.m_messageList[i]);
            }
        }

        return(list);
    }
Пример #4
0
    void ReceviceDestroyEntityMsg(DestroyEntityMsg msg, params object[] objs)
    {
        Debug.Log("ReceviceDestroyEntityMsg");

        ServerCacheComponent rc = m_world.GetSingletonComp <ServerCacheComponent>();

        ServiceMessageInfo info = new ServiceMessageInfo();

        info.m_frame = msg.frame;
        info.m_type  = MessageType.DestroyEntity;
        info.m_msg   = msg;

        rc.m_messageList.Add(info);

        Recalc(msg.frame);
    }
    void ReceviceSyncEntity(SyncEntityMsg msg, params object[] objs)
    {
        //Debug.Log("ReceviceSyncEntity frame " + msg.frame);
        //SyncDebugSystem.LogAndDebug("ReceviceSyncEntity frame " + msg.frame);

        if (m_world.IsStart)
        {
            ServerCacheComponent rc = m_world.GetSingletonComp <ServerCacheComponent>();

            ServiceMessageInfo info = new ServiceMessageInfo();
            info.m_frame = msg.frame;
            info.m_type  = MessageType.SyncEntity;
            info.m_msg   = msg;

            //TODO 服务器缓存 未清除,并且这里可能有问题,导致主动复活出错,原因应该是实体同步指令未执行,因为帧数已错过
            rc.m_messageList.Add(info);

            Recalc();
        }
        else
        {
            //List<int> idList = new List<int>();

            ////删除多余的实体
            //for (int i = 0; i < msg.infos.Count; i++)
            //{
            //    idList.Add(msg.infos[i].id);
            //}

            //for (int i = 0; i < m_world.m_entityList.Count; i++)
            //{
            //    if(!idList.Contains( m_world.m_entityList[i].ID))
            //    {
            //        m_world.DestroyEntityImmediately(m_world.m_entityList[i].ID);
            //    }
            //}

            ExecuteSyncEntity(msg);
        }
    }
Пример #6
0
    void ReceviceChangeSingletonCompMsg(ChangeSingletonComponentMsg msg, params object[] objs)
    {
        Debug.Log("ChangeSingletonCompMsg");

        if (m_world.IsStart)
        {
            ServerCacheComponent rc = m_world.GetSingletonComp <ServerCacheComponent>();

            ServiceMessageInfo info = new ServiceMessageInfo();
            info.m_frame = msg.frame;
            info.m_type  = MessageType.ChangeSingletonComponent;
            info.m_msg   = msg;

            rc.m_messageList.Add(info);

            Recalc(msg.frame);
        }
        else
        {
            ExecuteChangeSingletonCompMsg(msg);
        }
    }