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(); }
private void SetLevel(Level newOriginalLevel, PlayingLevel newLevel) { originalLevel = newOriginalLevel; level = newLevel; }
private static PlayingLevel UnwindLevel(PlayingLevel level) { PlayingLevel newLevel = new PlayingLevel(level); while (newLevel.MoveCount > 0) { newLevel.Undo(); } return newLevel; }
private void SetCustomLevel(Level newOriginalLevel, PlayingLevel newLevel) { customLevel = true; SetLevel(newOriginalLevel, newLevel); }