fix: Updates first load configuration (#680)

<img width="814" alt="Screen Shot 2021-08-08 at 11 33 24 PM" src="https://user-images.githubusercontent.com/3953314/128667907-be43bf24-df7b-481b-ab0a-8b9094f01188.png">
This commit is contained in:
Kamron Batman 2021-08-08 23:42:10 -07:00 • committed by GitHub
parent b0f8fe0350
commit f795ab4698
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 91 additions and 51 deletions

View file

@ -27,8 +27,8 @@ namespace Server
{ {
private static readonly ILogger logger = LogFactory.GetLogger(typeof(ServerConfiguration)); private static readonly ILogger logger = LogFactory.GetLogger(typeof(ServerConfiguration));
private const string m_RelPath = "Configuration/modernuo.json"; private const string _relPath = "Configuration/modernuo.json";
private static readonly string m_FilePath = Path.Join(Core.BaseDirectory, m_RelPath); private static readonly string m_FilePath = Path.Join(Core.BaseDirectory, _relPath);
private static ServerSettings m_Settings; private static ServerSettings m_Settings;
private static bool m_Mocked; private static bool m_Mocked;
@ -181,16 +181,16 @@ namespace Server
if (File.Exists(m_FilePath)) if (File.Exists(m_FilePath))
{ {
logger.Information($"Reading server configuration from {m_RelPath}..."); logger.Information($"Reading server configuration from {_relPath}...");
m_Settings = JsonConfig.Deserialize<ServerSettings>(m_FilePath); m_Settings = JsonConfig.Deserialize<ServerSettings>(m_FilePath);
if (m_Settings == null) if (m_Settings == null)
{ {
logger.Error($"Reading server configuration failed"); logger.Error("Reading server configuration failed");
throw new FileNotFoundException($"Failed to deserialize {m_FilePath}."); throw new FileNotFoundException($"Failed to deserialize {m_FilePath}.");
} }
logger.Information($"Reading server configuration done"); logger.Information("Reading server configuration done");
} }
else else
{ {
@ -236,7 +236,10 @@ namespace Server
if (updated) if (updated)
{ {
Save(); Save();
logger.Information($"Server configuration saved to {m_RelPath}."); Console.Write("Server configuration saved to ");
Utility.PushColor(ConsoleColor.Green);
Console.WriteLine($"{_relPath}.");
Utility.PopColor();
} }
} }
@ -250,6 +253,9 @@ namespace Server
var input = Console.ReadLine(); var input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input) || input.InsensitiveStartsWith("n")) if (string.IsNullOrWhiteSpace(input) || input.InsensitiveStartsWith("n"))
{ {
Utility.PushColor(ConsoleColor.Yellow);
Console.WriteLine("New Haven chosen with no map diffs.");
Utility.PopColor();
return; return;
} }
@ -257,10 +263,18 @@ namespace Server
{ {
SetSetting("maps.enablePre6000Trammel", true.ToString()); SetSetting("maps.enablePre6000Trammel", true.ToString());
SetSetting("maps.enableMapDiffPatches", true.ToString()); SetSetting("maps.enableMapDiffPatches", true.ToString());
Utility.PushColor(ConsoleColor.Yellow);
Console.WriteLine("Old Haven chosen with map diffs.");
Utility.PopColor();
return; return;
} }
logger.Information($"Invalid option. ({input})"); Console.Write("Invalid option ");
Utility.PushColor(ConsoleColor.Red);
Console.Write(input);
Utility.PopColor();
Console.WriteLine(". Press y for yes or n for no.");
} while (true); } while (true);
} }
@ -280,25 +294,34 @@ namespace Server
do do
{ {
Console.Write("[{0}]> ", maxExpansionName); Console.Write("[enter for {0}]> ", maxExpansionName);
var input = Console.ReadLine(); var input = Console.ReadLine();
Expansion expansion;
if (string.IsNullOrWhiteSpace(input)) if (string.IsNullOrWhiteSpace(input))
{ {
return maxExpansion; expansion = maxExpansion;
} }
else if (int.TryParse(input, NumberStyles.Integer, null, out var number) &&
if (int.TryParse(input, NumberStyles.Integer, null, out var number) && number >= 0 && number >= 0 && number < expansions.Length)
number < expansions.Length)
{ {
return (Expansion)number; expansion = (Expansion)number;
} }
else if (!Enum.TryParse(input, out expansion))
if (Enum.TryParse<Expansion>(input, out var expansion))
{ {
return expansion; Utility.PushColor(ConsoleColor.Red);
Console.Write(input);
Utility.PopColor();
Console.WriteLine(" is an invalid expansion option.");
continue;
} }
logger.Information($"Invalid expansion. ({input})"); Console.Write("Expansion set to ");
Utility.PushColor(ConsoleColor.Green);
Console.Write(ExpansionInfo.GetInfo(expansion).Name);
Utility.PopColor();
Console.WriteLine(".");
return expansion;
} while (true); } while (true);
} }
@ -310,7 +333,7 @@ namespace Server
do do
{ {
Console.Write("{0}> ", directories.Count > 0 ? "[finish] " : " "); Console.Write("{0}> ", directories.Count > 0 ? "[enter to finish]" : " ");
var directory = Console.ReadLine(); var directory = Console.ReadLine();
if (string.IsNullOrWhiteSpace(directory)) if (string.IsNullOrWhiteSpace(directory))
{ {
@ -320,11 +343,18 @@ namespace Server
if (Directory.Exists(directory)) if (Directory.Exists(directory))
{ {
directories.Add(directory); directories.Add(directory);
logger.Information($"Path {directory} added."); Console.Write("Added ");
Utility.PushColor(ConsoleColor.Green);
Console.Write(directory);
Utility.PopColor();
Console.WriteLine(".");
} }
else else
{ {
logger.Information($"Path does not exist. ({directory})"); Utility.PushColor(ConsoleColor.Red);
Console.Write(directory);
Utility.PopColor();
Console.WriteLine(" does not exist.");
} }
} while (true); } while (true);
@ -342,33 +372,43 @@ namespace Server
do do
{ {
// IP:Port? // IP:Port?
Console.Write("[{0}]> ", ips.Count > 0 ? "finish" : "0.0.0.0:2593"); Console.Write("[{0}]> ", ips.Count > 0 ? "enter to finish" : "0.0.0.0:2593");
var ipStr = Console.ReadLine(); var ipStr = Console.ReadLine();
IPEndPoint ip;
if (string.IsNullOrWhiteSpace(ipStr)) if (string.IsNullOrWhiteSpace(ipStr))
{ {
break; if (ips.Count > 0)
} {
break;
}
if (!ipStr.ContainsOrdinal(':')) ip = new IPEndPoint(IPAddress.Any, 2593);
{
ipStr += ":2593";
}
if (IPEndPoint.TryParse(ipStr, out var ip))
{
ips.Add(ip);
logger.Information($"Core: {ipStr} added.");
} }
else else
{ {
logger.Information($"{ipStr} is not a valid IP or port"); if (!ipStr.ContainsOrdinal(':'))
} {
} while (true); ipStr += ":2593";
}
if (ips.Count == 0) if (!IPEndPoint.TryParse(ipStr, out ip))
{ {
ips.Add(new IPEndPoint(IPAddress.Any, 2593)); Utility.PushColor(ConsoleColor.Red);
} Console.Write(ipStr);
Utility.PopColor();
Console.WriteLine(" is not a valid IP or port.");
continue;
}
}
ips.Add(ip);
Console.Write("Added ");
Utility.PushColor(ConsoleColor.Green);
Console.Write(ip);
Utility.PopColor();
Console.WriteLine(".");
} while (true);
return ips; return ips;
} }

