Ejemplo n.º 1
0
        private void LoadLevel(string filename)
        {
            PlayingLevel newLevel = null;
            try
            {
                XmlSerializer ser = new XmlSerializer(typeof(PlayingLevel));
                TextReader reader = new StreamReader(filename);
                newLevel = ser.Deserialize(reader) as PlayingLevel;
                reader.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(String.Format("Exception loading level: {0}", ex.ToString()));
                return;
            }

            if (newLevel.MoveList.Count > 0 && LevelUtils.IsSolutionCompatible(originalLevel, newLevel.MoveList))
            {
                PlayingLevel newPlayingLevel = new PlayingLevel(originalLevel);
                newPlayingLevel.SetSolution(newLevel.MoveList);
                for (int i = 0; i < newLevel.MoveCount; i++)
                {
                    newPlayingLevel.Redo();
                }
                SetLevel(newLevel, newPlayingLevel);
            }
            else
            {
                SetLevel(UnwindLevel(newLevel), newLevel);
                customLevel = true;
            }
            RefreshLevel();
        }
Ejemplo n.º 2
0
 private void SetLevel(Level newOriginalLevel, PlayingLevel newLevel)
 {
     originalLevel = newOriginalLevel;
     level = newLevel;
 }
Ejemplo n.º 3
0
 private static PlayingLevel UnwindLevel(PlayingLevel level)
 {
     PlayingLevel newLevel = new PlayingLevel(level);
     while (newLevel.MoveCount > 0)
     {
         newLevel.Undo();
     }
     return newLevel;
 }
Ejemplo n.º 4
0
 private void SetCustomLevel(Level newOriginalLevel, PlayingLevel newLevel)
 {
     customLevel = true;
     SetLevel(newOriginalLevel, newLevel);
 }