private void LoadUserDataFile(string fileName)
{
XmlNode docNode = null;
try
{
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
if (doc.DocumentElement.Name != XML_USER_DATA_ROOT_NODE_NAME)
{
throw new AGSEditorException("Invalid user data file. This is not a valid AGS user data file.");
}
string fileVersion = doc.DocumentElement.Attributes[XML_ATTRIBUTE_VERSION].InnerXml;
if (fileVersion != LATEST_USER_DATA_VERSION)
{
throw new AGSEditorException("User data file is from a newer version of AGS or an unsupported beta version. Please check the AGS website for a newer version of the editor.");
}
string userDataSavedWithEditorVersion = null;
XmlAttribute editorVersionNode = doc.DocumentElement.Attributes[XML_ATTRIBUTE_EDITOR_VERSION];
if (editorVersionNode != null)
{
userDataSavedWithEditorVersion = editorVersionNode.InnerText;
}
int? versionIndex = null;
XmlAttribute versionIndexNode = doc.DocumentElement.Attributes[XML_ATTRIBUTE_VERSION_INDEX];
if (versionIndexNode != null)
{
// From 3.0.2.1 we switched to a simple integer version, it's easier to
// compare than using the 4-point version
versionIndex = Convert.ToInt32(versionIndexNode.InnerText);
if ((versionIndex < 1) || (versionIndex > LATEST_USER_DATA_XML_VERSION_INDEX))
{
throw new AGSEditorException("This game's user data file is from " +
((userDataSavedWithEditorVersion == null) ? "a newer version" : ("version " + userDataSavedWithEditorVersion))
+ " of AGS or an unsupported beta version. Please check the AGS website for a newer version of the editor.");
}
}
docNode = doc.DocumentElement;
}
catch (Exception ex)
{
Factory.GUIController.ShowMessage("Unable to read the user preferences file. You may lose some of your Preferences settings and may not be able to access Source Control." + Environment.NewLine + Environment.NewLine + "The error was: " + ex.Message, MessageBoxIcon.Warning);
}
Factory.Events.OnLoadedUserData(docNode);
_game.WorkspaceState.FromXml(docNode);
}