MrGravity.WorldSelect.Save C# (CSharp) Method

Save() public method

Saves level unlock and scoring information PC saving is straightforward - but xDoc.Save() will not work on xbox360. Instead we use the built in XmlSerializer class to serialize an element out to an xml file. We build our Xelement like normal - but instead of saving that directly using XDocument.Save() we place this XElement into a struct, and use XmlSerializer to serialize the data out into a storage device on the xbox.
public Save ( ) : void
return void
        public void Save()
        {
            var xLevels = new XElement(XmlKeys.Levels);
            foreach (var l in _mLevels)
                xLevels.Add(l.Export());
            var xDoc = new XDocument();
            xDoc.Add(xLevels);

            #if XBOX360
            IAsyncResult result;
            try
            {
                if (!mDeviceSelected)
                {
                    StorageDevice.BeginShowSelector(((ControllerControl)mControls).ControllerIndex, this.SelectDevice, null);
                    mDeviceSelected = true;
                }
            }
            catch (Exception e)
            {
                string errTemp = e.ToString();
                return;
            }

            if (device == null || !device.IsConnected)
            {
                return;
            }
            try
            {
                result = device.BeginOpenContainer("Mr Gravity", null, null);
                result.AsyncWaitHandle.WaitOne();
                container = device.EndOpenContainer(result);

                //container.DeleteFile("TrialLevelList.xml");
                //container.DeleteFile("LevelList.xml");

                Stream stream;
                if (container.FileExists("LevelList.xml"))
                {
                    container.DeleteFile("LevelList.xml");
                }
                stream = container.CreateFile("LevelList.xml");
                XmlSerializer serializer = new XmlSerializer(typeof(SaveGameData));
                SaveGameData data = new SaveGameData();
                data.SaveData = xLevels;
                serializer.Serialize(stream, data);
                stream.Close();
                container.Dispose();
                result.AsyncWaitHandle.Close();
            }
            catch (Exception e)
            {
                string execTemp = e.ToString();
                return;
            }

            #else
            xDoc.Save("..\\..\\..\\Content\\Levels\\Info\\LevelList.xml");
            #endif
        }