Dedicated server loads the name, password and other initial settings from the serversettings file. + Fixed not being able to change the server name if the current name is null or empty

This commit is contained in:
Joonas Rikkonen
2017-07-03 18:28:23 +03:00
parent 8e880b2ded
commit 0d7851367b
5 changed files with 59 additions and 10 deletions
@@ -113,11 +113,16 @@ namespace Barotrauma.Networking
{
serverIP = address[0];
if (!int.TryParse(address[1], out Port))
int port = 0;
if (!int.TryParse(address[1], out port))
{
DebugConsole.ThrowError("Invalid port: "+address[1]+"!");
Port = NetConfig.DefaultPort;
}
}
else
{
Port = port;
}
}
myCharacter = Character.Controlled;
+16 -1
View File
@@ -7,6 +7,7 @@ using Barotrauma.Networking;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using System.Threading;
using System.Xml.Linq;
namespace Barotrauma
{
@@ -100,7 +101,21 @@ namespace Barotrauma
public void StartServer()
{
Server = new GameServer("Dedicated Server Test", 14242, false, "asd", false, 10);
XDocument doc = ToolBox.TryLoadXml(GameServer.SettingsFile);
if (doc == null)
{
DebugConsole.ThrowError("File \""+GameServer.SettingsFile+"\" not found. Starting the server with default settings.");
Server = new GameServer("Server", 14242, false, "", false, 10);
return;
}
Server = new GameServer(
ToolBox.GetAttributeString(doc.Root, "name", "Server"),
ToolBox.GetAttributeInt(doc.Root, "port", 14242),
ToolBox.GetAttributeBool(doc.Root, "public", false),
ToolBox.GetAttributeString(doc.Root, "password", ""),
ToolBox.GetAttributeBool(doc.Root, "attemptupnp", false),
ToolBox.GetAttributeInt(doc.Root, "maxplayers", 10));
}
public void CloseServer()
@@ -24,8 +24,6 @@ namespace Barotrauma.Networking
private NetServer server;
private NetPeerConfiguration config;
private int MaxPlayers;
private DateTime refreshMasterTimer;
@@ -69,7 +67,7 @@ namespace Barotrauma.Networking
{
get { return updateInterval; }
}
public GameServer(string name, int port, bool isPublic = false, string password = "", bool attemptUPnP = false, int maxPlayers = 10)
{
name = name.Replace(":", "");
@@ -78,6 +76,7 @@ namespace Barotrauma.Networking
AdminAuthPass = "";
this.name = name;
this.Public = isPublic;
this.password = "";
if (password.Length>0)
{
@@ -171,6 +171,27 @@ namespace Barotrauma.Networking
}
}
[HasDefaultValue(8, true)]
private int MaxPlayers
{
get;
set;
}
[HasDefaultValue(false, true)]
private bool Public
{
get;
set;
}
[HasDefaultValue(false, true)]
private bool AttemptUPNP
{
get { return config.EnableUPnP; }
set { config.EnableUPnP = value; }
}
public YesNoMaybe TraitorsEnabled
{
get;
@@ -231,6 +252,10 @@ namespace Barotrauma.Networking
doc.Root.SetAttributeValue("TraitorsEnabled", TraitorsEnabled.ToString());
#if SERVER
doc.Root.SetAttributeValue("password", password);
#endif
if (GameMain.NetLobbyScreen != null
#if CLIENT
&& GameMain.NetLobbyScreen.ServerMessage != null
@@ -83,9 +83,6 @@ namespace Barotrauma.Networking
protected DateTime updateTimer;
public int EndVoteCount, EndVoteMax;
//private GUITextBlock endVoteText;
public int Port;
protected bool gameStarted;
@@ -94,13 +91,21 @@ namespace Barotrauma.Networking
protected RespawnManager respawnManager;
public Voting Voting;
[HasDefaultValue(14242, true)]
public int Port
{
get;
set;
}
[HasDefaultValue("", true)]
public string Name
{
get { return name; }
set
{
if (string.IsNullOrEmpty(name)) return;
if (string.IsNullOrEmpty(value)) return;
name = value;
}
}