//long method i know i will shorten it soon public static void SaveLevel(EditableLevel level) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; String name = Configuration.UserDataPath + Path.DirectorySeparatorChar + "Level" + Path.DirectorySeparatorChar + "Custom.xml"; XmlWriter writer = XmlWriter.Create(name, settings); writer.WriteStartDocument(); writer.WriteStartElement("level"); writer.WriteAttributeString("name", "Custom Level"); writer.WriteAttributeString("balls", level.Attempts.ToString()); writer.WriteAttributeString("par-seconds", level.ParTime.ToString()); writer.WriteAttributeString("toolbox-types", "RBHV"); foreach (Platform platform in level.MoveablePlatforms) { writer.WriteStartElement("platform"); writer.WriteAttributeString("breakable", platform.Breakable.ToString()); writer.WriteAttributeString("x", platform.Origin.X.ToString()); writer.WriteAttributeString("y", platform.Origin.Y.ToString()); writer.WriteAttributeString("width", platform.Width.ToString()); writer.WriteAttributeString("height", platform.Height.ToString()); writer.WriteEndElement(); } foreach (Platform platform in level.Platforms) { writer.WriteStartElement("platform"); writer.WriteAttributeString("breakable", platform.Breakable.ToString()); writer.WriteAttributeString("x", platform.Origin.X.ToString()); writer.WriteAttributeString("y", platform.Origin.Y.ToString()); writer.WriteAttributeString("width", platform.Width.ToString()); writer.WriteAttributeString("height", platform.Height.ToString()); writer.WriteEndElement(); } writer.WriteStartElement("goal"); writer.WriteAttributeString("x", level.Goal.Origin.X.ToString()); writer.WriteAttributeString("y", level.Goal.Origin.Y.ToString()); writer.WriteEndElement(); writer.WriteStartElement("launcher"); writer.WriteAttributeString("x", level.Launcher.Position.X.ToString()); writer.WriteAttributeString("y", level.Launcher.Position.Y.ToString()); writer.WriteEndElement(); foreach(DeathTrap deathTrap in level.DeathTraps){ writer.WriteStartElement("deathtrap"); writer.WriteAttributeString("x", deathTrap.Origin.X.ToString()); writer.WriteAttributeString("y", deathTrap.Origin.Y.ToString()); writer.WriteEndElement(); } foreach (Treasure treasure in level.Treasures) { writer.WriteStartElement("treasure"); writer.WriteAttributeString("x", treasure.Origin.X.ToString()); writer.WriteAttributeString("y", treasure.Origin.Y.ToString()); writer.WriteEndElement(); } writer.WriteEndDocument(); writer.Flush(); writer.Close(); }
/// <summary> /// Constructor /// </summary> /// <param name="topLevel"></param> /// <param name="editableLevel"></param> /// <param name="levelName"></param> public PauseMenuScreen(TopLevelModel topLevel, EditableLevel editableLevel, string levelName) : base(topLevel) { base.TransitionOnTime = TimeSpan.FromSeconds(0.5); base.TransitionOffTime = TimeSpan.FromSeconds(0.5); EditorMode = true; custom = editableLevel.Custom; this.restartable = editableLevel; LevelName = levelName; }
/// <summary> /// Sets up a hard-coded level. This is for testing purposes. /// </summary> internal EditableLevel LoadLevel(string level) { EditableLevel simulation = new EditableLevel(LevelLoader.Load(LevelName, content), content); simulation.Background = content.Load<Texture2D>("Texture/GameScreen"); return simulation; }
/// <summary> /// Load graphics content for the game. /// </summary> public override void LoadContent(ContentManager shared) { base.LoadContent(shared); // Create a new ContentManager so that all level data is flushed // from the cache after the level ends. if (content == null) content = new ContentManager(shared.ServiceProvider, "Content"); font = shared.Load<SpriteFont>("Font/textfont"); launchToolbox = toolboxLaunched = false; // Create the hard-coded level. editableLevel = LoadLevel(LevelName); foundCollision = false; }
/// <summary> /// Load graphics content for the game. /// </summary> public override void LoadContent(ContentManager shared) { base.LoadContent(shared); // Create a new ContentManager so that all level data is flushed // from the cache after the level ends. if (content == null) content = new ContentManager(shared.ServiceProvider, "Content"); font = shared.Load<SpriteFont>("Font/textfont"); launchToolbox = toolboxLaunched = false; String name = Configuration.UserDataPath + Path.DirectorySeparatorChar + "Level" + Path.DirectorySeparatorChar + "Custom.xml"; // Create the hard-coded level. editableLevel = new EditableLevel(LevelLoader.Load(name, shared), shared); editableLevel.AdditionsLeft = 30; editableLevel.ParTime = 60; editableLevel.Custom = true; foundCollision = false; }
/// <summary> /// Constructor that includes a message to be displayed and Boolean to determine if more platforms can be added /// </summary> public ToolboxScreen(TopLevelModel topLevel, EditableLevel level, string message, bool limitReached) : base(topLevel) { this._message = message; _cantAdd = limitReached; //initializa the position of regular platforms _platforms = new List<Rectangle>(); editableLevel = level; if (level.TypesAllowed.Contains("R")) { if (level.TypesAllowed.Contains("H")) { _platforms.Add(new Rectangle(100, 130, 100, 25)); _platforms.Add(new Rectangle(300, 130, 150, 25)); _platforms.Add(new Rectangle(500, 130, 200, 25)); } if (level.TypesAllowed.Contains("V")) { _platforms.Add(new Rectangle(100, 210, 25, 100)); _platforms.Add(new Rectangle(300, 210, 25, 150)); _platforms.Add(new Rectangle(500, 210, 25, 200)); } } //Initializes the position of breakable platforms. _breakablePlatforms = new List<Rectangle>(); if (level.TypesAllowed.Contains("B")) { if (level.TypesAllowed.Contains("H")) { _breakablePlatforms.Add(new Rectangle(100, 160, 100, 25)); _breakablePlatforms.Add(new Rectangle(300, 160, 150, 25)); _breakablePlatforms.Add(new Rectangle(500, 160, 200, 25)); } if (level.TypesAllowed.Contains("V")) { _breakablePlatforms.Add(new Rectangle(175, 210, 25, 100)); _breakablePlatforms.Add(new Rectangle(425, 210, 25, 150)); _breakablePlatforms.Add(new Rectangle(675, 210, 25, 200)); } } base.IsPopup = true; base.TransitionOnTime = TimeSpan.FromSeconds(0.2); base.TransitionOffTime = TimeSpan.FromSeconds(0.2); }