コード例 #1
0
 public void ChangeProcessPath(string path)
 {
     Properties.Settings.Default["processPath"] = path;
     Properties.Settings.Default.Save();
     ConfigHolder.SetProcessPath(path);
     //ConfigIO.WriteSettings(path);
 }
コード例 #2
0
        public void LoadConfigs()
        {
            if (ConfigIO.CheckForSettingsConfig())
            {
                //WriteToConsole("Config for settings found");
                ConfigHolder.SetProcessPath((string)Properties.Settings.Default["processPath"]);
                ConfigHolder.killNonRespProcess   = (bool)Properties.Settings.Default["killNonRespProcess"];
                ConfigHolder.startServerOnStartup = (bool)Properties.Settings.Default["startServerOnStartup"];
            }

            if (ConfigIO.CheckForParametersConfig())
            {
                //WriteToConsole("Config for parameters found");
                ConfigHolder.SetParameters(ConfigIO.LoadParameters());
            }
            else
            {
                //WriteToConsole("Config for parameters not found. Creating a new config...");
            }

            if (ConfigIO.CheckForModsConfig())
            {
                //WriteToConsole("Config for mods found");
                ConfigHolder.SetMods(ConfigIO.LoadMods());
            }
            else
            {
                //WriteToConsole("Config for mods not found. Creating a new config...");
            }
        }
コード例 #3
0
        public void OnAddMod(object sender, RoutedEventArgs e)
        {
            string path = OpenFolderDialog();

            guiHandler.AddMod(path);
            AddItemToList(this.ModList, ConfigHolder.ShortenModPath(path));
        }
コード例 #4
0
        private static string ReadParameters()
        {
            string parameters = "";

            foreach (string s in ConfigHolder.GetParameters())
            {
                parameters += s + " ";
            }

            return(parameters);
        }
コード例 #5
0
        public static bool KillProcess()
        {
            Process[] pname = Process.GetProcessesByName(ConfigHolder.GetProcessName());

            foreach (Process p in pname)
            {
                p.Kill();
            }

            return(pname.Length != 0);
        }
コード例 #6
0
        public static bool ExitProcess()
        {
            Process[] pname = Process.GetProcessesByName(ConfigHolder.GetProcessName());

            foreach (Process p in pname)
            {
                p.CloseMainWindow();
            }

            return(pname.Length != 0);
        }
コード例 #7
0
        public void RemoveParameter(string parameter)
        {
            for (int i = 0; i < ConfigHolder.GetParameters().Count; i++)
            {
                if (ConfigHolder.GetParameters()[i].ToString() == parameter)
                {
                    ConfigHolder.GetParameters().RemoveAt(i);
                }
            }

            ConfigIO.WriteParameters(ConfigHolder.GetParameters());
        }
コード例 #8
0
        public void LoadAllModsInDirectory()
        {
            var directories = Directory.GetDirectories(Path.GetDirectoryName(ConfigHolder.GetProcessPath()));

            foreach (string s in directories)
            {
                if (ConfigHolder.IsModFolder(ConfigHolder.ShortenModPath(s)))
                {
                    if (AddMod(s))
                    {
                        window.AddItemToList(window.ModList, ConfigHolder.ShortenModPath(s));
                    }
                }
            }
        }
コード例 #9
0
        public void LoadGUI()
        {
            window.ProcessTextBox.Text              = ConfigHolder.GetProcessPath();
            window.KillNonRespProcessBox.IsChecked  = ConfigHolder.killNonRespProcess;
            window.StartServerWithToolBox.IsChecked = ConfigHolder.startServerOnStartup;

            foreach (string s in ConfigHolder.GetParameters())
            {
                window.AddItemToList(window.ParameterList, s);
            }
            foreach (string s in ConfigHolder.GetMods())
            {
                window.AddItemToList(window.ModList, ConfigHolder.ShortenModPath(s));
            }
            WriteToConsole("Config files loaded");
        }
コード例 #10
0
        private static string ReadMods()
        {
            string parameter = "\"-mod=";

            for (int i = 0; i < ConfigHolder.GetMods().Count; i++)
            {
                string mod = ConfigHolder.GetMods()[i].ToString();
                if (i != ConfigHolder.GetMods().Count - 1)
                {
                    parameter += ConfigHolder.ShortenModPath(mod) + ";";
                }
                else
                {
                    parameter += ConfigHolder.ShortenModPath(mod);
                }
            }
            return(parameter += "\"");
        }
