From c62b9cd079be0c46a23577553e2a95b4722fa61c Mon Sep 17 00:00:00 2001 From: Robin Kanters Date: Sat, 16 May 2015 13:00:28 +0200 Subject: [PATCH] Moved config loading to parent class of Serverconfig and Accessconfig --- TrueCraft.API/Configuration.cs | 30 +++++++++++++++ TrueCraft.API/TrueCraft.API.csproj | 4 ++ TrueCraft/AccessConfiguration.cs | 2 +- TrueCraft/Handlers/LoginHandlers.cs | 4 +- TrueCraft/MultiplayerServer.cs | 2 + TrueCraft/Program.cs | 37 +++---------------- ...onfiguration.cs => ServerConfiguration.cs} | 4 +- TrueCraft/TrueCraft.csproj | 2 +- 8 files changed, 48 insertions(+), 37 deletions(-) create mode 100644 TrueCraft.API/Configuration.cs rename TrueCraft/{Configuration.cs => ServerConfiguration.cs} (93%) diff --git a/TrueCraft.API/Configuration.cs b/TrueCraft.API/Configuration.cs new file mode 100644 index 0000000..67632b6 --- /dev/null +++ b/TrueCraft.API/Configuration.cs @@ -0,0 +1,30 @@ +using System.IO; +using YamlDotNet.Serialization; + +namespace TrueCraft.API +{ + public abstract class Configuration + { + public static T LoadConfiguration(string configFileName) where T : new() + { + T config; + + if (File.Exists(configFileName)) + { + var deserializer = new Deserializer(ignoreUnmatched: true); + using (var file = File.OpenText(configFileName)) + config = deserializer.Deserialize(file); + } + else + { + config = new T(); + } + + var serializer = new Serializer(); + using (var writer = new StreamWriter(configFileName)) + serializer.Serialize(writer, config); + + return config; + } + } +} diff --git a/TrueCraft.API/TrueCraft.API.csproj b/TrueCraft.API/TrueCraft.API.csproj index 808568c..7e6e9e2 100644 --- a/TrueCraft.API/TrueCraft.API.csproj +++ b/TrueCraft.API/TrueCraft.API.csproj @@ -30,8 +30,12 @@ + + ..\packages\YamlDotNet.3.5.1\lib\net35\YamlDotNet.dll + + diff --git a/TrueCraft/AccessConfiguration.cs b/TrueCraft/AccessConfiguration.cs index 21d0f0d..27963fc 100644 --- a/TrueCraft/AccessConfiguration.cs +++ b/TrueCraft/AccessConfiguration.cs @@ -4,7 +4,7 @@ using YamlDotNet.Serialization; namespace TrueCraft { - public class AccessConfiguration : IAccessConfiguration + public class AccessConfiguration : Configuration, IAccessConfiguration { public AccessConfiguration() { diff --git a/TrueCraft/Handlers/LoginHandlers.cs b/TrueCraft/Handlers/LoginHandlers.cs index 0411ec8..1b83a8a 100644 --- a/TrueCraft/Handlers/LoginHandlers.cs +++ b/TrueCraft/Handlers/LoginHandlers.cs @@ -58,8 +58,8 @@ namespace TrueCraft.Handlers server.Scheduler.ScheduleEvent(DateTime.Now.AddSeconds(10), remoteClient.SendKeepAlive); server.Scheduler.ScheduleEvent(DateTime.Now.AddSeconds(1), remoteClient.ExpandChunkRadius); - if (!string.IsNullOrEmpty(Program.Configuration.MOTD)) - remoteClient.SendMessage(Program.Configuration.MOTD); + if (!string.IsNullOrEmpty(Program.ServerConfiguration.MOTD)) + remoteClient.SendMessage(Program.ServerConfiguration.MOTD); server.SendMessage(ChatColor.Yellow + "{0} joined the server.", remoteClient.Username); } } diff --git a/TrueCraft/MultiplayerServer.cs b/TrueCraft/MultiplayerServer.cs index 167f48c..d2acc20 100644 --- a/TrueCraft/MultiplayerServer.cs +++ b/TrueCraft/MultiplayerServer.cs @@ -90,6 +90,8 @@ namespace TrueCraft PendingBlockUpdates = new Queue(); EnableClientLogging = false; + AccessConfiguration = Configuration.LoadConfiguration("access.yaml"); + reader.RegisterCorePackets(); Handlers.PacketHandlers.RegisterHandlers(this); } diff --git a/TrueCraft/Program.cs b/TrueCraft/Program.cs index c890652..9b514a1 100644 --- a/TrueCraft/Program.cs +++ b/TrueCraft/Program.cs @@ -16,7 +16,7 @@ namespace TrueCraft { public class Program { - public static Configuration Configuration; + public static ServerConfiguration ServerConfiguration; public static CommandManager CommandManager; @@ -31,15 +31,14 @@ namespace TrueCraft Server.AddLogProvider(new FileLogProvider(new StreamWriter("packets.log", false), LogCategory.Packets)); #endif - Configuration = LoadConfiguration("config.yaml"); - Server.AccessConfiguration = LoadConfiguration("access.yaml"); + ServerConfiguration = Configuration.LoadConfiguration("config.yaml"); - if (Configuration.Debug.DeleteWorldOnStartup) + if (ServerConfiguration.Debug.DeleteWorldOnStartup) { if (Directory.Exists("world")) Directory.Delete("world", true); } - if (Configuration.Debug.DeletePlayersOnStartup) + if (ServerConfiguration.Debug.DeletePlayersOnStartup) { if (Directory.Exists("players")) Directory.Delete("players", true); @@ -92,11 +91,11 @@ namespace TrueCraft } CommandManager = new CommandManager(); Server.ChatMessageReceived += HandleChatMessageReceived; - Server.Start(new IPEndPoint(IPAddress.Parse(Configuration.ServerAddress), Configuration.ServerPort)); + Server.Start(new IPEndPoint(IPAddress.Parse(ServerConfiguration.ServerAddress), ServerConfiguration.ServerPort)); Console.CancelKeyPress += HandleCancelKeyPress; while (true) { - Thread.Sleep(1000 * Configuration.WorldSaveInterval); + Thread.Sleep(1000 * ServerConfiguration.WorldSaveInterval); foreach (var w in Server.Worlds) { w.Save(); @@ -104,30 +103,6 @@ namespace TrueCraft } } - private static T LoadConfiguration(string configFileName) where T : new() - { - T config; - - if (File.Exists(configFileName)) - { - Server.Log(LogCategory.Warning, configFileName + @" already exists, reading it right now..."); - var deserializer = new Deserializer(ignoreUnmatched: true); - using (var file = File.OpenText(configFileName)) - config = deserializer.Deserialize(file); - } - else - { - Server.Log(LogCategory.Warning, configFileName + @" didn't exist yet, creating new one"); - config = new T(); - } - - var serializer = new Serializer(); - using (var writer = new StreamWriter(configFileName)) - serializer.Serialize(writer, config); - - return config; - } - static void HandleCancelKeyPress(object sender, ConsoleCancelEventArgs e) { Server.Stop(); diff --git a/TrueCraft/Configuration.cs b/TrueCraft/ServerConfiguration.cs similarity index 93% rename from TrueCraft/Configuration.cs rename to TrueCraft/ServerConfiguration.cs index 50649a9..26dfae3 100644 --- a/TrueCraft/Configuration.cs +++ b/TrueCraft/ServerConfiguration.cs @@ -3,7 +3,7 @@ using YamlDotNet.Serialization; namespace TrueCraft { - public class Configuration + public class ServerConfiguration : Configuration { public class DebugConfiguration { @@ -20,7 +20,7 @@ namespace TrueCraft public bool DeletePlayersOnStartup { get; set; } } - public Configuration() + public ServerConfiguration() { MOTD = ChatColor.Red + "Welcome to TrueCraft!"; Debug = new DebugConfiguration(); diff --git a/TrueCraft/TrueCraft.csproj b/TrueCraft/TrueCraft.csproj index 5250e5b..d2f0af4 100644 --- a/TrueCraft/TrueCraft.csproj +++ b/TrueCraft/TrueCraft.csproj @@ -63,7 +63,7 @@ - +