private void levelBBrowseButton_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Title = "Swap Level B"; dialog.Filter = Ogmo.GetLevelFilter(); dialog.CheckFileExists = true; if (levelBTextbox.Text != "") { dialog.InitialDirectory = Path.GetDirectoryName(Path.Combine(Ogmo.Project.SavedDirectory, levelBTextbox.Text)); } else if (levelATextbox.Text != "") { dialog.InitialDirectory = Path.GetDirectoryName(Path.Combine(Ogmo.Project.SavedDirectory, levelATextbox.Text)); } else { dialog.InitialDirectory = Ogmo.Project.SavedDirectory; } DialogResult result = dialog.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { levelBTextbox.Text = Util.RelativePath(Ogmo.Project.SavedDirectory, dialog.FileName); } }
private void ResaveLevels(IEnumerable <string> files) { //If any of the levels are open, close them if (files != null) { if (!Ogmo.CloseLevelsByFilepaths(files)) { return; } } //Resave the levels int i = 0; if (files != null) { foreach (var f in files) { if (File.Exists(f)) { Level level = new Level(Ogmo.Project, f); if (!level.Salvaged) { level.WriteTo(level.SavePath); i++; } } } } MessageBox.Show(this, "Resave Utility finished, resaved " + i + " level(s).", "Batch Resaver"); Close(); }
public StartPage() { InitializeComponent(); Dock = DockStyle.Fill; //Recent projects Ogmo.CheckRecentProjects(); for (int i = 0; i < Properties.Settings.Default.RecentProjects.Count; i++) { LinkLabel link = new LinkLabel(); link.Location = new Point(4, 24 + (i * 20)); link.LinkColor = Color.Red; link.Font = new Font(FontFamily.GenericMonospace, 10); link.Size = new Size(172, 16); link.Text = Properties.Settings.Default.RecentProjectNames[i]; link.Name = Properties.Settings.Default.RecentProjects[i]; link.Click += delegate(object sender, EventArgs e) { Ogmo.LoadProject(link.Name); }; recentPanel.Controls.Add(link); } //Twitter feed WebClient twitter = new WebClient(); twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitter_DownloadStringCompleted); twitter.DownloadStringAsync(new Uri(@"http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=OgmoEditor")); //Browser webBrowser.Url = new Uri(Path.Combine(Ogmo.ProgramDirectory, "Content", "changelog.html")); }
private void performButton_Click(object sender, EventArgs e) { IEnumerable <string> files = null; if (allRadioButton.Checked) { files = Directory.EnumerateFiles(Ogmo.Project.SavedDirectory, "*.oel", SearchOption.AllDirectories); } else if (levelsRadioButton.Checked) { OpenFileDialog dialog = new OpenFileDialog(); dialog.InitialDirectory = Ogmo.Project.SavedDirectory; dialog.Title = "Batch Resaver"; dialog.Multiselect = true; dialog.Filter = Ogmo.GetLevelFilter(); dialog.CheckFileExists = true; DialogResult result = dialog.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.Cancel) { return; } files = dialog.FileNames; } else if (directoryRadioButton.Checked) { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.ShowNewFolderButton = false; dialog.SelectedPath = Ogmo.Project.SavedDirectory; dialog.RootFolder = Environment.SpecialFolder.MyDocuments; dialog.Description = "Select a folder to search for levels to resave."; DialogResult result = dialog.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.Cancel) { return; } files = Directory.EnumerateFiles(dialog.SelectedPath, "*.oel", SearchOption.AllDirectories); } ResaveLevels(files); }
private void performButton_Click(object sender, EventArgs e) { string levelA = Path.Combine(Ogmo.Project.SavedDirectory, levelATextbox.Text); string levelB = Path.Combine(Ogmo.Project.SavedDirectory, levelBTextbox.Text); //Close the levels if they're open if (!Ogmo.CloseLevelByFilepath(levelA) || !Ogmo.CloseLevelByFilepath(levelB)) { return; } //If they don't exist, error if (!File.Exists(levelA)) { MessageBox.Show(this, "Level file A does not exist!", "Swap Renamer", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else if (!File.Exists(levelB)) { MessageBox.Show(this, "Level file B does not exist!", "Swap Renamer", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //If they're the same file, error if (levelA == levelB) { MessageBox.Show(this, "Cannot swap a file with itself!", "Swap Renamer", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Do the swap string temp = Path.Combine(Ogmo.ProgramDirectory, "temp"); File.Copy(levelA, temp, true); File.Copy(levelB, levelA, true); File.Copy(temp, levelB, true); File.Delete(temp); //Report success MessageBox.Show(this, "Swap completed", "Swap Renamer", MessageBoxButtons.OK, MessageBoxIcon.Information); }
public Level(OgmoLevel level) { // Get the loaded grid data and use it for a collision layer. collisionGrid = level.GetLayer <OgmoGridLayer>("floors").RawData; // Create tiles from some tile layer data. foreach (OgmoTile tile in level.GetLayer <OgmoTileLayer>("tiles_bg").Tiles) { tiles.Add(new Tile(tile, false)); } // Create more tiles from some more tile layer data. foreach (OgmoTile tile in level.GetLayer <OgmoTileLayer>("tiles_floors").Tiles) { tiles.Add(new Tile(tile, true)); } // Create our objects from the object layer data. foreach (OgmoObject obj in level.GetLayer <OgmoObjectLayer>("objects").Objects) { if (obj.Name.Equals("ogmo")) { Ogmo ogmo = new Ogmo(obj, this); ogmo.Destroy += new EventHandler(ogmo_Destroy); allObjects.Add(ogmo); this.ogmo = ogmo; } if (obj.Name.Equals("chest")) { Chest chest = new Chest(obj, this); chest.Destroy += new EventHandler(DoDestroy); allObjects.Add(chest); } if (obj.Name.Equals("moving_platform")) { allObjects.Add(new MovingPlatform(obj, this)); } if (obj.Name.StartsWith("spike")) { allObjects.Add(new Spike(obj, this)); } } }
public ProjectEditor(Project project, Ogmo.ProjectEditMode editMode) { this.Text = "Project Editor - " + project.Name; this.oldProject = project; this.editMode = editMode; InitializeComponent(); newProject = new Project(); newProject.CloneFrom(oldProject); //Load the contents of the editors settingsEditor.LoadFromProject(newProject); layersEditor.LoadFromProject(newProject); tilesetsEditor.LoadFromProject(newProject); objectsEditor.LoadFromProject(newProject); //Plugins Ogmo.PluginLoader.FireEditProject(this, newProject); //Events FormClosed += onClose; }
public StartPage() { InitializeComponent(); Dock = DockStyle.Fill; //Recent projects Ogmo.CheckRecentProjects(); for (int i = 0; i < Properties.Settings.Default.RecentProjects.Count; i++) { LinkLabel link = new LinkLabel(); link.Location = new Point(4, 30 + (i * 20)); link.LinkColor = Color.Red; link.Font = new Font(FontFamily.GenericMonospace, 10); link.Size = new Size(172, 16); link.Text = Properties.Settings.Default.RecentProjectNames[i]; link.Name = Properties.Settings.Default.RecentProjects[i]; link.Click += delegate(object sender, EventArgs e) { Ogmo.LoadProject(link.Name); }; recentPanel.Controls.Add(link); } //Browser webBrowser.Url = new Uri(Path.Combine(Ogmo.ProgramDirectory, "Content", "changelog.html")); }
public bool SaveAs() { SaveFileDialog dialog = new SaveFileDialog(); if (Project.RecentLevelDirectory == "" || !Directory.Exists(Project.RecentLevelDirectory)) { dialog.InitialDirectory = Project.SavedDirectory; } else { dialog.InitialDirectory = Project.RecentLevelDirectory; } dialog.RestoreDirectory = true; dialog.FileName = SaveName; dialog.OverwritePrompt = true; dialog.Filter = Ogmo.GetLevelFilter(); //Handle cancel if (dialog.ShowDialog() == DialogResult.Cancel) { return(false); } SavePath = dialog.FileName; WriteTo(dialog.FileName); // Remember this directory string fileDirectory = Path.GetDirectoryName(dialog.FileName); if (Project.RecentLevelDirectory != fileDirectory) { Project.RecentLevelDirectory = fileDirectory; Project.Save(); } return(true); }
private void websiteButton_Click(object sender, EventArgs e) { Ogmo.WebsiteLink(); }
private void donateButton_Click(object sender, EventArgs e) { Ogmo.DonationLink(); }
private void performButton_Click(object sender, EventArgs e) { int shift = (int)shiftUpDown.Value; int min = (int)rangeMinUpDown.Value; int max = (int)rangeMaxUpDown.Value; bool overwrite = overwriteCheckbox.Checked; string pattern = patternTextbox.Text; //Error if shift is 0 if (shift == 0) { MessageBox.Show(this, "Shift amount cannot be zero!", "Shift Renamer", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Find which files will be shifted List <int> toShift = new List <int>(); int overwrites = 0; { int sign = Math.Sign(shift); int start = sign == 1 ? max : min; int end = sign == 1 ? min - 1 : max + 1; for (int i = start; i != end; i -= sign) { string match = pattern.Replace("#", i.ToString()); if (File.Exists(Path.Combine(Ogmo.Project.SavedDirectory, match))) { if (toShift.Contains(i + shift) || !File.Exists(Path.Combine(Ogmo.Project.SavedDirectory, pattern.Replace("#", (i + shift).ToString())))) { toShift.Add(i); } else { if (overwrite) { toShift.Add(i); } overwrites++; } } } } //Escape if no levels are shiftable if (toShift.Count == 0) { string msg = (overwrites > 0) ? "All levels that match the criteria would result in overwrites!" : "No levels found that match the given criteria!"; MessageBox.Show(this, msg, "Shift Renamer", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Show analysis results DialogResult result = MessageBox.Show(this, toShift.Count + " level(s) will be renamed and " + overwrites.ToString() + " level(s) will be overwritten.\nWould you like to continue? There is no undo for this action!", "Shift Renamer", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result != System.Windows.Forms.DialogResult.Yes) { return; } //Close involved levels foreach (int i in toShift) { string source = Path.Combine(Ogmo.Project.SavedDirectory, pattern.Replace("#", i.ToString())); string dest = Path.Combine(Ogmo.Project.SavedDirectory, pattern.Replace("#", (i + shift).ToString())); if (!Ogmo.CloseLevelByFilepath(source) || !Ogmo.CloseLevelByFilepath(dest)) { return; } } //Do the renaming! for (int i = 0; i < toShift.Count; i++) { //Figure out the file paths string source = Path.Combine(Ogmo.Project.SavedDirectory, pattern.Replace("#", toShift[i].ToString())); string dest = Path.Combine(Ogmo.Project.SavedDirectory, pattern.Replace("#", (toShift[i] + shift).ToString())); //Close the levels if they're open Ogmo.CloseLevelByFilepath(source); Ogmo.CloseLevelByFilepath(dest); //Rename it File.Copy(source, dest, overwrite); File.Delete(source); } }
private void onClose(object sender, FormClosedEventArgs e) { Ogmo.FinishProjectEdit(finishAction); }
private void clearHistoryButton_Click(object sender, EventArgs e) { Ogmo.ClearRecentProjects(); clearHistoryButton.Enabled = false; }