/// <summary> /// Return the list of servers that match the version specified /// </summary> private static void SendServerLists(NetIncomingMessage netMsg, NetPeer peer) { foreach (var server in ServerDictionary.Values.ToArray()) { var msgData = MasterServerMessageFactory.CreateNewMessageData <MsReplyServersMsgData>(); msgData.Id = server.Info.Id; msgData.ServerVersion = server.Info.ServerVersion; msgData.Password = server.Info.Password; msgData.Cheats = server.Info.Cheats; msgData.Description = server.Info.Description; msgData.DropControlOnExit = server.Info.DropControlOnExit; msgData.DropControlOnExitFlight = server.Info.DropControlOnExitFlight; msgData.DropControlOnVesselSwitching = server.Info.DropControlOnVesselSwitching; msgData.ExternalEndpoint = $"{server.ExternalEndpoint.Address}:{server.ExternalEndpoint.Port}"; msgData.GameMode = server.Info.GameMode; msgData.InternalEndpoint = $"{server.InternalEndpoint.Address}:{server.InternalEndpoint.Port}"; msgData.MaxPlayers = server.Info.MaxPlayers; msgData.ModControl = server.Info.ModControl; msgData.PlayerCount = server.Info.PlayerCount; msgData.ServerName = server.Info.ServerName; msgData.VesselUpdatesSendMsInterval = server.Info.VesselUpdatesSendMsInterval; msgData.WarpMode = server.Info.WarpMode; msgData.TerrainQuality = server.Info.TerrainQuality; var msg = MasterServerMessageFactory.CreateNew <MainMstSrvMsg>(msgData); var outMsg = peer.CreateMessage(msg.GetMessageSize()); msg.Serialize(outMsg); peer.SendUnconnectedMessage(outMsg, netMsg.SenderEndPoint); peer.FlushSendQueue(); msg.Recycle(); } }
/// <summary> /// Return the list of servers that match the version specified /// </summary> private static void SendServerLists(NetIncomingMessage netMsg, NetPeer peer) { var values = ServerDictionary.Values.OrderBy(v => v.Info.Id).ToArray(); var msgData = MasterServerMessageFactory.CreateNewMessageData <MsReplyServersMsgData>(); msgData.ServersCount = values.Length; msgData.Id = values.Select(s => s.Info.Id).ToArray(); msgData.ServerVersion = values.Select(s => s.Info.ServerVersion).ToArray(); msgData.Cheats = values.Select(s => s.Info.Cheats).ToArray(); msgData.Description = values.Select(s => s.Info.Description).ToArray(); msgData.DropControlOnExit = values.Select(s => s.Info.DropControlOnExit).ToArray(); msgData.DropControlOnExitFlight = values.Select(s => s.Info.DropControlOnExit).ToArray(); msgData.DropControlOnVesselSwitching = values.Select(s => s.Info.DropControlOnExit).ToArray(); msgData.ExternalEndpoint = values.Select(s => $"{s.ExternalEndpoint.Address}:{s.ExternalEndpoint.Port}").ToArray(); msgData.GameMode = values.Select(s => s.Info.GameMode).ToArray(); msgData.InternalEndpoint = values.Select(s => $"{s.InternalEndpoint.Address}:{s.InternalEndpoint.Port}").ToArray(); msgData.MaxPlayers = values.Select(s => s.Info.MaxPlayers).ToArray(); msgData.ModControl = values.Select(s => s.Info.ModControl).ToArray(); msgData.PlayerCount = values.Select(s => s.Info.PlayerCount).ToArray(); msgData.ServerName = values.Select(s => s.Info.ServerName).ToArray(); msgData.VesselUpdatesSendMsInterval = values.Select(s => s.Info.VesselUpdatesSendMsInterval).ToArray(); msgData.WarpMode = values.Select(s => s.Info.WarpMode).ToArray(); msgData.TerrainQuality = values.Select(s => s.Info.TerrainQuality).ToArray(); var msg = MasterServerMessageFactory.CreateNew <MainMstSrvMsg>(msgData); var outMsg = peer.CreateMessage(msg.GetMessageSize()); msg.Serialize(outMsg); peer.SendUnconnectedMessage(outMsg, netMsg.SenderEndPoint); peer.FlushSendQueue(); msg.Recycle(); }
/// <summary> /// Return the list of servers that match the version specified /// </summary> private static void SendServerLists(NetIncomingMessage netMsg, NetPeer peer, string version) { var values = ServerDictionary.Values.Where(s => s.Info.Version == version).OrderBy(v => v.Info.Id); var msgData = new MsReplyServersMsgData { Id = values.Select(s => s.Info.Id).ToArray(), Cheats = values.Select(s => s.Info.Cheats).ToArray(), Description = values.Select(s => s.Info.Description).ToArray(), DropControlOnExit = values.Select(s => s.Info.DropControlOnExit).ToArray(), DropControlOnExitFlight = values.Select(s => s.Info.DropControlOnExit).ToArray(), DropControlOnVesselSwitching = values.Select(s => s.Info.DropControlOnExit).ToArray(), ExternalEndpoint = values.Select(s => s.ExternalEndpoint.Address + ":" + s.ExternalEndpoint.Port).ToArray(), GameMode = values.Select(s => s.Info.GameMode).ToArray(), InternalEndpoint = values.Select(s => s.InternalEndpoint.Address + ":" + s.InternalEndpoint.Port).ToArray(), MaxPlayers = values.Select(s => s.Info.MaxPlayers).ToArray(), ModControl = values.Select(s => s.Info.ModControl).ToArray(), PlayerCount = values.Select(s => s.Info.PlayerCount).ToArray(), ServerName = values.Select(s => s.Info.ServerName).ToArray(), VesselUpdatesSendMsInterval = values.Select(s => s.Info.VesselUpdatesSendMsInterval).ToArray(), WarpMode = values.Select(s => s.Info.WarpMode).ToArray() }; var msg = MasterServerMessageFactory.CreateNew <MainMstSrvMsg>(msgData); var data = MasterServerMessageFactory.Serialize(msg); var outMsg = peer.CreateMessage(data.Length); outMsg.Write(data); peer.SendUnconnectedMessage(outMsg, netMsg.SenderEndPoint); peer.FlushSendQueue(); }
public void SendMessageToClient(DataMessage msg) { if (server.ConnectionsCount > 0) { NetworkMessage sm = new NetworkMessage(); // Temporary switch (msg.type) { case DataMessage_Type.GAME_STATE: GameStateMessage gameStateMsg = msg as GameStateMessage; sm.Set_Data(gameStateMsg); break; case DataMessage_Type.PLAYER_UPDATE: PlayerUpdateMessage playerMsg = msg as PlayerUpdateMessage; sm.Set_Data(playerMsg); break; case DataMessage_Type.FENCE_HIT: FenceHitMessage fMsg = msg as FenceHitMessage; sm.Set_Data(fMsg); break; case DataMessage_Type.MISSLE_MINE: MissileMineMessage MMMsg = msg as MissileMineMessage; sm.Set_Data(msg); break; case DataMessage_Type.ROTATION: RotationMessage rMsg = msg as RotationMessage; sm.Set_Data(msg); break; case DataMessage_Type.MISSILEUPDATE: MissileUpdateMessage tmsg = msg as MissileUpdateMessage; sm.Set_Data(msg); break; case DataMessage_Type.GAME_OVER: GAMEOVERMESSAGE gomsg = msg as GAMEOVERMESSAGE; sm.Set_Data(msg); break; default: break; } NetOutgoingMessage om = server.CreateMessage(); om.Write(sm.Serialize()); server.SendMessage(om, server.Connections, NetDeliveryMethod.ReliableOrdered, 4); server.FlushSendQueue(); } }
public bool sendMessage(Protocol.Type protocol, string text, NetIncomingMessage recipient) { NetOutgoingMessage om = peer.CreateMessage(); om.Write((int)protocol); om.Write(text); peer.SendMessage(om, recipient.SenderConnection, NetDeliveryMethod.ReliableOrdered); //peer.sen peer.FlushSendQueue(); return(true); }
internal void SilentUpdate() { if (IsDisposed) { return; } // Recycle inbound packets that the user has read from the last frame foreach (var localGamer in localGamers) { localGamer.RecycleInboundPackets(); } ReceiveMessages(); if (IsDisposed) { return; } // Add delayed inbound packets if sender has joined (Might add new inbound packets) foreach (var localGamer in localGamers) { localGamer.TryAddDelayedInboundPackets(); } RegisterWithMasterServer(); peer.FlushSendQueue(); UpdateMachineRoundtrips(); gameStartRequestThisFrame = false; gameEndRequestThisFrame = false; resetReadyRequestThisFrame = false; }
/// <summary> /// Return the list of servers that match the version specified /// </summary> private static void SendServerLists(NetIncomingMessage netMsg, NetPeer peer) { foreach (var server in ServerDictionary.Values.ToArray()) { var msgData = MasterServerMessageFactory.CreateNewMessageData <MsReplyServersMsgData>(); msgData.Id = server.Id; msgData.ServerVersion = server.ServerVersion; msgData.Password = server.Password; msgData.Cheats = server.Cheats; msgData.Description = server.Description; msgData.Country = server.Country; msgData.Website = server.Website; msgData.WebsiteText = server.WebsiteText; msgData.RainbowEffect = server.RainbowEffect; Array.Copy(server.Color, msgData.Color, 3); msgData.ExternalEndpoint = server.ExternalEndpoint; msgData.GameMode = server.GameMode; msgData.InternalEndpoint = server.InternalEndpoint; msgData.InternalEndpoint6 = server.InternalEndpoint6; msgData.MaxPlayers = server.MaxPlayers; msgData.ModControl = server.ModControl; msgData.DedicatedServer = server.DedicatedServer; msgData.PlayerCount = server.PlayerCount; msgData.ServerName = server.ServerName; msgData.VesselUpdatesSendMsInterval = server.VesselUpdatesSendMsInterval; msgData.WarpMode = server.WarpMode; msgData.TerrainQuality = server.TerrainQuality; var msg = MasterServerMessageFactory.CreateNew <MainMstSrvMsg>(msgData); var outMsg = peer.CreateMessage(msg.GetMessageSize()); msg.Serialize(outMsg); peer.SendUnconnectedMessage(outMsg, netMsg.SenderEndPoint); //Force send of packets peer.FlushSendQueue(); } }
public void Flush() { _netPeer.FlushSendQueue(); }