public static List <Plugin> GetPluginsFromXml()
        {
            string xmlPath = Path.Combine(DefaultPaths.GetConfigsPath(), "TombIDEPlugins.xml");

            if (File.Exists(xmlPath))
            {
                List <Plugin> pluginList = (List <Plugin>)ReadXmlFile(xmlPath, typeof(List <Plugin>));

                List <Plugin> validPlugins = new List <Plugin>();

                foreach (Plugin plugin in pluginList)
                {
                    if (File.Exists(plugin.InternalDllPath))
                    {
                        validPlugins.Add(plugin);
                    }
                }

                UpdatePluginsXml(validPlugins);

                return(validPlugins);
            }
            else             // TombIDEPlugins.xml doesn't exist
            {
                // Create a new (empty) .xml file
                SaveXmlFile(xmlPath, typeof(List <Plugin>), new List <Plugin>());
                return(new List <Plugin>());
            }
        }
        /// <summary>
        /// Returns a list made up of projects taken from each .trproj file path stored in TombIDEProjects.xml.
        /// </summary>
        public static List <Project> GetProjectsFromXml()
        {
            string xmlPath = Path.Combine(DefaultPaths.GetConfigsPath(), "TombIDEProjects.xml");

            if (File.Exists(xmlPath))
            {
                List <string> projectFilePaths = (List <string>)ReadXmlFile(xmlPath, typeof(List <string>));
                // TombIDEProjects.xml only stores .trproj file paths

                List <Project> projectList = new List <Project>();

                foreach (string path in projectFilePaths)
                {
                    if (File.Exists(path))
                    {
                        projectList.Add(Project.FromFile(path));
                    }
                }

                return(projectList);
            }
            else             // TombIDEProjects.xml doesn't exist
            {
                // Create a new (empty) .xml file
                SaveXmlFile(xmlPath, typeof(List <string>), new List <string>());
                return(new List <Project>());
            }
        }
        /// <summary>
        /// Updates TombIDEProjects.xml with the projects' .trproj file paths.
        /// </summary>
        public static void UpdateProjectsXml(List <Project> projects)
        {
            List <string> projectFilePaths = new List <string>();

            foreach (Project project in projects)
            {
                projectFilePaths.Add(project.GetTrprojFilePath());
            }

            string xmlPath = Path.Combine(DefaultPaths.GetConfigsPath(), "TombIDEProjects.xml");

            SaveXmlFile(xmlPath, typeof(List <string>), projectFilePaths);
        }
        public static void UpdatePluginsXml(List <Plugin> pluginList)
        {
            string xmlPath = Path.Combine(DefaultPaths.GetConfigsPath(), "TombIDEPlugins.xml");

            SaveXmlFile(xmlPath, typeof(List <Plugin>), pluginList);
        }