public ClientServerInformation ParseServerInformation(NetworkPackage package) { var result = new ClientServerInformation(); var keyValuePairs = ParseAdditionalDataString(package.AdditionalData); result.ServerName = keyValuePairs["name"]; result.ServerEndPoint = new UdpIpEndPoint(keyValuePairs["address"], int.Parse(keyValuePairs["port"])); result.Capacity = int.Parse(keyValuePairs["capacity"]); result.PlayerCount = int.Parse(keyValuePairs["players"]); result.UsePassword = bool.Parse(keyValuePairs["usepassword"]); return(result); }
public NetworkPackage CreatePlayerJoinRequest(ClientServerInformation server, PlayerIdentity player, String password = "") { var result = new NetworkPackage(NetworkPackageType.ClientPlayerJoinRequest); var data = new Dictionary <String, object>(); data.Add("playeridentity", player.ToString()); data.Add("playername", player.Name); // If a password is provided, add it SHA1 hashed to the package if (password != String.Empty) { data.Add("password", Plaform.HashString(password)); } result.AdditionalData = result.CreateAdditionalDataString(data); return(result); }
public override bool HandlePackageResponse(NetworkPackage package) { try { if (base.HandlePackageResponse(package)) { return(true); } if (package.PackageType == NetworkPackageType.ServerDiscovertResponse) { var clientServerInformation = ParseServerInformation(package); AddDiscoveredServer(clientServerInformation); } }catch (Exception e) { throw new BonaVirtualGamePadException("Failed to handle package, se inner exception", e); } return(false); }
public NetworkPackage CreateNetworkDiscoveryResponse(UdpIpEndPoint listeningEndpoint, GamePadServer gamePadServer) { var result = new NetworkPackage(NetworkPackageType.ServerDiscovertResponse); var localIp = UdpClient.GetLocalIp(); var listeningPort = listeningEndpoint.Port; var usePassword = (gamePadServer.ServerPassword != String.Empty); var data = new Dictionary <String, object>(); data.Add("address", localIp); data.Add("port", listeningEndpoint.Port); data.Add("name", gamePadServer.ServerName); data.Add("capacity", gamePadServer.GetPlayerCapacity()); data.Add("players", gamePadServer.GetPlayerCount()); data.Add("usepassword", usePassword); result.AdditionalData = result.CreateAdditionalDataString(data); return(result); }
public NetworkPackage CreateNetworkDiscoveryRequest() { var result = new NetworkPackage(NetworkPackageType.ClientDiscoveryRequest); return(result); }
public void SendPackage(NetworkPackage package, UdpIpEndPoint targetEndpoint) { var dataToSend = package.ToByteArray(); UdpClient.SendPackage(dataToSend, dataToSend.Length, targetEndpoint); }
public virtual bool HandlePackageResponse(NetworkPackage package) { return(false); }