void CheckCurrentSingleComponentLogic(DebugMsg msg, ComponentInfo info) { SingletonComponent sc = m_world.GetSingletonComp(info.m_compName); if (info.m_compName == "MapGridStateComponent") { MapGridStateComponent lmsc = (MapGridStateComponent)sc; MapGridStateComponent msc = des.Deserialize <MapGridStateComponent>(info.content); if (!JudgeDict(msc.globalRandomCellHaveItemList, lmsc.globalRandomCellHaveItemList)) { string content = Serializer.Serialize(sc); string log = "error: frame" + msg.frame + " currentFrame:" + m_world.FrameCount + " singleComp:" + info.m_compName + "\n remote:" + info.content + "\n local:" + content + "\n"; Debug.LogWarning(log); OutPutDebugRecord(); } } else { string content = Serializer.Serialize(sc); if (!content.Equals(info.content)) { RecordSystemBase rsb = m_world.GetRecordSystemBase(info.m_compName); string log = "error: frame" + msg.frame + " currentFrame:" + m_world.FrameCount + " singleComp:" + info.m_compName + "\n remote:" + info.content + "\n local:" + content + "\n"; Debug.LogWarning(log); rsb.PrintRecord(0); Time.timeScale = 0; OutPutDebugRecord(); } else { //Debug.Log("singleComp correct ! frame " + msg.frame + " m_world:" + m_world.FrameCount + "\ncontent " + info.content); } } }
public override void EndFrame(int deltaTime) { if (!isDebug) { return; } DebugMsg msg = new DebugMsg(); msg.frame = m_world.FrameCount; msg.seed = m_world.m_RandomSeed; msg.infos = new List <EntityInfo>(); msg.singleCompInfo = new List <ComponentInfo>(); for (int i = 0; i < m_world.m_entityList.Count; i++) { msgCache.Append(m_world.m_entityList[i].ID + "\n"); } msg.msg = msgCache.ToString(); msgCache.Clear(); for (int i = 0; i < m_world.m_entityList.Count; i++) { EntityBase eb = m_world.m_entityList[i]; bool isFilter = false; if (isPlayerOnly && !eb.GetExistComp(ComponentType.ConnectionComponent)) { isFilter = true; } if (isFlyObject && !eb.GetExistComp(ComponentType.FlyObjectComponent)) { isFilter = true; } if (isFilter) { continue; } EntityInfo einfo = new EntityInfo(); einfo.id = eb.ID; einfo.infos = new List <ComponentInfo>(); foreach (var item in eb.comps) { if (item == null) { continue; } if (item.GetType().IsSubclassOf(typeof(PlayerCommandBase))) { CommandComponent cc = (CommandComponent)item; ComponentInfo info = new ComponentInfo(); cc.time = 0; cc.id = eb.ID; cc.frame = m_world.FrameCount; info.m_compName = item.GetType().Name; info.content = Serializer.Serialize(item); einfo.infos.Add(info); } else if (IsFilter(item.GetType().Name)) { ComponentInfo info = new ComponentInfo(); info.m_compName = item.GetType().Name; info.content = Serializer.Serialize(item); einfo.infos.Add(info); } } if (einfo.infos.Count > 0) { msg.infos.Add(einfo); } } for (int i = 0; i < SingleCompFilter.Length; i++) { SingletonComponent sc = m_world.GetSingletonComp(SingleCompFilter[i]); ComponentInfo info = new ComponentInfo(); info.m_compName = SingleCompFilter[i]; info.content = Serializer.Serialize(sc); if (info.m_compName == "MapGridStateComponent") { MapGridStateComponent lmsc = (MapGridStateComponent)sc; MapGridStateComponent msc = des.Deserialize <MapGridStateComponent>(info.content); if (!JudgeDict(msc.globalRandomCellHaveItemList, lmsc.globalRandomCellHaveItemList)) { Debug.Log("验证错误" + m_world.FrameCount); } else { Debug.Log("验证通过 " + m_world.FrameCount); } } msg.singleCompInfo.Add(info); } List <EntityBase> list = GetEntityList(); for (int i = 0; i < list.Count; i++) { ConnectionComponent cc = list[i].GetComp <ConnectionComponent>(); ProtocolAnalysisService.SendMsg(cc.m_session, msg); } }