Add automatic versioning and server configuration XML in preparation for services

This commit is contained in:
John Gross
2017-02-05 08:26:48 -08:00
parent fa63f3d811
commit d5159dc72a
33 changed files with 501 additions and 216 deletions

View File

@@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using NLog;
using VRage.Dedicated;
namespace Torch.Server
{
public class ServerConfig
{
private static Logger _log = LogManager.GetLogger("Config");
public string InstancePath { get; set; }
public string InstanceName { get; set; }
//public string SaveName { get; set; }
public int Autosave { get; set; }
public bool AutoRestart { get; set; }
public ServerConfig(string instanceName = "Torch", string instancePath = null, int autosaveInterval = 5, bool autoRestart = false)
{
InstanceName = instanceName;
InstancePath = instancePath ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Torch", InstanceName);
Autosave = autosaveInterval;
AutoRestart = autoRestart;
}
public static ServerConfig LoadFrom(string path)
{
_log.Info($"Loading config from '{path}'");
try
{
var serializer = new XmlSerializer(typeof(ServerConfig));
ServerConfig config;
using (var f = File.OpenRead(path))
{
config = (ServerConfig)serializer.Deserialize(f);
}
return config;
}
catch (Exception e)
{
Console.WriteLine(e);
return null;
}
}
public bool SaveTo(string path)
{
_log.Info($"Saving config to '{path}'");
try
{
var serializer = new XmlSerializer(typeof(ServerConfig));
using (var f = File.OpenWrite(path))
{
serializer.Serialize(f, this);
}
return true;
}
catch (Exception e)
{
Console.WriteLine(e);
return false;
}
}
}
}