コード例 #11
0
        public static string GetProcessName()
        {
            string name    = Path.GetFileName(ConfigHolder.GetProcessPath());
            string newName = "";

            for (int i = 0; i < name.Length; i++)
            {
                if (name[i] == char.Parse("."))
                {
                    break;
                }
                else
                {
                    newName += name[i];
                }
            }

            return(newName);
        }
コード例 #12
0
        public bool AddMod(string mod)
        {
            foreach (string m in ConfigHolder.GetMods())
            {
                if (m.Equals(mod))
                {
                    WriteToConsole("The mod " + mod + " is already loaded!");
                    return(false);
                }
            }

            string keysPath = "";

            if (Directory.Exists(mod + @"\keys") || Directory.Exists(mod + @"\key"))
            {
                if (Directory.Exists(mod + @"\keys"))
                {
                    keysPath = mod + @"\keys";
                }
                else if (Directory.Exists(mod + @"\key"))
                {
                    keysPath = mod + @"\key";
                }
                if (Directory.Exists(keysPath))
                {
                    foreach (string s in Directory.GetFiles(keysPath))
                    {
                        if (s.EndsWith(".bikey"))
                        {
                            if (!File.Exists(GetProcessDirectory() + @"\keys\" + Path.GetFileName(s)))
                            {
                                File.Copy(s, GetProcessDirectory() + @"\keys\" + Path.GetFileName(s));
                            }
                        }
                    }
                }
            }

            ConfigHolder.AddMod(mod);
            ConfigIO.WriteMods(ConfigHolder.GetMods());
            return(true);
        }
コード例 #13
0
        public static string StartServer()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();

            startInfo.FileName  = ConfigHolder.GetProcessPath();
            startInfo.Arguments = ReadParameters() + " " + ReadMods();

            Process process = new Process();

            process.StartInfo = startInfo;
            process.Start();

            if (!process.Responding)
            {
                process.Kill();
            }

            Logger.WriteToLogFile("Starting server with parameters: " + ReadParameters() + " " + ReadMods());

            return(ReadParameters() + " " + ReadMods());
        }
コード例 #14
0
        private bool IsServerRunning()
        {
            Process[] pname = Process.GetProcessesByName(ConfigHolder.GetProcessName());

            if (pname.Length != 0 && !pname[0].Responding && timer == null && ConfigHolder.killNonRespProcess)
            {
                timer           = new System.Timers.Timer();
                timer.Elapsed  += new ElapsedEventHandler(OnTimedEvent);
                timer.Interval  = 30000;
                timer.AutoReset = false;
                timer.Start();
            }

            if (pname.Length == 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #15
0
        public void RemoveMod(string mod)
        {
            string modPath = "";

            if (mod[0] == char.Parse("@"))
            {
                modPath = GetProcessDirectory() + mod;
                WriteToConsole("Deleting mod: " + modPath);
            }
            else
            {
                modPath = mod;
            }

            for (int i = 0; i < ConfigHolder.GetMods().Count; i++)
            {
                if (ConfigHolder.GetMods()[i].ToString() == modPath)
                {
                    ConfigHolder.GetMods().RemoveAt(i);
                }
            }

            ConfigIO.WriteMods(ConfigHolder.GetMods());
        }
コード例 #16
0
 public void AddParameter(string parameter)
 {
     ConfigHolder.AddParameter(parameter);
     ConfigIO.WriteParameters(ConfigHolder.GetParameters());
 }
コード例 #17
0
 public void PrintProcessDirectory()
 {
     WriteToConsole(Path.GetFullPath(ConfigHolder.GetProcessPath()));
 }
コード例 #18
0
 private string GetProcessDirectory()
 {
     return(Path.GetDirectoryName(ConfigHolder.GetProcessPath()) + @"\");
 }
コード例 #19
0
 public void RemoveAllMods()
 {
     ConfigHolder.SetMods(new System.Collections.ArrayList());
     ConfigIO.WriteMods(ConfigHolder.GetMods());
 }