public void ToXml(XmlTextWriter writer) { writer.WriteStartElement("Game"); _settings.ToXml(writer); _lipSync.ToXml(writer); _propertySchema.ToXml(writer); writer.WriteStartElement("GlobalMessages"); int messageIndex = GLOBAL_MESSAGE_ID_START; foreach (string message in _globalMessages) { writer.WriteStartElement("Message"); writer.WriteAttributeString("ID", messageIndex.ToString()); writer.WriteValue(message); writer.WriteEndElement(); messageIndex++; } writer.WriteEndElement(); // We need to serialize the interaction variables in case // they don't upgrade a room until later, and it might // use the global interaction variables writer.WriteStartElement("OldInteractionVariables"); foreach (OldInteractionVariable var in _oldInteractionVariables) { writer.WriteStartElement("Variable"); writer.WriteAttributeString("Name", var.Name); writer.WriteAttributeString("Value", var.Value.ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteStartElement("Plugins"); foreach (Plugin plugin in _plugins) { plugin.ToXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("Rooms"); foreach (UnloadedRoom room in _rooms) { room.ToXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("GUIs"); foreach (GUI gui in _guis) { gui.ToXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("InventoryItems"); foreach (InventoryItem item in _inventoryItems) { item.ToXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("TextParser"); _textParser.ToXml(writer); writer.WriteEndElement(); writer.WriteStartElement("Characters"); foreach (Character character in _characters) { character.ToXml(writer); } writer.WriteEndElement(); writer.WriteElementString("PlayerCharacter", (_playerCharacter == null) ? string.Empty : _playerCharacter.ID.ToString()); writer.WriteStartElement("Dialogs"); foreach (Dialog dialog in _dialogs) { dialog.ToXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("Cursors"); foreach (MouseCursor cursor in _cursors) { cursor.ToXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("Fonts"); foreach (Font font in _fonts) { font.ToXml(writer); } writer.WriteEndElement(); WritePaletteToXML(writer); writer.WriteStartElement("GlobalVariables"); _globalVariables.ToXml(writer); writer.WriteEndElement(); writer.WriteStartElement("Sprites"); _sprites.ToXml(writer); writer.WriteEndElement(); writer.WriteStartElement("Views"); _views.ToXml(writer); writer.WriteEndElement(); writer.WriteStartElement("DeletedViews"); foreach (int viewID in _deletedViewIDs.Keys) { writer.WriteElementString("ViewID", viewID.ToString()); } writer.WriteEndElement(); _scripts.ToXml(writer); writer.WriteStartElement("AudioClips"); _audioClips.ToXml(writer); writer.WriteEndElement(); writer.WriteStartElement("AudioClipTypes"); foreach (AudioClipType audioClipType in _audioClipTypes) { audioClipType.ToXml(writer); } writer.WriteEndElement(); writer.WriteStartElement("Translations"); foreach (Translation translation in _translations) { translation.ToXml(writer); } writer.WriteEndElement(); writer.WriteEndElement(); }