private static void Buffer_AskFrame(AskFrame askFrame) { // p_AllMsg.AskFrame.frame = askFrame.frames; p_AllMsg.AskFrame.type = askFrame.type; foreach (int val in askFrame.frames) { p_AllMsg.AskFrame.frame.Add(val); } }
public static byte[] Serialize(BaseProtocol baseProtocol, NetworkMsg networkMsg, StartGame startGame = null, Frame frame = null, SyncFrame syncFrame = null, AskFrame askFrame = null )//在这可以继续添加要发送的Msg { p_AllMsg = new p_AllMsg(); if (baseProtocol != null) { Buffer_BaseProtocol(baseProtocol); } if (networkMsg != null) { Buffer_NetworkMsg(networkMsg); } if (networkMsg.type == (int)CmdType.START) { startGame = networkMsg as StartGame; Buffer_StartGame(startGame); } if (networkMsg.type == (int)CmdType.FRAME) { frame = networkMsg as Frame; Buffer_Frame(frame); } if (networkMsg.type == (int)CmdType.SYNC_FRAME) { Buffer_SyncFrame(syncFrame); } if (networkMsg.type == (int)CmdType.ASKFRAME) { askFrame = networkMsg as AskFrame; Buffer_AskFrame(askFrame); } return(Serialize <p_AllMsg>(p_AllMsg)); }
public void LogicTick() { if (!bstart) { return; } //DebugTool.TimeWactherStart(1); if (currentPlayer != null && !bSYN) { areaManager.find_nearby_areas(areaManager.nearby_areas, currentPlayer.get_area_id()); } else { areaManager.nearby_areas.Clear(); areaManager.areas.ForEach(i => areaManager.nearby_areas.Add(i)); } List <int> Tareas = new List <int>(); List <int> Tframs = new List <int>(); foreach (Area area in areaManager.nearby_areas) { // if (!area_exist(area, lagged_areas)) { area.Tick(); Tareas.Add(area.get_area_id()); Tframs.Add(area.CurrentFrame); } } // Console.WriteLine("AskFrame " + areaManager.nearby_areas[0].CurrentFrame ); currentPlayer = null; for (int n = 0; n < areaManager.areas.Count; ++n) { Area TArea = areaManager.areas[n]; if (TArea != null) { Console.WriteLine("TArea.logic_mgr.player_list.Count " + TArea.logic_mgr.player_list.Count + "\n"); for (int i = 0; i < TArea.logic_mgr.player_list.Count; ++i) { Player TPlayer = TArea.logic_mgr.player_list[i]; if (TPlayer.get_id() == player_id) { if (currentPlayer == null) { currentPlayer = TPlayer; } else { Console.WriteLine("Player " + player_id + " areaid " + currentPlayer.get_area_id() + " in other areas " + TArea.get_area_id()); } } if (TPlayer.get_area_id() != TArea.get_area_id()) { Console.WriteLine("Player id " + player_id + "!= areaid " + TArea.get_area_id()); } } } } if (bRecordFrame) { if (currentPlayer != null) { AreaCheck(currentPlayer);//跨区检测 ticktimes++; if (ticktimes > 5) { SyncFrame localFrame = LocalFrameRecord(currentPlayer); NetworkMsg msg = new Frame(player_id, localFrame); sendBuffer.Enqueue(msg); ticktimes = 0; } } else { Console.WriteLine(" currentPlayer " + player_id + " is not in any areas "); } AskFrame TAskFrame = new AskFrame(player_id, Tareas, Tframs); sendBuffer.Enqueue(TAskFrame); bRecordFrame = false; } // DebugTool.TimeWactherEnd(1,msg: "currentID"+player_id.ToString()); //DebugTool.PrintAvgWhileTime(1, msg: player_id.ToString()); }