private static void Start(string[] args) { string appPath = Path.GetDirectoryName(Application.ExecutablePath); if (!Debugger.IsAttached) { System.Environment.CurrentDirectory = appPath; } var p = new ManicDiggerProgram2(); if (args.Length > 0) { if (args[0].EndsWith(".mdlink", StringComparison.InvariantCultureIgnoreCase)) { XmlDocument d = new XmlDocument(); d.Load(args[0]); string mode = XmlTool.XmlVal(d, "/ManicDiggerLink/GameMode"); if (mode != "Fortress") { throw new Exception("Invalid game mode: " + mode); } p.connectdata.Ip = XmlTool.XmlVal(d, "/ManicDiggerLink/Ip"); int port = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerLink/Port")); p.connectdata.Port = port; p.connectdata.Username = XmlTool.XmlVal(d, "/ManicDiggerLink/User"); } } else { //new Thread(ServerThreadStart).Start(); //p.GameUrl = "127.0.0.1:25570"; //p.User = "******"; } p.Start(); }
public void LoadServerClient(Server server) { string filename = "ServerClient.txt"; if (!File.Exists(Path.Combine(GameStorePath.gamepathconfig, filename))) { Console.WriteLine(server.language.ServerClientConfigNotFound()); SaveServerClient(server); } else { try { using (TextReader textReader = new StreamReader(Path.Combine(GameStorePath.gamepathconfig, filename))) { XmlSerializer deserializer = new XmlSerializer(typeof(ServerClient)); server.serverClient = (ServerClient)deserializer.Deserialize(textReader); textReader.Close(); server.serverClient.Groups.Sort(); SaveServerClient(server); } } catch //This if for the original format { using (Stream s = new MemoryStream(File.ReadAllBytes(Path.Combine(GameStorePath.gamepathconfig, filename)))) { server.serverClient = new ServerClient(); StreamReader sr = new StreamReader(s); XmlDocument d = new XmlDocument(); d.Load(sr); server.serverClient.Format = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerClient/Format")); server.serverClient.DefaultGroupGuests = XmlTool.XmlVal(d, "/ManicDiggerServerClient/DefaultGroupGuests"); server.serverClient.DefaultGroupRegistered = XmlTool.XmlVal(d, "/ManicDiggerServerClient/DefaultGroupRegistered"); } //Save with new version. SaveServerClient(server); } } if (server.serverClient.DefaultSpawn == null) { // server sets a default spawn (middle of map) int x = server.d_Map.MapSizeX / 2; int y = server.d_Map.MapSizeY / 2; server.defaultPlayerSpawn = server.DontSpawnPlayerInWater(new Vector3i(x, y, MapUtil.blockheight(server.d_Map, 0, x, y))); } else { int z; if (server.serverClient.DefaultSpawn.z == null) { z = MapUtil.blockheight(server.d_Map, 0, server.serverClient.DefaultSpawn.x, server.serverClient.DefaultSpawn.y); } else { z = server.serverClient.DefaultSpawn.z.Value; } server.defaultPlayerSpawn = new Vector3i(server.serverClient.DefaultSpawn.x, server.serverClient.DefaultSpawn.y, z); } server.defaultGroupGuest = server.serverClient.Groups.Find( delegate(ManicDigger.Group grp) { return(grp.Name.Equals(server.serverClient.DefaultGroupGuests)); } ); if (server.defaultGroupGuest == null) { throw new Exception(server.language.ServerClientConfigGuestGroupNotFound()); } server.defaultGroupRegistered = server.serverClient.Groups.Find( delegate(ManicDigger.Group grp) { return(grp.Name.Equals(server.serverClient.DefaultGroupRegistered)); } ); if (server.defaultGroupRegistered == null) { throw new Exception(server.language.ServerClientConfigRegisteredGroupNotFound()); } Console.WriteLine(server.language.ServerClientConfigLoaded()); }
public void LoadConfig(Server server) { string filename = "ServerConfig.txt"; if (!File.Exists(Path.Combine(GameStorePath.gamepathconfig, filename))) { Console.WriteLine(server.language.ServerConfigNotFound()); SaveConfig(server); return; } try { using (TextReader textReader = new StreamReader(Path.Combine(GameStorePath.gamepathconfig, filename))) { XmlSerializer deserializer = new XmlSerializer(typeof(ServerConfig)); server.config = (ServerConfig)deserializer.Deserialize(textReader); textReader.Close(); } } catch //This if for the original format { try { using (Stream s = new MemoryStream(File.ReadAllBytes(Path.Combine(GameStorePath.gamepathconfig, filename)))) { server.config = new ServerConfig(); StreamReader sr = new StreamReader(s); XmlDocument d = new XmlDocument(); d.Load(sr); server.config.Format = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Format")); server.config.Name = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Name"); server.config.Motd = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Motd"); server.config.Port = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Port")); string maxclients = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MaxClients"); if (maxclients != null) { server.config.MaxClients = int.Parse(maxclients); } string key = XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Key"); if (key != null) { server.config.Key = key; } server.config.IsCreative = Misc.ReadBool(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Creative")); server.config.Public = Misc.ReadBool(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/Public")); server.config.AllowGuests = Misc.ReadBool(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/AllowGuests")); if (XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeX") != null) { server.config.MapSizeX = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeX")); server.config.MapSizeY = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeY")); server.config.MapSizeZ = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/MapSizeZ")); } server.config.BuildLogging = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/BuildLogging")); server.config.ServerEventLogging = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ServerEventLogging")); server.config.ChatLogging = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ChatLogging")); server.config.AllowScripting = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/AllowScripting")); server.config.ServerMonitor = bool.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ServerMonitor")); server.config.ClientConnectionTimeout = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ClientConnectionTimeout")); server.config.ClientPlayingTimeout = int.Parse(XmlTool.XmlVal(d, "/ManicDiggerServerConfig/ClientPlayingTimeout")); } //Save with new version. SaveConfig(server); } catch { //ServerConfig is really messed up. Backup a copy, then create a new one. try { File.Copy(Path.Combine(GameStorePath.gamepathconfig, filename), Path.Combine(GameStorePath.gamepathconfig, filename + ".old")); Console.WriteLine(server.language.ServerConfigCorruptBackup()); } catch { Console.WriteLine(server.language.ServerConfigCorruptNoBackup()); } server.config = null; SaveConfig(server); } } server.language.OverrideLanguage = server.config.ServerLanguage; //Switch to user-defined language. Console.WriteLine(server.language.ServerConfigLoaded()); }