From fd24ebaeba7f798c3256e2d51182440716cd75cd Mon Sep 17 00:00:00 2001 From: quinnvoker Date: Thu, 22 Nov 2018 15:49:15 -0800 Subject: [PATCH] Began work on AnimationEditor Simple test code exists in AnimationEditor --- AnimationEditor/AnimationEditor.csproj | 108 +++++++++++++++ AnimationEditor/AnimationPreview.cs | 40 ++++++ AnimationEditor/App.config | 6 + AnimationEditor/Form1.Designer.cs | 128 ++++++++++++++++++ AnimationEditor/Form1.cs | 56 ++++++++ AnimationEditor/Form1.resx | 126 +++++++++++++++++ AnimationEditor/Program.cs | 22 +++ AnimationEditor/Properties/AssemblyInfo.cs | 36 +++++ .../Properties/Resources.Designer.cs | 71 ++++++++++ AnimationEditor/Properties/Resources.resx | 117 ++++++++++++++++ .../Properties/Settings.Designer.cs | 30 ++++ AnimationEditor/Properties/Settings.settings | 7 + AnimationEditor/Sprite.cs | 22 +++ AnimationEditor/packages.config | 4 + PuzzSwap.sln | 6 + SpriteMapEditor/Form1.Designer.cs | 18 ++- SpriteMapEditor/Form1.cs | 2 + 17 files changed, 796 insertions(+), 3 deletions(-) create mode 100644 AnimationEditor/AnimationEditor.csproj create mode 100644 AnimationEditor/AnimationPreview.cs create mode 100644 AnimationEditor/App.config create mode 100644 AnimationEditor/Form1.Designer.cs create mode 100644 AnimationEditor/Form1.cs create mode 100644 AnimationEditor/Form1.resx create mode 100644 AnimationEditor/Program.cs create mode 100644 AnimationEditor/Properties/AssemblyInfo.cs create mode 100644 AnimationEditor/Properties/Resources.Designer.cs create mode 100644 AnimationEditor/Properties/Resources.resx create mode 100644 AnimationEditor/Properties/Settings.Designer.cs create mode 100644 AnimationEditor/Properties/Settings.settings create mode 100644 AnimationEditor/Sprite.cs create mode 100644 AnimationEditor/packages.config diff --git a/AnimationEditor/AnimationEditor.csproj b/AnimationEditor/AnimationEditor.csproj new file mode 100644 index 0000000..af13c60 --- /dev/null +++ b/AnimationEditor/AnimationEditor.csproj @@ -0,0 +1,108 @@ + + + + + Debug + AnyCPU + {01280C24-6439-4186-ABA3-5686A2B66C45} + WinExe + AnimationEditor + AnimationEditor + v4.5.1 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\MonoGame.Forms.DX.2.1.0.2\lib\net451\MonoGame.Forms.DX.dll + + + ..\packages\MonoGame.Forms.DX.2.1.0.2\lib\net451\MonoGame.Framework.dll + + + ..\packages\MonoGame.Forms.DX.2.1.0.2\lib\net451\SharpDX.dll + + + ..\packages\MonoGame.Forms.DX.2.1.0.2\lib\net451\SharpDX.Direct3D11.dll + + + ..\packages\MonoGame.Forms.DX.2.1.0.2\lib\net451\SharpDX.DXGI.dll + + + + + + + + + + + + + + + + Component + + + Form + + + Form1.cs + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {69dadc27-fbeb-4625-9212-6eb5bed5102a} + QURO.AnimationLibrary + + + + \ No newline at end of file diff --git a/AnimationEditor/AnimationPreview.cs b/AnimationEditor/AnimationPreview.cs new file mode 100644 index 0000000..d2fbf00 --- /dev/null +++ b/AnimationEditor/AnimationPreview.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using MonoGame.Forms.Controls; +using QURO.AnimationLibrary; + +namespace AnimationEditor +{ + class AnimationPreview : UpdateWindow + { + public Texture2D SpriteSheet { get; set; } + public AnimatedSprite PreviewSprite { get; set; } + public Animation CurrentAnimation { get; set; } + + protected override void Initialize() + { + base.Initialize(); + } + + protected override void Update(GameTime gameTime) + { + base.Update(gameTime); + + PreviewSprite?.Update(gameTime); + } + + protected override void Draw() + { + base.Draw(); + + Editor.spriteBatch.Begin(); + PreviewSprite?.Draw(Editor.spriteBatch, new Vector2(10, 10), Color.White); + Editor.spriteBatch.End(); + } + } +} diff --git a/AnimationEditor/App.config b/AnimationEditor/App.config new file mode 100644 index 0000000..9c05822 --- /dev/null +++ b/AnimationEditor/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AnimationEditor/Form1.Designer.cs b/AnimationEditor/Form1.Designer.cs new file mode 100644 index 0000000..a41564d --- /dev/null +++ b/AnimationEditor/Form1.Designer.cs @@ -0,0 +1,128 @@ +namespace AnimationEditor +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.loadSpriteSheetButton = new System.Windows.Forms.Button(); + this.loadSpriteSheetDialog = new System.Windows.Forms.OpenFileDialog(); + this.loadSpriteMapButton = new System.Windows.Forms.Button(); + this.loadSpriteMapDialog = new System.Windows.Forms.OpenFileDialog(); + this.spritesListBox = new System.Windows.Forms.ListBox(); + this.animationPreview = new AnimationEditor.AnimationPreview(); + this.listBox1 = new System.Windows.Forms.ListBox(); + this.SuspendLayout(); + // + // loadSpriteSheetButton + // + this.loadSpriteSheetButton.Location = new System.Drawing.Point(28, 36); + this.loadSpriteSheetButton.Name = "loadSpriteSheetButton"; + this.loadSpriteSheetButton.Size = new System.Drawing.Size(119, 23); + this.loadSpriteSheetButton.TabIndex = 1; + this.loadSpriteSheetButton.Text = "Load Sprite Sheet..."; + this.loadSpriteSheetButton.UseVisualStyleBackColor = true; + this.loadSpriteSheetButton.Click += new System.EventHandler(this.loadSpriteSheetButton_Click); + // + // loadSpriteSheetDialog + // + this.loadSpriteSheetDialog.DefaultExt = "png"; + this.loadSpriteSheetDialog.FileName = "openFileDialog1"; + this.loadSpriteSheetDialog.Filter = "PNG files|*png"; + // + // loadSpriteMapButton + // + this.loadSpriteMapButton.Enabled = false; + this.loadSpriteMapButton.Location = new System.Drawing.Point(28, 65); + this.loadSpriteMapButton.Name = "loadSpriteMapButton"; + this.loadSpriteMapButton.Size = new System.Drawing.Size(119, 23); + this.loadSpriteMapButton.TabIndex = 2; + this.loadSpriteMapButton.Text = "Load Sprite Map..."; + this.loadSpriteMapButton.UseVisualStyleBackColor = true; + this.loadSpriteMapButton.Click += new System.EventHandler(this.loadSpriteMapButton_Click); + // + // loadSpriteMapDialog + // + this.loadSpriteMapDialog.DefaultExt = "xml"; + this.loadSpriteMapDialog.FileName = "openFileDialog1"; + this.loadSpriteMapDialog.Filter = "Xml Files|*.xml"; + // + // spritesListBox + // + this.spritesListBox.FormattingEnabled = true; + this.spritesListBox.Location = new System.Drawing.Point(28, 104); + this.spritesListBox.Name = "spritesListBox"; + this.spritesListBox.Size = new System.Drawing.Size(119, 264); + this.spritesListBox.TabIndex = 3; + // + // animationPreview + // + this.animationPreview.CurrentAnimation = null; + this.animationPreview.Location = new System.Drawing.Point(351, 73); + this.animationPreview.Name = "animationPreview"; + this.animationPreview.PreviewSprite = null; + this.animationPreview.Size = new System.Drawing.Size(253, 198); + this.animationPreview.SpriteSheet = null; + this.animationPreview.TabIndex = 0; + this.animationPreview.Text = "animationPreview1"; + // + // listBox1 + // + this.listBox1.AllowDrop = true; + this.listBox1.FormattingEnabled = true; + this.listBox1.Location = new System.Drawing.Point(166, 104); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(120, 264); + this.listBox1.TabIndex = 4; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.listBox1); + this.Controls.Add(this.spritesListBox); + this.Controls.Add(this.loadSpriteMapButton); + this.Controls.Add(this.loadSpriteSheetButton); + this.Controls.Add(this.animationPreview); + this.Name = "Form1"; + this.Text = "Form1"; + this.ResumeLayout(false); + + } + + #endregion + + private AnimationPreview animationPreview; + private System.Windows.Forms.Button loadSpriteSheetButton; + private System.Windows.Forms.OpenFileDialog loadSpriteSheetDialog; + private System.Windows.Forms.Button loadSpriteMapButton; + private System.Windows.Forms.OpenFileDialog loadSpriteMapDialog; + private System.Windows.Forms.ListBox spritesListBox; + private System.Windows.Forms.ListBox listBox1; + } +} + diff --git a/AnimationEditor/Form1.cs b/AnimationEditor/Form1.cs new file mode 100644 index 0000000..fffbe64 --- /dev/null +++ b/AnimationEditor/Form1.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +//using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; +using System.Xml.Serialization; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using QURO.AnimationLibrary; + +namespace AnimationEditor +{ + public partial class Form1 : Form + { + public BindingList Sprites { get; set; } + + public Form1() + { + InitializeComponent(); + } + + private void loadSpriteSheetButton_Click(object sender, EventArgs e) + { + if(loadSpriteSheetDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + FileStream fileStream = new FileStream(loadSpriteSheetDialog.FileName, FileMode.Open); + animationPreview.SpriteSheet = Texture2D.FromStream(animationPreview.Editor.graphics, fileStream); + loadSpriteMapButton.Enabled = true; + } + } + + private void loadSpriteMapButton_Click(object sender, EventArgs e) + { + if (loadSpriteMapDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + + XmlSerializer mapSerializer = new XmlSerializer(typeof(List)); + TextReader mapReader = new StreamReader(loadSpriteMapDialog.FileName); + + Sprites = new BindingList((List)mapSerializer.Deserialize(mapReader)); + spritesListBox.DataSource = Sprites; + spritesListBox.DisplayMember = "Name"; + spritesListBox.ValueMember = "Bounds"; + Rectangle[] frames = new Rectangle[] { Sprites[0].Bounds, Sprites[1].Bounds, Sprites[2].Bounds }; + animationPreview.CurrentAnimation = new Animation("Test", frames, 1f / 60f, true); + animationPreview.PreviewSprite = new AnimatedSprite(animationPreview.SpriteSheet, animationPreview.CurrentAnimation); + mapReader.Close(); + } + } + } +} diff --git a/AnimationEditor/Form1.resx b/AnimationEditor/Form1.resx new file mode 100644 index 0000000..3daccba --- /dev/null +++ b/AnimationEditor/Form1.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 190, 17 + + \ No newline at end of file diff --git a/AnimationEditor/Program.cs b/AnimationEditor/Program.cs new file mode 100644 index 0000000..6db79ba --- /dev/null +++ b/AnimationEditor/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace AnimationEditor +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/AnimationEditor/Properties/AssemblyInfo.cs b/AnimationEditor/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..17284c3 --- /dev/null +++ b/AnimationEditor/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("AnimationEditor")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AnimationEditor")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("01280c24-6439-4186-aba3-5686a2b66c45")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AnimationEditor/Properties/Resources.Designer.cs b/AnimationEditor/Properties/Resources.Designer.cs new file mode 100644 index 0000000..1e3b8b7 --- /dev/null +++ b/AnimationEditor/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace AnimationEditor.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AnimationEditor.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/AnimationEditor/Properties/Resources.resx b/AnimationEditor/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/AnimationEditor/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/AnimationEditor/Properties/Settings.Designer.cs b/AnimationEditor/Properties/Settings.Designer.cs new file mode 100644 index 0000000..a9a22e7 --- /dev/null +++ b/AnimationEditor/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace AnimationEditor.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/AnimationEditor/Properties/Settings.settings b/AnimationEditor/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/AnimationEditor/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/AnimationEditor/Sprite.cs b/AnimationEditor/Sprite.cs new file mode 100644 index 0000000..5f96c7b --- /dev/null +++ b/AnimationEditor/Sprite.cs @@ -0,0 +1,22 @@ +using Microsoft.Xna.Framework; + +namespace AnimationEditor +{ + public class Sprite + { + public string Name { get; set; } + public Rectangle Bounds { get; set; } + + public Sprite() + { + Name = "unnamed"; + Bounds = new Rectangle(1, 1, 8, 8); + } + + public Sprite(string name, Rectangle bounds) + { + Name = name; + Bounds = bounds; + } + } +} diff --git a/AnimationEditor/packages.config b/AnimationEditor/packages.config new file mode 100644 index 0000000..4b22bf5 --- /dev/null +++ b/AnimationEditor/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/PuzzSwap.sln b/PuzzSwap.sln index 4cef469..22d48c2 100644 --- a/PuzzSwap.sln +++ b/PuzzSwap.sln @@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QURO", "QURO\QURO.csproj", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpriteMapEditor", "SpriteMapEditor\SpriteMapEditor.csproj", "{2AF6999F-93F0-4096-9BC1-863CEE5E7791}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AnimationEditor", "AnimationEditor\AnimationEditor.csproj", "{01280C24-6439-4186-ABA3-5686A2B66C45}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +41,10 @@ Global {2AF6999F-93F0-4096-9BC1-863CEE5E7791}.Debug|Any CPU.Build.0 = Debug|Any CPU {2AF6999F-93F0-4096-9BC1-863CEE5E7791}.Release|Any CPU.ActiveCfg = Release|Any CPU {2AF6999F-93F0-4096-9BC1-863CEE5E7791}.Release|Any CPU.Build.0 = Release|Any CPU + {01280C24-6439-4186-ABA3-5686A2B66C45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {01280C24-6439-4186-ABA3-5686A2B66C45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {01280C24-6439-4186-ABA3-5686A2B66C45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {01280C24-6439-4186-ABA3-5686A2B66C45}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SpriteMapEditor/Form1.Designer.cs b/SpriteMapEditor/Form1.Designer.cs index 1ca0cb4..35c3ce3 100644 --- a/SpriteMapEditor/Form1.Designer.cs +++ b/SpriteMapEditor/Form1.Designer.cs @@ -57,6 +57,7 @@ this.spriteViewerPanel = new System.Windows.Forms.Panel(); this.zoomInButton = new System.Windows.Forms.Button(); this.zoomOutButton = new System.Windows.Forms.Button(); + this.zoomLabel = new System.Windows.Forms.Label(); this.spriteSheetViewer = new SpriteMapEditor.PictureBoxWithInterpolationMode(); this.filePanel.SuspendLayout(); this.spriteListPanel.SuspendLayout(); @@ -318,7 +319,7 @@ // // fillButton // - this.fillButton.Location = new System.Drawing.Point(496, 5); + this.fillButton.Location = new System.Drawing.Point(454, 5); this.fillButton.Name = "fillButton"; this.fillButton.Size = new System.Drawing.Size(86, 23); this.fillButton.TabIndex = 12; @@ -350,7 +351,7 @@ // // zoomOutButton // - this.zoomOutButton.Location = new System.Drawing.Point(618, 5); + this.zoomOutButton.Location = new System.Drawing.Point(559, 5); this.zoomOutButton.Name = "zoomOutButton"; this.zoomOutButton.Size = new System.Drawing.Size(28, 23); this.zoomOutButton.TabIndex = 6; @@ -358,6 +359,15 @@ this.zoomOutButton.UseVisualStyleBackColor = true; this.zoomOutButton.Click += new System.EventHandler(this.zoomOutButton_Click); // + // zoomLabel + // + this.zoomLabel.AutoSize = true; + this.zoomLabel.Location = new System.Drawing.Point(593, 10); + this.zoomLabel.Name = "zoomLabel"; + this.zoomLabel.Size = new System.Drawing.Size(53, 13); + this.zoomLabel.TabIndex = 15; + this.zoomLabel.Text = "Zoom: 3X"; + // // spriteSheetViewer // this.spriteSheetViewer.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("spriteSheetViewer.BackgroundImage"))); @@ -381,6 +391,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Control; this.ClientSize = new System.Drawing.Size(691, 465); + this.Controls.Add(this.zoomLabel); this.Controls.Add(this.zoomInButton); this.Controls.Add(this.spriteViewerPanel); this.Controls.Add(this.zoomOutButton); @@ -389,7 +400,7 @@ this.Controls.Add(this.spriteListPanel); this.Controls.Add(this.filePanel); this.Name = "Form1"; - this.Text = "Sprite Map Editor"; + this.Text = "QUROGames Sprite Map Editor"; this.filePanel.ResumeLayout(false); this.spriteListPanel.ResumeLayout(false); this.spriteListPanel.PerformLayout(); @@ -437,6 +448,7 @@ private System.Windows.Forms.NumericUpDown spriteWidthBox; private System.Windows.Forms.NumericUpDown spriteYPosBox; private System.Windows.Forms.NumericUpDown spriteXPosBox; + private System.Windows.Forms.Label zoomLabel; } } diff --git a/SpriteMapEditor/Form1.cs b/SpriteMapEditor/Form1.cs index b4c548c..d9ef257 100644 --- a/SpriteMapEditor/Form1.cs +++ b/SpriteMapEditor/Form1.cs @@ -172,6 +172,7 @@ namespace SpriteMapEditor private void zoomInButton_Click(object sender, EventArgs e) { zoomLevel++; + zoomLabel.Text = "Zoom: " + zoomLevel + "X"; spriteSheetViewer.Refresh(); } @@ -180,6 +181,7 @@ namespace SpriteMapEditor if (zoomLevel > 1) { zoomLevel--; + zoomLabel.Text = "Zoom: " + zoomLevel + "X"; spriteSheetViewer.Refresh(); } }