public LevelProperties(Level level) { this.level = level; InitializeComponent(); //Init textboxes sizeXTextBox.Text = level.Size.Width.ToString(); sizeYTextBox.Text = level.Size.Height.ToString(); minSizeLabel.Text = "Minimum Size: " + level.Project.LevelMinimumSize.Width + " x " + level.Project.LevelMinimumSize.Height; maxSizeLabel.Text = "Maximum Size: " + level.Project.LevelMaximumSize.Width + " x " + level.Project.LevelMaximumSize.Height; //Values int yy = 100; if (level.Values != null) { //Store the old values oldValues = new List<string>(level.Values.Count); foreach (var v in level.Values) oldValues.Add(v.Content); //Create the editors ValueEditor ed; foreach (var v in level.Values) { ed = v.Definition.GetInstanceLevelEditor(v, ClientSize.Width / 2 - 150, yy); Controls.Add(ed); yy += ed.Height; } } //Resize the form ClientSize = new Size(ClientSize.Width, yy + 52); applyButton.Location = new Point(applyButton.Location.X, ClientSize.Height - 40); cancelButton.Location = new Point(cancelButton.Location.X, ClientSize.Height - 40); }
public LevelResizeAction(Level level, Size newSize) : base(level) { oldSize = level.Size; this.newSize = newSize; Resizer r; resizers = new List<Resizer>(level.Layers.Count); foreach (var l in Ogmo.MainWindow.LevelEditors[Ogmo.CurrentLevelIndex].LayerEditors) { r = l.GetResizer(); if (r != null) resizers.Add(r); } }
public LevelEditor(Level level) : base() { Level = level; this.Size = level.Size; Dock = System.Windows.Forms.DockStyle.Fill; //Create the undo/redo stacks UndoStack = new LinkedList<OgmoAction>(); RedoStack = new LinkedList<OgmoAction>(); //Create the layer editors LayerEditors = new List<LayerEditor>(); foreach (var l in level.Layers) LayerEditors.Add(l.GetEditor(this)); }
public void UnloadProject() { this.m_Project = null; this.m_Level = null; this.RecheckMenuEligibility(); }
public void SwitchLevel(Level level) { this.m_Level = level; }
public Level(Level level) : this(level.Project, level.GenerateXML()) { }
public void CloneFrom(Level level) { LoadFromXML(level.GenerateXML()); }
public override LevelData.Layers.Layer GetInstance(Level level) { return new EntityLayer(level, this); }
public virtual Layer GetInstance(Level level) { throw new NotImplementedException(); }
public static void OpenLevel() { //Get the file to load from the user OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true; dialog.Filter = Ogmo.LEVEL_FILTER; dialog.InitialDirectory = Ogmo.Project.SavedDirectory; if (dialog.ShowDialog() == DialogResult.Cancel) return; //If the only open level is an empty one, close it if (Ogmo.Levels.Count == 1 && Ogmo.Levels[0].IsEmpty) Ogmo.CloseLevel(Ogmo.Levels[0], false); //Get all the selected files, and alphabetize the list List<string> filenames = new List<string>(dialog.FileNames); filenames.Sort(); //Load all the levels in the selected list, as long as they aren't already open foreach (string f in filenames) { int levelID = -1; for (int i = 0; i < Ogmo.Levels.Count; i++) { if (Ogmo.Levels[i].SavePath == f) { levelID = i; break; } } if (levelID == -1) { Level level = new Level(Project, f); AddLevel(level); SetLevel(Levels.Count - 1); } else SetLevel(levelID); } //Set the status message string[] files = new string[dialog.FileNames.Length]; for (int i = 0; i < dialog.FileNames.Length; i++) files[i] = Path.GetFileName(dialog.FileNames[i]); Ogmo.MainWindow.StatusText = "Opened level(s) " + String.Join(", ", files); }
public static void CloseOtherLevels(Level level) { List<Level> temp = new List<Level>(Levels); foreach (Level lev in temp) { if (lev != level) { if (!CloseLevel(lev, true)) return; } } }
public static bool CloseLevel(Level level, bool askToSave) { //If it's changed, ask to save it if (askToSave && level.Changed) { DialogResult result = MessageBox.Show(MainWindow, "Save changes to \"" + level.SaveName + "\" before closing it?", "Unsaved Changes!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Cancel) return false; else if (result == DialogResult.Yes) return level.Save(); } //Remove it int index = Levels.IndexOf(level); Levels.Remove(level); //Call the event if (OnLevelClosed != null) OnLevelClosed(index); //Set the current level to another one if that was the current one if (CurrentLevelIndex == index) SetLevel(Math.Min(index, Levels.Count - 1)); else if (CurrentLevelIndex > index) CurrentLevelIndex--; //Force a garbage collection System.GC.Collect(); //Set the status text Ogmo.MainWindow.StatusText = "Closed level " + level.SaveName; return true; }
public static bool AddLevel(Level level) { //Can't if past level limit if (Ogmo.Levels.Count >= Properties.Settings.Default.LevelLimit) { MessageBox.Show(Ogmo.MainWindow, "Couldn't add level because the level limit was exceeded! You can change the level limit in the Preferences menu.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } //Add it Levels.Add(level); //Call the event if (OnLevelAdded != null) OnLevelAdded(Levels.Count - 1); return true; }
public LevelAction(Level level) { Level = level; }