From 743ab78c285e5c90d803473c5e8eb89ab08d9120 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Thu, 21 Sep 2017 06:46:31 -0500 Subject: [PATCH] Add the SpriteDatabase to a spritecontroller --- .../Properties/Resources.Designer.cs | 16 +++++-- SpriteLibrary/Properties/Resources.resx | 3 ++ SpriteLibrary/Resources/SLIcon.ico | Bin 0 -> 27062 bytes SpriteLibrary/SpriteController.cs | 44 ++++++++++++++++++ SpriteLibrary/SpriteDatabase.cs | 24 ++++++++++ SpriteLibrary/SpriteEntryForm.cs | 7 +++ SpriteLibrary/SpriteLibrary.csproj | 3 ++ 7 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 SpriteLibrary/Resources/SLIcon.ico diff --git a/SpriteLibrary/Properties/Resources.Designer.cs b/SpriteLibrary/Properties/Resources.Designer.cs index 527b3a7..076841d 100644 --- a/SpriteLibrary/Properties/Resources.Designer.cs +++ b/SpriteLibrary/Properties/Resources.Designer.cs @@ -61,15 +61,23 @@ namespace SpriteLibrary.Properties { } /// - /// Looks up a localized string similar to {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} - ///{\colortbl ;\red0\green0\blue255;} - ///{\*\generator Riched20 10.0.10586}\viewkind4\uc1 - ///\pard\sa200\sl276\slmult1\f0\fs22\lang9 This is the Running Demo, which was created to test out the SpriteController: {{\field{\*\fldinst{HYPERLINK http://www.codeproject.com/Articles/1085446/Using-Sprites-Inside-Windows-Forms }}{\fldrslt{http://www.codeproject.com/Articles/1085446/Using-Sprites-Inside-Windows-Forms\ul0\cf0}}}}\f0 [rest of string was truncated]";. + /// Looks up a localized string similar to {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;} + ///{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f40\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609020204030204}Consolas;}{\ [rest of string was truncated]";. /// internal static string ChangeLog { get { return ResourceManager.GetString("ChangeLog", resourceCulture); } } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon SLIcon { + get { + object obj = ResourceManager.GetObject("SLIcon", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } } } diff --git a/SpriteLibrary/Properties/Resources.resx b/SpriteLibrary/Properties/Resources.resx index eb0b268..e81f0a2 100644 --- a/SpriteLibrary/Properties/Resources.resx +++ b/SpriteLibrary/Properties/Resources.resx @@ -121,4 +121,7 @@ ..\Resources\ChangeLog.rtf;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + ..\Resources\SLIcon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/SpriteLibrary/Resources/SLIcon.ico b/SpriteLibrary/Resources/SLIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..89c1b63afca141f2c61c801c50deb13c3eea7989 GIT binary patch literal 27062 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 M5cm%Q|E~!AUo^#g?*IS* literal 0 HcmV?d00001 diff --git a/SpriteLibrary/SpriteController.cs b/SpriteLibrary/SpriteController.cs index de1d7c1..7a7d28b 100644 --- a/SpriteLibrary/SpriteController.cs +++ b/SpriteLibrary/SpriteController.cs @@ -146,6 +146,12 @@ namespace SpriteLibrary private SpriteAdjustmentRatio _AdjustmentRatio; + /// + /// The Sprite Database has tools to load and save sprite definitions, as well as a tool to help + /// developers create sprite definitions. + /// + private SpriteDatabase myDatabase = null; + /// /// If your sprite images need substantial growing or shrinking when displayed, you can try setting this to "true" /// to see if it makes it run any faster. What it does is to resize the image once, and keep a cached copy of that @@ -183,6 +189,39 @@ namespace SpriteLibrary Local_Setup(); } + /// + /// Create a sprite controller, specifying the picturebox on which the sprites + /// will be displayed. You want to have the PictureBox already defined, and a background image + /// already set for the PictureBox. This constructor also uses a , which + /// loads sprite definitions at construction time, and has tools for making and storing sprites. + /// + /// + /// This is an example of a Form class that defines a SpriteController. The MainDrawingArea is a + /// PictureBox. + /// + /// public partial class ShootingFieldForm : Form + /// { + /// public ShootingFieldForm() + /// { + /// InitializeComponent(); + /// MainDrawingArea.BackgroundImage = Properties.Resources.Background; + /// MainDrawingArea.BackgroundImageLayout = ImageLayout.Stretch; + /// MySpriteDatabase = new SpriteDatabase(Properties.Resources.ResourceManager, "MySpriteDefinitions"); + /// MySpriteController = new SpriteController(MainDrawingArea, MySpriteDatabase); + /// } + /// } + /// + /// + /// The PictureBox. + /// that the sprites will be drawn in + /// A SpriteDatabase to use + public SpriteController(PictureBox Area, SpriteDatabase DatabaseToUse) + { + myDatabase = DatabaseToUse; + DrawingArea = Area; + Local_Setup(); + } + /// /// Create a sprite controller, specifying the picturebox on which the sprites /// will be displayed. @@ -980,6 +1019,11 @@ namespace SpriteLibrary return Found; } } + //If we are here, we have not yet found a sprite. Now we can check our database and see if we have one defined + if(myDatabase != null) + { + return myDatabase.SmartDuplicateSprite(this, Name, true); + } return null; } diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index c9475c4..29c0da4 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -36,6 +36,7 @@ namespace SpriteLibrary ResourceManager myResourceManager = null; string Filename = ""; Size SnapGridSize = new Size(5, 5); + System.Drawing.Icon LibIcon = null; /// /// The sprite database instantiation function. The filename can either be a file on the computer or it @@ -86,6 +87,15 @@ namespace SpriteLibrary } } + /// + /// Change the Icon for the SpriteEntryForm + /// + /// An icon image + public void SetIcon(System.Drawing.Icon toSet) + { + LibIcon = toSet; + } + /// /// The SnapGrid is the block-size that your sprite will be. For example, I will often have sprites with /// a snapgrid of 50,50. This means that the sprite can be 50x50, 100x50, or anything with a step-size @@ -155,11 +165,25 @@ namespace SpriteLibrary { SpriteEntryForm SEF = new SpriteEntryForm(this, SpriteInfoList, SnapGridSize); SEF.SetInitialSprite(FirstItemIndex); + if (LibIcon != null) SEF.SetIcon(LibIcon); SEF.ShowDialog(); //Use the updated list returned from the form. SpriteInfoList.Clear(); SpriteInfoList.AddRange(SEF.GetUpdatedList()); } + + /// + /// Generate a new, named sprite from a sprite template stored in the database. Most of the time you do + /// not want to use this yourself. SpriteControllers that are defined with a database will automatically + /// look up sprite templates that they do not have sprites for. This function is just a wrapper for SmartDuplicateSprite. + /// + /// The name of the sprite to load. Names are case-sensitive. + /// The sprite controller that will store the sprite in its cache + /// A new, named sprite, or null if no such template is found. + public Sprite SpriteFromName(string Name, SpriteController ControllerToUse) + { + return SmartDuplicateSprite(ControllerToUse, Name, true); + } #endregion #region General Functions diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index d17e286..c245eb5 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -87,6 +87,8 @@ namespace SpriteLibrary myToolTip.SetToolTip(btnNewSprite, "Create a new sprite."); myToolTip.SetToolTip(btnDeleteAnim, "Delete the current animation you are looking at."); myToolTip.SetToolTip(btnDelSprite, "Delete the current sprite you are looking at."); + + Icon = Properties.Resources.SLIcon; } internal List GetUpdatedList() @@ -94,6 +96,11 @@ namespace SpriteLibrary return SpriteInformation; } + internal void SetIcon(Icon IconImage) + { + Icon = IconImage; + } + private void PopulateMenu() { ResourceManager rm = myResources; diff --git a/SpriteLibrary/SpriteLibrary.csproj b/SpriteLibrary/SpriteLibrary.csproj index eda7b56..3371803 100644 --- a/SpriteLibrary/SpriteLibrary.csproj +++ b/SpriteLibrary/SpriteLibrary.csproj @@ -85,6 +85,9 @@ + + +