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); } }
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); }
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); }
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); } }
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); } }