コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: StartPage.cs プロジェクト: initials/OgmoEditor2
        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"));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: Level.cs プロジェクト: blockspacer/mbhxnazombietaxi
 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));
         }
     }
 }
コード例 #7
0
ファイル: ProjectEditor.cs プロジェクト: hach-que/OgmoEditor
        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;
        }
コード例 #8
0
ファイル: StartPage.cs プロジェクト: tlzyh/Ogmo-Editor
        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"));
        }
コード例 #9
0
ファイル: Level.cs プロジェクト: tlzyh/Ogmo-Editor
        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);
        }
コード例 #10
0
 private void websiteButton_Click(object sender, EventArgs e)
 {
     Ogmo.WebsiteLink();
 }
コード例 #11
0
 private void donateButton_Click(object sender, EventArgs e)
 {
     Ogmo.DonationLink();
 }
コード例 #12
0
        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);
            }
        }
コード例 #13
0
 private void onClose(object sender, FormClosedEventArgs e)
 {
     Ogmo.FinishProjectEdit(finishAction);
 }
コード例 #14
0
 private void clearHistoryButton_Click(object sender, EventArgs e)
 {
     Ogmo.ClearRecentProjects();
     clearHistoryButton.Enabled = false;
 }