public static GUI ImportGUIFromFile(string fileName, Game game)
{
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
if (doc.DocumentElement.Name != GUI_XML_ROOT_NODE)
{
throw new AGS.Types.InvalidDataException("Not a valid AGS GUI file.");
}
if (SerializeUtils.GetAttributeString(doc.DocumentElement, GUI_XML_VERSION_ATTRIBUTE) != GUI_XML_CURRENT_VERSION)
{
throw new AGS.Types.InvalidDataException("This file requires a newer version of AGS to import it.");
}
GUI newGui;
if (doc.DocumentElement.FirstChild.FirstChild.Name == NormalGUI.XML_ELEMENT_NAME)
{
newGui = new NormalGUI(doc.DocumentElement.FirstChild);
}
else
{
newGui = new TextWindowGUI(doc.DocumentElement.FirstChild);
}
PaletteEntry[] palette = game.ReadPaletteFromXML(doc.DocumentElement);
SpriteFolder newFolder = new SpriteFolder(newGui.Name + "Import");
game.RootSpriteFolder.SubFolders.Add(newFolder);
Dictionary<int, int> spriteMapping = ImportSpritesFromXML(doc.DocumentElement.SelectSingleNode(GUI_XML_SPRITES_NODE), palette, newFolder);
if (newGui.BackgroundImage > 0)
{
newGui.BackgroundImage = spriteMapping[newGui.BackgroundImage];
}
if (newGui.BackgroundImage < 0)
newGui.BackgroundImage = 0;
foreach (GUIControl control in newGui.Controls)
{
control.UpdateSpritesWithMapping(spriteMapping);
}
AdjustScriptNamesToEnsureEverythingIsUnique(newGui, game);
game.RootSpriteFolder.NotifyClientsOfUpdate();
return newGui;
}