View file

@ -384,7 +384,7 @@ namespace Server
if (Assembly == null) if (Assembly == null)
{ {
throw new Exception("Core: Assembly entry is missing."); throw new Exception("Assembly entry is missing.");
} }
if (Thread != null) if (Thread != null)
@ -417,6 +417,17 @@ namespace Server
".TrimMultiline()); ".TrimMultiline());
Utility.PopColor(); Utility.PopColor();
ProcessorCount = Environment.ProcessorCount;
if (ProcessorCount > 1)
{
MultiProcessor = true;
}
Console.CancelKeyPress += Console_CancelKeyPressed;
ServerConfiguration.Load();
logger.Information($"Running on {RuntimeInformation.FrameworkDescription}"); logger.Information($"Running on {RuntimeInformation.FrameworkDescription}");
var s = Arguments; var s = Arguments;
@ -426,20 +437,11 @@ namespace Server
logger.Information($"Running with arguments: {s}"); logger.Information($"Running with arguments: {s}");
} }
ProcessorCount = Environment.ProcessorCount;
if (ProcessorCount > 1)
{
MultiProcessor = true;
}
if (MultiProcessor) if (MultiProcessor)
{ {
logger.Information($"Optimizing for {ProcessorCount} processor{(ProcessorCount == 1 ? "" : "s")}"); logger.Information($"Optimizing for {ProcessorCount} processor{(ProcessorCount == 1 ? "" : "s")}");
} }
Console.CancelKeyPress += Console_CancelKeyPressed;
if (GCSettings.IsServerGC) if (GCSettings.IsServerGC)
{ {
logger.Information("Server garbage collection mode enabled"); logger.Information("Server garbage collection mode enabled");
@ -447,8 +449,6 @@ namespace Server
logger.Information($"High resolution timing ({(Stopwatch.IsHighResolution ? "Supported" : "Unsupported")})"); logger.Information($"High resolution timing ({(Stopwatch.IsHighResolution ? "Supported" : "Unsupported")})");
ServerConfiguration.Load();
var assemblyPath = Path.Join(BaseDirectory, AssembliesConfiguration); var assemblyPath = Path.Join(BaseDirectory, AssembliesConfiguration);
// Load UOContent.dll // Load UOContent.dll