From 9efa891d743996264948af26b39a3f652a536238 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 10 Sep 2017 16:56:18 -0500 Subject: [PATCH 01/77] Remove from git --- .vs/SpriteLibrary/v14/.suo | Bin 61440 -> 0 bytes .vs/SpriteLibrary/v15/.suo | Bin 64512 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .vs/SpriteLibrary/v14/.suo delete mode 100644 .vs/SpriteLibrary/v15/.suo diff --git a/.vs/SpriteLibrary/v14/.suo b/.vs/SpriteLibrary/v14/.suo deleted file mode 100644 index 65beebbfd2cdbb3706bfc40b3f0a8fdbab80b810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61440 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 B7s&ts diff --git a/.vs/SpriteLibrary/v15/.suo b/.vs/SpriteLibrary/v15/.suo deleted file mode 100644 index 3b0f24b8f34e69b41c3e5a84ce1e39eafd46377a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64512 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 SNUZoP?{uo7 Date: Sun, 10 Sep 2017 16:56:52 -0500 Subject: [PATCH 02/77] Add things to ignore to git --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ac7b446 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +################################################################################ +# This .gitignore file was automatically created by Microsoft(R) Visual Studio. +################################################################################ + +/.vs/SpriteLibrary From 1dc3b5e9f11440abb9a6054ceb16f24488e03801 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 10 Sep 2017 16:57:31 -0500 Subject: [PATCH 03/77] initial sprite sharing functions --- SpriteLibrary/SpriteController.cs | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/SpriteLibrary/SpriteController.cs b/SpriteLibrary/SpriteController.cs index 6092469..04fbb24 100644 --- a/SpriteLibrary/SpriteController.cs +++ b/SpriteLibrary/SpriteController.cs @@ -116,6 +116,7 @@ namespace SpriteLibrary Image MyOriginalImage; //The untainted background PictureBox DrawingArea; //The PictureBox we draw ourselves on List Sprites = new List(); + List LinkedControllers = new List(); //Other sprite controllers that we share sprites with /// /// Since everything needs a random number generator, we make one that should be accessible throughout your program. @@ -638,6 +639,21 @@ namespace SpriteLibrary return newList; } + /// + /// Get a list of all your named sprites. These should just be your template sprites. + /// + /// A list containing all the named sprites + public List AllNamedSprites() + { + List tList = new List(); + foreach(Sprite one in Sprites) + { + if (one.SpriteName != "") + tList.Add(one); + } + return tList; + } + /// /// Return an adjustment ratio. This is the image-size to picture-box ratio. /// It is used for calculating precise pixels or picture-box locations. @@ -959,9 +975,35 @@ namespace SpriteLibrary public void AddSprite(Sprite SpriteToAdd) { Sprites.Add(SpriteToAdd); + AddSpriteToLinkedControllers(SpriteToAdd); SortSprites(); } + /// + /// This internal function is for adding named sprites from other controllers to keep them in sync + /// + /// The sprite to add if it does not exist yet on this controller + internal void AddSpriteIfNotExists(Sprite SpriteToAdd) + { + if (SpriteToAdd.SpriteName == "") return; //We only add named sprites + Sprite found = SpriteFromName(SpriteToAdd.SpriteName); + if(found == null) + Sprites.Add(SpriteToAdd); + } + + /// + /// If we are linked to other controllers, add this sprite template to the other controllers also + /// + /// The sprite we are trying to add + internal void AddSpriteToLinkedControllers(Sprite SpriteToAdd) + { + if (SpriteToAdd.SpriteName == "") return; //We only add named sprites + foreach (SpriteController one in LinkedControllers) + { + one.AddSpriteIfNotExists(SpriteToAdd); + } + } + /// /// Tell a sprite to destroy itself. The sprite will have Destroying property set to true from /// the time you destroy it until it vanishes. Whe you destroy a sprite, it will erase itself @@ -1000,6 +1042,64 @@ namespace SpriteLibrary What.SetName(Name); } + + /// + /// Link up a sprite controller so that it shares sprites with this other sprite controller. If one sprite controller + /// does not have the named sprite, it will query any linked controllers for that named sprite and copy it to the + /// controller that did not have it. This means you only need to create a sprite once, and you can use it on multiple + /// sprite controllers. In many games, you will want to have a sprite appear on different PictureBoxes, and this is + /// a way to do that. For example, you may want to have a bad-guy running around on the screen, but also have his sprite + /// appear in a bad-guy summary, along with his stats, on the side. Loading sprites can be slow, so this makes things a bit + /// faster by only needing to load them once. + /// + /// The sprite-controller to link. You only need to link it one direction, + /// the sprite controller will automatically create a bi-directional link + public void LinkControllersForSpriteTemplateSharing(SpriteController ControllerToLinkToThis) + { + if (ControllerToLinkToThis == null) return; + if(!LinkedControllers.Contains(ControllerToLinkToThis)) + { + LinkedControllers.Add(ControllerToLinkToThis); + } + ControllerToLinkToThis.LinkControllersForSpriteTemplateSharing(this); //link the other direction also + } + + /// + /// Unlink a previously linked controller. If you have linked a controller from a different window and are trying to + /// kill off the controller in a window you are closing, you want to unlink them as the window closes. We take a brief + /// moment to copy over any templates that have not yet been copied over. + /// + /// The + public void UnlinkControllersForSpriteTemplateSharing(SpriteController ControllerToUnlink) + { + if (ControllerToUnlink == null) return; //nothing to do. + if (LinkedControllers.Contains(ControllerToUnlink)) + { + LinkedControllers.Remove(ControllerToUnlink); + } + ControllerToUnlink.UnlinkControllersForSpriteTemplateSharingInternal(this); + List MySpriteTemplates = AllNamedSprites(); + List TheirSpriteTemplates = ControllerToUnlink.AllNamedSprites(); + foreach (Sprite one in MySpriteTemplates) + ControllerToUnlink.AddSpriteIfNotExists(one); + foreach (Sprite one in TheirSpriteTemplates) + AddSpriteIfNotExists(one); + } + + /// + /// This unlinks the second half. This is an internal function so people using SpriteController cannot accidentally + /// unlink half a controller. + /// + /// + internal void UnlinkControllersForSpriteTemplateSharingInternal(SpriteController ControllerToUnlink) + { + if (ControllerToUnlink == null) return; //nothing to do. + if (LinkedControllers.Contains(ControllerToUnlink)) + { + LinkedControllers.Remove(ControllerToUnlink); + } + } + /// /// This takes a point, as given by the mouse-click args, and returns the sprites at that point. Different /// functions use different coordinates, whether based off the background image, or based off the picturebox. From ed0529deae2fd20841aa7fdf80b6b6844492a6b3 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 10 Sep 2017 17:00:59 -0500 Subject: [PATCH 04/77] Get Sprites from linked controllers also --- SpriteLibrary/SpriteController.cs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/SpriteLibrary/SpriteController.cs b/SpriteLibrary/SpriteController.cs index 04fbb24..2e613bc 100644 --- a/SpriteLibrary/SpriteController.cs +++ b/SpriteLibrary/SpriteController.cs @@ -964,9 +964,34 @@ namespace SpriteLibrary if (OneSprite.SpriteName == Name) { return OneSprite; } } + //If we have not found one on this controller, get it from another controller + foreach(SpriteController SC in LinkedControllers) + { + Sprite Found = SC.SpriteFromNameInternal(Name); + if (Found != null) + { + //If we get here, we do not have it in our list. Add it to this controller and then return it + AddSprite(Found); + return Found; + } + } return null; } + /// + /// The internal SpriteFromName does not check the linked controllers. Keeps us from entering into an endless loop + /// + /// + /// + internal Sprite SpriteFromNameInternal(string Name) + { + foreach (Sprite OneSprite in Sprites) + { + if (OneSprite.SpriteName == Name) + { return OneSprite; } + } + return null; + } /// /// Add the specified sprite to the list of sprites we know about. You usually do not need to do this. /// Sprites add themselves to the controller when you create a new sprite. From 527f2b4ffdcd9ba2e8675f7a536fa916b024838b Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 10 Sep 2017 17:06:06 -0500 Subject: [PATCH 05/77] Add some documentation --- SpriteLibrary/SpriteController.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteController.cs b/SpriteLibrary/SpriteController.cs index 2e613bc..4db792e 100644 --- a/SpriteLibrary/SpriteController.cs +++ b/SpriteLibrary/SpriteController.cs @@ -921,7 +921,11 @@ namespace SpriteLibrary } /// - /// Find a sprite that has been named with the specified name. Then duplicate that sprite + /// Find a sprite that has been named with the specified name. Then duplicate that sprite. If you have + /// SpriteControllers which are linked (see + /// + /// SpriteController.LinkControllersForSpriteTemplateSharing for how to do this), if the Sprite template is + /// not contained in this controller, it is looked up in any linked controllers. /// /// /// Below is a function that creates a sprite based off a name, and puts it at the designated coordinates. From ed0a4bcfc64bda95f8399a46e14350627e96f698 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 11 Sep 2017 20:34:14 -0500 Subject: [PATCH 06/77] removing files --- SpriteLibrary/bin/Release/SpriteLibrary.XML | 1766 ----------------- SpriteLibrary/bin/Release/SpriteLibrary.dll | Bin 66048 -> 0 bytes SpriteLibrary/bin/Release/SpriteLibrary.pdb | Bin 138752 -> 0 bytes .../obj/Release/CoreCompileInputs.cache | 1 - .../DesignTimeResolveAssemblyReferences.cache | Bin 713 -> 0 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 7437 -> 0 bytes ...riteLibrary.Properties.Resources.resources | Bin 8537 -> 0 bytes .../SpriteLibrary.csproj.FileListAbsolute.txt | 8 - ...priteLibrary.csproj.GenerateResource.Cache | Bin 997 -> 0 bytes ...brary.csprojResolveAssemblyReference.cache | Bin 2682 -> 0 bytes SpriteLibrary/obj/Release/SpriteLibrary.dll | Bin 66048 -> 0 bytes SpriteLibrary/obj/Release/SpriteLibrary.pdb | Bin 138752 -> 0 bytes .../Properties.Resources.Designer.cs.dll | Bin 3072 -> 0 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 16 files changed, 1775 deletions(-) delete mode 100644 SpriteLibrary/bin/Release/SpriteLibrary.XML delete mode 100644 SpriteLibrary/bin/Release/SpriteLibrary.dll delete mode 100644 SpriteLibrary/bin/Release/SpriteLibrary.pdb delete mode 100644 SpriteLibrary/obj/Release/CoreCompileInputs.cache delete mode 100644 SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferences.cache delete mode 100644 SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.Properties.Resources.resources delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csproj.FileListAbsolute.txt delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csproj.GenerateResource.Cache delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.dll delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.pdb delete mode 100644 SpriteLibrary/obj/Release/TempPE/Properties.Resources.Designer.cs.dll delete mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs delete mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs delete mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/SpriteLibrary/bin/Release/SpriteLibrary.XML b/SpriteLibrary/bin/Release/SpriteLibrary.XML deleted file mode 100644 index 5c53934..0000000 --- a/SpriteLibrary/bin/Release/SpriteLibrary.XML +++ /dev/null @@ -1,1766 +0,0 @@ - - - - SpriteLibrary - - - - - This is a delegate for a keypress event. - - - - - - - This is a system that can be used to check for any keypress on a form. It is usually used through - - - You want to define a variable on your form, something like: - - private KeyMessageFilter the_filter = new KeyMessageFilter(); - - When the form loads (in the - event of the form), set the filter with: - - Application.AddMessageFilter(the_filter); - - And then, to use it, do something like: - - bool Up = m_filter.IsKeyPressed(Keys.W); - bool Down = m_filter.IsKeyPressed(Keys.S); - - Much of this code was found here: - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - 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]";. - - - - - A single frame of an animation - - - - - One animation. A series of images. - - - - - Create an image from an image that has a bunch of frames in the one image. - Start at the specified position (Start), and grab Count items (if we can find them) - - The number of frames to grab - A point in the image where we start capturing frames - The smart image this is part of - the image we use for the sprite. Should have lots of images as a part of it. - the width of each frame - the height of each frame - The duration in miliseconds for this frame - - - - Create an image from an image that has a bunch of frames in the one image. - Start at (0,0) with the specified height and width. Pull out as many images as we can - - The smart image this is part of - the image we use for the sprite. Should have lots of images as a part of it. - the width of each frame - the height of each frame - The duration in miliseconds for this frame - - - - This is the holder and parser for images within the AnimatedSprite world - It allows you to store and access animations. A smart image might be a "troll" - that has a series of animations for up, down, left, right, and die. - - - - - Make an animated image from an image that contains multiple frames - - The sprite controller this is attached to - The image we use to draw the animation from - The width of the image to cut out of the main image - The height of the image to cut out of the main image - The duration in miliseconds - - - - Return true if the specified animation and frame for that animation needs - to be changed due to the time passing. - - The animation index - the frame index - The time that has passed since the last frame was displayed. - - - - - Check to see if the animation is in the last frame. Only works if animateonce is set to true - - The animateOnce value of the sprite - The animation we think we are on - The frame we think we are on - - - - - Return the number of frames that the specified animation has. - - What animation to check - The number of animation frames found in that animation - - - - An EventArgs that contains information about Sprites. Most of the Sprite events use - this SpriteEventArgs. - - - - - If another Sprite is involved in the event (Collision), than that Sprite is included here. - It will be null if no other Sprite is involved. - - - - - The CollisionMethod used in the event. Currently, only rectangle collisions are used - - - - - For the CheckBeforeMove event, newlocation will be the location the sprite is trying - to move to. You can adjust the point (move it left, right, up, down) and it will affect - the placement of the sprite. - - - - - Used primarily in the CheckBeforeMove event. If you set cancel to true, then the move fails. - You can use this to keep a Sprite from going places where it ought not to go. - - - - - A Sprite is an animated image that has a size, position, rotation, and possible vector - It tracks where in the animation sequence it is, can report colisions, etc. This SpriteController - draws, moves, and deals with most graphical aspects of the sprites for you. - - - - - The Sprite ID as specified by the sprite controller. - - - - - The name of the sprite. Use SetSpriteName(Name) to change this name. Most Named sprites - are used to define what a sprite is. Once you have created a named sprite, you usually use - to clone the sprite for use. The basic rule of thumb is - to load your sprites from images once, and name the initial sprites. Then, when you go to use - those sprites, get duplicates of them. The reason for this is because it takes more processing time to initially - create the sprites than it takes to duplicate them. - - - - - Set the opacity of the sprite. The value should be between 0 and 1. 1 is solid, 0 is transparent. - Sometimes you want to drag a sprite around the map, or show a sprite that "could be there." Setting - the sprite opacity is usually how you do that. One warning, however. The opacity value takes effect the - next time it is drawn. If the sprite is animating rapidly, it will take effect nearly emmediately. If - it is not animating, not moving, or just sitting there, then it may not take effect for quite some time. - - - - - Return the name of the sprite that this was duplicated from. A duplicated sprite will have - no name, but will have a SpriteOriginName. - - - - - This is the frame of the current animation sequence. You can use this if you need to figure out what frame index - to resume something at, or something like that. - - - - - The final frame is the one that gets displayed once the animation has finished. - - - - - Report whether or not the animation has been completed. When you tell a Sprite to AnimateOnce, - this will report "false" until the animation sequence has been finished. At that time, the value - will be "True." The tricky bit is that this is a boolean. If you have not told a sprite to - animate once, it will always return "false." If a sprite is paused, this returns "false." The only - time this returns "true" is when you tell a sprite to animate once, or animate a few times, and those - times have completed. At that time, this will report "True". If you have a sprite with only one frame, - it may not look like it is "animating", but it is. It is simply animating that one frame over and over. - So, AnimationDone reports false, unless you have told it to animate_once. - - - - - The movement speed of the sprite. To make a Sprite move, you need to set the MovementSpeed, - the direction (using - , - , - , - or ), and the - property. - The speed is calculated in pixels per amount of time. A higher number is faster than a lower number. - - - - - Tells us if we are in the process of doing a MoveTo operation. This boolean should be the - opposite of SpriteReachedEndpoint, but that boolean is poorly named. This is usually the easier - one to use. - - - - - If we are trying to collide with a sprite, we store that sprite here. - - - - - Determine if the sprite automatically moves (you need to give it a direction [using one of the - SetSpriteDirection functions] and speed [MovementSpeed = X] also) - - - - - A number from 0 to 100. Default = 50. Higher numbers print on top of lower numbers. If you want a sprite to - always be drawn on top of other sprites, give it a number higher than 50. If you want a sprite to go under - other sprites, make its number lower than 50. - - - - - Determine if the sprite will automatically move outside the box. If not, it will hit the side of the box and stick - - - - - Get or set the animation nimber. It is best to change the animation using ChangeAnimation. - It is safer. - - - - - The number of animations this sprite has - - - - - Report whether or not this Sprite has been drawn. If it has, then it needs to be erased at - some point in time. - - - - - The sprite location as found on the base image. This is usually the easiest location to use. - - - - - The sprite location as found on the picture-box that this sprite is associated with. Used when dealing with mouse-clicks - - - - - Return the size of the sprite in reference to the image on which it is drawn. To get the - size of the Sprite in relation to the PictureBox, use GetVisibleSize - - - - - Return the relative size of the Sprite in relation to the PictureBox. If the box has been - stretched or shrunk, that affects the visible size of the sprite. - - - - - Change the rotation of the sprite, using degrees. 0 degrees is to the right. 90 is up. - 180 left, 270 down. But, if your sprite was drawn facing up, then rotating it 90 degrees - will have it pointing left. The angle goes counter-clockwise. The image will be scaled - such that it continues to fit within the rectangle that it was originally in. This results - in a little bit of shrinking at times, but you should rarely notice that. - - - - - Flip the image when it gets printed. If your sprite is walking left, flipping it will - make it look like it is going right. - This works great for many things. But, if your program is gobbling memory or CPU, you may need to - consider using Sprite.AddAnimation - - - - - Flip the image when it gets printed. If your sprite looks like it is facing up, doing - this will make it look like it faces down. - This works great for many things. But, if your program is gobbling memory or CPU, you may need to - consider using Sprite.AddAnimation - - - - - If the Sprite is in the middle of being Destroyed, this is set to true. When a Sprite is - Destroyed, it needs to erase itself and do some house-cleaning before it actually vanishes. - During this time, you may not want to use it. It is always a good thing to verify a Sprite - is not in the middle of being destroyed before you do something important with it. To Destroy - a Sprite, use the Sprite.Destroy() function. - - - - - This is true unless we are using MoveTo(point) or MoveTo(list of points) to tell the sprite to move - from one place to the next. This boolean tells us if it has finished or not. - - - - - The visible Height as seen in the PictureBox. It may be stretched, or shrunk from the actual - image size. - - - - - The visible width as seen in the PictureBox. The Sprite may be stretched or shrunk from the - actual image size. - - - - - A Sprite can hold a payload. Use this to store extra information about the various Sprites. Health, Armor, - Shoot time, etc. But, to store information in the payload, you need to make a new class of SpritePayload. The syntax - for doing so is: - - public class TankPayload : SpritePayload { public int Armor; public int Speed; } - - You can access the payload and retrieve the various values. - - - - - A delegate that has a SpriteEventArgs instead of EventArgs. Used for most - of the Sprite events. This allows us to pass more information from sprite events than - a basic EventArgs allows for - - The Sprite that triggers the event - A SpriteEventArgs class which contains Sprite Event values - - - - This event happens right after the sprite is created. Use this to immediately set a - sprite to animate once or something like that. - - - - - This happens when the sprite hits the border of the picture-box. - Useful for when you want to have shots explode when they hit the side. - - - - - This happens when the sprite has exited the picture box. Useful when you want to - keep sprites from traveling on forever after exiting. - - - - - Only used when you tell an animation to animate once. At the end of the animation, - this function fires off. - - - - - This happens when two sprites hit each-other. The SpriteEventArgs that is returned - contains the sprite that this sprite hits. - - - - - This event fires off before a sprite is drawn. Use it if you have constraints. You - can change the location or cancel the move entirely. - - - - - This event happens when someone clicks on the sprite (on the rectangle in which the sprite is). - If you want the event to fire off only when someone clicks on the visible part of the sprite, - use ClickTransparent instead. - - - - - This event happens when someone clicks on the sprite (on the sprite image itself). - If the sprite is sometimes hidden, but you want the click to work even if it is not - visible at that instant, use Click instead. - - - - - This event happens when the mouse moves over the sprite, and then pauses. We use the hover timing from the - parent form. - - - - - When the mouse moves over the sprite. Use this for a menu, when you want the menu item to glow when the - mouse is over the menu item sprite. - - - - - When the mouse moves off the sprite. Use this for a menu, when you want the menu item to stop glowing when - the mouse moves away from the menu item sprite. - - - - - This event happens when the mouse moves over a non-transparent portion of the sprite, and then pauses. - We use the hover timing from the parent form. - - - - - When the mouse moves over a non-transparent portoin of the sprite. Use this for a menu, when you want the - menu item to glow when the mouse is over the menu item sprite. - - - - - When the mouse moves off the non-transparent portion of the sprite. Use this for a menu, when you want the - menu item to stop glowing when - the mouse moves away from the menu item sprite. - - - - - When the frame of an animation changes. If you want to have something happen every time - the foot of your monster comes down, when the swing of your sword is at certain points, etc. - Check to see that the Animaton and FrameIndex are what you expect them to be. - - - - - An event for when you tell a Sprite to MoveTo(Point) a specific point, or, when you - tell the Sprite to MoveTo(list of points). When the Sprite has reached the final destination, - the Sprite fires off this event. - - - - - When you tell a sprite to MoveTo(list of points), this fires off every time it gets to - one of the points. When it gets to the final point, only the SpriteAtEndPoint event fires off. - - - - - The Sprite has just been told to be destroyed. You might want to do some cleanup. - If you need to destroy some payload data, or tell something to cleanup after the sprite - this is where to do that. - - - - - Generate a new sprite. It takes the image and the width and height. If there are multiple images of that width - and height in the image, an animation is created. - - The sprite controller that manages this sprite - The image we pull the animation from - The width of one animation frame - The height of one animation frame - - - - Generate a new sprite. It takes the image and the width and height. If there are multiple images of that width - and height in the image, an animation is created. - - The sprite controller that manages this sprite - The image we pull the animation from - The size of the animation frame - - - - Generate a new single-frame sprite from the specified image. - - The sprite controller that manages this sprite - The image we pull the animation from - - - - Generate a new sprite. It takes a width, height, and the duration in Milliseconds for each frame - - The sprite controller - The image we pull the animations from - The width of one animation frame - the height of one animation frame - The number of milliseconds each frame is shown for as it animates. - - - - Create a Sprite from an animation image, specifying the number of consecutive - frames to grab. - - A point on the specified image where we begin grabbing frames - The Sprite controller we are associating the sprite with - An image that we grab the frames from - The width of one frame - The height of one frame - The number of milliseconds each frame is displayed for - The number of frames to grab as a part of this animation - - - - Create a Sprite that is based off of the specified sprite. Clone the Sprite except that - we set SpriteName = "" and OrigSpriteName = the OldSprite.SpriteName. That way we know that - the sprite was duplicated from the original, and we can still distinguish the original from - the duplicate. - - The Sprite to make a copy of - If we want to set this sprite name to be that of the original. This is a terrible idea. Never do it. - - - - Give this sprite a name. This way we can make a duplicate of it by specifying the name - - A string that represents the new name of the sprite - - - - Add another animation to an existing Sprite. After you add animations, you can use - ChangeAnimation to select which animation you want the specified sprite to show. - For example, you may want to have Animation 0 be a guy walking left, and animation 1 is - that same guy walking right. Because we do not specify the number of frames, it starts - at the top-left corner and grabs as many frames as it can from the image. - - The animation image to grab the frames from - The width of each frame - The height of each frame - - - - Add another animation to an existing Sprite. After you add animations, you can use - ChangeAnimation to select which animation you want the specified sprite to show. - For example, you may want to have Animation 0 be a guy walking left, and animation 1 is - that same guy walking right. Because we do not specify the number of frames, it starts - at the top-left corner and grabs as many frames as it can from the image. - - The animation image to grab the frames from - The size of each frame - - - - Add another animation to an existing Sprite. After you add animations, you can use - ChangeAnimation to select which animation you want the specified sprite to show. - For example, you may want to have Animation 0 be a guy walking left, and animation 1 is - that same guy walking right. Because we do not specify the number of frames, it starts - at the top-left corner and grabs as many frames as it can from the image. - - The animation image to grab the frames from - - - - Add another animation to an existing Sprite. After you add animations, you can use - ChangeAnimation to select which animation you want the specified sprite to show. - For example, you may want to have Animation 0 be a guy walking left, and animation 1 is - that same guy walking right. Because we do not specify the number of frames, it starts - at the top-left corner and grabs as many frames as it can from the image. - - The animation image to grab the frames from - The duration the single frame uses before refreshing. 1000 is a good number. - - - - Add another animation to an existing Sprite. After you add animations, you can use - ChangeAnimation to select which animation you want the specified sprite to show. - For example, you may want to have Animation 0 be a guy walking left, and animation 1 is - that same guy walking right. Because we do not specify the number of frames, it starts - at the top-left corner and grabs as many frames as it can from the image. - - The animation image to grab the frames from - The width of each frame - The height of each frame - The time in milliseconds we use for each frame - - - - Add another animation to an existing Sprite. After you add animations, you can use - ChangeAnimation to select which animation you want the specified sprite to show. - For example, you may want to have Animation 0 be a guy walking left, and animation 1 is - that same guy walking right. Because we do not specify the number of frames, it starts - at the top-left corner and grabs as many frames as it can from the image. - - The animation image to grab the frames from - The width of each frame - The height of each frame - The time in milliseconds we use for each frame - The number of frames we grab from the image - The starting position on the Image where we grab the first frame - - - - Duplicate an animation, except rotated by the specified number of degrees. For example, if you have - a single animation (0), and you want to rotate it by 90 degrees, it will create animation 1 with that - rotation to it. In the long haul, generating a few rotated animations is less memory intensive than - rotating it on demand. - - An integer value specifying the animation to duplicate - The amount of counter-clockwise rotation to add - - - - Duplicate an animation, except rotated by the specified number of degrees. For example, if you have - a single animation (0), and you want to rotate it by 90 degrees, it will create animation 1 with that - rotation to it. In the long haul, generating a few rotated animations is less memory intensive than - rotating it on demand using the or booleans. - - An integer value specifying the animation to duplicate - A boolean, stating if we should mirror horizontally - A boolean, stating if we should mirror vertically - - - - Start a new animation, but do it just once. You can use AnimateJustAFewTimes(1) to the same effect. - Or, you can use AnimateJustAFewTimes with a different number. The SpriteAnimationComplete event will - fire off when the animation completes. The variable, Sprite.AnimationDone will be true once the - animation finishes animating. - - Once the animation has finished, display this animation frame. - -1, or any number that is not an actual frame, will show the last frame of the animation. - The animation index you want to use - - - - Start a new animation. It will complete the animation the number of times you specify. - For example, if your sprite is walking, and one animation is one step, specifying 4 here - will result in your sprite taking 4 steps and then the animation stops. You will want - to make sure you are checking for when the animation stops, using the SpriteAnimationComplete event, - checking the Sprite.AnimationDone flag. - - The animation index you want to use - The number of animations to do before it stops - Once the animation has finished, display this animation frame. - -1, or any number that is not an actual frame, will show the last frame of the animation. - - - - Start a new animation index from scratch - - The animation index you want to use - The first frame you want to start the animation at. - - - - Change the animation speed of a particular animation. This looks at the first frame - and compares that frame to the speed specified. It adjusts all the animations by the - same percentage. - - The integer representing the animation to change - The speed in milliseconds for the new animation - - - - Change the animation speed of a specific frame. Beware. This affects every sprite using this frame - - The index of the animation - The index of the frame within the animation - The new frame duration in milliseconds - - - - Get the animation speed of a single frame. - - The animation we are looking at - The index of the frame we wish to get the speed of - -1 if either index is out of range. Otherwise, return the total milliseconds of the specified frame. - - - - Return the animation speed of this particualar animation of the sprite. - - The animation we are looking at - The speed which was set. The speed is calculated in pixels per amount of time. A higher number is faster than a lower number - - - - Actually draw the Sprite. Never use this. It is used by the SpriteController - - - - - Put the Sprite at a specified location, using the dimentions of the BackgroundImage. - Unless you are using coordinates you have gotten from a mouse-click, this is how you want - to place a Sprite somewhere. It is the easiest way to track things. But, if you are - doing something using mouse-click coordinates, you want to use PutPictureBoxLocation - - The new point on the Image - - - - Put the Sprite at a specified location, using the dimentions of the BackgroundImage. - Unless you are using coordinates you have gotten from a mouse-click, this is how you want - to place a Sprite somewhere. It is the easiest way to track things. But, if you are - doing something using mouse-click coordinates, you want to use PutPictureBoxLocation - - The X location on the background image - the Y location on the background image - - - - Put the Sprite at a specified location, using the dimentions of the PictureBox. - You want to use this if you got your X/Y position from a mouse-click. Otherwise, - this is the harder way to track things, particularly if your window can resize. Use - PutBaseImageLocation instead. - - A point on the PictureBox - - - - Done when the box resizes. We need to recompute the picturebox location. The resize function - automatically calls this. You should never need to do so. - - - - - This is run from the sprite controller every 10 miliseconds. You should never - need to call this yourself. - - - - - Return the point that this sprite needs to be shooting for, for the center of this sprite to - hit the center of the destination sprite. - - The sprite we are shooting for trying to hit - A point which allows the moving sprite to collide with the destination sprite. - - - - Resize the sprite using the base image coordinates. The width and height specified - are relative to the size of the background image, not the picturebox. - - The size (width, height) to make the sprite - - - - Tell the sprite to kill itself. It will erase itself and then - be removed from the spritelist. Then it will be gone forever. - - - - - Remove the sprite from the field. This does not destroy the sprite. It simply removes it from action. - Use UnhideSprite to show it again. - - - - - Make the sprite reappear. If you have not positioned it yet, it will show up at the top corner. It is best to only - use this when you have hidden it using HideSprite - - - - - Return true or false, asking if the specifiec sprite is at the point on the picturebox. - You can use this with a mouse-click to see if you are clicking on a sprite. Use the - SpriteCollisionMethod "transparent" to see if you have clicked on an actual pixel of the - sprite instead of just within the sprite rectangle. - - The x and y location in ImageBox coordinates. - The method of determining if the sprite is at that position - True if the sprite is at the specified location, false if it is not - - - - Because sprites are scaled (shrunk or stretched), this function finds the point - within the sprite that is specified by the location. this function is used by - a number of internal processes, but may be useful to you. But probably not. - - A point given in Image coordinates - A point within the pixel that can be used to find a particular pixel in a sprite. - - - - Check to see if the sprite exists at the point specified. The point given is - in coordinates used by the image (not the PictureBox, use SpriteAtPictureBox for that) - - An imagebox location - the method to use to determine if the image is there - true if the sprite is at that position, false if it is not - - - - return the current image frame. Warning: If you write to this image, it will - affect all sprites using this frame. - - An image that is the current sprite frame for the current animation - - - - return the frame for the given index. Warning: If you write to this image, it will - affect all sprites using this frame. - - The Animation index we are trying to find - The Frame index we are trying to find - An image that is the current sprite frame for the current animation - - - - Replace a sprite image. It will replace the current frame unless you specify both an animation - and the frame within the animation you wish to replace. Warning: This replaces the image_frame - for every sprite that uses that is based off the same image. - - The new image to use - The animation you want to change - The frame within the animation you want to change - - - - Taking into consideration how the sprite is stretched or shrunk, it - returns a SpriteAdjustmentRatio that can be used to work with the sprite - itself. - - The current SpriteAdjustmentRatio used to display this sprite - - - - Return true if the sprite can go to this point and still be on the drawing-board. - - The point, given in pixels and corresponding to pixels on the picturebox - true or false - - - - Return true if the sprite can go to this point and still be on the drawing-board. - - The point, given in pixels and corresponding to pixels on the background image - true or false - - - - Move to where the destination sprite currently is at. This is a dumb move. It does not take into - consideration the movement direction of the destination sprite. So the moving sprite does need to be - moving a bit faster than the sprite you are trying to hit for it to do so. - - The sprite we are trying to hit - - - - Tell the Sprite to move towards a destination. You need to give the sprite a MovementSpeed - and tell the sprite that it can automatically move. But the sprite will begin a journey towards - that point at the MovementSpeed you have set. When it gets to the point, the SpriteArrivedAtEndPoint event - will fire off. Also, the SpriteReachedEnd bool will be true. - - An image-point that the sprite will move to. - - - - Tell the sprite to move towards each point in turn. The sprite will move in a straight line until the first point. - From there it moves to the next point, until it has reached the last point. Every time it reaches a point, the - SpriteArrivedAtWaypoint event is triggered. When it reaches the final point in the list, the SpriteArrivedAtEndPoint - event is triggered. While the sprite is moving, the SpriteReachedEndPoint attribute is set to false. When it has - arrived, it is set to true. - - A list of Image-Points that the sprite will follow, one after the other - - - - Sets the Sprite Moving towards a given point. You are responsible to do something with it once it gets there. - If you want it to automatically stop upon reaching it, use MoveTo instead. Actually, the MoveTo function works - a lot better than this one. Because of integer rounding and a few other things, this function is a little - bit imprecise. If you send it towards a point, it will go in that general direction. The MoveTo function - will perpetually recalculate its way to the destination point and actually reach that point. SetSpriteDirectionToPoint - will sort-of head in the direction of the point. But MoveTo will go to that point. - - The destination, based off a point on the background image, that we send the sprite towards. - - - - Cancel a MoveTo command. The sprite will stop moving, and all the waypoints will be removed. - - - - - Given a "degree" (from 0 to 360, set the direction - that the sprite moves automatically. 0 is right, 90 is up, 180 is left - and 270 is down. - - the degrees to use - - - - Set the sprite direction using Radians. Most people do not want to use this. - Use SetSpriteDirectionDegrees instead unless you like math and know what you - are doing with Radians. - - The angle in radians - - - - Set the sprite direction using a vector. The vector may contain - a speed as well as the movement delta (amount of x shift, and amount - of y shift.) If so, this function may also affect the movement speed - Most people prefer to use SetSpriteDirectionDegrees instead of using - vectors. - - A vector - - - - Convert a number from degrees to radians. - - The number from 0 to 360 in degrees - The corresponding number converted to radians - - - - Convert a number from radians to degrees. - - The number of radians - The corresponding number in degrees - - - - Return the current vector that the sprite is moving along - - The current sprite vector - - - - Returns the direction the sprite is currently traveling, using Radians. - - The direction in radians that the sprite is traveling in - - - - Get the direction that the sprite is traveling in in degrees. You may want to - use Math.Round on the results. The value returned is usually just a tiny bit off - from what you set it with. For example, if you set the sprite movement direction - to be 270 degrees (down), this function may return it as 269.999992. Rounding the - number will give it back to you at probably the same direction you set it as. - - A double (it has a decimal place) that represents the direction in degrees - - - - Return the centerpoint of the sprite, as found on the background image - - a point with the x and y based off the background image location - - - - Return the centerpoint of the sprite, as found on the picturebox - - A point with the x and y found on the picturebox - - - - Check to see if the specified rectangle overlaps with the sprite. - - The rectangle we are looking to see if we hit - True if the rectangle overlaps the sprite rectabgle - - - - Check to see if two sprites hit each-other. The sprite collision methods are - not all programmed in. - - The Sprite we are checking to see if we hit - The method we use to determine if they hit - - - - This is used when two sprites hit each-other. - - The sprite it hits - the method for checking - - - - Make the sprite show up in front of all other sprites. - - - - - Make the sprite go behind all other sprites - - - - - Pause the sprite. We can pause just the animation (and still let it move), pause movement (and let it animate), or pause everything. - - Which aspects of the sprite you want to pause. - - - - unpause the sprite. - - Which aspects of the sprite you want to unpause. - - - - Ask if the sprite is paused using the specified sprite type (default is PauseAll) - - The spritePauseType to see if the sprite is paused with - True if the sprite is set to pause the specified item, false if not - - - - SpriteLibrary is a .net graphical library for creating and controlling sprites on a PictureBox. - - A sprite is an animated image that can be moved around on a - picturebox. You can give the sprite an initial location, and either move it around manually or give it - specific movement controls. - - To use this library, you will need to add a reference to it in your project. You will also need a reference to - "Windows Base." - In the solution explorer, if you right-click your project and go to "add", and then "reference" and click - "WindowsBase" towards the bottom. - On that same window, on the left, click "browse." Then, click the "Browse..." button and find the sprite-library dll. - The main places to find the SpriteLibrary and sample programs using this SpriteLibrary are here: - - and - - - - - - The various types of collisions a sprite can have. Currently only rectangle works. The other types were added when I - thought the different types of collision types were needed. Someday we may add these if we find they are useful, or if - someone else decides they want to help program the SpriteLibrary. These values are primarily used in Sprite Events - - - - - Checks if the two rectangles that contain the sprites overlap. Each rectangle is the starting location of the sprite - (top left) with the sprite width, and height marking the other sides of the rectangle. - - - - - Draws a circle (ellipse) inside the sprite rectangles and see if those ellipses overlap - - - - - Check to see if nontransparent portions of a sprite collide. Not working. - - - - - A structure that contains the width and height adjustment ratio. Use this if you need to manually calculate positions - between the PictureBox that the sprite is in, and the Background Image itself. - - - - - Divide a picturebox ratio by this to get the image location. Multiply an image location by this to get the picturebox location. - - - - - Divide a picturebox ratio by this to get the image location. Multiply an image location by this to get the picturebox location. - - - - - The type of pause signals you can give a sprite or the sprite controller - - - - - Pause the animating. Animation resumes from the current frame when we unpause. A paused animation will continue - to display the same image frame until it is unpaused. - - - - - Pause any automatic movement. Movement resumes where it was left off if you unpause. The sprite will - just sit there until unpaused. - - - - - Pause events. Sprite collisions, movement checks, etc are stopped until the unpause. - - - - - All pausable things are paused. PauseAnimation, PauseMovement, and PauseEvents. - - - - - A sprite controller is the main heart of the sprite class. Each SpriteController manages one picturebox. - If at all possible, try to keep each game in one picturebox, and try to avoid making and destroying - new forms with SpriteController/pictureboxes in them. It is hard to destroy them completely. - - - A sprite controller controls animations and - can help you check for key-presses. To make a sprite controller, - you need to have one defined for your main form: - - SpriteController MySpriteController; - - And then, when the form is created, after the InitializeComponents() function, you - need to configure the drawing area and create the sprite controller: - - MainDrawingArea.BackgroundImage = Properties.Resources.Background; - MainDrawingArea.BackgroundImageLayout = ImageLayout.Stretch; - MySpriteController = new SpriteController(MainDrawingArea); - - In this case, MainDrawingArea is the picturebox where all the sprites will be displayed. - - - - - Since everything needs a random number generator, we make one that should be accessible throughout your program. - - - - - This is only used by the SpriteController. It allows us to queue up invalidation requests. - - - - - The count of all the sprites the controller knows about. This includes named - sprites, which may not be visible. - - - - - 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 - image at that size. If you use the same sprite, but with different sizes, setting this to "True" may actually slow - down the game instead of speeding it up. - - - - - 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 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; - MySpriteController = new SpriteController(MainDrawingArea); - } - } - - - The PictureBox. - that the sprites will be drawn in - - - - Create a sprite controller, specifying the picturebox on which the sprites - will be displayed. - - - This is an example of a Form class that defines a SpriteController. The MainDrawingArea is a - PictureBox. While defining the SpriteController, we - are also setting a function used for the DoTick. event. - - public partial class ShootingFieldForm : Form - { - public ShootingFieldForm() - { - InitializeComponent(); - MainDrawingArea.BackgroundImage = Properties.Resources.Background; - MainDrawingArea.BackgroundImageLayout = ImageLayout.Stretch; - MySpriteController = new SpriteController(MainDrawingArea, CheckForKeyPress); - } - - private void CheckForKeyPress(object sender, EventArgs e) - { - //Do stuff here - } - } - - - - The picturebox that the sprites will be drawn in - A function on the form that you want to have run every tick - - - - Define some things and set up some things that need defining at instantiation - - - - - Change the Tick Interval. By default, the spritecontroller does a tick every 10ms, which - is very fast. Some people may prefer it to happen less regularly. Must be > 5, and less than 1001 - - The new tick interval - - - - Allow the sprite sort-method to be overridden. - - - The default sprite sort method is: - - SpriteComparisonDelegate = delegate (Sprite first, Sprite second) { return first.Zvalue.CompareTo(second.Zvalue); }; - - Which compares just the Zvalues of the two sprites. Often you will want to have a more refined sort. The sort - order determines which sprites appear on top of other sprites. In the default state, if two sprites have the - same Zvalue, it is very uncleaer which one will draw on top of the other one. By overridding this sort function, - you can specify a very precise order of which sprite is on top and which is behind. - - - - - This is what happens when someone clicks on the PictureBox. We want to pass any Click events to the Sprite - - - - - - - Check to see if we are hovering over anything - - - - - - - Replace the image on which the sprites are drawn. Use this when you move to a new playing field, - or want to have a different background - - Replacing the background image is actually a lot more complex than you might imagine. Once you use the - below code, it can be done without any problem. But you need to do it this way, or it just goofs up in - a number of small ways. - You need to tell the sprite controller that you are replacing the background image, - and you need to change the image to that image as well.Because the Images are actually - pointers to memory where the image sets, changes to one image will affect the other image.This goofs - things up, so what we do is duplicate the image twice, and tell the sprite controller to use one of the - copies and then set the background to be the other one of the two copies.Finally, we tell the picturebox - to invalidate itself.That does everything that is needed. - - void ReplaceBackground(Image NewBackground) - { - if (MyController == null) return; - if (NewBackground == null) return; - - Image OneImage = new Bitmap(NewBackground); - MyController.ReplaceOriginalImage(OneImage); - - Image TwoImage = new Bitmap(NewBackground); - pb_map.BackgroundImage = TwoImage; - pb_map.Invalidate(); - } - - - - The new image that all sprites will be drawn on - - - - Notify the sprite controller that you have changed the background image on the - PictureBox. Whatever background is on the picturebox is now used to draw all the sprites on. - - - - - The function called by the timer every 10 millisecods We also call do_tick, which - is the function defined by the user. This is usually where they will do the majority of the work. - - - - - - - The function called by the timer every 10 millisecods This is usually where you will do the majority of the work. - You can define this manually, or when you instantiate the SpriteController - - - The Sprite controller uses a System.Windows.Forms.Timer. This timer is notoriously un-precise, but it is very - easy to set up initially. It tries to fire off every 10 milliseconds, but it can fire off incredibly - slowly if you have long pieces of code; the DoTick function needs to finish before it can start again. You want all your - functions to run as quickly as possible to avoid things looking jerky. - Most programs you will make using the sprite library will begin by tapping into the DoTick Event. - Every time the sprite controller is ready to pass control back to your program, it will call - the DoTick event. You want to see if you should be doing anything, and then exiting the do-tick function. - - public partial class ShootingFieldForm : Form - { - public ShootingFieldForm() - { - InitializeComponent(); - MainDrawingArea.BackgroundImage = Properties.Resources.Background; - MainDrawingArea.BackgroundImageLayout = ImageLayout.Stretch; - MySpriteController = new SpriteController(MainDrawingArea, CheckForKeyPress); - } - - private void CheckForKeyPress(object sender, EventArgs e) - { - bool left = false; - bool right = false; - bool space = false; - bool didsomething = false; - TimeSpan duration = DateTime.Now - LastMovement; - if (duration.TotalMilliseconds < 100) - return; - LastMovement = DateTime.Now; - if (MySpriteController.IsKeyPressed(Keys.A) || MySpriteController.IsKeyPressed(Keys.Left)) - { - left = true; - } - if (MySpriteController.IsKeyPressed(Keys.D)||MySpriteController.IsKeyPressed(Keys.Right)) - { - right = true; - } - if (left && right) return; //do nothing if we conflict - if (left) - { - if (LastDirection != MyDir.left) - { - Spaceship.SetSpriteDirectionDegrees(180); - //We want to only change animation once. Every time we change - //the animation, it starts at the first frame again. - Spaceship.ChangeAnimation(0); - LastDirection = MyDir.left; - } - didsomething = true; - Spaceship.MovementSpeed = 15; - Spaceship.AutomaticallyMoves = true; - } - if (right) - { - if (LastDirection != MyDir.right) - { - Spaceship.SetSpriteDirectionDegrees(0); - Spaceship.ChangeAnimation(0); - LastDirection = MyDir.right; - } - didsomething = true; - Spaceship.AutomaticallyMoves = true; - Spaceship.MovementSpeed = 15; - } - if(!didsomething) - { - LastDirection = MyDir.stopped; - //No keys pressed. Stop moving - Spaceship.MovementSpeed = 0; - } - } - - - - - - Process a form resize by recalculating all the picturebox locations for all sprites. - - The form - Form event args - - - - Count the number of sprites that were duplicated from the sprite with the specified name. When you use a - SpriteController.DuplicateSprite(string) - command, it creates a new sprite that is based off the named sprite. This function will count those duplicated sprites. - - The name to look for - The count of sprites that are duplicates of the specified name - - - - Return a list of all sprites - - A list of all sprites - - - - Return all sprites that were based off a particular sprite name. - When you use a - SpriteController.DuplicateSprite(string) - command, it creates a new sprite that is based off the named sprite. This function returns a list of those - duplicated sprites. - - The sprite name to find - A list of sprites that were based off the named sprite - - - - Return a list of all sprites which have been drawn on the image - - A list of sprites that have been drawn - - - - Return a list of all sprites which are not master sprites (which are duplicates of something) - - A list of sprites - - - - Return an adjustment ratio. This is the image-size to picture-box ratio. - It is used for calculating precise pixels or picture-box locations. - - A SpriteAdjustmentRatio containing the current ratio of picture-box pixels to image-box pixels - - - - This takes a point, the location on a picturebox, and returns the corresponding point on the BackgroundImage. - Picturebox locations are "sloppy"; the background image locations are very precise. Since this takes a "sloppy" - number and returns a precise number, it does some rounding to figure out where the specified location is. - - A point on the picturebox that you want the corresponding image pixel location for. - A point (x,y) on the background image which corresponds to the picture-box coordinates you sent into the function. - - - - Return the height of an object in picture-box terms. It is basically the virtual height - of the sprite or other item. - - The image-box heigh (or sprite height) - An integer that corresponds to the hight as displayed in the picturebox - - - - Return the width of an object in picture-box terms. It takes the width of a sprite or other - item that is being displayed on the screen, and calculates the width as displayed in the - picture-box (taking into consideration stretching or shrinking) - - An integer width of the drawn item - An integer that contains the number of pixels wide it is on the picturebox - - - - This does the reverse of an adjusted point. It takes a point on the image and - transforms it to one on the PictureBox - - A point on the image, using the x and y pixels on the image - A location that can be used on the picture-box, taking into consideration the image being stretched. - - - - Adjust a rectangle that is based on the image, according to the stretch of the picturebox - - A rectangle using coordinates from the image - a rectangle that is adjusted for the PictureBox - - - - Adjust an image point so that it conforms to the picturebox. - - The image location - the corresponding point on the PictuerBox - - - - Invalidate a rectangle that is specified in image coordinates - - A rectangle based on the image coordinates - Whether to do it now, or to queue it up for another time. - - - - Invalidate the entire image on which the sprites are drawn - - Whether to do it now, or to queue it up for another time. - - - - The Background Image on which the sprites are drawn. This image ends up having - sprite parts on it. The OriginalImage is the version that is clean. Use - ReplaceOriginalImage to replace the background Image. - - - - - The Image from which the background is taken when we erase sprites. The BackgroundImage - is the image that contains images of the sprites as well as the background image. Use - ReplaceOriginalImage to replace this and the BackgroundImage. - - - - - Make a duplicate of the specified sprite. The duplicate does not yet have a location. - - The sprite to duplicate - A new sprite. If What is null, returns null - - - - Find a sprite that has been named with the specified name. Then duplicate that sprite - - - Below is a function that creates a sprite based off a name, and puts it at the designated coordinates. - - public void AddSprite(string name, int startx, int starty) - { - Sprite NewSprite = MySpriteController.DuplicateSprite(What.ToString()); - if(NewSprite != null) - { - NewSprite.AutomaticallyMoves = true; - NewSprite.CannotMoveOutsideBox = true; - NewSprite.SetSpriteDirectionDegrees(180); //left - NewSprite.PutBaseImageLocation(new Point(startx, starty)); - NewSprite.MovementSpeed = 5; - } - } - - - The name of a sprite - A duplicate of the specified sprite. It has no location, and does not retain the sprite name. - - - - Find a sprite that has a specified name. This returns the actual sprite with that name. - You usually want to use DuplicateSprite(Name) to clone the sprite and get one you can - destroy. If you destroy a named sprite without duplicating it, you may end up losing - it for the remainder of the program. - - A string that matches something added to a sprite with Sprite.SetName - A sprite that has the specified name, or null if no such sprite exists. - - - - Add the specified sprite to the list of sprites we know about. You usually do not need to do this. - Sprites add themselves to the controller when you create a new sprite. - - The sprite to add to the sprite-controller - - - - Tell a sprite to destroy itself. The sprite will have Destroying property set to true from - the time you destroy it until it vanishes. Whe you destroy a sprite, it will erase itself - and remove itself from the controller. After it is destroyed, it is completely gone. - - The Sprite to destroy - - - - Remove all sprites (even named sprites that have not yet been displayed) - - - - - Find the specified Sprite in the controller and change its name to the specified string. - You can do the same thing with Sprite.SetName(Name) - - The Sprite to find - The string to change the name to - - - - This takes a point, as given by the mouse-click args, and returns the sprites at that point. Different - functions use different coordinates, whether based off the background image, or based off the picturebox. - This one uses the picturebox coordinates. So you can use this directly from a MouseDown or MouseUp function. - - The picture-box point being clicked on - A list of sprites that are all at the specified point. - - - - This takes a point, as as specified on the image, and returns the sprites at that point. Different - functions use different coordinates, whether based off the background image, or based off the picturebox. - This one uses the background image coordinates. Use SpritesAdPoint() if you are doing something based off - a MouseUp or MouseDown function. This is used for functions based on sprite location or based off the absoloute - location (using the background image location is much more precise than the visible location in the picturebox) - - The point being looked at - A list of sprites that are all at the specified image point - - - - Return a list of all the sprites that intersect with the given background-image-based rectangle - - The rectangle on the image we are trying to find - A list of the sprites that have any portion of it inside the rectangle - - - - Check to see if any keys are pressed. There is a small glitch with the - key-pressed system. If the form loses focus, and someone releases a key, the key-up is never - triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have - lost focus. - - True if a key is pressed, false if no keys are pressed. - - - - Return a list of all the keys that are currently pressed. There is a small glitch with the - key-pressed system. If the form loses focus, and someone releases a key, the key-up is never - triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have - lost focus. - - A List of Keys which are currently considered to be pressed. - - - - Check to see if the given key is pressed. There is a small glitch with the - key-pressed system. If the form loses focus, and someone releases a key, the key-up is never - triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have - lost focus. - - The key to check to see if it is pressed - True if the key is pressed, false if that key is not pressed - - - - If you want to have a KeyDown function that is triggered by a keypress function, add the event here. - The event should have the parameters (object sender, KeyEventArgs e) - - The function to set - - - - If you want to have a KeyUp function that is triggered by a keypress function, add the event here. - The event should have the parameters (object sender, KeyEventArgs e) - - The function to set - - - - Reset the keypress status. Sometimes the sprite controller misses a key being released (usually - because a window has taken priority, or something has changed). Calling this function will reset - the stored memory of whether a key has been pressed. - - - - - Change the display order of the specified sprite so it goes in front of all other sprites. - - The sprite we want to show up in front - - - - Change the display order of the specified sprite so it goes behind all other sprites. - - The sprite to send behind all other sprites - - - - Change the display order of the specified sprite so it is more likely to go behind all other sprites. - - The sprite to send behind all other sprites - - - - Change the display order of the specified sprite so it is more likely to go in front of other sprites - - The sprite to send behind all other sprites - - - - Change the display order of the sprites such that the specified sprite appears behind the other sprite. - - The sprite we are changing the display order of - The sprite we want to go behind - - - - Make the sprite go in front of the specified sprite. - - The sprite to change the display order of - The sprite we want to make sure we display in front of - - - - Play a sound that we can check to see if it has completed. - - The sound to play - The name, which we can use to determine if it has finished. - - - - Play a sound bit in a separate thread. When the thread is done, set a bool saying that - - The sound to play - The string that we can use to track the status of the sound - A function that gets called when the sound is complete - - - - Check to see if the specified sound has finished playing - - The name of the sound - True if the sound is not currently playing. False if it is currently playing. - - - - Pause everything. It loops through all the sprites in the SpriteController and sends the specified - SpritePauseType to each one. Look at the documentation for SpritePauseType to determine which pause - type to use. - - The SpritePauseType to send all sprites - - - - un-Pause everything. This will send the specified SpritePauseType unpause command - to all sprites. - - The SpritePauseType to unpause for all sprites - - - - The SpritePayload is a stub of a class, for storing user-defined data and functions along with a sprite. - - - Basically, you want to "override" this class. You do this by making your - own class that looks something like: - - public class TankPayload : SpritePayload - { - public int Armor = 20; - public int FireTime = 100; - } - - And then you add that to your sprite: - TankSprite.Payload = new TankPayload(); - If there is no payload, then the payload - property is null. If you have multiple types of SpritePayloads, you may need to do something like: - - if(TankSprite.payload != null and TankSprite.payload is TankPayload) - { - TankPayload tPayload = (TankPayload)TankSprite.payload; tPayload.Armor--; - } - - - - - diff --git a/SpriteLibrary/bin/Release/SpriteLibrary.dll b/SpriteLibrary/bin/Release/SpriteLibrary.dll deleted file mode 100644 index eaa3011a0e5fb89f3c1a8c96598374ae658603d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66048 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 D^PJ%7 diff --git a/SpriteLibrary/bin/Release/SpriteLibrary.pdb b/SpriteLibrary/bin/Release/SpriteLibrary.pdb deleted file mode 100644 index 67db46b73121f4a9963ef5dc49e5edc735203a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138752 zcmeF43!GI|+5h)JJOVPvC?G1}0K@&_a7RR)f#EXBWq?6ZQD>Yv!00eD&I}4gbyP}I zDk?K7EG#N3GAc4FDl953DoQIeD&HcbGBwkrqWph<>$1Mn%yVXr8dWrZ$?T#jV@pa3x}90RB*1ktf59n>B{NR{H|NfOe%ep|_PB(xfu0zG2sa>j=_NJwFTHev zxqkKEe{K%MmH*kVmj8clfoG-c&avYXXMK9@Wg60b`mOI?`1s@=bM9Sp{_KkTU*FBM z>R$GcZ~vkR*sm?5#($$^zN%^mIq+)vcaSmvCEkawS#;qy zPkN+q(~@BK!Vh)2XV0vQ-}AdCe^|KbLVJDk-EX?QaK$5qUmh6*hq_dJ`KdmAU%Kk! zJ?G#0VpB!!EfcGIxqNzUj~?4De&)Sj`}}j?I{mtel4~CxJZac}Nf!QFC-Yd9|3e@D z#=sMoEE@EQg%5wH*AsVt{($z8o0 zMs4~p$-;l@WFD*Xzy0DDyS=OBva-H!e)Pb@SKo2y11owy@^76n|0T*FtMZ@s(#D2y zU%h{6O~ucu(qDd{^zPq0_TB%IEc}m1=DQc!WO)3KNYtx|c*Pv}=QIC&MhiJlYpHkU zwB<`%Q!TB_tLj%@*0j95sdmlkRAXD~@=NMl*VHr=Eooa*SKm}LzGU2_<&`Z>*QRQ@ zx1_nHzAZJc{+gDWmUUTIFg2%I+UirS%NM6wo7S|{rdr3Ar&{Y*Hl|v}*0u&g?X=}< zjL5e7)$5v;*M%Z)up(O{BAdO)RwJ^(iEMublNZ?%imZ!>Jm!hC88EY{v8|=4p~0r> zm?z67vbLR&+D_NFf#eVyga=;0m7ds}-O^20QrC2A+)HH=tr#hBv>=gP@b)ebxQD z=D=CMDoK=3;=g$7`>!9Ed?X<&I2v~%%z99uaMxlja>ss4Vt9hOr{vJD1U1V)reN$uW*f}Xi0rj=Psge8h z>Km_DyivcZ)LJ9!%m`oAs+LquU47%qu~jv#*R`TYMn-s#c%oruHmz=MYGgn&zo{bIroB~GkK=G(_?qcEKp0TaARG0Jnzb53;y1H zhw`|w)Ro8B+P0>a0RI1l99KRn&!~)L5{$dgg89D}p3}*&-8aVMF!`XD zF|Vn%rs3)(skSxEQXrS~cpIMRdaAP`>G>YAzCXjIXXdJ!#+9k6`r7L%8tHCtsAwL#oB-eF)vO4^aG` z=S=idz!4GsDjRBQ)ovku=FHqG66zn%a^?jC+kT&AA_trq8!a(|poo z_1lYXrGyc`=aJsQi9s+O|LY?D16*2p91@m=Z4z7Ordm>@(Uw*8{=$Yj#}Wi1xvzA` z->+(^X>4t-X`ziWJVk|McRSt%sT*Bf?Rf_gFUe@fThZE{N99D4+VMoosV_IDlHRMu zQ=YNCld{4@%PCj;yTIAsL049Lkm21ADXVd_Tzy@fYL+Q2Y^kSdt!Xghd>C_SBfQMz zN)YZ!3+DeL$b8{A$n^DWkCWLeBJ)vXE}reu$&@?QqGl<#w1w?o7b{?5M9xo;v%wxh1`>8Vq_Cdf zw}-3`7)T>)vD-+@r5BtIHcH_oeXZ8KqRga0Y0KVc5J_|;#ijfsYd*4bRrHpA7| zE^fMqsL=h4w3Wx*NTnJzwrYf1Wj>s|c@$E3ALfV{ zfoEMjO1Ju@b0YTZqB8a{moSH+YvAcNH`C`Nv%<_=d?{n|qQaB1{O2#MxD+qqDk@Y{ z6qPe`@mv#z>e0@hFi5iPiQ1H0+m+d_PCVuEa*QH%?ib|c+g*ABo0pYM^^I*dLsNCk zDSTIE@?ko0JOC*UAI{rMNlf15tMk?#R?$N`-6Vtt~8O9?x8=Atg4`?vd8v zgjG1tEC0Fp7vsMO|NbrxKaL(3vF#gGOjoyPp?_XLTWKDuh!Q z&*$@P{43;J^nOSA7Ufa?2VsNxm5^=P zsH^nuN#qRhaHb(0SDo!#|R;aV_quV*gh;_aYP3B%EChwgWj%eS2DpnOd;3sqE4JBSxk zKJpGZc_cA(zenDqFC$O+Sw*-#kivOhU-pwCWgjhvT=ev9^Da#+a7_P0_XqU+o!8T5 z$LyA-)eCA?+qUa4`rSr2h4FmSeIkAvpfmA*(S`RmI60#G!p2M{=To-6{VMKjRgbn` zPmzYP^TIycEkfm1rarGWIXOjEocaGpxMHv91Ji~opr{&ww>Aqu^%b@jlpD3b@A{#|^;;4|odhu2@$ zIYNw(m33ZZSWazCV$^UmuY^(_OY3Lv2Cdd4yM3&;Ls4+)tRf zgi$(Q{69#iUt4MDhd|sy3+DfGq;tZ2SBG6WRy4ZRyR7l|26UcE918Elyi!^pBFsd> z6cJ{QlXE=F)Z6T1F0I{7D($~Nlh&JkS}R)F8Bxg=9+nKbolpHJ*Wws1D(iVUxe z8qJeeg~=s9eSO>#Blkt*?u?PUv^gU+7n!~<=zg}eZeNCnkojOnW^1aAgf`1$mb7V( zk&8TUpKG1Gu2!u1|5xOF*UPhYv8sttfflFpk#)eyiuMzKL)MS8Wocf3Cb`J+`B+tC z6BKrKT>c$dzi2N@l5VVNscRK?F7kXn?k-Xckq(95hmrS8dwDE}S#i0@@@XqkgN<`d zi~0QzWCaUc`)M9_*@ByqV#St*B^PYi;-8+XbffH3be{arXS~ZA7qkc zo)6n!%vF#%)yrI>X(I_;m!F(AC+A!*M3@MYS9&=TQP#Syk@GAe4b+8pMAtHxO zNXfgr9Fv}k)^a_-z-jEV7Tr1%PGLNs@8_mOOwA0|;ql||=sngB*pDg;$bH?zr{R!G zL$u%SL>eCUX;_?E&BNwdY!IbXY#OE$W)Gw=o=<6O!*4fqKK_rp@IGxlBWa616Vq5V zpEB55EUm0e`-{B?=-(IR67ul@x`>`Peb>Uod1uHAt9*Jz7}f>J>lI5 ziPztk&ZYR>1`TiLfBfcKYlm4)qdK32&fOUN8#`Xw=(M(a??Jb6!ieAVNbf`Vm*OwI zGycb3Z{L3Ol_1;&7R>)H=sm&fy`-tdKSI|{>9`*K4nPXy`D72eKP_SpbGXj6ePHep zsA;&aRQZ<($Ir@3rqagU8U*R#)GYDthHfmiyj%D!*8|#Ve(@|6-jn(LT9DALx__+u=i{IT$I`$IBX=OGY_wifq6lk}8;Er`Ve(cim zm`le`T{<2IKZ(4bf&csTToR_IASeyfw3~SBe!E0?ep|F`euInxczz3FR>8p_xam^x z4_vo^e*~5H&w{sue**6TDfjet@Gs!k!52aF4i16vXsnlp0>(w@f`l2XAZHQ{Rym}+ zzX&=P8Vn7C`a@Ho@lXk*dsD)6R1=ro%a@?UtV;q_?l<)&-I?FQ6Tz;a(j`=SyMbqd zCma6}tPx3v(L7t52u=*;U~_I?Ucx-b=hEzR-k={iPCrR&J~EI`?S+nxce(W z@iWZ{=Hp)wj3UP-kY6*Q*+H>-d>ri$dJlw_qk9Rz7$o4l?h`xt{dI|OZ{8U05654w zinx`hOF`x3C7^V_6dVGw$2dI-xxNBi04@hF1Fr;^gI9rd;ML&upwiIl zuGfP#_`dFhD{2?fLKL;g` z`lGa_sSoD*Z|*ulU09DleX6;yj$Hg_gRjSbw7VYbt|x&v;g7wT`;@2QUjp8OKQe<2 zp!O=h5nK)42BK5&W^f&NJ6K3>SBPB|(sLBjE?SxjE`UZslcCYjNcz9&XlwR4Q=X%s zYMyb7g{Ja*0yqR*2$q1u!1KV-_^Jib^XgKAXCkwAFq9Zao9i*=$)4hs|G3btHeX zO;C3E5LjT!!KZa=7`JlV?g>l;z4$G60;IYt_lOD0SP)eG{*k#p8~u8PaWvp>_xmOE z9Lczo_+M>*24m?*RnKH^Y7=$c8!Q3UHtJgSP4_2&q>bRX%nP zU&8F?v-dLPb3SpXnqL4)rsD4DuGM~);;%d^166L~lWg&ofit;QAKhLL*WNFb@SaUO zU34v78bGCeHK=w{{*yuJQVuq8EnSMK%W}589%^*)ZFN)^yLTW6f>1bjW$N9s};tIJ;a?LMp-9gl4!u0s5TgTS|e%I!^{ z%HloX67aoX4fsBAHMj*-p5G0=1AIUDe()afBj5+Y?VxnN-{Ed>8~z2XDx7V`F&9%G z&ZF&{3!RTO>URZn0l&}Z-biQwp{(=uMS9tNUWssTP_&+Z3K_E99pGs2(?+KH+dH8_ z#$FVM-FKA;R0eXz6>gVz7obUi#P^{aoBxO@o{|H#qk{%$KEgw>5_@V?n{bK z%THV!kAX_dPs2EF57V**f4gTW5vYvhPKGoNllwJc)NcF+RQ-Dr)cEhW;6U(qpvDrv z2hRon0L})V0#)`;gI9sifLDXhff{?-zEJ(&H0V5NIy4iS4XK}0+iKHUO*p#`C*fK{ zEiPupo`;E3*Z(kaGv)*r1T`b}XkkR%R?GDR$3E0)OkG?bfa6t!tsiRkwk*y&VPr5MvYSOYGi|1TwAb z4A>L|!G{Q=I(eTHz|;Zd2Y9ny6l za3`o7{v0^m`A-1FR|b9_|C!(eVEeJlcG>`!+K5FPc9O5|?!O8mM~s zbx`Be=o&^f{&r7BA}HdwT(qtFE@2d>Q2F*fP<_PrLCw8>0BY{_2x#+O@eeXoNQ_?B zYIy7(iv&HLbx}Ew6FxfL+t2kt*yOJxK3sCkVS4dh)m|u*fe7qdBNp{~vB2c-? zMcbr~s70K4zNXEeUz;bN5U;lR#EqNN$ed9dCGLU-r3qhBs~rtPM3acXqpQ_IYxA{kai-)t|K{T>p0A?6ctn_0qbio^OD^C*Cw7ly_zgRrz9{ z@y3U{)rGq)E1bqY3`>kH$j;=Ho(A*Fyhm!03}~2`CCEBzsFpU zp+%b%kvohQ?;NhDh50=fUi&OJfsWQm-gNi-v&17gp9A}Y_k*fG519CeQAS$78PYC3 z`^+}M2-CV~e5$XS^M8%-!@#e14sM$Y{)B4)-3CHE!}wGV_L*yf7TP-5O||>|9N~2R zXRrtOJg9#11yEztzkox*7s2u1AyDN~V8+=R4{Hrr{d{pKa|3+#8EJf5b(lD0gF@Np zKS1?eN}Ku`4l_PNVYeGt7ATyx?o( z3nl+lQ1VX$i@;u>Nkdh!`yhXH}fv7Nva%*8577w$4S*(+vkl5#-i4#&#H32ONdKtm1M}~ z$8#-Pl)r3VsJxg67P?+RW029*$uqG@pXb%^*yn)pa;6hLD(3>OB}e{}Bb1y{@KoAJ zIjsw5jMJaAMdjFMc?s;!x@dZ46JB!WfrG&LpvGJaz;R$Ds61T+YJIVQ*`uDL6e2^< zRV3$m?stKngyasYL&Oz9s`vAtI!JcD3EB?rfeu16%0Ustvka}(Yh7Gx&cPOFH}n{E z80v+RqoHzW6(pruGYMFa2v`FMo`rfc_#6%~2h%(%*aY1R?S&3NJt?r^&@!kQ+5+u_ zo`7gG0==tF`6(}gIw%cohIT@Gp=Y5kWZrP76sm$6ppDQrXb-d>It=xq!5R&fL)Fk) zXfw0}+6x_kI+JPrpi*cVq(*-;v=iD39fZi>pdU05S`M{Ao1q=hqmbUy?b3}rgr-AP zP#d%n+79i34nT*YB0B%6klqVj1!*v_8PYqVd!d6+Ku6OLng~@v4bVnt8}tCQ4>|}@ z_(4B)Mlp`8#MbQjFDhF(CB-|QOC-NhX^I}DBO4_zxaR7s$4$Q4v>`l?Ry+qGh4uXZ z*Jr>)&w9x|yG75ykM=wkOe0V@pFelT<`aR;eY1tvK^i{h$9hFyvy#4X=wB(YPynQk9 z1|sk0@$x3;E3Z@)6BkV%>(9ww#LF`qQ1U6i9Wn9-Bkz~-@-*DcD?gb-7#B@nG4h^> zmuIHG`J``CjJzSp`=5Au<4W>OA65T|^bJMcuR4%-v}29z`qvyIZy54^-GMwcF!|)? z6EX6JBkw>5^3=fOBd<~oI4){0JcmjCrUQ9uVDgc-J4W6}x$WsH8kG!oh^4PbOJlKIeH8A&g5{E}FhE$opN4yvZeYe3Fm6bc{UqV%+Ood!Yk) z`S$O-W8|@aHTjng4&>$Azdsw3z6+7}_c(du^6%fP3y;jtQsf?%y}X$YURVG7&E?@BW=F-Nr@Rv)Rb&6fZCD{=GRy-W=qe5HBz9{{4vOfw;{rlD! zdGnChr2~2S_U}DUKQev1kCg1%fjl)Z`Q)d0v5PpO^=|?4x^*Bg-~RpCnDnt9G#mmdPf3I{K+M@QtyOhb^@$&NS-*?BzV?TSc zPrSUm`}Y!Uh{HwGcLnlJkC&Hs|GqUw-g4yi?Lgi*bjzoG>8TBLxM=!#*EM-Y2lDdm z-_3@-EP1?Bn>@1vdHMG5&&H&W_ga%@bs#U_{=Hh81hdjtjl6yx$ji5X-xnjV26_EE zke6@&URq?5*Unz9LEeB4(^6uYDijPbm=K&;##mmdPf8QD-k3FHu;qmhF?%#V3 zIWm2mbC4VnFE8)@Jsl&D_wSM;JCHXH_3~+7o{f>$guGE5$ji5XuO512el{a-bO-YC z?cevs$h#hSV>*zRZ~tC8?8x-BAa863^78H9cf`nRMcz3b$ji5XFB*Pi`r43J(t*5u z`}a*T^41`4T%5d#`SN0Zsb${nnxU&pPZkPoDeTB@BaOX7iWb zys7c>^6uYzvVmDHS|47AymRB_<=wxhW8`r*QF2YC7p?DaLf(uH672&%Rc8_~JFVF0Gr*B@!Yxk$e^YXklJ&!LUdmZfF@_1gJ)$z{#!jRYQ z3yQI@o>C z@w}{Cq@(Yq*geegyv$kK@!I{z@x07e+VR@G!|}X~Roj(?-S->M%Q&SSuidj7&r6@t zj@RzDjpwEQa$ZkWSQd7#Y&@^dvy0k;-RBz5`?f4zyGJ#i_bzy&_G|Z-#`9*^3%fTo zo;SN**nOSxyxH}_?#Ybj&8`=AKV>{`cD=BBA>(xJFN7|)wsFYF$~c;4)KVfPQl z^JdqJ=U%2BXV(k6Z!bRH?0RAM+{N=|*9*H}E}l2LUf8{E@x0mf!tPUx=gqDcc8^&+ zZ+5+~`@`aSv+IT3+ZE57T`%muta#q+dU5z=$}PKI*!@uP@n+WxyO$}RH@jZgeMs@V z+4aKiA&TeCt`~OyPdsmSy|8{h23`(&zoH@?4Fr;-t2l|_q)XNX4eb5S0$b| zyI$CRCh@%4^}_BEiRaC(7j}O~Ja2ZruzNG&d9&+<-B%IMn_VyLo``tf?0RAMGsN>| z*9*HBA)Yt8Uf6vE@x0mf!tMcx=gqDc_W6B0Z+5+~&)(yCv+IR@ZXVB@T`%l2?|9zq zdSRbe$Ma^_3;V1&o;SN**yqIYyxH}_KI4t&&8`>r`D{FIcD=CAR^xfI>xF$T8qb?u zFYGhTc;4)KVV_6F^Jdoz`z$e@H@jZg=Ya9N+4aIc!;9z5t{3+CTRd-ey|B;D;(4>{ zg?;W7&zoH@>@%x)-t2l|pEt$xX4eb*tSFv0yI$DmJn_8Q^};@*iRaC(7xwu|Ja2Zr zu+K)~d9&+v-PmdSTa`<9V~|g=gqDccC9y_H@jZgb=r8|?0R9> zSmSxK>xEq(jpxm-7j|tko;SN**mcQx-t2l|*A(M&d9&+D$CrkiIp%5z=>)_do}r!%)9Iqz%&da~q(I&^Acl(%lc~ zo3*`8hXm<%bQtQz9)pRHzNOUwZGg5xue$%v9Oz84{WrhrTo%xjgpOt``AEV&b2P709o;i9 zno4tq&2z*!7qW51pV>_HOzTJps#m%IECOl%0;&nG;_Hm`B16%0>{fJw0jK_A7k0ew zRa-Xs@xT2SE&u&4(6UHix~Qbi2;`4~uWf5;(RU;4nNRoPC0>7D{u8<02F-!~>cS0h z-z7Uy#~wPzcLA4h4pT#lYu#7;S@&nR=ws_Roq;4enrE-x?!0X;b9VA2Md%#1l`O?S zJ8e&JzZie<`uj>-PZ*2v|2Y1OT(~|iZP;y?wzb@szv7MhujBem{0Z95-+aq4)ne|Q zkah3IRjC$bg5(b;!hQt4mh0=Ce8s0SjLK;jN}jg6m!0pbZ_%*aKO*1r&3n#1 zH|}l==09yr^6xGUQM+1>-v;=_>+dV=8}U!$zY+iLpz_w|J;$uX=6%#Zn)gxvX#VPq zO3uy?t|0CKPKNTApFuQCG=G)%(R$z6^6XECV*OVha^GtHKBBwiY{zM$BoE*iavWSMMH!@Br)cLAi;QtZV zoHuUtQr`2k9e=d!2D!3{#@EuM&vnT7j7ljzJG~gE`5#0IBNTCf0+4hl4LeOa%>qh=emytRe<9_#yy-(YR~eW0G4x2 zKbo!tCxMrOlR^6(%W}p*`esZ6)B@?73}Z->{dOhiFS$M|VfrtE2H0CrWQ;8%eofSRGrbE5TS$&Xzgu&dcx+#jF#V3=W!w`ys~)a%DdNslp9}KvEKlB9jG#WJ(vRD01`)#=8rJJO(6GV zL+Lkzw}5X2$VM2P@`QC8NaI7r_e)VFS` z!J(W$e-)^+^cx`SC%y^TUw_coHQx1e?Q|k+-_Jre?@$}(?dC)1qCEQus60bIV>cfI zhjESFn>FTt;XPlI0t{|@d3PaqA_>m-MLLE>bs7C{$6OQ06=^i-s%?h;ZfV^=Xk^UeGp?i4D}ky+1^koR0TCaX=pRF z9eUOM?{c6sZ2qk2jm~ZzmOj%5#ERJTpqB50^{#;ySJk~b7jBQRv zNhpEy(~)uaF_h7zlZ~ADLFoD+b;eoNJ2&l{|BPys+ZAI z-+_4oQW(#7y!G7W^c)h=a}avI^=0(bx|r5%6vp!%Z#^GHAGse}F#iXm=V!g1i&M=F zHMMTF$F9lkM#rt(R~XOd^<+E})}tlOE%j}Yb)rLr+d??ax1M(KYi&u*Uo@OwNmiXL zfp0VPI`N!j+Y!GW6%EtS)YQyUc)K;3TNoAS|w}O<5 zJl~!bX~Ke=W5N8#4w65N$g>YVtT5$`)(D@16vp%U^*#FHupFZKnTG!$G=(rvfXaJc z2GKCt`I$@F#=GwW?e1!l6P)4t2VD&%ZD){X)Af;;ei2XUD#m{!VZ`rwe7XuE>GFYO zdx|G|Z$TTK^im?yPSw-A0^`!+434t2m`nG+Z>Vw!^o9FkdE2Ya|TKUb`?p zucZ4E@G;p99*5^bPyn{vz2I99T?Ws6kuaEjc9@n_ZF?J6|CDPVS||09s|0WZfG$%534&iL|?)$C-^Mucu8vPR=?@-Q4zlrx>oZS3RcT?d@3QK2NW z)|k{czuL=+47%aXCw=-pm|U3=V1JJ$eXsR0XRfMgT$!q9tV^xcUDXABYit?e6vp%U zexgUD9=D`c*VGe`<~wIw_H#Zv=g52;RqFbA-1n)P!}wOa=e2W&c;0>Rj&k1-uO<#V z-cM*v*ErQp*0PQJF1#c)V2v!@2mB$ZG4P`xeW{*vnD6b;U(z(_n~)2ji>TZBX5}z` z+co%Vc`& z%-lR0$Mb}t$qilrdx3v3am*ro=G(W5!;Yg_Z{@dKG>*R#M&|uDP`1KaCVE|UL>zXE zn+V6q(K!A|n4W}v2~^or5s5?3S~7Yx;BCjB2{RTI8(nZvtsl6~gkhL!Q2oV;TvJaB zDt}m0HQ(6gd7fE2?+WU>=0kaoQ@|?oL~Oet(As``nRYCh`7Uf!W_RL{OrhzcK*=ls zC9?;pJUIna+s0mo7@3#1lld5Yc3hYU$Cb*Py^vgQ7w75Vd0g|{(yZa130}^%)|;1u z{kU!h2Y@$&XM=Ba_$IK3>$|{#;0|yQ_%(1a_;pb6eaj(rFkl}9x|cFATEHBzihh}1 z2X_YR`2F$k&$FM&yrbKnr&9fS+G72RgEB^eBUy*`c0HFcb{v=p$A`*8*_j;AMAD~% zW5IL45^xSUp`H9v^6U&_;~ThV$8U*n{KqiBJQD=;-ArTS=YlGmX`u2``6M~hxgH9h z52{}3zQ%XLS)lfJ7qFhL@8g~t6yc-BcN}>zijZ3lctkJGcnsnT^5sfSjwE{-DEc;1aH% z09hMO{|a0RQvSguAmtr!u4bBV83mVtwczF8yFm0#e*wG_+y`C-J`GlbbSl9$U?))e zv7lt|bdYn($Qym5z9YLh4?EDC=2w8KV>7@Tf`R<%AFOjY8hi_MBeiigbRE>hbvZnv zLi_RMT}8U=*eVg$ebqhLm0SZlsa%C>OICyDI-ChM8l6jt_fqt}h-a=fV41O{67Jh^ zRQz|vTM4VSj`MypMikm@(Q3e&?EnLeUgwlBf zILV=G@m8*D!P~$T$U3okR=E+pgKO>g)_1`BQ75HWk@?Q{IrJ6NxjvsYXZ4p$v0FXE zt#EjzNwf0PjcA!s(ZovZCD0j=o}rgRmqSAt`^^T=hHoh}AY34o`O0vkS~I!LRC-$bQ`o4 z+66rdJr8wf5I!0zhn7Qa&}L`{^bqs}bQtQzz)t4?&4n7E4bWETRTrNFY76}Obr)<# zPW9e9t=E1Ye{(CcS4rXaLE`oI|F56>#XZB*9QtUVy{R2kxaUB%K{h>^v2L^tqKz=^ zCT&Do?P_mO?FI9NG;96Zg^}*c7^8q*qky|YjW?d>UKhyM9sPa)yWIQ#**2r)U+l_X z>G5t1<-d!LA+G$Nf=Rso{=Y)`N1yo~%WuBQHj2ZvCQQ1yH2I=&wH(g_DEmoaS<~Jd zr?NgkIUoA}T-H{b_Wz^hzscP?DZ){F3!c0B%>m!|A z{zbFxWb|3<_0jW4)&`r_wA7~N*EH6wG)oUhwLYTsNmswt)a+!cP4KQeJRge6oVli< zZH?KMotLcrPF6I(nXe^3=4G{#zGEb7uIsaDuR_-YSv$Ne<)vNwnb)-P=+>Bg9;%L% zK-L}-#x^8OqE&a~il`&X+kvL8^lvv8v*nr@pUE~gZj)mOV8&E*@#!M2v5E8$koGBE zX!aKEq_x$4qGHpIOP(z=63K5lWw)=ZQ%$(xhF3b5@?UcuU{dkWPrm?7ZZz20G zU*zil^vZ^sb!DyV8f&!+MA>H62NlOANZ~xM)(uO!-Uw-|>;2DU4V_C?I4COTcrdjt z`poBO);IlL7TI0{WaT7`E{a}tt6D#B-{@@TOy2_O$AgDJ^?mJxf zW&Nl(YkQeJYuX>U(Aa?Q)1QP_PVIaz400m$@8VQ;zU|WKI} zs%ow=@9n6J75)jxhY?@29~cnXH#M`Vp&?bPUHq+M=cF1_E%mjmV`TPd&8u&`p5X2L zs#0s)<*F>0|EwP* zck|1n84GC5m_SbX>!0avR|Uq+v0(mVYsp>+GO`$7rP`M01r3uIhtO>;VZ`rwlt-iS zYlAet812IP_fYT-^YyyaI+L%t=8>PP_SB>dx7>pH-xIz0-iy^chy7f>F8Z;)BGs-# zUl)}he*D1tZ2B}-2mP2wJmU3j1ZEbFc_zZE`@*v*Ev>$I8Ma=>%fLRwnE@bOl z!XTFc`5KOoE`V1uOTkmY8DKAP7HHoQnM@%R(Qnzcwk_PV^&%10E!r8=j{~fF+4=1} zu$b%lpwHY4ftC-&8*3* zEUF>7m4s2gY7C&V)pZfL3RE|)YsQM^{%o+G>p|>ImFvUEM(+untr-@~yh`HVei-Z+!+WzgbqyjZM2xKd~y%B+H<)D~zbr1OLiLY>Fbra{x8DySK{ z4cZ3ng7!fjIoXh}Q+19>`Qsfyll!{6I;H-`KB!B5;C>?fF(*nI>thUI9ElpSjqxy{_?2|sM^y?t(b{94(cRXRA z_F*M=VRKDwecL)oIhuaa=cCuNZzrp#Y}Py4q~r@;mh{Y1mY;{~om{zSx@gOi1qBhi zuz9kurG907qsdjScY>k)DIH0!RjFeY8JFv(F~meQ5SzLPP;B^&qhmZ{R?qG_YANsjmO zl(u6ik9n4HQTv&OylGyZ(l@{92Hx7JYN~9iXKQ&*b;GA`sv8?b)5m->S?1*_eaAqa zx9#mtUNn950m%w4&y?SqwkB<6udQilScmXbYffqOGKrZC=i^PL9SK-tk;4d99bDwB;ek+ex)cNHjgA z$oYVm)2`m--llkY`U-hmGc^~oe+SR-K<(0Y$K$j4@8OYo1<+V%S(Z6FchPa~b z$_^(_YboB%glBJ5-u!ioSp#5?nOQ=}$xeKJ7BOI#i{)X911y z=F%s4d7GTPXuHDrI{7CrPvv(EQ}DH zbG)>Qc;%w}2eAGT!dy0+RO{WSl)Pe;IzbzB*v8phh?|AFE(dii-zrO)J`wVsVl~wM!w2{8-4mnw&VUW%= zvPzDFtU5P1q1g)EO~@)c4zl(+S<$k-8CjPc2U$8VS8lKc^ZyoPtvwF1?sc-F<+TA> z?+ay_ciB@58*5WiBp2K8V|1PKE6121bZ!LNSZDq4lH&)fJX0;(V znSM-iz{$KalxWT&O8(u;w0lRwRU@(Kxlj?|c0dZ}dF8(xzwHoX;hL3+9mcjd{v zF)lIE`2qBu$2dx1J-_@9;XfDubMYVG;_^Dl@6C+3Yp>xN#5Jvo-XOJ6%(cNb9!@L5SIge00s;f~R`;elh!N2b; z`{wF$Y^tm zj6XFAv0~naj8A3BP`>X#pHle6>+j3|3H+zy&$}MMcU(A?waSrUN{9BKver~7%2Tx} z6_&Ny_Rd-NS^96Or(6~G#H@QYZQQ$NO`AGtg-vGN_h)qKo@^y5H*@AE?H1{oN_yT2 z&j&}^GFE!JW`)T>_ZzDYBQjUI{`vfxO!p!FP zCd%=)QO-uoSZdTG6WI*+a*^fx{>^7g67LULF#q3B(eZsFo>*h9dUTLkjEp zeR^nb!t@*qeSJInkkfan(bWFC6Mg^Y_2r31O+#&*%0}mYgufF~cppY}SusU*Zggvw zx#q7QM^w8B&yxwOtNyIn&#O}Evi%Ys63H zQK;?c!enkObRlvsb~3yTMZZvE^|jaGn~MzJ#jw4r-1 za^C3WxMy3snNNE5J2|I>Qp^}5`2{a$E+cYVRdbT#$60fkZ^-quVE%6*Jr8*~OB+{Z zB;}SS-(QxDutK73(A~&-%*(RrDQnC0n7$dZc8jiuA%*v0REHERQ>d^mXM!)*<5N=? z)Q(1Z)^e>nqPiRPm(9u^b16ID)^eDHam^OY|M!#5-Zb#0J$LD>yOxExlz$>=>*hrA zXfLF&p5LdDDPovLHbbRa8fzMS2C1GY?kJB^DM^@?vaF0y*iypogVbiNpKS9@X;ga|4eQ$ywO?u{qxbl>!4h^= zDhgAkKHgR6^lkhOM&dm&D{QUn#}u#H(P+F^uU*Vh!fTk7*>S~5+4tAAzpu728osfq zWpzyhn-=P=|XOL`Zt zneYnh`DLSuq<_S|eLeJbG({=V7*1&WS&v&TreGryaZug?w<`~_&z`FqwufMPIo{C=@>V^Ma7fyY!`mLgf z&N@I(`sS*$uM-c9BVyb_3+DgF(7E?CSKiEbZM7(`=io){vgff6pFq|&FYCy>E>Ep&Noj3Uc|Dx)TOoz_VZ1#LisZF= z)|$rFylvyQ30Bb}3+DfJ^xfI9zFxG^_c3&>A`XT3VSM{AIHIpDOY?cWoOSl&ux7@| za?354|DQzXM?2Qp=(-U-rxRA;Jg?WaIHD`-CD@(SRb}!J;ieK!ZOk8?424T@9Sz4+ z&p!@5CiV89OJ{eJLi_JN(phqztG6?o8gEFoFh@29RMixgOnx@JnenWg=EdH93c1s> zxe_)eV8~Ku5*T;Yy0Nyp$p?zIgLNP+kw8DIXB%jzdwVXzdAzC zOaV&Io#s zeX0MM@s}I$`gSvVuW3!&!WA?4WJX=?{h6P~G}AuIMbmRX>G@H1dSQud-pKI+dzeVH-F~sn!01J(n?)x8pk6 z2sx(ap?d(?pZ2n?lnO1sw9;8}26_0_N-lDJ`90?3GNlaN7m(YVNxj;bz}VxFiOomm z25du)W+HT7L}rjuI$e8) znwsyGCD(dgeSMvE1C#XJ-l6mTM>SB42I`Wi_N~TFkD9R^|+5hLuY>__XbH z@(Qe2^Z(1pyVJ{Cl4`80YMR~Bq&FaQvv0qKGm$vuqO!h%tb5wan!$Iga;isuzPQ=R zSz^VR|6fJUeO^vw&6?I!ercJm2aC8nESUehk&(dP)S0D?PKq6eY(aJx?up;?_;GNL zh|Pu%BjL++jOO!uo71tvXlMUDh>jb*juov&N3}P(*pQdgz0}6dl4aMuzOOFC-`45j@%Vy!On8_;_c+JCqYA z#H;Skp4pHHI?ayG@)56O2(x9__x^txYJ)<=)njg&9Og;$D;I8mA-hY}!Ex3v=M*A|h@3qH&2ZV7JVKO#n z-$_rfZfjk%E4Kii*xRmxj57=*!Pm-^HpK1`JT7e&AwM0&&#>h>EV$! z%f1&J&&!#od|P3WiC5)i-{p-jFY&6pgtfuV)cFmeKK5PQ_`K>3|Hw$&W8b5V=RFhN z5zY?gbqWIe4s0Uu@5Y{k{8Ieo#*in{ryM*LoCm6Y&Id<>3&08BRiLKUuK{O)uLCQ= z_khd5kAk%z&vnua6N3lAHQ?94_2AdRTfjZw?I2^NG+_hAGikyE-vU1c()XwD2lY)6 z>Q^ul#Ls-Mg7P!pt2h-yF2{cgSOMz06brzcKz$?PBj9D=cfhMboqt#d_9o5s;54ui zyc*Ou4>o{n!He0g;hj1?p`7CXoH!=`{Fp@K*2> z;M+jXZ%W?-eiHm7cpuo6Rkp4{F{E#?On?SJ6QOgV+0YS%|JpWn z3HIY{N@wxuJ03^clzqoN5%_oCU$v?HZR(rYhT5rzK-tv8pls^f;6{)(GQAnx3w|8@ zE_grqJ@8-Kre;TMO5aM;8QMqMls(fR5%{wXUbU(GZR#i3hHQ#=pNvgC4$7u}2CDDl z40_Y|{T%!V*S`Qi1O5{H*S4v35u5UTUn73)`#yVyMIt=g;#Hf<-=_Y6ZOEqn2&$cW z8k9{v1KtKQhD+U;=zQ*a^HFJOTU|*ctpBcp~^9*aiG9*cJRK*bV#*cry4W zusiqQU8$1OZ2=)ZWfNbJQp9`J}&H_&Z7lFOND?#QZ>3XmaxCZ1L*0j#U z<{NwI4d9vJCh#oqU)$F8{V#o|NOK3B!|eOzN&FU-L+ZEn-8Ov#?E+{Tq%ooVsv!A` z#H+O_PyJY{nqaQ|JVbNt9YZ=^R~t%xX>L0VjDF8fYYq0iocQ(8N$_`pXELZYt0^YD z(xmxR=KH1gESt=CGiMYs8pmQ6#}bg{A*c%D zs1DV8ZYcLuq#VtaGv#m3VaeoQ zwCr{ezAN#38dN@h#>A&OpgFybV-x=Ne3eAF&$JtU8z8v{38OWcuY)SXJzx>|O>h|a zEpROO5I6~Z7?f>)8=M1v2W0&w_%2w${9fOgDWtyXd~thbdJ$L**|XBUURwxb&s9m7 zGgi3N_aee`+Vx|BVHTBo*pdL6Z9WY0@Ugzs%>eNei~{ed{8;~&8y@M&;3_zXB6d={Jn z{uz{RLe{*3=fO(w1yH&j0&Bp-;41K+pw+bsoi2cshhx!E-*A}%4r5hjAf!Ci+Knyi zYQjE9=BU11%x}4e~%Gn|mjNJXeY1j zdpO~h|0BU7a1^MvV@w#Y@~bYU(Aikj1XlO-oy?Wc zW#p4`GUN39hC)jNK6qbd;>h$LJ17@>UPi*4 zouQCwZ@0PfS`NSL^(wF*SPf#%K@E5XSPNbQ)`3l63cLYa0p0{M-b-%<>%kr1b>LUP z2Jo8>zXz`7`o|7c4$L{s_fDI^KXcsz%7$7&ZPZ)?>Ki0CfYZPm!ArrlU>o=v@CH!j zdNa75>ovjS2Y^p!2$1S0&q7t3w#h<41Nu~8vHug0PX?Tf!_er;5Wfr!Eb?Y10MqK z0>2FwP~HVRqtsYBlMb)<6#PU=o9Ij^lMdyZJ>w#Qomdxb6Mk&sr*8*)ar-fFAjtg3 z^y!bA`}N2^2hvzSGoG0XpFN8r;l5_VoC-hRC;W=A{ki@%I1)SnP62;o;#^N$V-0zm zQ(Ixrj7XUCBVcXUR{WlD8oT}h)HvjipyGWRl+0&9*~_!wGVnRD8vHYOJ@^9n2Jl7j zjo@FwkAr^)KMfuRKMOL)OMemkC-@zQ-vvor`XJB={400@crrS72K#_XkmpkYbHnsC zU^j3L*d4qD>;Y~BdxGx-c?mVm^P}K2@P4ot$Xb8U2UJ^eI{0I-KggO|FaZ1wSOgZB zaj^P@1<-|%Y~XzIb26mw;#>r2zO@`Y3(|OM6f~1szX)6nT?{GgQ0m4;+JjnX7Hx*U zXFiQyXEM}+HC008{GI?_4u5+alRew>C*t=83`bwJ6(hk@z)@fk$Xwa9_2+;ZKbC+K z!SSHxl6JpBDQQr*>THnL@Qs=Y#6EE&ydK7lL{&F~a1d z){(2BA~V*Z4|3;1B*HT#)br9m8dvV(ssPoOT?9&h;Z*QqumYS1E&>;T>cbX-ZD1uR zJ7i5Dy$M_b-VH7VKLcJ0>RBk?*f92Y8Tc62mxGUkSAfretR?nh|LA> z0?Wb8;B4?cAY~W47pwxefXl(V!E3<}g5*)~VK5DT6ubkx7bNcB6JUYqYf7-)eps*S zpuSO6OnqAfT?kEsG_RNl&ZquOh89D**N2+6h~F9mRDkoqiy?huT{ITIF^(<MiBXL{+mC+uQKr{F~z~DgQ zvO13@{BVA2ZZsYo3~GF$G!6~N2OF?md*()FPN#9{T1aju`KNmIIZ%Dq{h<1f2SD|) zUj#LG`4Xu1eiv8`eg#|w?gnl9*O$7jHbiUugCVU|>H5r27lpIuawO2wI*m)!&d5DX zTxw7Df@;IQ2lfH?flTv)AAlOWJObLdRn}^ERo+uWIcj_Cxg3c=@yKDSFBFH0-3c4d*((WP}?RKjpIqeNY~$jl5x<)(T6zfcf_B=Z!Tod#mKau zm~7a0zd#txqy7S_4}TF;}+TixdD*I-g3POr}?aKAlL_7=umC$>0CEEYytan zz186d!G2sH0Q-Y~00)4728+NK!9m~&$SMZ=IaJ#^gzG5|&jp8ay$~D*E(3>ymxCif z?Nb>A)`DYC3~pANI-cvh!3m(oJCnh0gHyo0;Q1#8H}T9PD20Cv>7IqZ)>0>9M+MZ^ zi`f5^xxR?jU>Vn%N9w-TV{KbfNLw-A^wnB3xB?s0{Cf!XPh$h^@t6u~JfN|#)`+IM zd$ai6kNansa+Uqtvmp}1Y+baUtwcZ7S)puk5vZ}5un1fX7SP@eA%69*YBLIG(`19H z|MonH1ln5{t^ZdMRyHJ5owyp*TwkcZyc#^qp=_gu>oE?`0k7fOuIXvbS!;*t=LeDl z<3Z(*zVo-l=&}=jduBue?W~K=Rho%QbxbIot~YU8?8S8p*QzJNVz3n)?of5Rjq8aH z)dsBLTJ_)tuoAoxl;6xL)i~Y2C`Tor}nxG>4c#n=RY- z*S@}38ixyb}ST5%Rb zXNB?Y<(@q^Az{u?;L`LfyY&P2UBW4C-vdttzYm`2un648^(gQM;CN8$60%cWOQ#=# z(plF_-2EEx5w2H(kAiB)e*~@ve+=3_R(Ua+(TSe(j3g(NgIcRozk3cd)q&Pl9BvLD|o5xt;?)1ug)e25md3@|gl@ z?M*g+4KzH=Q`w6>_aH&0dzQ>5HJ+yhET;B^(6)6&wNn9hBW124y$@ z0Ii+KW(GsDTkVlL8?t`hUQ`D5jDz^TzDv^9?XIBeb~n)W%k9^4?70I8Bv}_7FZ50Z zH>n<;PFVG+eN7zKq06Xtd1B84$b649nkU7Cp}Pu(g362G;81V`sJcB0oCJ;r)xMqs zsxFTMwazyl)L2>dM$Z6bBQ|g5@>^w;88;TgZ{P2a-=}?^iOYT;SGH^4uTKzzbo2eeSCD9i>-m2sUoD$M&7@1i4_H%31j!x1O+y`*kJ`wZ#{kd{Q|3 zZgzaQH@R@Pns6#>yDxk<;p{uonQ>$f{B}ZeZ-HOs^;S^+Zv!6L6Ni02IzAm+h+pZr8&o>p4{8h}ECN3ODjhG&Y1bZi5a zjt_%M$49|TIY5eZ5$759*%lmZ9<+n|T^4-2moe10C=(uP*@vA-wW!s+w zWm`hihl1)??gJ-+p8_i!YV5It>uQJBfS=)d1$aMrE%-$+)30C5s7+(Ga%zi zYwcq=pHX>cOnyG2vx~W&Ob=5Y>e2weeLp)vuV|g>O||>|C~+wtg{r$h0##Rk0!qin zK()<31=U~w49xT!=V5;u&#Ubm+pf(nW6-XCbP8eQqUk?C9Fi%N%-?_~gHM9$*M18s zUk-u;!QX>wU;Y422LA|VbkO)zV;zy6>#9CX3UyIGX5YV#@5lZ`Tvo0Dgagwczoxtc=P2uiw`4<MP39NrP_{fCYy~HRw}6wu+rg<|0q;E((#{l8H?#+#z^pZw@mupu>01wG z%18NS-*HYb!?iA&U!}w;orNlgGEjCYR9iCxR6iyh0nP+xIh+HQbFF@9o|!9a4z1_f zdWTc{kMssr8))Y{>Pzi=&ZXn*@z31Hdu0G9-)8|=tyZdFXtCJjt`q>F0R-ariLW5!gIp%Sh*r(TymV zJ~Vl07GJkWbsvw=-CG{7TcWy8M(9ctbibs!$E>bA9QUT44<+axS6xGdZb^df3Dqt4 zbXV|Y<_q&3idpv2DHqHRbBbJxC}KSqnBVa;llnHW51as(fcf3I0#F6&fZ54z2IjZx zj)Th}mt>p(%E2$_W0S=9VQJ@6O2Tj0C zAX`BnI0Y_)JWk9efce0jV{HKD{N^Y)2eLUx8v{zfd|-ZKWfj;74g&MrCznAk6J!CH z1!_SL*aZ5(QDA-pBzHFT26I6ZSPgo?E^r)N0Om`rQJ@IS1e{Rz)1ae9!|nfj)2)TmyMbl4YO$rY01m2xLNE&~2JK)2*berA(zivD`Ie${PhE8DH$U$8utmMUztGsaY?1zpR_dfAjfpp{$29@0ri9PLlO= z92lF=GZ}kky@G!%&m3yk<7It}g8=jS74p)o-yqk`di(@gci$@O1?qpSt{14Erx|m` zevN+qEIV%V`NnOsUhx50UmYRqdCU`rKgoW>te<|5tY2mRH=ny{w^=W(ko7#R*9dLL z4(2t(uh911xI;cSGhdtSS4YYEB(XD}cWe8)IRG)ApT0}h-D70ERO|ne+P|j$4ruwK zwVpS|iv88Qb*=nG_LHXE9fM@OAWzm$kCXNJd|98=dL353#pJKi?Jbb?4(-QR*hiS{ z-S^6x@1pGIMY_Jo!JFYrwI51#9NbWSj@GAM`@dV`Hk>)i=x%7gKc{hdPTRXz`~6|< z_u1O-2edyAYk$6={dqw9a|ru(Q*O2P;|LvJv$Y?`YJHxs5W5{3x5KXA%4Pct+J6T$ zPD6&u_VZfLYVEh#8owu*D~;dt@0IoQ+Aq8H^GW@jqwzm*r`R3SdS2DfhqYf1YrHq= zdhhLGze4LdUj3g@`$cM3s^jKqwcnxkua6e}$oI*5tlC$roqH$ob6V~KwL5>0*bi5` zQY~+(+O1Q&-D-D0+xeWfYk{^aN8@ln?Yq@}soJe`@z8Rws@-h08?Sa})PJ{@H_63S z?OxY3Qw{joQyo7l>|!j_(^YWW4OjKNAuxz9WSG`{Hs%?{EZstb=tlqx}K!#EM1?RF7_|#`heDZ zgtqIv=I6`0o~`*jLf7YY|FPvhDQAVQD|9_l*B5o3IH2nkxn}Z>aN6}c?Wbq89>aAU zy`=N_NsUX6_TzJNM7L7;jXJ*^*0uaDhWiZ)=68+f4qb25yt|?HrMmr$u1D&4TBqYK zi^`h%9?b)0qUI7?~$7is;f3&g%u$4QQkuQfWZ#%kP-m5JR(wR?V&e9qEwbIirv zjThCur2C&m8ka>{@B6bwU#vQFPmig0agMBCm?G;mY68xNXt#n);yB zYqyT~W-a%k=G~JTw*_jqL&w_=tO412^=q^rmg?s-I-gD&A-aoB zcaMBNtnc4%DI=y-cx+jE#PY{u~-?Z;zU z|17QdIQ2VT<2Y8^->viGv)W%fG>*;Mzt8J9OKDv9YCnzC@it!LyHVr&wAN>ZmcLZv zyFlYRR`YnH*6TZ(7p0nC-x%YrLB^-s`mf=Wi7q z&wtzanEO}wKe(#%!U~OlbERy5Q|E=0_D8AKvs(M*b=|)_tmF2)w)>3E2P?FHUeo?b zX*^bHK91FXdHpW&cV6>(g~mOl@!q2CT%hq7t?TnTK3~%H)4HCg>yf&CP5WnswsWSg zb9DWx>tDCl{(W8hYmv6ATI*k`{W)Iwk=j4S>hHYHLyI(CFKWL&uk~J`_D^bmzM}p4 zEPY}6!`zQ#*0Ud!^&6^Nr2U(t{aCH}I7IuqSo`~BZO3l4;~J7JZ-uVsY5%pb?7#`h&1M>#rf7im8&Ri67vZJfC;-mafkKQC3w=Qouft@8`bv3BETDX-IN0ey{2t z*77gv`dN)rvF7nSZO;O2&nr5f7HI$7Uo7Pv(|LTj@*~S-`+_Q2kI?=&tm9|FDA~S7 z+uQBhqx1HHyR}@^e?!~ab%|d3UVt*P68+8#O-X z?-Tp08kg}pPL63jvNRqmH6AN99yeTjH6HaEkLNTV4{LoM*7j%Vd^u9vU#|^BcN;R&~#695!m) zE^52ZtN+8=U*`Tx)2?G$?;Xyc)@Pm0humLh?dr9DE7i|NwO^Gq3S z@4Y%-AJh6B)B26o_@CGE$LV}|!_`ym%{}m@z9X__y;tkC#nnsaf!(@3ujTL6`o667 z9X?m|_iK6MwEu3XpVxF;uF-K+akJRJqVvEOU018!@HxV-(e^FX_B^cZ;Q0ny?*%%3 z-_UxSX97%nM(g%t+KxB1z7?7euj>9~i>|rn&FZSP9YfS^x7N2={m#?zx<=Q}>U_FL z*9WwpCRIpzTeRLIwcmzlc`s?bMrwVV-CECe zC@9FM9}9jXD0qwg*)zmGXC2oEhX&bev$6_upOI@41vi%;r2B$r{TkHMhz zreyvAc*-i+6jYAS%F4_K*OIUx?Rag$XLxP@sXC;!$_D7Xx+ z1M`e(0Vo4iz}#bQ?ulOwHh|4wJJ=6SfV1EdxCTsB_>Gca3@8ERU_Mw38bLc)1=fRJ zunp`2`@kV^8e9MYkr@U?fkI$@&t@)I23i2m$OfChR-J1ZAKG z)PXLr8f*YOe-ms6N5ENd4djv2+*==%fK^~0xB`mEsUFY=E(7jcF!vysYyLqEr~^%) z3#<34{32+u%1KEs*F`xvLgZW@FXawzGJ?I6yz&>yY90wP`Ir8DM$q8~R z9~6LzpbFH0I?x2Vz-q7oYzKS5esBbw1((1zkj*@m2gZO2pahhI`Cu_<2dlt(&<1^nS#Swl1KAv><$*C^0w@QIK|5Fl)`MQK4eSDkz-e#=1e`OC0)=1}s0A%x zE!YIMf}Nlb90W(fDbU3^mH9!F4PZ0a4)%ck;0QPiE`e(xkNJB7C;{bQK3EJ^f%Tvl z>;i|tX>bJ$;!$_AUF!nfy>}J$i0L3f&x$msz42>15Ka{ zn1=y2fX!e#*aP;1Bj5x$3oe0cAp1_*0mgs{pd8Exi$No32dlt(&!F7$Td7`sNgTZ9`HbG}A+tl{)w5>Ug z$<45pZED+K-q9`P)^V(o8_aKOsBd|US4wubdvy^`HI3$|Q#41cW=>Om>+)1BZ$Ysy zZ~9Dq3(~M1Vx!uWc`i}3W#;%MSkT7HYU~?S7PeNl^>{krRrf@?p4ZYk`-TtSmvEwK zEHZTvUq=bH`ZDk24C^M_)xJ30E^~~O8|cfB7j`r+Z{~&I`eH8^bFoqF)U@`}+i2PK zMJ})X=rc$j{9raJO zrt2zps%H*#`e7W;hkDnGuT6d@r_I20b`g%ed^9(cC~$DJDu+(A-q>@+Py} z2;(UBS`K~b>av~lfUqtD%K1cdV^>pHhS*9ODdtgE#$t00;My~w4BNu646)TRm|NYv zKa2@5H<0>!ulNgf!mEyX)$N~_u~&3D@sw_}aH=7noTiFn{@h?*E4!rT#`>;)c_Ex? z$SJ1@IQEaz2&bCT^cZQf8nZ7quXkJCVctBM*}r0=+UeLT}6nuR1ShYdMEV(h09Ra@P5~Zgt{@ zm+P(gSpABAu@_!-_nnx7s(% zd*fN`R8OwCxK1?ZGR$A0eo=dX<(gyzw%j5$SYRO{_8^EfAR zed1m>>HG<&8gkE#w^jW#_O+2=Ooda8mvc~4cP8S!X>&LFi z$wGg^tB(A0xp&LuW ztBzcAx|;Dur)_$$xwW~o$)t7YPk7alZ*Cuxcb|=&eW9rHA=}iJ+;aVL$l9h~4C?G< zyV{daE@rFVFLmnBH>vyMR5;a;M{e9?Q|F<}trK2#UVoW3+~WHyooOAq zdJ3;PFON&8XQs|LbUNWx=jE}v29l|x`JqmD)itK$l27|Gbu>TJ39mX5$;ESRgpTHi zI^k7EE<4?o2pz*U)Cn)Tsq~Q3HQqF^o($bkC%ozinA4qz&@qHVo$#vj#!D3)lo=O> zai|ksb>4X4H@pVu*d>HI;Z^627k+nXfUelf3E@>oz+C%!qjX+A2(LN<=5*ONNBE=t zZk!3PIs)c&T~RvP?{vbej(|DcxhNg&cRJx!N5Gt}mhPA9zT>eISIQ93)< z$+?>Fs`K-Y^Wp*iXutDku9MvosLs#7Ox^UNe)+!L*ZKL!IdwmO==^*)*PKIte*Q)1 z{Cr>Q>-_wS(E0g(#nVmm^N(}*%zFCy-e`G=%QQd#B6NPfpYU~l{&CKp>CeyiD$A=s zKmQ_he!lnlIzRuo&X?)W&v$bj(e=YLKmQ_he!lnmIzRvTP9W2tpYPe0*Y^4O7p3#^ z-CUCl>*?oTl+MfdbH2{cKfZGqP){%4Yb~$!^z$!D=jFS(#u?Vr&p*DO7~s##_Y%vi zKR^GXbY8x1_jP{$-_wS(E0g(#nY7(rRTH85t;QY ze$3Bz;Uz95e*Q)1{Cq!QdDZ#(cl$tpe!iRUUR+#C{QQg1`T1_H=Y~2z|K2mupP%oA zme+dv`4^${^S#&C`T3VW(4U|0*_Ky-e*Q)1{Cw~7b$t*`U*FG@EftuxoiT|GV#LFpMQKWmRV2eP*-bt)%p1s zq4V?okgxOekMGAa{rUM`VtMuF=Uq%lCZCt3N;gqI6!qn|l+& zJo57|O6TSK6;C(a&p*Bw8&FR#-y1D2^_=eKUzEF0Z`<+Yym>3lyFq4V=yc-1|g)|C_v^ylZh@T&9kFGA<%yZK(v z<->G8|HcpW=jVIA<<*~`e^ELw-`Dy&KmVe1UcO)PbTj-%h&n&7oqd>{hY7!^Y4Ly_4M<-*790UKmQ_he!d^_ zb$4 zfN{t3!i%oV&%a3n>sjpOd!yx5=jUIP&dc``zRu6T$r1j%e6O;+`t$QIO6TQ!pRe=t zZ%TweFW(C-um1e}i_&@d-s|fq&s`VEX5V^K#(j0N&H5-ZvGr}UBW$zfd%&V%+V5=7 zQf{WLY}0aSv$Hk#PBqMF&QAejEXUlt z5up)IHOyyDb0k3{oM_Co9H(igqvHGsryAxlry0eVj?)OI8uHd@4qA=g1FARkxG^T2 zYP|XD)Xm1vL#eJX26n84V@!C}dGpuY!K!l>Q8R(fp`PBq@X#Qg5A z_!_7YPBrXH+`Kl1F(7`VesXuHw9bufu~9Ai6Q^BfwI+t~TCq{BcTBuJ^lPV5H!X(! zCcNs{x41Ez$2gKUM(c!Eop%hm%IeI$v*Av&-@Grp>e#gv-v^Q?%pFIp$O>K;$uvp6fq`K##eYBL9rJYmza(maRK$pOk3Hewv0hnhs_bTvQ2Fnd(PH8r=D4^Y*SmtnzLP&H_%qLsV!qHyua1j zKAP&%0}L1MLw38`GrruIoH)Xi9eqA5oN5?bPGjz;h|>tC8gG7Ib$h%k@MjJejh}RX3n!YH9&68`YA3&TmVBY9kIY+!zxZ)sly9jExy*v>biaw=_h^!+MLI>b+yCqgKzn z+}+NjD<)3;pX(G}b>6Mm#JYsFh19Q|~+a^11eIU!VPi$064!VBt zDYSk%R@Sx|b=V%+uJ+`dv)_52v8O#5$6B&o?a47`pT{*x#+5t+=Z#z0uJ+`XoA-LG z{ai-6G{Yb3!l}mFmz}kmMXgPq%C%cK)sSPZU*}J-?P%|4?n?3KTX^i5`5c?rsh<3D zW2%H}io`+mjh|w&P3aLJBPXXiZm$}+T< z?P6a~&N=&G6Qk{AyV`sEw=QcR{k^hqs`2vctZI^;K^7a;dik|;QaToM>RZhiT-ciK zj<9`Vr+ROnSHLwl*AJmSBQ|2AT5`Ws?Rn^>)vX2gCeg`0SswdZ6?(C-@*`L;Pw9w*e>GD80 z)sSy456t_HB%k~HtV%8KNO9oc^kS!aa?j~c#poZYZ)~n_P3y%@_2i+;g$;~_DF1$Z z#YVN{p!40uIH0|4t)EGCbZLca+ni_9Z}L2Z*r}d8boxuaUS+jyuH|XH*r}debjM6v z8A~=7rN2H-Z?$z$apzZf(LGMzI^8hFl&8b9iBwuAyz1yvr|avl3oGjU39mZ(#kI4C zG3ogW_r7zu#$vvdcY3i?y_cgC7^9wEv-9z`9xcG>#ZL9a)*a8BvidnqsfJIp51iZF z)x|!rx^a1G;S-vv={kt5mO*^oIN8ZKH^+)nMs-iKDI+7##YVNn%K7j5V5nv9m`cri zLOP6^bjn|8|6;3U5H}aY%eD-$w!b6ONpE+izm;(@5Ifb=Zdd=NUkK|kz`4_kjcRGH z)1J24kF~i+=HmW7R-I!TFEA&h3t3N}Ro1qr=x$vqZubs~;qH9Ujci1D(PQK}w z&vVVbR%}#DPP=)iaklaKXsWf*Jx!eUC!A`?Wv4Ok@Nyb?nmDZyPBrAOJ3lV_kkQoi zd;U|lsjau)+-hwHKL07(#lFGYZ&evvxiRYwlJ zyZqmaKo+h!ybF3Gs$jT-pf-lf$KatD?ibqWd$26zX>-| zHw+5?pdWVuZn1JVWpL$#g5Zy1xSzs3AH!|FDF|MS;VQEEJ!5>DrN6%*_+*Z`he#I8 z!o`?Bk-&Apafol1Ox^QvOi_`X`JH5@fJiRu=5#zW%Nz^m;wfCd{oPPg&@R5$*XBvV z{3|=J`OS}a)OW0${OF4M4mp7dO6Sa(SyoX^YTL#9R+#xCy_W6r?;XJeEtuWR+xf5u zrgqO&(XqTUcyPw_nU!-YnM=)*F5mf+?egzkL9bTGyl3)l+G70#GiDS`ub65c^R!EH z`L_mRIFB@odB)=BDW9WNehsFjg=u_7RaI5l^arI!ll|Ojf7{piF>y=w!|!dib3ELf z>YVIuzvv7~$|@^nPMyIHg(cb7ZT7c=jom?z?2Bvpdi7s!1(-bRLk&Su#mt!{6*H<$ z5pUy*-<8$@z3uk5^CctCdYDr>v#g|gst$p-@$sIpJ!TF|Zjbm#_mTBBqhjiV)kWrI zsBhbzQNa;w#qU?L{`dQO?6Iom&UWrEnbT6=**U{JmQgybx@=}~CA-gH(jQHJ!<9K$ z{rD@xneDm$M*Z7xw}Cj_9dHI_Y&VEukWX1=*+e<6J+dWpe#snPL0NIx)UwJ-4q#Z4{frETY2hu{Ci_W$ z0nAy2yTffxMO9Vx)Cw78$-YML-f3Bu{rtY{x7I;*X+`CXvZ9}FEZ=V4O>LKD#PH{A zQ&3q{JZDC=xoRd$a$Cg4ls%PwgY>Pr=Qh0 z{|a1%c4(%*{TxW-Ynhrl_LDI`4yQvRAbjCsxNpO`xgeAKZi4Oy3A!I8=&r(z(i&v? z8%{9e>S?Ye$JKL8g6`e~-3JnMQxkL_Owd&%=;kHpYT(`z6PJbr-KXGWrsFLNVb4n5 ze>p+-yKr~K_&W$kH`yh#%%gDci{XBl;O`B%xc+++j$M1CzgxH-AIF*ZF~)II61WOD zmn)g=TLc$32I~^Ih6L_YaB*$#fQxIx+63;4a9`oP!z`I?FuzUkatvqQ>H75;&O96a zwHR(W6ZyUv?(T6x@T^WqnRVI2L>|}neQS+rhKuvJ3vOYI?x%1|W4Oid4}#_x?i+9)jp2q(2+SKw z>~gcN&C2WpmcUKbZJFHX;LP!xSu(j7;Jz!=0B-gD@qN1)?#>w9SK-Wi2hEb{Z#_H4 zxOi@X`)!d8(3MOKf-l8ze+4%shWj@-_tjEnU8YV7f*-`xa}))}&B+VkX2;ZDKD)pI0`Ymd>bgPWqqQkiw>;{=7TSnZO@ z{RD1K3|C4gJRHOQI$Yei{w7@9KJ^E1ACD<>7N>C!#c;m{7dKCAhI=|jHJu$@Rd+_1}89xPIt` z8y-{U3klp;;2w?9WpVxCb1~coxOp+$NjPptuuEp!--3%fei>07&)u8Al_qcxC2&h( zxs8>dhI6qVobi3}Q*c`YSu(lzRB)UX!+itp)~smV-&ES~Ml6|G<`3Z($CO#gB-kCp zeI4$XWBe6Y^Zt|=-Bq}yG29~$rjLa)>-hwn+plDDzXj*!>rCzpoSP>yxpQ#yW9m}G zqzi4AOxr@MV| zCRYJh5TmPydmx7U99(V;_nUAvG2HhPxM>_rxcziyJ)eOa7E|Wu6S&`k8y=(ky#%f= zf%^trTwRXA4Tj}y4yW9e&0nYu9vTp8T>n0hXS<8aC@nPq+v zZdwfY3S3;+aeqviLm7Z^+%!0L)e&`h>#Zl@T;96AGKN`v zo81HV0g;9M=(yj3yE%q?F`>*oa4x6&`{UivaBiC$Q{s>JPXd>pz>Q4c?nvP7OyEW(aHA8r zyArtfCU9dCxUmV``x3aj6S#r|Zd?L)PXc#u0#}&8jZfh2OW@w0z)eWt?oZ$zNZ>w@ zz)eixCM9r_6Sye}Tu}m7oWM;@;HD*TB?(+<0yjN@n~}hkC2%tnxDO_9zmUMqO5kQE za34zGKAganCvX)BTx9|`$K!6vIG(Rc;Hu%=IZ3AOlW^`l&Yc6Bq6hKcaJvIHXG(If z-)$0*%n^_OHXXIHZZsPuv9L}2tbDlGVcir5=d39Foe<}Qo$A^!WV zpswFdl#!pjThJOh|Ia(gysv8VJK;oc*n3Bc4(~gCM{1tFg|aTZg>o{_Fg7o5O?4QL zLGZI5|Ln(RIO>ozLqQfZ0A(3&2dez-*#GqF-pR#T?|rFfiD}nMpa0UrzngyRLp!@? zKRE9Xe|6|Wa&5}|=2l*${6t$YrIp_)>z(%W>C{RFjQOcBI*4aRj6d`B)2+Y^w;$Zc zKPSNj%8?3q^#rj_sM4z_v@(JPUFYoxp{j6MQ~J?-lUb{QiU4ceaCV zd|u4@0zFs$4EN3Ba3Z$7bImgpbTHgdU^@IN_-Akh`~>_9_*ZZZyb1md{1jXVH^9%p zTfmGaa|81ra1+P|IpAh67|3s@$-uh}^E_Y%lNmf_fSCbj29z0m!-2VuWUg=I19RMB z?wPq0i~^&XVc4DSX7U>q<5^IlL0#sf3X-w#a8%y-BSfDZr@2g1#}mF2#b zBG$!VDlp%Po9lI@U^+0@q)q>r@6ov(AmB25FbkMtrw;)x-3H~L0#t%IpbF4M_Bz}{ ztO>cjF8mSJ9|iLPmjcXJ{`Na@zD}|CW<0|BQBVsOfscbvfW=@5_$2s6V8+B!@Jrw^ zung3L$3X*V1S#+YSPq&%Gx!wvG-v@UKr3hi?chn!0Xjh!=mwtwPk|n=68tjw6|f3C z4Sp5;7qA+v0ndP618c!L@ay2eg7x6D;5WeMzy`1pd>;Haun9a1z5sp`^n&NW7r~dn zX0QeP7Wi$j6+93AJNPo#23`RF1N;uy4t9Xw1-}P&f)~N>gFgVfz;5sr@Kvw}yafIy z_!{T~d%+)quY-NyW$;JfkHLO$0Q?E~Q*aP`1N<5Ib8rY82LB8E1vmm;0e=bp3LFDR z!C!;F0ms3s;BUbS4x9%+0RIRs tfQ#UV;Ge)H@H+Sr_%XN)-T?0||8WtxC5w3v$hp>koZojn{pX0l{{}ux0Y3l$ diff --git a/SpriteLibrary/obj/Release/CoreCompileInputs.cache b/SpriteLibrary/obj/Release/CoreCompileInputs.cache deleted file mode 100644 index e8c1fbc..0000000 --- a/SpriteLibrary/obj/Release/CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -a8cf27034d92fac0fcc617c33163b8923a432866 diff --git a/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferences.cache b/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index cbb9a6fdcc194b91ed2939af6fd8df48884d5226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmaKq-*3|}5XZB$>Dnwq70-JJ5)YtNR-#fEld1_Ks!gzI&}vT+k{e&ZsuNGPvr+y# zB>n*Y5dH%m;I8|LsPMzrIs0<=xjTCsp6C6>MLVs?NBMXx3!|+r9edqKCD@GHg=LvG zFo@5B3(J{aKs}x(!*W!2OR8z+tkXNsi3RYHY=jsY6l!C$`f@O!?es+AWfT(*dls3tKT{qDoe5bjX z@WN@cd0kI8)73dQVEPm^(*jP7zK{Y;mky@#E3~m9+d1Q^0qc3KmKOwD-F3N+Zel%N z!+i8l{Gadl4yf2LB=}yNBtYrY7hQBZC_LNG5$TiRRXoA2*!anpz2{H!4^V=Ex`6nV zwNPQ_!REKk%_ry&m)b0HcJgL+XI(sFIKaHJg*HmgnNX@vNmpH`9t9-3w}Jk83HPS7 zODwAi5oDyeb;nxBQi6#170~ho5h4NSPzwY_zQ`8bIWVg_9+;+fvV!YDY?n90^qc4V h{)WFz^Yy+x{Qe7m9EM@o>7p582?-k}!}Mji^#^_p*ZKee diff --git a/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index c8ba4b315d63e27d110283c4dd1360975050ccaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7437 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 E1ufnjXaE2J diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache b/SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache deleted file mode 100644 index 1c0912018623e9fd733dd5e85338ca5397f319f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2682 zcmcJQ?M@Rx6o!|UmUbyv@mozQ+5U|$-^Bc_5LJsxTQ>cq*pGlBq8niBa*p%Xc`ydPSMU#JpL0pl_Z?mui%CfRq zE0-HC^z&Lh8Edl7oLB!D|L42;*B5D4_5;-7AW06TOjo1$&gW5h{Z$L6v?E#MG_Wel znL3((KHYi`0Z52FaNZ~d5mp{l>$JG72J&zyrZ?4*4zegslar2b2pM(PHHMby^nK53k*V(4aS5GLJs3AY zyDM5J$8ec4fZDQnndAz|Rg!BY*GX=W+$6b0GEQ=v9-!6Ig#U)_n-EpQgeFah zs%1iyv*+xnnkMwngs9pk^vHy0H%w^CglM-+XxfBmH%;iV3DItw(2NODH<(bxgs59g U=!pqAeIVC_sN2kuo*K~bAH>ljZ2$lO diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.dll b/SpriteLibrary/obj/Release/SpriteLibrary.dll deleted file mode 100644 index eaa3011a0e5fb89f3c1a8c96598374ae658603d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66048 zcmeFad3YSfwLV&4TC5pKBUzSh$(HP~EP2P+U~J2~jl5vXyNNAJV_WuEEzd~U zLdcPV*_VVRgpiP!5JJM5l>iA_NJtpPR znx3w1-qW6`>P*|a(=Gd}T3b3g?5?Vv$*OdBM^$@A)uPqws`lG$$w>tTks4L>n#Dpi zX#p|fYlk*xwH*^mYxke5L=Re8D005%uKy+2L;OwGCzC z4yTbgZbmg>W)KFE+J53BV8_J6=*C`|7|D!c8R8^hQYL(Cg>8ysdtGV_QE+jOxBcA>>+z1C;`)kT_)NvD82(pbk8Al7_N?CTB08LBDgl-nitQX z*cS_!p+ciDn3x1guxkv$xY&pq;izFx2F1pZ95Gzeih~jIe1IA9(7VlE>PS{Eb(Mn5bhx3|2-aIsqr#p6 zq|l&rC8wj_{!tv1bqjN!$nkzac|TOPDKBJlcd<`HY10PC?h)|uaD)T8?#b;gk0{IY z;svvQi<|)?%*NBzu|1z{FE%Xpmc^aa|2V@u_XAyFbo|%hlA5rwo zJW7&eHp2TbL}9E*V01L=zV|Q5qEjOtM^lDhoHT~iKzv#_pwp~k zPSs25q_qKiKADTU(U^oePeiB>1TvVWO-wUnziBr*GUz9ci~$W9WEn~>B+$RPtbk5( zg~38IQ!=!yAuxnX+4y9wPT7dDK@S+g4Cc*23TSLcZ#zMr3?|e;Sx`Sy{0eyxR#789 z@25x_o)(+)5D3Bey!+@P=?448?FMsh0&fs2XfJ>vy>OdBL+3u(B`kX(Q4vr^X!<%I zjiNhZHel%EP)IC-puHGC;(>VF<(jQF&vs>-t2-KtG4my#a3!S$*uk$pqX*O-#fHw>DXO|CHwV71bUkXvJOdV!Z# z$Aga7)~8V_jqAg)Y{1MFjpqg8^9q4@4W9D>MkKV<-{~^QJRZH~{0_W9ENMC0mycoU zHkP623%e#-^DoaObGzuh6q&s#fCenqh6NH!;eSe+_A;c3jhMltlwzeeXA@f!aD7Bh z&*JTQo5xP)-!JFQ)XVZbxmQ4na`TmPbK<1AL$iN}7L5g!s;tJbH+`CZPtM!YzDbpn zEzZkIoDGfA{mKKFpN#s^gGgLMjL=Pxuixxt$AVmGT*z1+%XxtlGvjeTk0)Ml)?QM^ zJ>A6cx^gH}>dZPGa%DCiP3NsR{^5sC-`j!Oqg|rt(}mtHGA)8tU@68#&8$Q39)5yu z;uSklZ=u+uKs}LOuuh=w0@9aQ4K=F6 zVD%4aHS!D!L!M9*Yam_^sd(MB!3I5kBDH0ksi=6}J%ikZJcI1vKvH#WL`;yMgArpz zd~(2uH&cC049V`)HVwG3V(4P#-3~_~R0eU46>^m1TAzbzL=0m^*`{VJX11KDuxay8 z;MTIu&8N_?mNcB$%xP3J+)9x9Ph_gwK&MYRwT#n<^RajGp;@<9FD=ciL-Bo>M=|R+ zBUy)gM9h}*rjZjMV5*V?PJn>rzEQU`fE9QDywir!Rfy9=xVvBm1Tg=~9Gn0F6Rjk0 z0tDod1Wtf3Axq!{2os603WZWaPpl_H#}f@a+zS|WzXFdE5{*v|>2VJ}x^1eZk8V>G zEN%?j!o3pZ#)8JE+Z!mIT8ch{TUU9Xf&76!W?_-!Q0vaud$GKQ60B#&65 z>SwR>72Zf!y3OYV)KPWyUb52uJ#}`6L`v;rMB;fEz7|+LVebPIym#*dcWkuxK~(HT z1c%!D$jyh|66yMv^I(FhdE!F`Mmm0oe!&( zA@mXT_xOb>T_NK1(P}|Ie7;|3q$@<6KAPh7!@Yi? zQLYei`e4!h+7aHRV z5vPyl8vSs;Uudi=M4UdFAoRlnexVvyh&X*Ts_Tb8<`=4Ug^1HfL$QANLch>BSBN-$ zG=A!bkNAbgyF$e2qd`wUe34%W&)u>OOq@O%sr17a`-LXBLd5B#;YB}uiC?JB6(UX_ zjS2eUOZ`F|Wy+n&Ao&N5$^7 zexcJ`A>ydmz0NN*(-k6)irwq|LZ`bz#8I*PNx#r6SBN+&c5mydmz0ogprYl4o6}zAI3(awbh@)cnCcn^Gt`Kol?0&{CG}jd(&c717Y9~`hu-d!) z*TR_N_}l;I;`p zexZe~5OGu--{Kcqv{zU-AnrcZG=!!Q6(Wv`E{X%P8A>#ZiaV(#U%P^J?#Q&uzre|{B_&*oJ_xRm; zj_Xe1s2IN2FSOPbB94mTulj}7xkAKIG5j^ZP_rvU92LV~_Y19eg@~hK_#1wq4XzMz zR1AO9FSOAWB94mTZ~28bxkAKIF?^q2XtOIs92LXg_6u!sg@~hK_lfPY3K2)e@I!u~9j*{@R181t7iw{Z zh@)co5x>w*SBNLZj^=0gbm(lT#dPr$OWgl|E`A^NyRy}FC2>^zKIRu{bA^bb z;`e)gp`?97s9iR?37O&6~9mTh1y*q;;8uj zpzd!N|?Q?~QqvH2Tzfj5*B94mRr~E?uT_NJA`2De8sKXT^j*8!(_=Rj& zh&U>KpY{uNx#qe`}p+l|^aa0Wd$}iO83K2)e@UQ(s=et70Q8D}* zzfi9$L>v{vzx4}U;0h5(#qjU^LVd0faa0WdhhONhD?}U>!_WJLKI#e)N5$|9exZI> zh&U>SU-SzNxI)BHG5mYK(8pXM;;0xt<`=rq6(Wv`;g|eEM_eJ|s2Ki(U+5xNh&U>S zU-k=K>-_u1udz>FqMTmeTuW8fuJ$Ez`}E zJ|NRjX(Tc-y^_+cGTlV!7MWf}=_JxdeSWqIQ;Fr>uET@(1QF}#EKX3AW0WeQXX^39 z<)B97VFH{IH0{wOMKU!*%M8=`1QRZ(Si~bgW@z~UpTP_889XJuSE=)|45@gDV@aW+ zZ17O%@S|Nt240TyG<3qzJp?fo#~c~M!CIJN)?IxvkszIuH|v(@fwI!XMM&bjISQ8V z9q97?71RgkFIIS!OrC@Ne&nR%>2Q<*|6!^?Z%H)LB~Hh)=rw||#Pd9^2&%&AY$&<{ z`yOR)@|C>;XG6H`Aq$mtqqEdz1V^;;3=_vK_&nGU3en8GuhWie6#qk4n@?BPt8sfg z6{ybe&B@0sk>dokn~^@!uLK1%6ji7TK+wvQpoPT*f7@o|UCB@l^5 zz`z6$!MT4W;=BQXYEoh9Re`J^y&<3^-IoQxjGD2Kd|e=%O@y-V3q;VbBC3yt(KF5Z z85SE5HN)|^vOpCYMHjSpv#Y4jNmr|m7w7hW5q;J)W#3d?g8D)u_bt>LEeux+tTtuG zLR!Zk+FyJFv>)Oxf;9awt#IG6^mtj~YE%{l6;Cn5XTU3U;xS;q1eR*`JaiWszk5&) znu^Ysn+>+S*5e=__s(p<%BRUHZ2MrMp<__3N7g>9Cm3lU1YN<%=1IxN%PLcY$PvwY}CbM*oYWaV_U$+8WX-W6W5TS3Nu-7)=T6IdBzVl z_v9UPI#IPt*6u+L<@L&|Xzz09=V@2(twiAo%zyNbA3Sf=&r=Mn@gyS;w|*oQO6;YU zp`@C#Sp;h@WOa*CbL2QV@Q;PX_`N-EQi)Q zb-2LUkHS!?q9GiXiRoi}CCd?trEP?UIUD0UhEJOIyki(I7BJ4?6*N9WO;JH(TSE(6 z$u@76%OZ(PUV#q6>!aQ(loX#c|Z7%}CXeh_XKnZy|)SH3h6-(m8C!tJF+z5z%VhD`9+}8p&R?%j?r4AU^1?+DC zr=<`@t(YEin6)qBRv|YbTQx? zTT>BJbr>;!hI3MVenfRitiiHfvUd{FPG7}{EgAXn6-imLuToO=RThzb)hz~N*J>DT zF8o`7EJBkS^{2@z*SaC0_a;EJQ&cs{NMMjLF|#lOONISlO{`RzOFWq|_LcNek$U0` z@?e!Js{_TfP|gt6pQM~2tXI-eqkWK}Gz?7di3SIADAV-q*$f$AGHp``G{j|Z z(0egW8#D-y@pc<5eyuwFrA+lDNyI@e+)#(D6Np7XcK^Ds@xgfwB zmA&)Hyonf=DUn?z^~ext*Mn# zX73i1zqLIN1a48Y7q>kipDRf2y3RS*ksxtmpSgSn(+ zvs{NIZbiX)YT8JJlqG7~04@!Y(+15MlM(7zRYZN7v#U*7!cmPT;|-&e3P_VE8#U#o zsZyTIaygrTQGrBN1)f;I%|@LdTOiruaL>EGYm z%HCi#xTz$bx@<|&z0{ViKuJVhK*eqPmaUuA82a|SGUF{yyfKaz!0b>|FAU{h!<(zZ4P>s8L#GntYgNZq5{0xBwul69EE!d zq`rJkwmiIrdn)^k(&<<(&WA-sdXUq!bSzRfVDFJWSOLdh1qgF_{91`C7QKkmD+2a;C?_(JZgCDGg*y|P%;nk;v_qgZyevNJLHwrooDKykjMVg$RB zS{**LVQmdrTNCGlrH2!DbIr*&^HDbaU>5t0s~{J?Sx=k+Vd}wg`5eG0H*qI9I?is# zy@Sr5JsLwk3?%LWi(GscDWbWy3ObOJ?$HyyFk)XSkhp-Z$&@t8ltxiG+aOy5*#OlL z4HMyYqSA|d%2F>mPY<=TVIUrcEH1QiPJ9%gp%56Yl^ClJm_-_1v7^;>-L$c@Z(jR_ zCBMIBUSNxiC!N0!K=zM)@3Gd3=WlD8AJ`HJIMtnzuZFn(^XB6#9rPL^mqf9s3;0}c z-R1Jqzd&0sd~f-ms|ozpIDOH#bKnj`qqX2Men)LFaEF!7SW! zeN8pNy}0JN1M&>DJ&js~@R1H#cS9g3udsh%=@TnYLt<1SNAul(M`~ z{cyENMB$4`!rcrAai2VyZl%y;LUugM>h?>J3E9ysM>iZgST}|-{sr{u82tiVU-?9C zldL=qsFIxB@R^Nrc;yk`y31#FkS5hqTKd7`4H{XEvT@^#@^RzJxXx`#F9Kr#y$qKf zxOj9b#vrAje@td*kr}dT6(jq4Ek+AzWm(#l7(J$&N@r@4qL8OSnSKdMo z*cYNe*$)E(bG5)iJ<3_R!7yO=MNz0}^u=(|dzS&$m#VhKO*7%TypO0`peOEwh6Zc_ ze+$=f^tqIU;M+$?2VT6NN5b|$z;m(p34>mWW89VSPi~7f3=h;Bf#K6Jlk$8pg>skm zp~J(DNq`L%fwDJiHNUs}rC<4T@{X}}VxoI$I^?*el9y02$;l#go4#F~yp*WBDM@dd zMEdqHbt5HllZkAc+{*&50rHuVSCKewUPh1aFNb7pKXLjxNGOAD66v!ksXo@#x08{l zsjHHm_x%5E=j%}DvGa1*PU8FvcIv3zm8b{TF7ccUGCGS}s7d4XUaAy5EsHdu-3Y0w z3Sb?!Nf&~@{$XDYo=1!ym(T-%Nahm&@wi8R5(xG+B=5-}9~@!Ps`X*mLI_ZMC9Wl@ zUTUw=5&Jp^(T|(Y!b-N+zTP3*pX4Mrz;W|uByj^M_NTn$XPk^TddWX`q(AMD?VBih z-2AnZM#T-LNYL0}*yyH_#M>yqeE=DmSc_Tu zBVgp=Gj`ttFC^v4?VEwrheG8{h0t~gHT*)ZO!J(TX`NhqmWgT0<=T^Uc0=a`9W=NOQeQd=3JV3;?D{tZ`+$fS=`Ih}SEU`>w5jN|e01hr2^jjFD z`Ja?#*TZLuiMw2za9T;gC0RenX!H0a!r_+3FrQ%oHf|{p?V~UQTcvxmX+@^lK~X7* zr^vEy#X*mQi_MAK@i3WcQXGN^J)=`K$t%NiXY2}J2p&C1z6I9?N_-#n!$V~3hkA%V zl*BL*zW~W`B*_UB&#t%;t}wl>2)X`*8TrZ#`v>Gcm4_ZQ`|?;r=lRje@<@M}>?i4v zFsEP4w{L}|i7x`YNX~C;!#xA~#sU1%TIL1(72=P6M1K!|!|_MYA-#0GdB=3Tl;O}J z#y=d$6!e!5466%`#tJx)e|m2V+N`1KB*8rkLjv}VNluOvi(o8&^2$TR14N0b?QW8m z&xCpWz@#&Hyz!K?lf-GjVh#U#VYeX*#%+_&w@`&teJW2QWyjKp_C=|qMQs9KbV55KOF?r`SO z7Q$#o;h$CbyTJ;jzL=<+eYasH47q7Y}TU*yGPzNtPE=Tn21ROe;K?FV4C`ZyvL%Xd4|K1-t`V#%S*Yr;3h zB?W5y$Mll-n4i6nD|8V;z=r11_Mo?{LpaG8x0`biG)K}!50_I6^ z8uj}?;?JPstDF!q9TD^$T`Y#oOpZlv5IIj)plg!v^Fn;~Iy!#IxcTv5hq}y`+2aS55ro{&4x%Z>&68}x7qV3H3shH1kGbn)y{!hdoGv} zG^b>8KNyO?N%GSH0~>wRn+*J+?J0XU^UzF{^9CH!4x%sCkHDrN?uoVRE<-{f1!jOc z>Z_S6aj6aT{Rx$=4fY|5j9R1bO}g|FExy? zYXbs<9!uyDLvJcALEy(UvkwEi5!1^0{)nsIYXgStZ=wL1e|6R`^#uXBLi!STbO+3$ z_P2mhKunOhY2ODzFO{hx76;X+Ow;~07%E79Da$?!WzQnp29+If_{`cPff#D_+@=hobS<- z=0ookXFy*`!obrN4<1qD)Gr3JEW-{Lg z3$LjB0GAgdCJqzJv&nidg;zaVg06ZmMcLseAjCJ5R91Fwu}b6`c)_|A_@o0SLHsZf ziSuSmnlfqnl<8B^f#_c!NC9@DlaDKVXoFTj=nD(23@?bO{c@Zqo%3nBba(X_eOUoWc-Y>-ob}?mZ*^9$XQCm8v(iGabIh7Id zUo}RpDGnoTidQO#@@y4Ru85P~c<|>15%Jqvqc$SG6(#zufu9%b6ZclL?Lo>Ff=r>f zIht2tiu)?(R2GV}CgfEViton=Myd#=#t|GfhG4^Rl6=30@;+HSrxKlK%oDYRqI%-J z!wbc}8iJp%CYke4nkiBx1TU!~+q8PJVIk-d@l&?*h5)61!?lQxrnFs0GG^tGg19(R z{cXT+#;>n3#gE}bQ!KCg0Pvd8yGF&u>7@^hh>L&59~fbZN$ivF6@Cu>DIPPYvH}l} z>yhhH)OWl1>?o>lWsGX~pS5J+c_mbrJq2XvPWa6fd1F2YdR@_Yc;k}cBy&;8y(le# zToG}6gn>G4te{-m03+h@O7iMv)FL8Qar(AuvivuYH-*7vzFR@|{B;DuPp}_mGIwh| zwfH7u4(=6k(z<{k#RMiaak%PeeIsMkxBmugF)-?VMdDyFVIej5euc3J_r@ae`bgsC z(>pPcJQO9Y5U02`V6W92t^YJ~H86H0PP|fDWr1fD61G7+$=cr-cC`L$z@8Fe1nxbf zkJf)nYyn1=Z7U((Ho}na9=5DSVNoun6S=s|u}_X&jHk5`El^z~o<{u^i!{!MVI~#( zs<0m@4vJC_?;!rAhdk0(FT}URE8-Fl?^VLUI|F$ai$94gwR8G21zqMj{Z|8O;+2o@Y>z$)_-Y+l zXiX&e&IE!#9!apYh)OuKgy1!G1fyL3vFaZ{;}wM@^Uydd;iB570AEXx%$ucm0)DcF z(ifDI%vB>PeRLeb&(#wAMKS9IG)2QiqKt`>TQbPr$XTu&-j4u2o(yMBI4fsUO?*Sj3Nbv6ruPUYV_Bhka z38qF6Trr+tPc^|23~yrYkC=V|!*YfZE;ExLNqYjpiNk(xn&z!&g$?~bjok}4nc;$Z zYN_9iehBbYf=cG@kuO8$-f;x)tR?uH5ig^hV?~z$-dXS(U@Po5#e>yvA|0=L2k^hD z-Us|i6&9G{>xpv=P5ilp>iD~H1aBT42$|xpvE+gL(ohKPIHCyfhB2j~sQ66fNWe!* z#)M{yJ^AB9adERY5%9FYY{2ho=bLfS95~-3?lMrG(|!-i{s6&08U**51iup^m=`9v zHA3*tJc29p3I3JgwSv;u=mgK?yblH`UB-ELTa^Abmk{E-_p290 zf0pHISpEryDb}TNUcq_qU~4CE-iz7VUvUZJIPZCE?NcoOB+K`(t`Av$HA{Y;b-l&% z^H|GE3@>3_qd4zK&ig~wwS@ED%DVo_B`oB;*Rd{xefSE?U(dQKSaL5*KFGQvEV+fX z{FC7qSl5}X>kQ8O3hQcRU5|1JMVxmB>-s8}Fq(CJ$ny8HuG3iZBG&aB%h$4GH)|8653f;1zYtL%dcU{qpa&~mY>g(pI}|nSj%r1 zcC)T7)-{Ur-psn*=Mq+M-kVt0pHPA+j>WzK_yNXJ>X}XGnQOEnz#|O*C_?D-XV$L) z99dEX*i`%tTKr&jbaDAJ)z@N1kk}L2AEWC-v}PjS6WX!pwh+x-68lwjcPK2@R1to$ zwSDydP()m+uzkSt#G?xPE3ka=p29u=Rv;Rxkq!CYjAlZG;xxtvtbauNfX$UW@w>u> z+Ay)q!7dFA6Dh`C)$WR39V!y}W4ILY)51?8Qd0`sUW$=kJR>pGh_G2$uR$NM&p~p% zgWVP?7AXh2D^x0;VeCRkelt`iZmgkvggqV_B^K3Yv7h2x)ju8V*P-!Z#(3ggY~49w zFCLRMD(pqZR!Iz{{617C&UdiaLiOTK2YWX(RUDI;_~S^;!h$)$Ws3fhcWARkje~`( zGenbv68LoUSN9}8?crZXuvXx_ovv)#!f-!ON2lVi4}>R z;)vq?pnjj#Dy~%6&+A{(TE%S&8&mwU(I)Oz`A#n`5^dr>#e24HFW!-SSn*!2(}4X@ z@y3-b)OLxVDc-D-Qn5??M)7`;Sg7q5#}x0CM5)*<-cY>WnuXdP@s7f-ttl0IL~sh% z*6JwVi+2tR6xLIYHHBEHuyh*=8zcm-ii3j0cpZFPtv3VQ^Y zExxO;qZ4hbQ~XU~4*)wL>haisqUt$dY0;*zw}55DXBD=$)V8|BvkJQyShvWhtsmt3 zZ(!$%MG7m5+txvGfx>Ppx2;3sn+kgXSdVy9VND}!>wHmzja@2b1F&APO<|M9+tvl* zdW9_n)+c_Vu-0nZIxGxq`cl3$u#bv43JU`37hMV~0X87+QrHn_|Co41Vb=k>P*l#8 zrQ8k;M?|y29s_ofxKd$Tfn6-Vudr@lmxzBV?7zm@)}>+wHo(Z1D0r8Nl*0Zn*0wGe zUsPBC?Qn&7USVqzwsoZ_!SF-*QoybfO$uw8U|Uy1t;`0D&D_WRJMMHk)l^9cP~=rdx*vMly)=%{$_>@0S< zb-VcF8pgzC#PnChQHAx7tg-G8-*>QUth>eE9PAG5UNPnznXiB3=R#iy95ebGV*_{z0JD)OZzf5?Znu6eX04al z*Kn`Y z*!x9qSZ|0*>^YHNE+752^(WEkU=Le=7S}u2->o;rl-*MD?}>-4zlbXpc4V|E{-5}b z!ps;)gGDej!|a#ZE>l>*47q;-w`(|?E0|<;djMT3VWeC7XGVv zR$;?yZT+ueTe~b}#aP0wSJ=4f`++^9uz8H-?ABd6;seLon z49CTIg;g48_C$kjM2D6l2=R2`YGnyu~VpNvltr?`SokVx^|bsdaBPg3~hc|=6kk$ zZP?W6yJWr}7u}&*+CLr4#GXsCTS_h%ajp^8E@13pYr=^0jXdp}3Y!5eUwf0W3&ot_ z=NbjtobzOv>ET<#!?e#TY+=pzaFO;!g&iEe2Uz|=DOodmdpN3fD(s2jguS9Lij}DL z%pobcD0;UM)$)5JmKZkz&rs?WcA#Q}S*$fF>^LH|M7vaB_r%iSQtds3jh=9~5!Ytn z`6#utR@xgb)9!JwQtTUjPh!@xqNGuw{Y+sGF!me926*hL(2iXoOL@NZ!f=K5wu4Mj`)L;ihdsSgSFa1P#wDz{biY9z2 zT&-=x4mMf+xx}Z!W3(SBY)kCc@K|leMTOEJk-(#CwV*ud^0c{VY63`@6z!FL@5w2MYT}$$tO~UP$_`vl=V@5I##A!PqtB zzp8!}m{-GD+IZ$&C~nvO1l|;d%?tczc&;{EVNYo5L-QQ$BZ2jyMvcnP-WM-a7~L0Z z5jw}1y)U*ROC5~vi_g~1^w`qmv!%(=a7@!8E_NuOMOHbyw+$__#=*`rwa8irdm^Mo znjI`2)*>4mY*$2!Y;v&s^0den2iugdMYcKEabO>Du+QP~=ne+hA zf?8ykgN=nPdmJodX_37S_Bbp{Iao1l>2R* zU>}FR^BwH>(074@O@_Y14)$|k{SI~zb^n-y6~LAw4wesFE_Sf{&?=WY*lDokatFH> zt#YM<{Q;I;?O@Yj%O@P{V`!CY9qc*iyWYW`g}xgc>Z`Z2KJPLEk)gb;$TZ)%TFEbZPfi42eVQ4UpUxLVA-<{ zRtZ~v@3u_$iZF)7IUxx)V;*P`ce0|gVn*7atHeg>R#bsCTyv6unn+fl!JW2IozKPhz~39D4!)YaRuZxak%_suyX`)dnyUizbmeb^;~|kfYP&3nkMEj zow#^PhkZkxDR`e66hj<^Oi*lwE>ld!6WfrWcL%(=0xV;&Ops-=+)vcgyxI+D;CYps zOVXQBnkF9Ono8|%dZ;p`Z6tFl+sY?W$+Ap>I$IcE3k_wVERDE>b(yM;WT!3$;KP7O zvnM5G?^r7T)+lk`9ZB5Bi-|&M{iJDp>5SXdE7?%!&l^w{x-tP#!L9Q;%J*s^$)X}d zaZlb8{>_yh7`l&n`(Z%jaT~dkelA5swzqeWp%(eqd*;2RMMb(Ob|ol0u~&;gQ6p2NY!(B1;pW;W6qKKuv7ph>o!b>bP}UximRiwsKr} zDfja@b{Cg_Ym{`o3;ArEF2s`)O-N{RnG()o`G0b0TRFxj;K>kn1h|#I$dsK-iDNv} z#g|#0(s)XpLm@8J^fma2GN9sh3x-g zw$PjY-_6C|68@bY?A3q!dc2MIOf}Bi0h)NX_?hYm zPLw}`Q;Jg=&Su!ia5=+s7;a|R0$7UY@FahLVGqNv0h;15?V0Kd@g$%r-T`jq(KFS5hvaj$`C3?CR#&doh`XvMY4zg8@pA!t>lSL&`hS$*TpA=z zaT&uI4F4h8#;n(7h{=UpHBI{z&Q56B&46Lpc|dzdyi?nwMYRnjA4PgMY$$a@Q(bP(lfty+7#=$C-&D*pp;SLI8PxpK^_NM9IzTbsj@ixebF=CBQm zM0sU_zKCs@!Ra{+H)~Ig8?9Gsv#M$VFO1gf6EtbVTR3UZs8@_x3kumYfwfQ2-mTxr zk}diiF6|#;)fijCNohZS31^?AtI~6=qA8bD7JvUk6{(&f)Yq+NgKVw64b<&H?fzR*bj|p7h7*cy8!Ax7`7JHzF3RC zs{L%lvw_W8b;0wtMbXuU^&rkYwX9ouVMroUX(Wn89Ri>F+dX%?P6U8b3M+IJ0Pt`!IL))529 z+gg1-;4|fvUQu}|;1>$dH$KhnqG_+fd$;KSHR^WIuN`-{(JUT{{#`VSy|phO{d)Ne z#%1EY;V&Cs(f?8W8e}v)1^Jr(YJD{LHT_+{1A0r{e88J<1}4QdC7JeMGkZJ5p1goP zc>#Me#eVpjW{kcy_yF7am|j=;T>d&dE_3e&t^Y$}ffuCAY}y`-N%dW87^xZ?odDZsu5yxm}0xa(U9 zXo_0pc!a zxRT*H3^y}87tj)YkhH{Q3_s0zZ)W&LU>E3rVfYT9E?SHelxD)hsOxen?RXh&LKJgd8jCemXAaIVxJj(DE zhL18l#!zU)4d@q&WqASp3QiMctWL0%;jIiGXZRAs>Hu-S61WZ)KFLs+M5$uf&+sV2 z0XoHF-oo%PhA%PH!bGoT*vPPj;Q+&17(T}EC5Bpr%V${4a6ZFEhC3LxFzjbI!0;%; zTNpmd@EAjp$E7ix&u|CBeuhUGKFaVILy^z&4Cgc4!LXm zXLyw1qYNKoc#NSa>+!5>yUK6|_cyI7q!3TrC2v(T^+>M2?dr-)4^rS~y z0{bgf1fQr`2KeYif`4atRVk&n$C+MEFg1eUitz+{stJx@coTDf#PkaomNSfSnVAGh z+7k#)97gcW5f8uy>{8%9G>k|u#Mc6f=-Zs)gJ@Mmh{q??0setuvVhVb#3lhgS3eE# z%wkHvR!8(XB{KnEPY}GJhG1Vg(Zdtn622EZ1C+I+iTj_G^8we4Bv>(g3E)4=37$KO zME=mxob0AeD*0Sty@GZo?1xhoZj)R|J#Lk;i9m4V)h zn$bzoa?s~uO{s}_fR;#dyY2#{FK3Pby%EsD`Oiwo?*Y`s0<^n@73C;U_5#v3OGbmT zPgH@D0@TGKQH{Kd0WF-E90Pg>pe~kRWVM8ibzu>XnACu>RMdiUK#T(=4XBG{_&%P6 zQ8WQc7a)DRZ2~CIVQale{0fl%g`tTke+3|Y$)o{rC0YP)b^y}5ol^nVz{fh?^*Igj zRrpUAufbco$kWaQ%-7C>d;y@2_u}WFbuSX%!5j0ZYpb*mHB-M)KdK+sO=G#S!MH5= ztSQ9KTNFJvh8|dqzY-oR3eo0;@Y{0qgs-7>Uq)+8&?boM^u^*I`ULTw zu~lXHMBZb&8lXskO^a&)w+~By(ymQxYU|S}s!(By)N$QxYU|MlMql zn0eal9Ht`3oKv>v8Vg*qrsl91C)O-Zt+Ufz>pIizUC9j9Qxav)X*oF=m#pbIEXL=y zZr{GBJ=2+L=~Q!7v|-amP*{3ub0>!6+Y#ahZ!agWDyWbCy3N zqfXttMN-wo^2Ht9`;+OGovGxGsbZnMzq2LXp0PWCG__~CaB%~5nm0E!9SG7Q)Yi|G z1j$5w{Y*)aOw`!Vlmy8{o&8KnU?y4bV@ksEj;`q-%luQe`y^np!A5#%z&MDh{Jopp1WKGRsF)mrta#)N@*7O_} z2r}oC?LHp-30$(K=CBx-tZ6wc#wBZd z4vTTgnvug|oLMl*XNJUOF8K5GTz`TfnQ)(K2 zYo(tx-DSlzlMw5#Bj4Xj}|7|w+p4bF`aD5W?7kRYi|+zGp%+y)xHz{Xw7mK+Nl&& zLV0G=(qu<6-QFr_ts`jtzYfcPPBhYufLH}{Go3B1$wm10Oy$kdnwFlF-O?sH)m2iP z?Z&n?v2YJ6l5{G!t}~g;61nC%oTbUG6OeNRSK8+#_a{4WdqxFzBoE3&OIzFab?xUT zrP?;J&hGALTb^0c-qD`f13|1blj)S*x({j3Y8<`=rf!+U{_Xo*WO-&yOE+$$#Ilym zf@HFTTmp<0@vY&4B-(LNGSii|iIGn3hiTiT4{~^th=P`Pw0E_)q+n>9Xm1m9B!gT# zci;By3tC$Dq0A-i$&|xeoo?UV-Z7-a#yu@v&Gx!vM;kR$Yci{PPdg~h_ELL6l9QQa zs}0IpatXTFZrmv()9fJ8+>YCc=JwWoE0bM&Y`BeUM%|)4gI=Mi`z3R6x+RlbndB~p z%eo}A%hpM*?r2TQ?oEE~v{T%p5gicQ-;zeR-`}!3$z7EyxjW6x!!!ztT-w@XCsjyh zk~Yco!ad2>eM{{0vi7bncxrLm?&RuSe%9hcaB;_OSE2M^OG;8y(SG8}9zVV$ZSR-j z${{Ts)bCbzNaCvG!6v(vtC%GnT4QIR*Y3y?dU6SClU?2Ejx~0BM^|Ip-fpx(8!93T zMDLf0rj|_C+9X_}w3F{-lHyvXR-xl(V1mR}_Q)$Dp`HDS&b*{Og;rRJeE@PgqH!(7 zqPky9EujZc44F(9}!>0TEnnUy^*p3aW4@JL6-hFu&C6l2^&r8Y*Xb9zvjB=ebzCT)?i>B;8? zEPGF8@es2C$R!|#_=+~-;Sb@Np}|2S?$C!0t!51Jp=SaS8~3!g?vdi)I5{L`T^IU~ zOzxuTMl5RSN>a=VIkq|C9$I#QWzt6418ZvU;Lfv?u37WhWs7W3HttDwaDx2ol*klv zpP!<}W#%qSQFiGdwukzL;5%$it+l&g?vhk{C!-jZ?6hoK#-TTj>~hXsXd_JqEbLAp z&ScNcrm-Vtcc)vES$rb~Nc&)B0fsZdB0iuE0Af-)zwzM~BhWMcvl>-M#GA~rB; zx4|4|h|KQ2EJ~)5yNR(9n%i3uzz$_`TRV127o?$!!UL@VF%ECUR41&;ct|qoPA`t% zXqzXML{8rfGnkD&Bz-AXr?RPK?QLpWKn3@>2z5Foyr{b~1+%-dINBe*4f6_51)lj1 zV{S$feU^CWtL$ts9wLv~G*2a$?~?g*nS-d!Eoro+Ql_R@g^@SfQ^_7_DbWU?FB9S7=dkXZP;i$@D6_V|^x>9*RkAhw+x4zZfQ$mOyB30BCE?VWz6^dRS0n@qJF;#6jE*=y2R+_rWNW-PQjd$20mGb9UP(b41PQF8$4gr1%4 zsrD`pmjagKT{NeAmL|Jony6b4Z{0GARgxlu1F|XEa-I_m9tsI?Ut5seh0%b7%=juhy`R^40&Z+Yq^tQY zLuGhYYs)(@n{;%o-o*=w)HgA3YsXNSP% zJy`R%A$GHb?0pESX0m*uku9#Vqo)h&Lq}XS)g;x~h=Zu*4^;A`BUAo+99jf+cVZo* zbg{=&z)}IQu*t@iTqT$0O}4~VW}w){n7Sa{o!KK$t352WvAqo`wOGOiE5`B#_Mz;G zNph())h3c~kTVgvDcP}`^S5EWv=a9pZH=kaa$eB3B{#N%MeF5en^v5vEfvCdISX4- zshz~y*wWtRAgx&{^&46(3toe%IyZJrJ(@9{F%}F&zDvV}RUTE`xiWLhAQ4$hy zx}-!`wx`o}8cjh{N=is{nVoJwAH4+xnpydt263Y9wMeT=YQc&;mF)=>ewb@Jx@bk7 zqSjo~eh3Mk^57uliKh0QY3ycCY6C^~rZqPH6+{d&xW|D|7dqH}*-C3#u%6)La@_Jt zb0~36cd|Q41M5Z%X3UZuMqmlrX79(ku7j4n`w{Rh9U0svBsqbA-H#g-njl@A7MX(G zf$rbo-YD~6*=&>7JK#h)x36sJ5O(MGr7#hz#Ad8;1^Ij(h9kP+7LA>9n!`BBW@i`h zj8I5$fI8GQ-Ccu;T@KrG2fziaaeAsFg7s!gs&xnkiXMWRQa2RJgYJrh3~p>|bLRWp zrCaWuwrbSuu7X@3y1BQb1zJ+W*xJZkWpZ&tOEfm+tOtXn-^Q6(87Ivr8 z=w6G|OeET}35rQ>SIR`4)ALQnUFjCyrpR{a zwaHy-?`ZCgF+VNi8GyS zw#7n@Xqu)7k*nP09lLA+d+BzPHbvHw&y*#(R5_&PQhDUu&g%!UCrOjKLX=JGJ3STw zS^rYB+d{Z$IDp_ywxr=XT1>MyvH0bcIHI)$i!i~{ z_u}(ly1XAuE8~YC!6SZZcH!TK9jX13?2#QnjapbLg5*PZEEdbv{jt1RrV#TJ zpwCYrk4SszJ~ZnV4+U``RXZccLR1W*4nxKLPWzDJEJJgqSL2VT1ulz8zS1Ry@0@rO zO1g4Ua#ss_0ZnAQEt>73PL^2Tb<#AQ%uLGm?#!g@tdtS*egkVEntI`@Y#&j> zA7(Y&*)Q+NqS?VPiw_>pvK(}2^c#dcHg`KR&32Z)8pF|ktTIvkCc2H1&frn}#HM?0 z^W-uu<4grSRb;XqQkHfC8JQ=!0;5sm5^DJUsIgiNVwEBDW@s5Jw->Vn&v6^UhC25T zva>XHciFT@PV2B98UZsr8V^CH7*!Q^c3N|6ceh~CgXjjIN0r7jzQQhZx_EZTkxbc( z)ZW1)TEuvo6U~5D$hM|xlp$uLEJwATYP4qCL#I8Z46U3oNcK3*K*q|QZ_hMLzRaiv z0h_H5mCo*#Dpbv{ssZ%H2MUhhuE!-9#qV-vOmou8IM*|Al%oWQU=>Y_S3&S1y zAzyew(rjaOh#^*aAnPEBIvDM#ItZD-D@>f6p`5A;dj4lmIui@9Eo*WN))@`+l&DSu>dx7f=kY*opn+|r9{ zlP#@y)`E4pUur@*+}Y`fO_DTBw}tgNF^W|i)e>8yS35?|6W5q8qvzh|U%>b|k1NAiZQyTg{Z zuDoHO8mifr7&jqp8E`c6kj*;?IX6v`=C+uNJL61FHo0<;MBYutO?w()a{$2I6s5yw za=eA(5WhCDyGldfZ{a~=XUwe;BCT|DZoN*?MGjo1sI@t@Yv0>e^k za&5AW(o~)GU9GF^gJKWD0!%!$4VZm8&9;g z>S6dgR1VM0M5F8pbLBF5JmO(&bqCcfd&BEg3aeZBK!p~o*h1n<7v1jjnA_UJErywg zui2eUwZ)O$@ksRy+VcQOttH%c#SDPWNabC%B9qE7oThu!)F#u^q^t1&8#|D^e8{G^ z+lolD&;j%@52~o-rortAEjQr4rkKSIN9EXbMQ^L?gZ9?zaE_NUxTX+J~ke~ zZ^tzQ>RP_q_*aC}I8#qFQM?f6#B%)D53km4KDqSlqG>O{(jui^TEc!1G|BzGvKji=UMOpx-??>VA{V4n+ zK3dEQgfu-=8ar2yw&)iA4cTH*RIHgHJ+?fy96Cr(xgj*GJcPoFMX^-cl3yA-pqECw zDI4ppEH5w8^wQWsSQ{mr%K;sy{KFAVNfvl=MO%g!=_-Tf%P>mIi)71=wwR@{b}iZx zL9JM-82^qixcfniw&Ycjt^!zHtl_H!kZ5<+qkhpA3lb167N*Q&RN<&QDy35$i((~Q ze5@oWv}j)eIkZ>|3xzDpiuPX=>%WXdLRE$af)%V1(Sg#uD!B79aFH&=KRoIYM8;UT z6)TDM#d;_s6&LH__81sm8VX1IuZoq&daNuz)_)B(nPr89hIFilu>5>#%lvSa79AK_ zge-+nAL{`^|My=d4K9+Ga;U&t97afsm78er9$1Mp{rz{#PH=a)Du}#fyb;nZs|W`6 z;2Q1!B>#UARjL1zXy1Z@u+Vi$M>ima{THFwXdir4fR}glXkWAsFRjoe+Q&+6rY^RO z{-d6>47~^q)juFDt3k)IU=qAq5JWlsQrAFvC=BON>9BRM%yF1IyaM7D z6cog&khg#=8K9a^v8;lSLB&l$fw&H*E;E*u1gfbc3^bBA;Q!cqYMWU91AG}+j=mEcSgC?BRuii!VE4(^ zjMZ=#8L-fe+1_y>i~2{bW-z37aB@{?2xhpUkea*@Edqt|{~(&b{{ai`;QkUuhn6YS zPA@Dh3I$Zr%#PKRh4N$l4^eH&|IfhzaMMN6Dct9uW5_*xiWM>o3aDcQLjg*V-f1*fQjqL6$#6;IXXOMPTI<b=YiwYp)PE&_sb(yMr>u}|JUC6{K#=!cYJm!St~|bhzlVJ z5+2G71I!Y$!~Z7{~~8HIRdmOAhfZ zzQvc^ltYdIl1onU{~-A6OOns`RaMWAU7AV)2tIfu?#y&oy?XWP{i;{*^1%5zO`C=IRF#>I`3bte`0BYhO3otIh; zpQYU|uC1=VA)R#*?o*fR8zM9KL03zWb&|v+>UhPd<4l@T}Yh zQ?5W|a6tu(&4VeMbFfOAb3$^}>vt(U!}+q8v7Z1!THr!W2!l7=e4!!Ia?udD>Sh0?DBWj{;pU9B;*UzZl8T2=3xRTy?>MV ztcR7{xQqq%3WZA`i$*Y*ylE0rcmUnFjK9V7FR%YjY!1qEp93CVhEgjg=A z5#_N4$ADz7@L+B#Aobdy9MW%bqqkk*mrHs5-b!VoObl@U@-yeQ8>F36PFT5|w;Q{= zjlI^^cB|do+TCuaTi17+jjeR2k>6;g`EKi4n;%W2a=6KFCN}DOmC6GiwpIV=!+qP5 zDKVnP&OkX3xA|Sgy*iH**k6CQycr7Yl-2UCdb#qBv(|q~DQ$>;&0@6soNX3$4mCNT zCS!x#qfWf}?P<5ik;NPO2}l0Z{3=hsS*iT{zy9){HQT@8U+)ya*qb;Aoog;;+}2#g zJ;1BEaDH=pkWJYc^=j@BiF4gHo1%U4@dmeB@4c7qwfC+yZ|v-5jq5l5==5Mdxh{^$ z9#jitOTqi2J9qW}8=tqf_*VH3{%xGS% ztJb)C>jjOPN!}+OJ|0*rzRg-$N?uyrdhz1z^UssEQXT;8ZYATa(@1n?IA|m-l0&xl z_D)}H*d=cHmijQ?c6Y~LZ|?f*&G+_h**I5{1D`K69J`OnsLMLr4cFA_H+Oe#?11x? zq)#OD@XcA_*A7^yz^@hi8TDZy3vD|KQn7M4A zbQG5>_0Xj{ZFa|eu%qS7Rgaar818n4x+TIAG;qhH6k1bI?vS{!>AC~w2Pb&a7K~2( zzHr)5PQwOE-FzZ(&2=ZP+wW%_m`t+X2{1{Xu%te)2HnE)V+{5<+fr<)pi8}k*%38K zZQ!WK4RhzC>a{@Ax-HQ|j%4QIu8TL9BfK>m$}frUzPyxm=k^at2X-)I`^b=-1yUxC z5O!*)fR@MIh@ZJ`?g*agKFh8krz7e#7WT@xaq##u7)>ZbVN~L4tfc{hGJxq8-0lr0 zYL_V*VuM3M1-QzdenuLa^&|-9j?)3GFl4x{lJ00YNOp zXtm`Yp4BKPC-0_vjv`a4zH~$0gVl@4^Y1==^x?oB7kU1;b(H6DhW6(gy^`D=~&-5I29wD z7)!R(fjcBU!nINVjzBOChdI0_{sLVN`KF*4`5Crr399R4g|D+H#nF#GA?Xc8qoImh zp1JINBj`pGInR~GcqU-rq?~1&V_zqL5)#RDkP$CRxugUxvS792Of@qF(izfH*Jq3z z;i13;$mXLKUMA1zWmtHuqNW?E)?_9K%Uy%q*wji2cm?m9x)8*a2pInLaKYVn^}Smz zN>EPTR|hqKLdHf?MR#9!gz8XBH}-jmzOVQpHqS{3@EwlfkL=lqQ^%~c zH2*MN#ntzRRsU_18NyHgixbcJvr6zCf>>m)fOAlhe#+1TF&K@>K_ZWr`GOFWZIzld zMXyX;&Y>c3CghnJH;6w&ZdA#;x!qZWen_%_*+??3F@DpLr~jgvVaV^qJb`b=)HI(l zVvAGW43YjapG27Ecpo-!8=1()TXwP}%FkHxObYr;BRx$Z=C9YROX`z$1zG|!mcBPo z_+?lUoH$pFcH6#gYA{dC$Q9(J#I|Xkvx=~t8UH|Ycm$>eT^1jD4o4B+`PC9It9B5} z&@Mxfcu_n=yF!1#AVU({1U#XrHmneaax@|l2}V2vIE^Bj__s=_fq6=Ffn?4Sn6*xB zIyCHdqTx(8?wBK6G;f&WCPz51+-X|QIyD?337qEa(hlm)7ZC`)b5-7U11NvRlu%9G z7O(r1noXBHH;`^@MMiUd>OOng(xY$(kPzP`T;D`9ytw7u43~!26w!pp|M2vPuA(ct z)FYgrz*PYelwlafxjWv^)XiS@%&}71w7I_QA3}5!)EeH+_2WbjdFCH4Qsy*;|No>4 zw%skhz^sYmWVEXqy#tNhH*e$hwJD*CMEk$e`qcxwFmfsN@pP^JbPkO(?!p4X|MdEw z(e^YmoY83W)~~_#s|@q$R~hEhI85Y&SL~D)mJH54&9~yO#qHD;=M81l{c=T6W?T$g zh+w{+;FO@vy||-iXU5Gd5mZ4svv26Ql>G|YOnD@;wkRn%&)Kt75>Q)odSrJk=f1Rc ztrNGqCx`q-10`S?v88tQMi+ZCJ@8h-`))zCdZha45qb_~CtHN0gujGSd*s*dN~w-4 zftyrFrKn{S!VI(Oqw1!kSWnuKbR!rDhn_P~cNE%~l?H3&axp|E(})w^N2IBBDbz0d zXa*BSDgR-NLc?-(%*0BG&W7ldZZtme?oWYT#u&(;%GOh@BC{AMAlH94&IHFrPMCZ_ zb6h+{tp8T&g)rLv31*>Ver$_Sf%c**2Q}2ocFy{lQ&& zTWn*?n96mBeC_eD;0^bow0_biGafDNh4YCB7NzprT6oa%A!e4uU6m7XRui#!X@i!y zJ(A1MM(Z_azrEPnjM_>T(L73;XmwerV3B27gELhxF|;(0&BY<2mqq=!&%ddb5Nn=5 z=8WMROSr&*?K3{Ic&)&n>*n1yoAUG^i(u2RtMG`_r&hKWuqthkS@qHtFC9kaqbaM< zZK+4O%m|gWIiPm4bY5*y1zd_@j!NvWdoE>KKvzBkop66%_VwkiLS27=jrD!(#Ma0_=>*10+7{J!UZVR}N&Fe49 zP4yhUFzhKtAk3mLO2jmBa$NHHxXGyne;HH1B+-73rKK6>TFuh#(FVAL8KM(hI-XU4 zDxzq`B1nFJXYL!+Mdh#o$G45j1(732ZK_ra5Mm8MAKDHpRVTTHXX+>>^i?G)EeSlw zDiZnGvP+QgIpxk;wX)Y#sXHLiO%f0u@vyi+sr%mS*==)U2$E+=S)U$xRwlGzKvTZn zlUA&!?W-_w&cZY!_dxU!&#aPecElpI^B|z6P@7aEDfy&RL(In^ZpT)eLLXluDc8t4bHf*u#r0+;%^1@M1h@AA;5ych3 z=AP2w)|?Tg?%DL%a~|r6g>*1{Q#O%!@!G{Nm`zR7L}gBjmKfUox)ka;ZoUnxO|z?c z+GCq*+eTT>zYNu3X`c-c&Yl-o>L z*ZdakH;L{6OgmFpjcDr+rp#SF1UqC&*j#_xUE5Nq%Ynr%hGCf5o>R)j7Gh@nyl%!( z5-u{*T5i)4WpI`l>O9*E6{3FgepB6?(&)kyebX6-h|PvW-s%sB-H!k2?O|zXv;o2y zN9$T++x3+I6+hq@php>~q?as3*OvkGPL;x?lOe0m z3PHorvlQKzU}i!q1mFufP$(M$FD4{BT;t$yPFr~S_70aOWm?3WAo*txP9!DD-6g2X z*4xjb#g!xO`jruXq#>9$I4WxHNveV`6E6!e_>oaoy^byKA9W%GODmw$eiDt%gp99ZjE=Z@?k zLYbP8(qc=@eP67{(?TZ}P*i;Tk{4pFwc_e{wKep1%?qP8A`y&Q*j>@W5Rx4{5^1C; z%_lakY7Tb@PDx8zOi&!@83liRB%D-2!weKeF+WHQtX764S_x%F$OLT`rWHt7OmX8R z2tIs!nD+85DX`!qYYB1o<)G6Ko1yavob6Zz3G_Q?7o7gNc%PR9&oosf62JdQ8P(s~ z6t`%$^1}O5__&4B&yI-Aq`yV9kx2|4PM-#|;0?HGooAG*mO(#l^Dv3xY1?afR`Jvn z^`W)glePqcfzuu{V`OcJ{A$ld18EXPh$R3AB8f%T%ZZ;D2nLz)(|rYJgU%P@Yvt9) zq&CaNt8$_(m{RRb5e#%L^+zM2%EEMTsIjl;1I{8ih1Rt=m1v8@ZrGgtuuBt5v6a)Q z25jI)*^sTP`Rn#@0XCRZ$SWSuwjgK@;y|+3hMG9lADo1_NVjfB-FgR&DolOHpy1?J zn9p0bGQZ!i?$R}@g=UKWvS2r3iwE5Syz3#eW4Vh(-4}O~4eqwS<;w3qLA<1aUlJh| zo?#^p)RNu|zC-{LkqSEqFADS{GATxN zt+5XG=armS8KHf2BL^IpmJ#?6D78JU1wKuJL%`K`3@WMC`p52Z*dUNZQ@48J9T<)$ zV!*t54iN*SOn)E_i5*PJgC`<3w{sdBjzu=Yh^o-SEL`+T7kbaSm@88XuhxvfXQ;i3 z`4FC7oWCnaL9ajj`Lm~bS1Q9rav2(Al{9`;seJtS?&F{T_-`Nn;@bLm{$YCi-u-|2 ztMf{A_~2&p=N!lu32XjznDAsWI}9ums*DuGcs!YQx?M!JL)9=9$z$`(!ol0p zHwv5*9*UvR#p0d%sM8W=zj?38@5iK%O6AA;?9RsVv$=LW|NjG?+0g4fpw`Sk87|AL z>|cHV`;URauVw!B_4QC-#fZ(1(0;Z!o>H=qfiteFoqloQQ^)Vbp3^t~djH%mA3mu( z=2`!rR6eYH%%}U6hdlBAFL?imC+k17hF`q)%m4DpLMs*0(RlgyKe5j~K~yq0|GLYU z6`-ot;U2XOJt`OOQ^Al^y`b0S%4_`H=dS7+3ht*?12N>AfBoZYe+SSNaH5P42&#TK z4e6P+X)tg9-!2sv%E0;qdam#*0z-Z)pwHL?pioI+uS;|HMmGKlv*nqGw2QC1Jn4R= z9Pci73aT-L$7li1m)Cb_ElANVVSEA%s@s7O=h&p$qY?g*#8$b>^Y&MaN~#tagL4X9 zW|+NvtUABD(BnU?vtWFm{s-1u6c|x$BFqn{BAL+U^fg!c8A9y%9f?MzSs@RPUqlf7 zW^nvUb%5Ik?wDU@h}5jmN@G3@V`!y>cU&ud^OXH6_`h#-_mwdnYGB%6JflDbZg^Qe zO@&{(5WN@sE>nG(=GU#y9cEM5+*)9M0wrG64-$QSFMiMTEk^tM>tElHza8l}hXVft D^PJ%7 diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.pdb b/SpriteLibrary/obj/Release/SpriteLibrary.pdb deleted file mode 100644 index 67db46b73121f4a9963ef5dc49e5edc735203a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138752 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 diff --git a/SpriteLibrary/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/SpriteLibrary/obj/Release/TempPE/Properties.Resources.Designer.cs.dll deleted file mode 100644 index b8a9f2840d3f251a0467148d2fdac2dbef36bb5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmeHJUu;uV82`>~*Omf>bwEUoUKkU`Z&xeie?1Gnv=yXN+ua_{Y+ zn2;rCqKSzl_@IdohG2Zq2Q?BGH9i@`3yDw02aLR$kQg6)QRDo5_YWO^Ley71?fL$n z?|k2P&Uf0W=g(7uh?1Dg%S21SJPHB4H&}!^_weUA`gGORElXnZ>XzAg%hOw~YPe=o zubGace7!1lx9#Ybqn8d>^rosyW9{1Pw#fDLIMJlg=+vS2pNn_9PFwZWVwflci55z~ z+YYQ_7BGp{2Q+jXH;)+8aWK)E1QlLkQ~q{w#IgwEW%xZDl6Qv%qBVEd+*_)L;m1Z9 z@CRcC*zo0PANX1tK*wB>E4X0jM8^$R+Nu`CP=J_o%VMq=1){MP>^~xxxULu+n?^l! zLnnGGMI>1GFUBL<4rGD=cM|mtYcvWU@YPFa0h1g46xr0HTge5}`WC5ZJ66G3!9MG) z23Vb5WV_IM%@Aea27UxV$*IE+U@|*IshwL%TV!Tu-*AHNhaUI1mv%sua?9`^SSlP| zHZVt#Do>4xC^J6Og+0cwF)}=|n}bB|HsA&|e#o2zkFn(1pE&8KbRl0RTY>AmW!hsFAAhc^qUx=O<`Tvg*w(_*HFgs@D<=*LHxP9~jxGy5^AXUMA9dSi5ALJxx1hv_&v3K^h88AzOfa_^@AQ=sy3Al+41hhp1 zw2dr!R~w=UNQMDNMFFcGr(ejxJvjr|N9O<^po>(bepIALLv#ah1aKm-d=T01Llm6v zvfz`SqmzJTu>h%t`t$68J_*R3k*4G#3~m|cvHa%C15G(<&0A%c!=e)Hn^N_*EuWyK zS5vNSRcWT}_*PTSc3SeF>C|mWW$82bq^p{dgjs4x|5&kY`)yZ}w}N)1r`m2!#=7yk zOuHS_By7X54D+VbkdvxG zm5%4jron5KBOM>*l{QVgswG|DlAbXWRmU?*(z6=K-l%y--L`rDEyHLJit9XOI`Ot; zbh>FWhdu2=ajE$!68= z1lN4LLM?L9Z9Ykw1g?TJF+1q4X3mR@IV`==W!mB^M^of6A={-v7LSzy;i5?KWy*;`na=C!sl};zL{6KyHuTB23-qEB^ z`TZ%@=l3VmB0rc&iyZh|EV%p?i}%Nb*MR3RBp+(r%cNU k-xDc=Tg}?#0r&|1_1x*@Hi;hoxA=bVZSw!w|3n4;0%>~AYXATM diff --git a/SpriteLibrary/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/SpriteLibrary/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs deleted file mode 100644 index e69de29..0000000 diff --git a/SpriteLibrary/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/SpriteLibrary/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs deleted file mode 100644 index e69de29..0000000 diff --git a/SpriteLibrary/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/SpriteLibrary/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs deleted file mode 100644 index e69de29..0000000 From e0a9fb8c675d33d5cf6ba7b2d0e98db72533de60 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 11 Sep 2017 20:35:19 -0500 Subject: [PATCH 07/77] ignore bin and obj --- .gitignore | 2 ++ SpriteLibrary/SpriteController.cs | 10 +++++++++- .../obj/Release/CoreCompileInputs.cache | 1 + ...ignTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7437 bytes ...priteLibrary.Properties.Resources.resources | Bin 0 -> 8537 bytes .../SpriteLibrary.csproj.FileListAbsolute.txt | 8 ++++++++ ...SpriteLibrary.csproj.GenerateResource.Cache | Bin 0 -> 997 bytes ...ibrary.csprojResolveAssemblyReference.cache | Bin 0 -> 2682 bytes SpriteLibrary/obj/Release/SpriteLibrary.dll | Bin 0 -> 67072 bytes SpriteLibrary/obj/Release/SpriteLibrary.pdb | Bin 0 -> 142848 bytes ...ile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...ile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...ile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 13 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 SpriteLibrary/obj/Release/CoreCompileInputs.cache create mode 100644 SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.Properties.Resources.resources create mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csproj.FileListAbsolute.txt create mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csproj.GenerateResource.Cache create mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache create mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.dll create mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.pdb create mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/.gitignore b/.gitignore index ac7b446..ea3bf65 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ ################################################################################ /.vs/SpriteLibrary +/SpriteLibrary/bin/Release +/SpriteLibrary/obj/Release diff --git a/SpriteLibrary/SpriteController.cs b/SpriteLibrary/SpriteController.cs index 4db792e..4b39f93 100644 --- a/SpriteLibrary/SpriteController.cs +++ b/SpriteLibrary/SpriteController.cs @@ -1090,7 +1090,15 @@ namespace SpriteLibrary { LinkedControllers.Add(ControllerToLinkToThis); } - ControllerToLinkToThis.LinkControllersForSpriteTemplateSharing(this); //link the other direction also + ControllerToLinkToThis.LinkControllersForSpriteTemplateSharingInternal(this); //link the other direction also + } + internal void LinkControllersForSpriteTemplateSharingInternal(SpriteController ControllerToLinkToThis) + { + if (ControllerToLinkToThis == null) return; + if (!LinkedControllers.Contains(ControllerToLinkToThis)) + { + LinkedControllers.Add(ControllerToLinkToThis); + } } /// diff --git a/SpriteLibrary/obj/Release/CoreCompileInputs.cache b/SpriteLibrary/obj/Release/CoreCompileInputs.cache new file mode 100644 index 0000000..e8c1fbc --- /dev/null +++ b/SpriteLibrary/obj/Release/CoreCompileInputs.cache @@ -0,0 +1 @@ +a8cf27034d92fac0fcc617c33163b8923a432866 diff --git a/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..c8ba4b315d63e27d110283c4dd1360975050ccaa GIT binary patch literal 7437 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 E1ufnjXaE2J literal 0 HcmV?d00001 diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache b/SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..1c0912018623e9fd733dd5e85338ca5397f319f8 GIT binary patch literal 2682 zcmcJQ?M@Rx6o!|UmUbyv@mozQ+5U|$-^Bc_5LJsxTQ>cq*pGlBq8niBa*p%Xc`ydPSMU#JpL0pl_Z?mui%CfRq zE0-HC^z&Lh8Edl7oLB!D|L42;*B5D4_5;-7AW06TOjo1$&gW5h{Z$L6v?E#MG_Wel znL3((KHYi`0Z52FaNZ~d5mp{l>$JG72J&zyrZ?4*4zegslar2b2pM(PHHMby^nK53k*V(4aS5GLJs3AY zyDM5J$8ec4fZDQnndAz|Rg!BY*GX=W+$6b0GEQ=v9-!6Ig#U)_n-EpQgeFah zs%1iyv*+xnnkMwngs9pk^vHy0H%w^CglM-+XxfBmH%;iV3DItw(2NODH<(bxgs59g U=!pqAeIVC_sN2kuo*K~bAH>ljZ2$lO literal 0 HcmV?d00001 diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.dll b/SpriteLibrary/obj/Release/SpriteLibrary.dll new file mode 100644 index 0000000000000000000000000000000000000000..2eb8bb8fba9a237bef50bc176d174da6f63f1bc6 GIT binary patch literal 67072 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 QpVxnSUH*ShKRX!sZ%WPlIRF3v literal 0 HcmV?d00001 diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.pdb b/SpriteLibrary/obj/Release/SpriteLibrary.pdb new file mode 100644 index 0000000000000000000000000000000000000000..966e8ecf8f03855746790877c52e068a7460fb97 GIT binary patch literal 142848 zcmeF44V+a~x&QY;Jc2R?3it*(!0;jrIJ}C8G6Tb#@-o7ps3tjMUytf;W8u&B66X2vaUm%Mc2su`sf<^TIzFZ=8{?9t0P(7zYgXP)_; zz4o)#^Q^U=^}5$yduCltb7M>6b*+Vy&YLu3Na4)6Qwq-?R#H-M;+f@h16&957o3&| zf~_6p5d=N?{g(UZ$bs#zzvcdwb71V7nsNGHIeY%;(|*!-hbN2;bj1)vxU+-TUsqHA z`s>G;>$m>>^X5QY`JeMv`Tz44cvi~R4;!9%_<}E9sUh8j>KA_U`i{X<9&cRq*t%05 zyw9`hUiOf0&t)UCy*&F{_z#o=arIxFUbOw!wUU&L|3JxnOVxIA;H~m+Cu9CaykA>% z*@SPO@JzRLbA#=(|E=lTY4s=}RB@#us1t&S^`hmt6mJztIE#MY8Z8I+;hS z{QJMWy62up4s9s<)3`ex|5nj&KRW(vmH*Hg^Dm60RhphV-$-;l=WFD>Zzw6RhPkf;H%Cghny?fu&3-5mI!`F3v<{vs^{za5OTIE0E z^|kfGzyA2V>ghkLOn>!>(uaTb-1q-QvhbfHnZCF7_|K85w^H#YIq=t){`!&@a$eL@ z@1$`H=C!1nTNYH-ExWRDL3v}%@@1)p)|LgA*R?FKt}mS1y1cfov2aAm@X-q@nj5cA z)o^caQ*&KwYDV3n=IZ8^SywPMrJ7soQY{PSq*@x6H`kJ~Sonupc21VPQX z1jgVuM5|zs_(qB;@eXW;OH@8k-R=qfNY&2K&bw2u|uKlH{l`~TcVw711)h`wbohodoY& z?jJP=&iZ9ZqJ$FvWv6Q=E*|nsLRN4j?s%9_gcR<2tVK>%H3(GP(@!l~v4G#QGFg}I zr9kgwWuEtE9sYQtcx8d&)x9XMtkCnmxO32j;+1uZSNEd4vS81Ryyr zR_=LgXLQ>jUeyTk>Ryx=uYW41b^dX|U^NE8I%N>9iv{!lyFrj#TI!zvEKap9^u68k z24!Q=GdQlB;+RiZh4Z{821VWG&0X2jnp(#5|qtvHA|}(D-v9XAQ_AZ zI(B?|!vB2x^H)AQeOv#|9lr9ZtyQ`=Gbra?5OgHZly`dUj+q5&NfmCGE02S&JU))U zci*EtZY*`>F|4Mwu{nVM{~*VekIFMDW4;9AzGT7t-wDszW%uQ!xZ=k!q zp}IaVc?X@m`Cb_KL*xaMoV=NhjBh8^BX4%Y#Ksk3Q=J)0xb2V$=XmAcir+S;ZzSgk>!C>wy z-SPJ;o2wgInyQ;=qYO`BH?q48@2u2~F0Qt`eTkQ3wBeoJ(w0Z%M3UO@M9b-PZjL3r z3*jj(xAxnUFehY%iI!8Y_II(fzx}SPojPqg4 zrH$}17brovYb==m&mi-pDMw$XuV+s=ncX8YcO!F&m&uen)vRVIx3q=rUneVIR7B2C zkh99mVM@*smQ?NR>#l>-w1I@( z3@NPV_if40Nd2l&6!7F~YrYJob+#(HqA(XfMc3bXUCZk0eMQa1zI+)JooMCEuwec_ zkDNbwIfrM5$&VT6_cEk#p4aEcutwK35!(K?$; z+9taC+R07#NJ{8_M%t!0*@17JmQ=S+tG*#MF_mi2*s1|;mH8m@W;dkpKFph?u^#?i z&}oFZ>Ti(711^oxK79{qT$`0fZ_Z^6D_fViai7xIh44>63h%?bSsE+g-wK^en2pCU zjowCgbU_fV!h-q#AEa@gPa}0zB8*YJqc3H4_r6>rV9CTMz^a>-kNY z;O2hbmI%enDQo>e3U;VbtE-P|;Y| z&}uU@Rm*(Iche>xPA87_kmB&+yv>xvwR^c1f!xEGy^rnf2oin zicd?`EnZ^V)t%@&jd&D?4|gneF6nBOjq3cL=sf1lbiSglwsncM-8A|hayt8P$5Q8g zPUom?{1Tm~y_wF&TCC2ah+_++IDEKcp|fxI#<~oyw%Kj|{}(zh_c~i!n8O+c^Thg; z7*zlFqhm+HDxBw)f01SZ_+JLx=Hl>kgy9j}zEQ=ru-P;;8mlMZkKSKmOwTcJPjy~> zc$8;_^FJ=jegc7kUWUh=MJ}=Ks;fxIoLbo;Wi`UoP-=FiT8E-`(iCgzyUM z`IV0D_|-zngI{Om!TE2H2TD&a<>=e+juMD-V1BQ?=ae+UMB{Ct#S7 zVE?@&yFN_L^y_9dwoYEbLPQH}xung{F%CMJOesS5GBTGOCbP1U=R-?VwVBNpxyttS zqsl!fC=4YB!Eceh#mi>53i~=%`c@;Cbow@`u$L7wI3nv6WbMk56 zyt2iO`0a#r8XWmGQtG{?<3yJ|5D zH^74Ve-JqxW;t7z5kyRY`KFaxnOeqTF-`oE>SnhdlZzf#IXyNyJtn6CrL5IXnUrVsq@g?E6vp%Ual^1kSw+{~ zHW8*PVfqlJ>ug(h)L&<>4QKb)x#qX;LrNqN7fs(EN#6{ogI^;qv%9w1%nN4}l0Hab zJ^!1fb1nR@K@wZ_H%O;n3-8qzfjC5l?oXt1LsmMcH@K%QS!)WTP6S8G#tpiPRk>&HTqZW7g;`Sdz~ydtTbhIJhJM% zEVDVm7Tm-XPuOT!a*^ljLFGUrB8bXMBJcJXdD9z=q0GK6$MW-I=50=8<}pVC%@UlVi@{*zpIpSG@%v_n{=Rg6 z8UL~PtBPm*t&K!&xsLnNH&>l~n>A>tRW+*f+t9hi>pZW)X>IjxMYn@aZ_gvWAI0xw zr+3Ex=wqji8giKe!eD_k)jv8^JGv9|NBN zJJU;a=4onYYDwo{8Z;f64V6HXp$g~%NcV@c-d_lv#qSeMnw}#byLUMe?rFw$O1QD63ig0UmbS~ov=s!UVfwZcm)$p=2>gEPlkp=@je7w(1^n6% zYUuH6it7sS0N2gni{Q=RZ^64j>>&LJ_&abj_$v5K@HLP$1b+nK4gLZi0+~0YX%}TQ z$Qg~{mP0CsOP~v&e$YUuH*`KU0xE%Y@BAykjF`^}gl-I3qI<3al8 zw9+M1dg<@dXM*%6_@B$#sB|c1AHgVaR44~qG#d<6ALi>f?nG#{`Grjqz6-xcgQtNn zzVz4h8Sc6dcs~AW566P%gBO6R!{VO~ieLGAA=d@$Wb8*8<$BQacca|8v16bIwYo5{ zlUi@5DlfZ#IuY)@R{9=QU|c!zo#OCRa5C5GOQwJ&;8c))+sId+uItI*CE%qX@7bj1 zfiu9X-F=N^rEe=Z3;zN-uVU((^e$jWUQsZXJ8G{A(Yp_{0NqRY)zA2Q-A8rs`=k@$ z9_yiS48mV-9&syAF9(&ESAf!;cSO?tK@J;B)71o5fy%9`!Aal(a29wCcqMo(xBy%T zGV~9sz_)`+LyNnnO$rv_|1Pi=yc=8$z6V?aJ_ue9ZUmQsYUdikFM!S9Hn0`k4&DGh z4Xyxx1WMk2fRgtc@Eu%JFU<9y+%)Y_xsbNtrNdL1Ip@n7tGYZ z&x5k_t>9Ad3*hbGT~SlaaMCj9WQw_jV_O?);WJ4pQBf+ik+~EFV<;e%4%{ zgMQt^IO_4Y`?eE$W^UXG{I9YSUM{=!pQm!ZY zAR8Ho{&K!T3Oef6#Y4Jww>S}n^zbpXN zu1X)3i>`Zt*Mdwrf`y=RNd78A@m&H|bFKcXADYYA_FZ}p2z=XKz{-O3mM(U0bHeO% z7JpP1-jg)CECr*w=vulg1C{m$Q0=7r$AHqM9BkrRx)f2D<$9t)H}sG$zO9bxV)r0t z`oE|yD~U__auXQUMc2}06)4#^gQ|b>SN)JKmxJ%(`fyz;+SSGG8BT=H2BNyGAuj3i zZZN8guBFS};4pA4INI@*g3@Ic_#XT_a*|h8**=hw(AFO z195e8*cbdT*DCpqpzPuk;9T&NU^VzDa2dE6RQZ1zybpW~{1EtA@MGZTz|Ej^e%#@9 za4Y@=tbCkf##EP5o)^*%PlGO^X6W~H=wg0f#J$1L*@Uvr*Insl_tz%OeoEbqwmDx% zhU(FFuo!&O$W-6I9_njsS8>?=u8BZpAQz2er;FqJpz`MjVH}f*qhA<@-G3S%$MY_Z zpSd{pgmFlhOdNJUXnb1!+r_aTR9b!=#&K7emJRsZy_yL|Vb+}lm@y&vJHn_9`#q?( z;18h2qOXE|z(0Z-*Zc{*0Q@sJ1v~_*?Eea03%(961Unq3GQ5PcQNOIdcpP*gG#;7+ zO@VYz?YvEA72)ju$AoK{S(wMK5|ZmeoVqSBakG{Hp2~GsP!_-jE@PLcnET2^yv3A*cy}cH-n)d^pNE$TzYTx61@KBg)l=1(Yq`D{tO84& z|3q*R*EfJEa6PE|4>|l8sCYi<@GBticcyoOiuVWZ`dRP>{C^Iv0QWinmq79T1zd%{ z=6kwkt-)NM0lpLezF-R%?^>gg`oJbyq4Uh|-oY*OJ*((@ufUEkp{1HaZ#15fqFNM<5eLCP zls0S-BM#ed9e%GQyf@g*Mb0q&T5&iw=tg)uuGD-lGp>{ryVoy)zje`e>wW00YoW$? z4}rG59Rh!UV-xDv?4G;?x?0x}uqj}jf-tHxPk?Gigp&0ogPKS6p%onl4l?n*%ssn* zE@Af4acSCAm9N~l3D*TwnW`Pqbx&{ys2qM89OV2*g5oO!cj78U9_Lyi@a#Mb**&&5>&eX3sk!0A5HhKxSoXn3*Z~+8`WhR{C1CA z0voihBjC%FbB~NJFM(>8UIsO1{Vk}ug2pz{^`$EA*}ZTHO4_<;d;LeksT~t4zCVGQ z`~Dg110Dj^r~CyhAcpfyTdj8cZ1Q$+n>@7p-xA?`B$|iEceHYZl9L1_M`bHHx>g=` z0;Q*})raZ+RPaQuz5HRp1bj4()VSh&YNs^J%n7RaZTG_^f<>l$1bUPEYbx!%(*HAZN^mbDPkKNyvKojeta{3Tn^+ahfeG}J8tNb<35uOY7 z2h~ot3v(M_uD;Y2}TOmsm+ot%S|V|RqxfRZx{%)~$0#P8G2GeNi4D-rG^)7a+_BsZV1id(3-uLKqM)u42_22|Rw1&hIj zpz3H9=v^Ect_EC$zuG2U*SqUhum=Bkxa&LIef6ug_-EGlN=cK} zJr+R9zpE&1N%w0U6KT;0n(MY}ALoVsK0lP#b{|;AwxfBy47th=q4J{vRDLvp%8zC+ zTQ48?YVO;;TJiIpn+YrXey595d7-k2g1)^m$!$EnOY})sDOmlrHiw1-&jG;QDY~E^k*CyWc5c zo|_R3wx3yJ*hE~?<)dI!7hOx2kArHVJ^_w$d=o(FqJD8R{)g*wO{^|O@Y_91@#D)c znz)9C<4d~-DW3P6hPNc-J+8vG6$QwUqw0lg7rPAa2*a!P$nF8kj9sGb(ev=CzxE-bJ~Qndt>6;+u(TH-X=gjH}LgG>9hM>64Y_)qI!0MzboFIO}NZ6AceF0RpP^S zb>TP+19_Qnnj_i0Cy79ICa3hMeUdu^ezgHYwGn56x-XRdo&~C$gevo1pyrdk&GlgV zRXqzSq75pJVCI>K&p^cOY%% zd0dYR^LrY+c3(;Y9j%kR@$UC{;*p$-!QS8mQ1z$G#6OTS(wcMsHu2g0CkfX&+w+cm ze5$V+lU+)9wbnC^57vwYtGEWxtq;^Sj8ElY_m3p#(XCTIUFCkigK)ZD1!|mdGpKRp zJ3;k}?*a#aWL|m%cnerSTUkIaYv;{+Zl(D^Q7CgYe0IM_d|P!pamWURve7$0^$SXy z#wKgH9tYk9PI33uABswCI5q<GV3kSFe!C&Vx9JDD z-wApFlJn0C3;C^jKLe_TWasOk&CpZOen_2XA;fdopc1NwRzn-0?a*`3A*ee_7DGH| z2$n!ndK0t_dJcLSV(m=pS3w1|1X>3@3Ni22oHOW1f%Sr>K~<2>u6h*O4IO}VPErX} z0WE=6L)dum1hfk}0Cgnu20^7z6|@3c3vGg)g7!d%pzbtSqo5g3E3_8c1Z{)%La#wZ zWZHOWKGX!QgC2#Rg7!e&X_SkhdT2GY4cZNLKM{Xu22=~Jfi^-rpuNx`s5>2f2{a9= zg;qhEpl#4z=ryPpoysVv0$KvChBiRkpxw|xs0$rVF;osMfiQyLA!rM<1KJB6f^;@V z2{a9=g;qfupsmnu=m4aJ_|u^hNM|tALT|ZalLMGD_1&KTsQM*`NrjFz#^kWMcI+CA zk8HfZc+tXz!^bRCJFfjrif2Ehu%7>KeFkLotjFxL8?~qENY7)WdIk#T^Jjfb{+vnv zjCq6nQQLSVdsUU+lIi!Fp@4BtwE2A&JQs&D%^{GcG{#aI`N*n|k<|-X6Jliz&q>xR zq@W10HjiMK4681mY5#q$n@ zcLF;2K1=7!$`wL7UuGlp1hfY_2z6)RQw+_3{*j#Ot>3R(;xf(Wozl^d@-K}k|Irti zsvp+<*Wgt+&-=Ho`_c1a<`bxczGJ?<|Qv3BX0omCdJDenXf#J&E%r?HxPOH5V`RipK0r`KP~;_ zmA)!hr=#))A#ZZLJS}_WC2v=ZJf7Jlr^L$}ldrr|Rc>4~eS?uVHC~?CxOgP}N49-# ziIF!1dDG(MX~>^feiky$mW!s3{dURe@$$?9aX#r|UVWInp~$-=Ufytxjq;I4)jv!g z`v{Ylwj=LI#~Rt?*Aye~Jmk%2N1hs(eA2f!Mjm}oa%Ma7M&>E6LJc@BYA?f)H>(|a zYGCq7-}V@JBak<{9eHYC@{w2K2JX@H@s-|WMLY7;z~m!uV~jlZ9waYoN1hs(eB^ay zPAeBpANy&Ob7JI;DY4^|eB`BLlSKm$G(|EsuTI$t&XJ<=ww;iIK;90m=FC^78KA z3t4x`PTzRsT^TPg@BUq9xMs_{2zgh<%geieXW{TLc^4z^>Uep1_wP+H@+Kf}LA<=Y z`**F0$wli!De|sqM_#`Ddxh54vgDN^@7i|c<=ek+kCDfowB*8eJIC;bK@87Gs9bSIZke7;=mv{fZD@NXQSgoF!{(c zFSHRywEkU=yq0$4<=el%9FsoYolUm3BQM|nz3TMC^K(A(mbW7>-~Qd7MH|h}E0K3Y zoV*eF_wS`=9G*VjeMsIIFE8)@eM^iy-fd2($-$8k@wDcd3pEm+hgP{Lf*UL<>lSKmuORBR{Cm?r?Y8Z%;H z-u?T=76%dQxCE0OnLJM!}F-%AG` zp1zxq_r7-I<=ek+iIK;dQOSqek(Y1(UO4FR^sPeP``eM1Z~wk7MjmHhB|i`+Z&d#M zyMM7F+Mc}=c^{0Imv{fJb6n-3@;JjQxglO&-u?UD7-M^a`ytCxpfxLfUmDMwT`%n3(0JbLdSUl< z#`9*^3%e&Xo;SN**!`68yxH}_?uCr!&8`=AA7eakcD=BB5aW5X>xJDv7|)wsFYMmG zc;4)KVfXFD^JdozyXP*RH@jZg{c`cV+4aKib&KcCt`}8r&`xI83%kcGKHltlvFHur z&8`=AZ&!T0+4aKi%ZlgCt`~MsRXlHYy|DYC;(4>{h26^(&zoH@>^`J;-t2l|_YlSN zX4eb5|0kX|yI$D6JMp~P^}_DEiRaC(7k1A~Ja2Zru=`!&d9&+<-K!GMn_VyLK9hLf z?0RAMh{W?|*9*J9Bc3rnRh&IcD=CAtK)gI z>xF&R9M79wFBo_*_l)Pwt{3(hZ#-{yy|B+`<9V~|g?+Xf&zoH@>~qn0-t2l|pJ~SP zX4eb*JTjg)yI$C5iSfMI^};>}jOWd+7xo!mJa2Zru+QJ(d9&+yG*Lu;W;&{NPJ=n&MsCp^#$s2*AkZGyHzd!U0* z_tQulGy|%IRzn-0ZP0G$Ak>9Dyv0yCR12+wHb7gU-OvH33;R-wpmJydvczglQBWmR53PkZ zK~F(@phHl1_RfuhWQ4Ibzx6cF;ouK zLaU$+&{k+SbO7p7NZO!sXaTeeS`Tf7c0vcBj(y;P#zPCBR%ku68QKZ$gF3QbMc;fL z4^={~&{}9S^c1uYIt2A%-^VDZ5~_#RLYttcpgqtbs5^^?qo5g3J+vCy1nIlEd!U0* zclHAmLo=XSXf?C}+6L{04nkdcrd|w{L$%Nyq;67HFtIez8Ho)OXfnlo%(A;xKtjVu0qeX4vq z2@h2^T>ut>G^YVok5}>aJqvy7&z={45P$U%*LC0@PQN=2;tVP1E%$%VfoS>falz(C zg469K_b1wxzd!HoQTW8`@5_G_*PEcJ&>vm6v)y+tkJr(Y&heeuxtzmPpW<5gVGXkG zPid}RrrYMsC7pwGB+n+j-Fe%d@9g9&iqJW1D_M%aWCzZ+m4>}s7U3^me_#GxVJyV| zllWie!u51%!*0X0t>C`=6>rpkCD&)-PtZ30=G(xjW^?bjta~>uNi{1IB!3VQ_9F20 zT)*APS9~hNsGL?Eaz!BJD|y=HUUt5#zD2`w|FC?|H}CmQhH(#DF#l;|l6+6+u)JS@ z-)i{9>+dV=Yw=IxzZQSKiDSa~yg#9xypQ@v^FHby&0n1p%6C?RtC7KXaEuJ)FF%85 zm}veg@1ys!^H=$wb^oa6Z>5CbK4HQ9XZV=p8z+b5?>78&ZjyNYedX@~{Cna5km7OS zeE!n5hPFMM&w7hrXQb*J)Z5_yYJ^`lALXy(TKuEn?+*VmuAhwXljUvr%cfYng{6&u z`SRxK*1E<9yp3He-=lJ7)-^XbHe18@b|1Z;T`scwtoyO$lCSMgqwwXA z%I2BmY(!2MTgnWoDNjVzcju<)^faC4!DHHNp4cNLncKHsKa?tuoH0T>2V~an$zP z{xI{sJ;|(x z2ETQ#dN;y$BS)g&7&}Bfwy#N;en;^#?g?Jj51cPE%FyIlBd9!U1{tdcEnpu|dDRcR ziEHKEJ3z|Kd^el?4sPaJW%^Dq1-=U;jv&n+VS-yg?#YJI?*?xJ-vg4L>2=@@;0Evx z(B{cfmnTY(O8L$6qrE(k-Pryh5%wc-cC!ZAvYWd><-t9m><0bJ8UD(HbGg2c>k;7n z;5cwSI03{4jQuMntTdA1S)Sn3=)@- z53j*T!AJ17d9=di(bOPw{`nQyz}1kxTQ?li_iFWBvMO*uFfh0l)b|YPA?qi;k=S2v z(APEIwRP=uB5dE!LN;d@80YQg-_S*Q_AyX-hJMCwJ^>Eo8oM`nro0=*^f5>g68_%+75@*wuW0#!z!0Fr>bjp!ms%jROmmc zaamJiL#m;5W@BxNhWyRW3(h`2{N#v?>9gC$J$?4Dit3uB_F!S;YAkW2XN{la!uhgz zEv78)qbxohQx-af{Yb_uDpTp`&o%ewe)m8J@9u}^u~63B#^%uVo(f=8n^JiJ_ ziIH^%Jl92Kl{M5YGqb+j<@xoWQdgholS6kV@|wN8Jk~b7j7?5PNhpDDK_P?h-q`#* z3Nku%u#q!A2wg8^eE%rO@NG}4lR>O>Q|n?{vr!n&cdYf?jXrYES}_0nq37qlo^w)7_0=_Q zwa2c>ZAZtA+*cUS=k;Vf64oQz^JmtHUL)KF!fC$sqKjW^OKSe2;rvRn>TC&o4?#DJ z=LFl1`1Po0nEJ-XCYHk6tjFY1Z+$;gjx4$97R>)5^5xx5hhS4?9TyC?d~3_^`s1H(Db+04a>;^Xq%`#bG%_^D_;;wgz6_#avhy>S zw2g4z2io4*Ch82=Kj>-zX*+{7o34+%^ow{(m%dxImN4S?JU(3ok#zY$vOUEUy*DeB zs%@E*YN@-)t~=`+SZj#$c^EHuauugkiiV5k)n@qgU97JXrX>=FX0J^cpI6d-FMLdP zgXiIy07@^(!SvgNVO=uRP2b^K1zicxW05eJeRi1UR83nO_v??jl#jRd5;{M*D)Zm| z8%X(#z+d{y)+a4*Ze|t~F3IL1&)dU8P9FIlxOW zbCL65FUJ_ktkjLp`0|m}+5*nNH?5_VM$seNNVpP?A||OjaBw zD>CSYH=p#ab%XmdlNc+wnDo8F%bc{Nx?yo@dP8k$h3={@?C0Km!YPdB^Zmrhk$T*m zT2@_0K$>sUe&?d6pC8&eN9OyqQrFMpen{0E7+e_65AB>Go_80#LxM?$w~9FIct4>v zUE@?YS<5!=`|y&~fHksoPw+>e#=yHl`cggTFyB0+zoco#h8ji^lOs!pOY;1j<%e%S5kh4~xT&aTDPf zIU2`b3DcFZuY)RkDm`)NSxZKbdc5uUGhxP}VxtQVs`LZbkuVHX4XVF5o@?rfLFEr? zs%h!Z^E|V5-We=lv^aq0I0dXSkHWSK0zVA4s4hHOlK=)DxMzfd$R?;ui>)_5{ z9ltmJy?ORChIe#(^Hi!gPg|^CQBcMxa4_r8-ma$+#*PCM;rLK_C_9tmnMnE+a2R+V zSOQK3N4Ak)N}iozYGT88sFjM!4Ohj#*@JFLtXT2!j8G9D;*50IZo3*o0v>o z@}3Hw32Kk`MIh&Oo3fh$s_dj&HK={vD?q}h?*cCad1hnq{UGNWr$6Fw6F8Uay&!AD z>0g5LK*~S39HhJh&b3YREwSKAum-#ed;mo6^q0VEz+K?A;EP}tNT(7k0y}`xj|C-z zr-6&PR$J4)U0jGA=uPvhLDjK|;0-|^e)SGkIxGh7fo`NWE`ydrja-+*GbFShU*46Z z%Z{xQVcl2VlU>Qxqm#;2sJ3Joc!9%7V1v=Qlz6W|?@M^*S`C&NTPoqc9Y@7~+r5Rb zYU?;}i*#qcwZ0WUJ1$Cu<0ZAtk3w>{z%LsYs;{^eWEf>o@!iI?>_I43j}Zn_3_b&@Z5AqTw}7heLe=-rf~;{F zECfHtwd$U50{8@|Jf%cFAcY@4c(vN^&1HT1+9sCaXB>11;H^F`27ZSlOv=za( zxwhXkS9z#zs62*)DvvTyR3$Q0gZ<$ zp;l-uv0x(=mJfXbl-&yCbt@j-X!|EG(Ve~~MHrN=v}PEz0bjw}BI zFp1aS|9dF^=r^E`<~Ltu8%1GS6DHkUntai?T8`%dl>O+itZDC!Q&|^N&ZYmK%i3zw z_J6ee*STBjySzJv=fKa;i7)^8Fp1aSkCy+D*2Ckhg_(Nj*GD?K{G%%f-KpsFpI#q5 zk7RAIad~r1YG!opi`7NjH_H}iv2{*{_N@ttr@j5fNH9DgUvd*PVKRJ|P^Dnce5tT93@K=QG zf$qr-g67i})I+PGN1^S|9_S#{mC5EHs9clIW9*d2e*O3;YqHHtkgNj3Khr)SYts9ndy%y3~*ZZHz8akJZJ1HvXcrdjx`poA@>hHbi z=lkw@;cngxLNG~peqY1z*E4>K=ogm<4VW5Tn}(4yJKHHYbMuXSK14x z5K>zE17{l>@O}CV=8o;(7f@!a{s!gdMCJ`DJKy$ckDpw$J?c#VFF$ijZN#Oim6g?t z%zHa3V};)f`7q*(_5)`}_DxM{tglbiXcvFWu&JqrRC8SoxtiI#HKVTK?F4V*SD9MT zD!*vI9`5lPR$1M$w583x?0s8D+7GF%Qi7v>!fKZ3z90DQ!Op2TKw{nwchm!j9o)V{YdKCsF5X0<$aJFRfH3d z=ks+M?@XO`8Y*qM=;+&|HJYU3)>|@DBA)aV_0_mR{VV!VO*G8)9mZvK_Zo_v|#?9 zOq#dz%cL0#XvvsBPWkJf;cZq0#!aiSkhtjqgYW@DCz!8xA3L&jiSshhJw?oQT;x|rJ!wfvYD&j;RR!wzgBx}P)#+8KEI=GFa9)D}6 znKgNpMHM8sm@vv$jR91)x-JBlfQ&88HDg6{e+pQKe_!^d%JpPqqxS^P(P$RupDRdj zYln%@KBIb*@8Q^$e8wI$Z=6KlMVSgRqL3PKi)AMP44RA>XiEb>E%b%-jIi;fAcbSxQKl{(IrVq z{=~~rUz(!~-+uaeV>BIPMe-M3hSFg-HOtGPlW|9~#>-SXuezbSet9aVw0Su%J2@I}c*k?G;T(w2uDZzokQ zA<^`dBImih$-zbQlzB|@yewIl*R|BK%4J06BG0F7yOY=5iZ%Zk^C!!^JlV_~9e`jDx5!6U zv8(9O`fw?-=6PANm!l->p%_^+khLHxt31`x+T6HOZ)4_?u8D5nc~|URE}E{H$f}9T zvg6M=sp^^~soKd6wRwyqyxcWTZnVD7LhkimuFCEx%Jnw-nv)x~(b>pt_HtE@&OoQ7 z>J~4_bG)>Kc;%w5wXI9w&80m39B`+T_m~^^O7?Q(J?Q1-uy!+)@ODjU zuvu#=d7ENo4^2eI4e;m;NHa}43NqF^8DEUZxDgqD>2dUAyyj$lJ|bfUGIVz1(MrdH zt~Rfph{#}qnq1ub=*igbWZdiK0+M(WGS2CfzYITa9Arwq?Y!n4$k@`~$(WmJbyL%v z?AN#HyPTZp+1LF0}rH%Au_nMOx z8V2c1Bdg>X$f|XN6Pm5i-GZ#LV<2mnlNBxNTak77F_1OhC8%GRDs!eza>X%_^{A5- zEw9z2>w}>z^DcX8c0)}{>f~Y@evIBr3)VQs1fjbfS(~$DU9!BTwQNf2#>%>7tTyB( z(~n8^Ihogl63sb8$v=CU_PwES)kti5E>uXkEs(-_UimM;Z!^SLI4Brs>rY($owa-eF&lf0YnbO^H2F}H~q5aE>0`;`{LE3D_2{~-J}Lzm-! zeO6kqhtMS4yLbBR6Hh1Xv$2@_$g=M!A`LQUhN%GEj(=DDwH~uHD;*5A!!n85Wj=MxkHfaObWmMFcQ@&{+oxl4Gm928b8ZK{ zoLy(x=zkGPG5d{@kHpAPer!dr4TKTD=jrRlV05>c{4m?#GUpMBN8^wvk9|l{UGLv_ zmVI={;%Tg}Wy6$h?8QGXLRPrNEAp!wzOGN}MZ`GFIdu0>4rvrH z%j)Z=Yky8%ZR(0TW_Y>uPkw&4*~z7;2;F;-`;eEb#W;#T9~rG~ zk@2S{Ay&+Lk@1-<8Orx9=u-;6c>R6(@5O&S{=DlEe9whbS*siwrnGAhDr-%ZqCAyL zQej!EZSRU87Lj z(TU023TOi2E_E`z4MoFoRz?_9Y4l+SA@f3H?r~w2H)?~UVar-s)5TBms_l*5qo38W z11s=0_to}B@7LB{cO9pwo0*qnu0q!$WZnbcJBHajkxaGA(QwlmsS~VSOIJ_1v_HOI z)b~H+Mq4odAEaDP$Cyn~Ro2xk#WxojzKv@wvXNgDk?}rc%=9uC59{f3WuslVb|z=a zVh8$_5?*0Fzc2r&ooZQs5{HQRJ=?kH>&I}Lm_N$hr$Te?A@se=>s#5pva(Sc+d0?@ z^lKuF_&txxbTj_-_}_&8BQC7^FGa~PIJDiFb2D?VsQ={p>L%@|Ra{RI*R=lDo`2@z zQa;EgqhaFgSz(u;hxTv|EV1RPKA6ikVU?m~I*27z-&)N**&nL6;UWI{c$s^$%`Dkh z>Ymb=%(_QbnRLt`4PDWNzhJ!6Md{EOA{tj^bu&*CGHtu^Kwf#kNMb3mw^bu)mbqA-;cfY8kK3=@_A0^?XuO$A==P=06DjN zIqun(ZswDoJxt8A-XN z$@iBf=UO4rHt1nwJ?CZF^pv$`dQ9I8S-VBoLy*GzFseg}l_^wMmovfV=<%tk3u;HB zJS(_X9Z}tl`pafzkGYhcZ)-VB!nh_2=KqICXAc^9)1JF@)?Uv-T*^O@v~_b7d9)K! zSkLd%$P_V5Bb%X8%?;J{K7&-x6nB)zrat%d_;JHV#=&yuDYKmWuxvgnJ+@w3jnr0j zBp>Ptt8kvzr-dm=n3l4vj8Is;E4~X-o3(0;%{Qe{?PWBqZ%fpEshy18iW9Q$uWWl?ZDTZiLu2!@ z>UuUU)LOlAwKv};bz;0Jcd-TYe%a+;i+Nf9}ZAm^2%B*(W& zdz_rhB62>0oY7-lda}+e%q2~}u5My%DL2!C`TuXox+5ctEiDb!MAb37N+ny;IRj0E zS6I(48&xE|Blhj-Yxh}Yj&d5^^}4RyzVrwgY(Sp8OE zL}wkKCw+6(+1H6Dh7&PvwgvP56X@JyoGWkUyS7@C*KzQoc3Oq|jHT~3rGq#W-iPsX zhdvQ~S8(5_BkI2rf7y(>&8UAZMN;ja_o>X(r$z5GzQ5d`1DT6G`F6C(JuoOGe(yd> z`fGjqX$@*p_0H<^8{6%6vbuUf;HQwa$;&!Cugg=5n^RibR9+7v{6StipL-uV?>AJ@I<#p6WvMUcP1P`>rC!PjU<|L-%>oaME~J2g0%qpG^3r zHt^SR8drFQP5V#yjga*9 zVUDG~n;3t{HCZtKzkt3eukWNKshXv%g-@$%ZDlQda_!>O?Cb34Rr)@Mu1&f4Kp#Z#Sd&8ke`uzHTC)%&5)1KlAgLCfaAYXnGzeJwMJ)&*T+#N>6kg{wV1f zPk4p({Qp1FGR5udKH$<)Z&GCceUY?GzR0)#DjQa+Q>p3K*#?eMYO%jy&t=Ty?YNdU zLXN3<=$=6KXT5AIWxAGMTIeh}gFJj|B^SBA{GM}inNo)COUUiPq+V?d`;SQT;fc*h z=4xz1j%FfsUq)t`mpQAk)vYnM$zR$39`vmsyux~ZZ!-fU_RsjIta)+n_U*^AFFRek zhMJo1l_ghrU44C>d;^p8+}@${{YMpLEf*bsY$IRRgtF>W)y-yCL<@5UGsDWI9DLe# zI(Y?Ftoi>{S<==P@s*qI!8tD!;Uh*Mmje-4@LM?Z`;rZ|cmv1}DXiLpC706ZgdLdHgu| z}+Y55j1`gs{MQq_9Cn2QYGu5XEv@oi*`_AD&1>@tt9w+xO_> z^<&ORe%Sh}{IKu9C-jWgxM+SbUo-h2JcGN!Q+fYsGPU4Zz8LMx*uK{u{~Zvh-bjV#o9T1m5A1cEP?w9nZT5-u~pHkJr8f9nbrp@D}rBBk`)d z${0wgj&$d@T(rFY7ha92g{L}{oXMPXKi|cncEP@v9G|ZWTgCUhy>9ls;&@)ptxgY$ zv|0AO;CSAX;T_5Mh!wBO%f8DSUtZ!>c?oNRTdDJ_Lw)SKxbb<#8LrqwrtPus(Z=(h z3Gcbi4rX)+0{aeZBJl6Vo`?KW{N;v{C(@@JJO!Kqs(#J{i@{moNbp)vQ|p_+$>7ak z1^9k&KKOC42IRR;nqgw_B)A;>2Dl3RCU_h86nGcNSSd}|fbmS4Fu`}g&w%v(>Bm8R zQ-t~z3abf%=aodUpFYn|9nv2n9z4AW`VbW`bNaZz$?M;feS&Me^?9lAkB5) zIIsa+2$tHBlEC%|`tKLA&QzXR_APe0CngWw|YL9Q2p$Ve{%b+&&a$bRp18vG=9 zC-^Dwy&&f|r5^!54SpJY4D8G*Tj!t%(zjSfLT5vxpbMZWP+v&jNZ(}; zoerG=6+`9FCD2Sr-`J^urbE-9i`{RX1?EXSp62me{33X=!c?e) zd-mHsvMKw{b0T~f`YoHv-=;Vt-q_TaK-tunLD|$-zzfUK z-!^qQ_Tz0zXYuJf9*5hMeaAf!_;=smvZ?%S>f6|c+Nm9&Z0c!HHuYU_El3-gehAzN zeiHmX_&E3j@bBBErbKK?-%8UN+K1beJ<}i&__Ge)vZ?%S>L=KSY>IcEj7>cc%BFq> zs_)|rdeis)2lz3re-3^Q`~~>;ZBr{FHs$-i2K?IgefA8CMBvZ1c*~~px2fM?8?veY z1=UWy2+F2j0@r|y;nMo<^>4vXfvS1ecRM+Z)#H|q~n}EcJAZPGMUI&w+Mf^ zx5ntXjnV&tZOEox2V0ew9r#8dm;mnuJAe;^$AO;!JAz*Tj|ZOwJAvN^JA*$3PXvDj zo&^3D>;nD;EC4%qWKIY60N)1o0lR`jK{j!vF91&gCxfSgmx0~EYe42D={m3{xE$mh z*0j#U<{NwI)!>=nI`Ay;@7vb({V#o|NOK3B!|eOz(fk&bL+ZEn-8Ov#?P6#gq%ooV zDk1rc#H+O_PrX>H8fmWmJVbNtE&bbHR~tZnX>L0ZjDF8fYYq0iocQ(8(eQVIXAGz{ ztMg5GrAhOt%=b&}SvHyP%3%sm$XU-^OG>$ngj=3Ps zLr@vUQ5D7^dG@TB%sLm-v!Do)t0s)rw-%YOZNrtYp+M^`e#1dDTr>P#3D;u6WzsEq zWiDI~e#=F}F_%tj{pNNP?($I2D*WtuESa<>@vDU7?u8!{H+VdFAJLFED8 z7oaTtcTLB!LZk1&mbZ~(&tge1bG9xjXCvVyM<_XufRZDWoR5Hg!G8k}m!r9Iru^+W zESda^mfaS@cP5_Cg38CwnfO!(G^e+5ti#`)uaXG&nVyK>YDn%$!e~wAo1n_@DX4VBzPLRzy$~#d>{;nvuMLE; z=c**k87o}sdlBI|?ms3z>Gcy(dOZggfYHhFh4Xyq$!X0nQ-?_Orw zlq&I(P{~nx)fs!NCIv?M$NK3!7!M1YdBS-W2)69D1Gd zhg!eX^#foT_a6c$f*%FT!7sY|Uvk&m!72EE%U$mR75?YoH2m%Ncgx9(8=-TssFAGh z={uQ=p)1KJ&_NMI4xMayeGVSD0zrHLcce{7*# z?0Fdpb9RP8s=eLh%4-4qve#?DUSJi7IS19?)nE;{2&@Gg!4!A{cpZ2P$apWk5v&8Z zfJ?!zf%V|G9sU4Z#`UufRSwKK%=b>4z~6D*49bRDKyB1q4(b~uH-O{78^J5U6<{lP z6La1Hn!P~rX^WKAah9QYnk-$zwB z_n;>C;E7!iYF7`QbM~MFd$7LWBUl8L($-uE>FH-JsBeMD{~~A{*Ykry!uQ6GdJ|V~ z^R42W@V8IJ6s`wld`9qINZ)B49on0o4f^s{y|(9P#P@d(ps#G{K~OgIKBK?-oBm-O zTk*H&TqMHtG79i}6q5Uh2}9ot4&nNvpxPwX5X`fOkAv#h9tCCFjM+`w%(|6%=D@tr zJZsnts*ZjdydUJbNBRTc7SMioU2SJy(t3``U*&N(^2?IiZISFfqx*Kk+p{hbdUk5u z$^2KELa&-s%u{b$ADi4F9x@Rlffs!Ip8nGp$degv#-+KT@noW`!d0W}W!Ur_PB2ukKlpzP&ka6b47SOxwLd^`Ai z@Lk}m;O*ca!B2vJ20sfP0zVHj$4h@1{44l9hu;TDTzWsy0sJF)9C#8scLaNaNs#AL z0dvFjBJf0TIoJif4LliK3w8zX2YCrK&GVz+RPb@IJIGpp&=XW!aT@q6*c)U`EjSze z6<7!sm~pWBg;~%9NH%a0`8fvCcX2L(G~ZePo&{+;US1`I-9wH1TGw}C^zLXf$#Y3t7e zHGV7sM}Z?i%_Z%Ag;LU>c2VE>$$aZkc5Tm>$b6?SYS-h5Lo$VGpDqH`Z(R(^RwjUY zE^)5ON3A1QL4{_lLm%YMg-C>FN~q_he>AS##WfvNUv>#7{e@$}OTp>j4Dd2=7N|aK zHrNVQfU-l@1k&rkx!}X#Jn(bi6`-Dl@{J8+e^-LfaeWo|Ja{$u63ALY`VU|g*af?& z2G0f;frG#r@M5qQtOS>V3&BRP8f*en;M>7wuo--pL-k=TT))rZM?k*KmHvW5o-YKf zU8Gq9Hpu#2a0Azx9IgbD;3|-{lHg|WT=1PB^W)$aaJj>Kz+1Wgszc@)!EIbKo;P?L zdA^$Kkq$2fZ|C|Q4(|u=;9BcBLfYHl-5_;6SPLd-knRDgd%=4_>R7N2>f2?|1ZW(jdBrGjCiQO&GzZeXp47C<_^mO(bZ`cEDWq?#i-zGh)X}Bj zKrDJh1TP@=1zcZ9n_LBITu@9n#eEH=IJNKQh6oNPhPjbzf8YBz5XZ$(8SOy{G?CwD z8|*_|R_9{E58}7xMkBy}pvEUknyAEdP^U7s21qHy+Hjs#j-r*Wy; z8M&v4OYO-{P;J-`z@FePkZE4<@1Vvm&ww^=m9^SkmG{_Cj@ll3E=M9zJaU*SIceR` z2!8@U_kbF2{D+C}H1yRTfy`QjJ#!-wsBM#r#_;}+Tixw9dSz2$lkPV-q|AFwAl+o9Ur)3|PO z*bJV|^+tyu0ef-159|&820R=59aspy3ibt$Lsk*k%c0uV{#>8$@B(lE*R#Qa;Cyfp zcoldqsC_C!z#4Ga@xiTXQ%7+9FgOy_cxMdwUGRKxCwS5E!7V)V2uk4}O1dZGueH=M z*iixX^%C|!Wv(xwHJHz}=8?Lu^;p}Mbfc}9Y5Hod8C;DGYX04y`lqph_IQj1H6GAd zSZhRM-Mz{D?#2BxOu5Sb?b#3sVzw^Y&+0q4sn4p=~Y*Pr;+zpBkB zpiPqvs{Y&aAQEVAU9|pROIX>EP<3JgW5A10z7?kG}Ia*XXhpetTv_0`07e&Q+R-OLa^ro!)NZw%DEPX0BCFghgNrILM*u zb}QGT9I6di&b8{n4PXU$BPiSN$L#y?{F2TZ+o`41++5?j!C`x#GO}k%WY&P9WpoR1 zt39|4RC{ncsC>EuRQq`+XrHBP{eBKK53=7rR9fu05Se|Zm?!HM*4=Bu)|fn8hnGE@ zAz{vG5XXtoYW=`{5MH$@8$h+4LdEkisJ2C@y!sG0&Y|+^!(7jCsI+e6+RjB}PntuF zq|KJ?`)glctPM-PJ(nT#{l=)BeTw*GUwnhhtYLi`R9QX-_6I)$4hOe@W5LgY6Tr`b z8W(;ZRC#F4#G>k=o?Y~XhCtfuW!rAGySH6n*JxzRavdS1Q|@cTrGDq@CQkY=Q1w2!cUkyIP^%8J5*a-d@Tm?Q0+CEl!QOxK>&v^!u6UsrY)v4b-kC|#8bDhbf z%o^Vc@nHa3)0}O%=r2IcGvxjY8C}7BU?KP`Q1<)+NY)yZ{rorAQ^5n^Ebv9pwv#HK z^C7Lh$>tY9gTg$Oz1VXP67+7?MeXJH#G^d@1E@TG6;zw|8mLqW`+|Q2&jtSs%5DyU zvYWqv)=p$I{UF(`_DG!rSwC+tDg%4QL404|DQW9=XHeySB53>Nwre@|+<^p=tc#8p zdL)BeR1Z%htoqc`O&m+nWk{PmvF8C~zDF9(lOn>HLBR%16dc&7!GQ%#FhH(L)~ zp7XnY_uuQf&;6V~&ym>v1nFeb@uV`p-a;y|Tt+JA`6iLdT3O;ot^tUTXy4TGw~SGG z-B^OXKHs1HKJ8D2dFlIc#dr1j`W$l5&5ySlY-LWGO)7mLspLN=%tMYFGUv*@Y@@!%*A(x{UkblHaolS%clEEsFShQ`@#>P z(`Tg9>&PqEw;#y1340l@uanCDUm=yXfTZGgn@PprB$YZmN-A@Lq@N`H25G&ea!h%Q z&kIPmk}f9wCTR!hHc~yt$hB&@)+4?k->2qzpXGbid_Iq6JZ@xell6t3LpVSl`h0Zu zc5EkqX~zyyX~(aT${I$}V$$!BN;@Q#cI+grv~(uv6MU9-NGk34by8`^E>da7Zc=H- zcS+OjkaNXy{Zzio$@<-Wo`hG)THdvzmcO+f((n2#bxt(@`s<>-wZ}d_FST?T>F@ISKGNSOy`S_CNYlslJ6W~Knys4J%Q{8Z zxbj_OHtRUO=RnStrjPsjEOt)NLSC}@bJjuf7T=LneCH+7TP&5M)t~WM<_}3FKL4C_ zsijiam-#IBG0b39o?esBV0CsUpQmtysgCN>j=esgox@R4H;J32_V-cpl75s_V)q!S z#Oe=7rH;o*Wo~|zRF2pGK$<>od=meY^}NiT6Z_5CRV>=&I64)LY<~Msk%yEisg(H! z>E)zvlFD)IN2Jm(r%A6T{U=hHU;deN3h7zWbRA@UDr+5qT-TL&m>ktbj$``#b@t=f z+vFw3_4uo@vQQ`Y_3IjM9Xfq>IR~%Q&F}Xsv6nU$lFC}Fh*bLb8dCAQ zk)+aJ*OJa69Yrd!aviC}dNJuR&dcgKUs*TE-|}vDIZn#;!}R(8?bzqA=nx3r;vV?w1RXP z&pi!io*7PT$UO+d!gI}4{4L)zrM_*X>G6^N(r27=_=c;S-(QvFDRq`q#-WN-{8Cbx zYi5$laZJ*2q_aqCES*DI&1X3-%?-aR%XetGt}V}S%Kb<31XVAoe&3N}sXhmtgBR=O zA4}`V>k@X~L0U+9C#kF(=8{U;^GNl(bvb!TT&Ay=h(GDG&*|rQd_TMk?Qm@F4)aLI zj_8J0>KIB~%I519nC{*zx*IFwb&E{**(|!r3A)dlZb_)CjQn2eIVVB4%yi9Jbc+&n z_nB_Fr#nYkGGE9!6xp6-P)Z4&TCfzX1e?J=a0r|R9Q1-wpd8eLRBa0r|RO#Q)FPzhSWTCfv53*@(F-U7J< z^C(aXYC$9D1slLluph|p?41M`KmlK%#)4|l2v&m4U@tfbPJ#=dkVVyaPz#oV)nE(Q z2M&Q#;36nyLX-92LeK@afW6=-I0Fi2kPny(TEJ?s1?&X}!CN4oxwsfqfO^mh)&cpg zh6CU@xCjcF?(D2fzt%4ir?;51<~jf{kDo zI0R0D3!q>oHlPwTf?lu<>;uQaTcD7Md_1TIji4871iQfV;1swBMpRQTun=^CZD1cb z3eJE+CbsdQ0kngSU>7(DPJoM`a5g>#8o+9>1snj!!9`HWq*w_Sg0)~9cpe-D7eE1v zo>EW?+QB-o6Fdu!f-^uS>Jgw6)Pkj8CD;u1fCJz-I0JI;z!sE(2G9;Rf?ePs_-Om@ z-2?BjT|4BKw|5rdgG0C%f-g2XH0dc~R??cE*Ys)T0r@;{jHU~i1LgBb4jhv1;ERx? z58;E7uHYX@M>@N)`uRz|7|H(ORhmvCp5=3DoTe*o)^uKhrdzEZDNDEBqWfRM_eA%y zeg5lD=;!sOduD=uUUQ|Uk6JmSIZlW!uTayG%=hxyy|Z;UaV(!7t<-dpwdXAJoa}$b z+Oz%|{rog@xa?muQqy^tX?mW8ne2aoFAS3A{hX%nj?#3u)&Ct9N5YS*GCPhN^0|p) zo}}xq({xR-rZbE$Gk*6V-M`h^nRkPJo?!JGZRHO8xb9y?OiRA+n%&u(^z(3z2jTu3 zHLbc-(YL6MDTp7rC8ZCq=ty?5Do9=S^Oi)=h!!k;C-l-1`A8`rZoe)HV;F~5u5k8K=l zY#bl4ahzb~AGucTUb68!My!bLIp$MIC)hZ>alL*%KU&k#*3a{<*3WsCPmz6|VV~!j zewdBNG3(EF%}<{hq52h8{+MF@yu<9)m><1l_Git0ve_>-`;^&lGP@eHd(G^&n%xAm zTVQr;%x<^Y9WlG}C0dUf`}~^q`&JhZ)(?5sFE5z=ZnHaLc1314!|c|Z-3qfCV|Fi? zU7y*_GrP%Vx7h5~o841pS7dhF_Z*H_kK~}q^hJx0*UYY} zLigub+Gg|LFl*1#md{p;i%r%)e8&mvIoayjWaZ45tow^BE{;so&rev|XK9_Kqb+^g z%Fna%7Fk?Rur$Zg^%l>IES+HK>oy-eW9cK7F1EDH(mYF3f!2%S!*&cCsp+d$kF7Rt z@379#!Dh708=K5;U#rpmFB*T$;(OR|-Ji10J1l+1_Mf%1$o!$kKCiKKjP?6sONSL} zemPV^>XB#Tu+{wR1@p6~tiC%e-%aLcYs}9!nSYJ8@pA7KQ6ZN-!}VI=1;F# zJJ;C!y4c!VXMSH+uKB%W@$!Iu{_9fR|C+_|8@7LjmAlybalPf=XZfbA9~W3Z)>uEj zZvOhzbj|mCrKV3?zK?TqLdNMi>#wb5H^KC0tv*~!3+=ex8Ky6rUyii=CR;!5wth{S zf2^{8d(zr{*82GYD<{YL@r^>wH^=&~%;NuXn@3V3lz+nf{f(c~&ux=5eaQNMw|!38 zalg;{t<3u24eOs_mfyRU&snp7&HV0&9p_)a&C0z@(@i#yv{}Ecv3|SD{A@*y+AXs7 zrK}&z%x;bO;d$%78uOo*t5o-z&CfNK|LfMD6I{GmdtR`5Otb!b%KC4&`NgZ&ZxgJY zFPk5ZF@Jf9F_&@QVdGnLxqhy@Len;jyQi#wcAG!GV0N$Ccuuf>d)ne^jQQtNR?l~5 zX?}~HA6ow(v-$QV%l{e6XSenLR_p)WC90ob{c*kZ^E1X@Z~gqj7`0n(?a8tJF0%HF zvGzY;{XX3KeUtV3)7I}ttQ|ZzuKi=_3>$~@1-k!f^Uo@qZ_e8Mx5mobWPaFZF*ZKutslmjU!S#k{Y8tbl=)qs_0tL)hw~QiXN$EyuUr3Y{iJ?wvUGx_@0cII zWa*=pF1B=>rO#L#KV<1VOGjGzhV{=IHoko}o;$1^o2;H|Y&=)kcrLc_T4m*|uyNJj zfa95In+MOD-5XZ#^ER%}*|;9F{(aQ^SMF!x|6qNsrqj$HcGx(-X5%v>U-`SLG+kxm zy~g|?$J+PWrOI}3rt^Q<1^XD zXN>jxQ#L-6ZG7siUpHC#XU*?9{~z|xbJj0qZa%PalzUrcT;8$%e#h+Jv3iZM@mPS7 z*zGnuxd&A~zh?Ys`}~rX|IQrc%kngBvU0CSBf2)5AF5{R=O5d+jr{mft9wec*ne%Nu7+P76{y5bH^-?jEU z?%HGJzH0sXgw0>8D%Ji`Yv(-b64q;irpN5K@PHi$78L3J1?HcNt=(I#-ixgL!={?v zjt`GoKfG)Guwaz&<|jo~&lf3N%D>C{yK5|A2rq=JFGvRwEh@v{qeZf=W%O)owa|5wSUtr zZP#K;CsD6{b^yIk$dY+icT+Er)!U$=f7ZT*;I^MLf7V6uJQVg37@#XG+T z5b}>+qUl3!9(-ts>(56l9!6UFy7^z8)oYWr=Pu*VTfLtirujZ< z$G4X)ebxMAhoyO@?{ni~y|wE}i>D&1cbiMCKX;gab1zoduDrYr1()5N zJ193N$ju-0(9D9$wWY;tgQ~8A8-s^$A0Fi8<>y~UneajWWn8bHxwZhl;IG~*9`x|- z1#(Yvd%LWw$xwH?SYcQ3$fF*!Lo`Ge^8Ah-C+{9<@9Sj$z~%HSk* z&rS2ep!}WrmF4vXxxw1vg39`WeQT{}2UViU$&qZr{P|Q+Ssm6i_mYAj-$pOw@i45y z|BKfa2bW6y=^5F+JOo*({*6gN@k8Vv6mp*u7qDjrxnfos5}3XfD1sX!SAC4qrg~D z3FLPL7lIbh1y+L%fZu$O-)ji=f@i@&@CrB$cwS$gjSohE5+J{&Qwx>?p3M!`fz5zt zMuYv}FgOKxCNLcFVn)3JRD*iZ3VH$03dwUn!7i{5@GMDi2%G`A%nPGHIhYF;f}P+5 z;9kj~0dPN;+@mA+bOiOF5wwC{uoi3t+rTcc4?GW!f|KA3xBznTgi&BDs04GtLeK)b zz-q7oYymsLUT_e+0#1O_;2an#aY1|)g7KgNRD*iZ3VOj>un}wnyTCqh2pk0`!5NUt zd|3cSfw7<*RD!u+A!q?zU^UnRc7na&AUFX|gL5Fj(T0K%pahhHTF?NNf_AVDYzEuG z9i+tbBhJg5NGpb@l!Ua%4D0{g%ra1@*bXFx8;(otY6CxlFr~vh#5wwC{AP*pH1iQdK@H{vKj)Ifm47dPtuc7W>6c`K2K_!?A7J?Sg z1y+L%U<=p@_JU`@E8qk;4bFjJ1Z@H%KnW-X(?Kn0082qTSP3?R?O+es4-SCC;1qZZ zTm<t0mNo@q%z%H;4JP!_mqu>m<0CKOTjbIcg2bEwUXaQYdHP`^Q zfSur3@CrBqPJ@8&!6l#+Ob4}~0jvX?!FI3*><0(HVQ?Ir0&jtQ)(wTA7>oxMpc>SJ zM$ig+!CJ5l>;n71^WYFT3QmGEAeZm*1z;2y3(7$ym$t)Lgk z&7B*;Hn0oq1J8p);3PN$E`Z!(+6Kmga!?88f`y<3{NLEF3&zMS5^$*Go-AGizeL|X zG>g|&^|FuOEAjZ!DWz=9O)~AME?kWT6T`O&I$Pamw#(ACvX;otu+@EL+br+s)_faT zE93`rJDZ!@m+(r-zAmpW%9*A`R(+~D6l!L*HgzmdHSiXc@a0WkY-&duwL@)8n-UjM zZH25cf_a_1tR{Se%KVO*ohv<^@}|2lUC#??UHFC%zbxfc(^4vR(6SEG*;baklQXKD z?l=3gbh}ovHpvg{Wytfp+m^TSLU4Prm+N!2G3}(Z_RRZeIRwRQoo~8(Lt+d*+Wr4X z52%lr@7$X9)1|Cy^Mi)A6{&6sr^rurzuA|keeFg3g%@4v^M<<{jdEa5n{QHPCr&Sx%R-|L_RH&_LZ#Si1o^qy{mX7zivd#_$ z6cv@Fyy=+lZnD@N%i229HMBPM*7EA0nWPYXJSkRZxNExa}{{eD3`PN=Qr!Prf7bDp0^TQk*2F~PcwYEx~?Tjg*Q_5b0} zUh|QAcwAlNhWDs01M>MyTT5?il!w|{9?YjMk8&ox_&mZEMtP{M<-xq_#^H3Bht}VF zHDIJu-gLy2JFZQab$6gTEh*h*pE-uDQ`Mr)#;9hIxU8m@~x1N^Lw}%F>%~VbyrX{6{bo;1+`1>9b-ZU^cOUO_ zUbk1$-;Pr95dAYZ{v%Q^{U#9a=Tg~G>V$%8Ng)oom zR1cC>HY#r1l`{=7==!!rzB>e_@uqI4Q{HsMohz$^?+N*Vj6^j2Q5%&r&8N zP$LcVn#J6uIW(kJbhV2+wKjG4pMzCr`4Nwwviu79Zo%60gXQN9ylb24Eni~R)pJ*v z?}Co@50-P(Zq-?S#IvjC3HkmKeBk_|n!0+b-tzTgy`Aqe&cA!AdfhY@)kk^L5$n!R z<-3lj3#S$*c4exKX^DLoQ{~rt+PV%~T|}>BjmlO#(=!J+zbU>!^mRRVrdHK=vph+K z@utTt)Rm{4X^4B*KjX)w$FZR^eEn$Dr^=beJJxRVG@^L0shc+`r{^W*O-J0j zIVS(6bXkPElSSnzZ#v@J>3Tz5eS1^0O)@i6tj<~@o${t5eqCRl%GA|$gzs{lPk+09 zQ5(||t8UJh-^V33+gn}2WY|? zx;|6hbi|s|@wlq%v$~$yZ5?ertrFHzdCHp(!mT+DggSj?tSdwJnJt~;`nh+!l#zbH zth3ksX3zM#J{vzl>(t$=apC)^a;lN*<<4(%sqY1sN0-a8I(|K_$*RwKpOe>L2dD9Wcu3rjiU#5=gL^|b7M+`gN zx-2@X6X}#Uop(Hy>tdPZQJqMqyy=K(S6<5{19em<(kX8`e8%aHX3O?x_P3QSbN#4NnByQZeD{s1%ba`8{>AZMQ-gLye>zCY1 zvy_L!xbl=Y9Wn28z1eg)jMFKvx?8Eg)1Atu!(p6GdDBsUr)%ImOXfI~;V@38yy?8- z=)r8d@ED})AmvTx#~t{<7%&cwgu1{P@eF^W*)Tuk+)Nb3vK)^y9rHEIIzRq6XOvlXyl?S!e*6s^Se_s6xgl@u z^W!g@&Wm@suI%br?#Ev?ofq$?e4QVEoSVw*mohKj8$w>|DbK6BxRqFWz_gIzRpjvXtk=dtu01d4Bv2(3SOz_jSI`kH0KBKi<#z zIzRq~XV$Z9i68HB{X80XKmM}l{CGd=>-_k;a$tFWyvutwqw@Ut%cAq+eZQ~svzur@ZNIP3y|9&Qcz{(vzuw=U#OheNpX^@Mjia$tE3U!;?JC?cI7e_3=4U!;@wPDVOE{y4AMzh5RT zVfZ3lNyuCK{P@eFWB4MS+=~&F=f@xCL^I1{_#$0y$Xj`S{AJNGe37o#(@pW?FN?0i z)5$#^uAWo;_~U$PW<95Qx`vR~dQS1qmK%e^L1d4Bw5(|PfJ&et(OE^b>m4?CcqUc4)B z^<;pY?r1ih7w^iO&X2$1%<^vS7w^>}Z#qBzvgrJH-|y@E_`7~!d49Z?guIpK$6pqm zAMaayogaTU3@p!&_uP=T^8EPAqVwau*V9e)<1dTOkM~o)&X2zv2iDV%_lA(ydQSD@ zFN@BP_k+I9kH3zOE@9x7D2U?H}*Aa+WYX&ns``Elcb6 zXVZD{uDt1*)4GzendO!Di+ANs*OJz4$)fY)U3t@`(z@Jn1IzQ{U3t^pm)7-W(fRSN zyy`0a_{*a6-_lp#K7|WcrOomtEV4- zS#*B9@A7qi{EZ)2o*(apA#dgR@s~yC$NM^8=f__*9sM1xKYg7ae-j4Qv&@V4mXNo4 z`tg@d=f(R`U+2f)#4P1`@m?MBR-PY!*>qmK@Aq|n{N0kJJTKl$Lf*>r<1d@ei}x+Q zj`(xeMREgq7e)VjIdxxHMyd3zZ=0LNHdoKfmCE@LXM2)-Gi`OBOQme{88FGwBL1#aN3LfQTb3;HqDzCHs@sM!Yepw zKUUs!^rgFob5V8obVe7Ax(5j8~5AoyrQpPSXW9)UG*%C9(wwktO+Uh>DB~F~}o-DSy&uobe zcb#o0eiF7js(!kkl`~CCTC+0La9>RpjdG?TCR{ni_*kCYi<3p8oM|{7ISucBi`6Kn znn@gsoTiI`j4MYu)8KDTGXkHE(8pYAt%V%z!h!69Zp ztFOB|)zMqs*Bv@EMMY()jcLQVP|GU6Otg%z)y~yT_nSR&~HzdS6%#aX{=+sc`SxN&Xj?XT$<+^#&eF)eZA%9Cfe@&dgNzOJJswbJVc zpr!W^|x<(X%^c{ZJwD#%=xxMve*u>>o;;tac$m09fpK+8TSo$ z_H{R><~4OREl+iO^;es)PGxe8ac$0L?ojQlzIM60)YB+u8vN5~dP5C&zAPE2QO-2@ zrqi5EmlHl`Ft>Ag*_a(`sD=DrhyveOw*LsYzQ^k?~PK7A1yEq8jruMC&y^KqLd)=@3Px8Lg9FFqW z`$#hHJyl+H{xxOs^}*rzXV)ojI`3E_$7F5K{H~_vw%%1k<5=+kac17ieQ>mL4qj6K-bYAQh z;78iV>^kL5=dB@EhdOzlDmrNPoA;GBo%fyQOjKTWo${t5?p^yDaY*e~9x38*+tAtn zK6d3z*Ob=DGe_FK>^kL5w=8|n;`BUMUR7Ujrz{|OQmcKHJkQjF>qPykcBXGm>vnHPtRoR|RP~LRjI&XiZ zt8MDZ@=S~JrXwz0c_pmBw4K>?%A1aubZy)c>LfPXMJ_8xsm$(5;`X}s@Dr+v-6Z9Q!qkxd%;yV{u6 zJ1)yJ_u5BycXEGicw?_CPdU>No34)XEWWmJphh{<5SMN&I-OhZPBk@iH)RdCqskLMkzVagPdvKukmvffeaU*YGd;2C>MhUxYx&l(_DGQH zBjrs;d^+95Or1Ug6xCOG)ycJIcdT!}LdxrZu0!{!?Nt2K*~;$+WZLRJv&Ao+t=x-| zX{-Cp79VuB+p^f|KC{L5oUQ!kKxV$W&usBEXS=jupsnsRTYSvj-+C~#y(iUc3k=ua zy5H>aFXxlvhfChszYi;C8hp!X)~bzZi47Nj#aByt`du?RQh8-6Z#v?{&Hbmd>F(*` zdv&@@wJ|MmN9OT80oc5Z7q+m&-HuCT&}?n4&-6hu!@oI=zg=O@~)2ZTMpUmb-&qr z@g~2yK#cMLs4N$yob-4rrkH?+jB~2GU+tTSIcGm~e0F=? zZ}#5tO`eAlfA5l~rZUP<&NNooH_e;uD1>5w?!n#e0$w*_Fin|GY;A8 zb-&qr$Ft`{dx@>kt*YC)Q{kh7ndbo1&h*5Zi=F2gM~+R(jSktmR zHUB<~)N~!x*7Bf#ouBN%&(nGERJ`Po5$9@STKdYB-+No6<>;77)!nB9MooJ3uXOop zYkAObt`FY|^HA&X0qY({yC;2C#`S^PnVxpL`nP^Es>6W7omOp3OM9L6M5yJ*0PL8U zt=?*5TH@RJ%!cVvx%7R_7a4MKwP?(hHyv^9$~>pK_Eb}Mxbp1bOvhZFYxcEjV_IU` z%|r6;IEm?wmIiy8I9;A{rXiM{<`qw)PZOs#%9)1vb>ENW9dxV-oA|A#s6D#RY`x>A zyq|7xmghfpzuGr@$IZ&y#lEg5%$<6=G1C2JPi(ql!=BJS{K+YP?WQBL*ZpQsOgj65 zO36R`sj2x)Uy;4;H+y2xwRL4^&(ph}t?n~h;?3Ef2yN%4_(hv2U)^W6UR+gH^{Yoi zH&anplU#lE+8o-Lmbh}hwLjb+)+wt_dD9U~PFFHh$_(q5Rj0h^h@p?R|9lVRAYoY+ zY{?=O?f__r;R-RB6T^KDt}%xDJ{(^o!%fO?TTbxSEq}|7BHJ-2_!%oH-Gn<0x6nRc zlEGCD3W7h3;eHCYBZk{{Nf104!&T+-K0B*m|MG(1vw3pwk8YSno0#91z;(m1G!M5- zoxEd)sU<6S1dh>|?$69TN5i@PRIV`m?N-TXFX!W}d73f*>Op62+p_Ma?o|`- zS<%$3Up#`zvt~`JsH!0(!%coGPX0)zx?lgjIv8sib9i{aGQtIAc*LpdUfvVTo;qdP z%vm#;17%C+@51`-(qU z{^?(w38q$8S657#ts|OT&NbohD@!@jZ^`Z8_tv^t$F`+(wh_hVB*^@&%suXp9m-W^ZlLnw{ToC2>DD} zxT_7~8xIaClh>5VPr-hDRFJoX$6|s;=9d#=^jOfseCamPjSN5h%K^79*}p~xh2$mM zX7Z78{H_1|lIdSTMOnq9ikUN6c(5gxQxpuf%-gX|E+>8BmTv>@&a_!o)zvkVs?^Jp z%Novm$8}r!!OIHIHU~A6t7cBEDE(l*e5JgbJlvMjhaa#_!OYUKSyOA|YL{-wZBZM^ zdlJV69b36qHoXaVC!F|&Y?)ju+)YXi;Jyxr8--h@?)TvSE{1!AcGtyle*-rsh8syR zj5L4EEN>FmZrci3HuG1l?^3x~c?SU4pJ2?y8u6X-?4H52rI-Fko!Ilc4)exNBp|I{?Qpgc7+P5x&`zGA?_}(E~W*g);1)huH-en>G{TNQ3Y5u(!ZaEYAvoYMqujk#@HX&u! zWgioHT-%?8i<=8xfpc?YW}fnF-3{9G0d2qfrg*6m2fx4 z-kKq=}WD~9_rT%2G3EnM6& z^-Z{YWAdEN*SI+`+?U|u=80`^YhrXooYS8l!?nOw#&Emf;>Kt{Tyc!( zoacx;zE6j{DJIWlaB;`RHn>$Wx_^Wttivs{E|+t1hfvDORU~jJxHum?mcZ5E)a^0l zJq_0q!xiDUOb6kX*@h}O+&3$?5-x81Ho(P=!xp$_k0nYWc^WlI^rtk;hzAGQtGP&!j zSW782fcpX56_Np4rtXcI;kl8loJ@2JLuR0EAzWV!cLeSiV#=FS!@F!^beGRguO~9= z*$P(}qgxHfVIbTxb^GAle4WYtJDl6+QprTB{u8*lVUB4V$IYG-1kmA@soMw_*Jr2T z>SJ`}wL$QwG2DN^xw$8^yb^-J`E@2YC4sAji_5bQt|_K2e+O3GgajcN^Tq7+otI!<#kFeQ?Dw+$(T5$8bM^%a7p(eL8*I%&g~FxR1x^=D=-@;ZDF6 z$8Zd-1mpfwl7TJ+TcdTl(#;CdjgKHs^OMd-k-s-T+GV72X|`>H;ILC-1t2N=hp0* z<^53t_tS(t@3=d?cFWAOCxP1z$5JF~`~Duz<>kgo3}woB9geSZ;g-n_Wnpt^40k15 zT%IH0+`N>T=R`QSZ%A;(Z(H_ZU8W>(pMtX~5?}1EyFG!c^tj7hVWg5*RRT9Nft!`U zRVQ#Y3Eb=iZcYMMo50m2aCandcP4Oi6S#Q^+@}+``3YQo0(VyecXtAJPXgDFz%5AN z?oHr6lfW%Z;1(rtpH1LCm%ue9aElYT&nIw861b%aTvGzKEP-oI;93&6R04Nj0=GPY zYfa$V61e*lxGyAd?Frn91g;~2>rCLf61WEvxb6h5CxPot;QA7{FD7sgCU7egxK#<< zFC=ikn82-0;MOE?zm&lJasszDfqN){dpLpnQUbRwfm@%zeK~>qN&>ebfqNu@`)UIB zwFGWs0=FrF`+5TRD+%1@1n$uU?i&f*V+q`r1a4~r_sst7?!|1RomtnO^?TOs%UH}Y6Mk8Bp-)7#h5)>%BMv}|%CcOKp^Pct<3yNN67 zC+`-!=AQrhLNf0goA_ZAVmBmyC|O7M)qW^7Pv0Wi7~LW|k!LI0mUpDOrNkik*}wkm zU&S5GCB+qV6Gzl-Sm>zww_`s_|C{%~mWgFKJEnbqk&OH8O>h3-y+b$8{{7Bn-`jlU zH@`8Tx#$*o&1GH3eVxHA9sIszPjE|5ck?Z+siu}x_p$D^_(jwnUT17j^RJ@g|QhH+l4g_hGl|9p;VwKVf9|HaB+LPr~&~Z1Eg7tj&j1 zxK^b(dK0Py%7S;k6IDq%Wja;V|+OZwwI6A4z#~dhQA!?)K(Q{KNJ! zKFH~_ACk&xV)Q^R@uJsiks!9MIRC%pl<(|srIx>d6LX#3Chz;y_U!Cw;V z+(r>hotVB)W;XY)l+vw@?9aql_U+-^cEcqM0vGy@^7%NUC%=g*zuO^ei!QK}&kIRU zGjf#=bKQuGC*!d_afkfYFoOzrC6EEX2z~;73f=+lf}er+fOw4Dq&^5-0&+nfxD*Tq z^1F6Jz-8caAoqgH`bw_pih~sZaUOBLkAVUp4kZpGP9{z#P9+W~*FUZVR{^=6Dr-Br zZ|WK_0*nOLf}aC&Enzf}ew6D%#o&4%&Uqs!0dn0yeEsKv^xHUaGmvxR(ial|-5%b% zR7zR~CV^XlT(g}FrU1DwLB>d~HE>Hvz^xd;bRg?XIX{0ps03ADCYS}PK@DJt!uw!q zN$UXJAKqU!my}Ck!KZ;-i(p8@`*S#TAKU|2k_HQa++Xtq!bz%PQ; zU=8>s@XKH=cnCZUz692R_2A3kD_{e71bh{I4QvFPz}LaAfX(1h@D1=7*aEhKZ-Q@u zZQyb6tKi#UJJ Date: Mon, 11 Sep 2017 20:36:39 -0500 Subject: [PATCH 08/77] remove files --- .../obj/Release/CoreCompileInputs.cache | 1 - ...ignTimeResolveAssemblyReferencesInput.cache | Bin 7437 -> 0 bytes ...priteLibrary.Properties.Resources.resources | Bin 8537 -> 0 bytes .../SpriteLibrary.csproj.FileListAbsolute.txt | 8 -------- ...SpriteLibrary.csproj.GenerateResource.Cache | Bin 997 -> 0 bytes ...ibrary.csprojResolveAssemblyReference.cache | Bin 2682 -> 0 bytes SpriteLibrary/obj/Release/SpriteLibrary.dll | Bin 67072 -> 0 bytes SpriteLibrary/obj/Release/SpriteLibrary.pdb | Bin 142848 -> 0 bytes ...ile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...ile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...ile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 11 files changed, 9 deletions(-) delete mode 100644 SpriteLibrary/obj/Release/CoreCompileInputs.cache delete mode 100644 SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.Properties.Resources.resources delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csproj.FileListAbsolute.txt delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csproj.GenerateResource.Cache delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.dll delete mode 100644 SpriteLibrary/obj/Release/SpriteLibrary.pdb delete mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs delete mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs delete mode 100644 SpriteLibrary/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/SpriteLibrary/obj/Release/CoreCompileInputs.cache b/SpriteLibrary/obj/Release/CoreCompileInputs.cache deleted file mode 100644 index e8c1fbc..0000000 --- a/SpriteLibrary/obj/Release/CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -a8cf27034d92fac0fcc617c33163b8923a432866 diff --git a/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/SpriteLibrary/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index c8ba4b315d63e27d110283c4dd1360975050ccaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7437 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 E1ufnjXaE2J diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache b/SpriteLibrary/obj/Release/SpriteLibrary.csprojResolveAssemblyReference.cache deleted file mode 100644 index 1c0912018623e9fd733dd5e85338ca5397f319f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2682 zcmcJQ?M@Rx6o!|UmUbyv@mozQ+5U|$-^Bc_5LJsxTQ>cq*pGlBq8niBa*p%Xc`ydPSMU#JpL0pl_Z?mui%CfRq zE0-HC^z&Lh8Edl7oLB!D|L42;*B5D4_5;-7AW06TOjo1$&gW5h{Z$L6v?E#MG_Wel znL3((KHYi`0Z52FaNZ~d5mp{l>$JG72J&zyrZ?4*4zegslar2b2pM(PHHMby^nK53k*V(4aS5GLJs3AY zyDM5J$8ec4fZDQnndAz|Rg!BY*GX=W+$6b0GEQ=v9-!6Ig#U)_n-EpQgeFah zs%1iyv*+xnnkMwngs9pk^vHy0H%w^CglM-+XxfBmH%;iV3DItw(2NODH<(bxgs59g U=!pqAeIVC_sN2kuo*K~bAH>ljZ2$lO diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.dll b/SpriteLibrary/obj/Release/SpriteLibrary.dll deleted file mode 100644 index 2eb8bb8fba9a237bef50bc176d174da6f63f1bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67072 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 QpVxnSUH*ShKRX!sZ%WPlIRF3v diff --git a/SpriteLibrary/obj/Release/SpriteLibrary.pdb b/SpriteLibrary/obj/Release/SpriteLibrary.pdb deleted file mode 100644 index 966e8ecf8f03855746790877c52e068a7460fb97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142848 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 Date: Tue, 12 Sep 2017 07:45:04 -0500 Subject: [PATCH 09/77] Debug sprite sharing --- SpriteLibrary/Sprite.cs | 2 +- SpriteLibrary/SpriteController.cs | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/SpriteLibrary/Sprite.cs b/SpriteLibrary/Sprite.cs index a810874..749caba 100644 --- a/SpriteLibrary/Sprite.cs +++ b/SpriteLibrary/Sprite.cs @@ -252,7 +252,7 @@ namespace SpriteLibrary /// public bool MirrorVertically = false; - SpriteController MySpriteController; + internal SpriteController MySpriteController; private bool _Destroying = false; /// /// If the Sprite is in the middle of being Destroyed, this is set to true. When a Sprite is diff --git a/SpriteLibrary/SpriteController.cs b/SpriteLibrary/SpriteController.cs index 4b39f93..de1d7c1 100644 --- a/SpriteLibrary/SpriteController.cs +++ b/SpriteLibrary/SpriteController.cs @@ -976,6 +976,7 @@ namespace SpriteLibrary { //If we get here, we do not have it in our list. Add it to this controller and then return it AddSprite(Found); + //Console.WriteLine("Found A Sprite in another controller:" + Found.SpriteName); return Found; } } @@ -1003,6 +1004,7 @@ namespace SpriteLibrary /// The sprite to add to the sprite-controller public void AddSprite(Sprite SpriteToAdd) { + SpriteToAdd.MySpriteController = this; Sprites.Add(SpriteToAdd); AddSpriteToLinkedControllers(SpriteToAdd); SortSprites(); @@ -1016,8 +1018,12 @@ namespace SpriteLibrary { if (SpriteToAdd.SpriteName == "") return; //We only add named sprites Sprite found = SpriteFromName(SpriteToAdd.SpriteName); - if(found == null) - Sprites.Add(SpriteToAdd); + if (found == null) + { + Sprite Clone = new Sprite(SpriteToAdd,true); + Clone.MySpriteController = this; + Sprites.Add(Clone); + } } /// From 846d4b569f25e700842361b15e8f4d5308bfd94e Mon Sep 17 00:00:00 2001 From: Tim Young Date: Fri, 15 Sep 2017 15:52:59 -0500 Subject: [PATCH 10/77] Adding initial sprite database and sprite entry form --- SpriteLibrary/SpriteDatabase.cs | 224 ++++++++++++++++++ SpriteLibrary/SpriteEntryForm.Designer.cs | 276 ++++++++++++++++++++++ SpriteLibrary/SpriteEntryForm.cs | 83 +++++++ SpriteLibrary/SpriteInfo.cs | 21 ++ SpriteLibrary/SpriteLibrary.csproj | 8 + 5 files changed, 612 insertions(+) create mode 100644 SpriteLibrary/SpriteDatabase.cs create mode 100644 SpriteLibrary/SpriteEntryForm.Designer.cs create mode 100644 SpriteLibrary/SpriteEntryForm.cs create mode 100644 SpriteLibrary/SpriteInfo.cs diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs new file mode 100644 index 0000000..278d5a1 --- /dev/null +++ b/SpriteLibrary/SpriteDatabase.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; +using System.Xml; +using System.Xml.Serialization; +using System.Resources; +using System.IO; + +namespace SpriteLibrary +{ + internal struct ImageStruct + { + internal Image TheImage; + internal string ImageName; + } + + /// + /// Store of all the types of things in the ADVDemo + /// + public class SpriteDatabase + { + List SpriteInfoList = new List(); + List TheImages = new List(); + ResourceManager myResourceManager = null; + string Filename = ""; + + public SpriteDatabase(ResourceManager theResourceManager, string filename) + { + myResourceManager = theResourceManager; + Filename = filename; + Load(); + } + + internal void Load() + { + LoadSpriteInfo(); + } + + + //******************************* + //**** Sprite Info Functions *** + //******************************* + #region SpriteInfo Functions + void LoadSpriteInfo() + { + if (DoesResourceExist(Filename)) + { + //This clears out the old list, as it gets replaced. + SpriteInfoList = LoadObjectFromXmlFile>(Filename, myResourceManager); + } + else + { + //try loading it from an actual filename + if (File.Exists(Filename)) + SpriteInfoList = ReadFromXmlFile>(Filename); + } + //If neither works, we end up with an empty file. + //If it fails, SpriteInfoList is null and things explode. + if (SpriteInfoList == null) + SpriteInfoList = new List(); //make an empty one so things do not explode. + } + + public List SpriteNames() + { + List theNames = new List(); + foreach (SpriteInfo si in SpriteInfoList) + { + theNames.Add(si.SpriteName); + } + return theNames; + } + + internal bool DoesResourceExist(string resourcename) + { + if (myResourceManager == null) return false; + if (myResourceManager.GetObject(resourcename) != null) + return true; + return false; + } + + public Image GetImageFromName(string Name, bool UseSmartImages) + { + Image MyImage = null; + if (UseSmartImages) + { + foreach (ImageStruct IS in TheImages) + { + if (IS.ImageName.Equals(Name, StringComparison.InvariantCultureIgnoreCase)) + { + MyImage = IS.TheImage; + break; + } + } + } + if (MyImage == null) + { + ResourceManager rm = myResourceManager; + MyImage = (Bitmap)rm.GetObject(Name); + if (UseSmartImages) + { + ImageStruct NewIS = new ImageStruct(); + NewIS.ImageName = Name; + NewIS.TheImage = MyImage; + TheImages.Add(NewIS); + } + } + return MyImage; + } + + public Sprite SmartDuplicateSprite(SpriteController theController, string SpriteName, bool UseSmartImages = true) + { + Sprite DestSprite = theController.DuplicateSprite(SpriteName); + if (DestSprite != null) return DestSprite; + + //If it does not exist, make it + foreach (SpriteInfo SI in SpriteInfoList) + { + if (SI.SpriteName == SpriteName) + { + //This is the sprite. Pull out the image resource. then pull out the sprite. + ResourceManager rm = myResourceManager; + Image myImage = (Bitmap)rm.GetObject(SI.ImageName); + if (myImage == null) return null; //break out if we do not have the image defined for this + DestSprite = new Sprite(SI.StartPoint, theController, myImage, SI.Width, SI.Height, SI.AnimSpeed, SI.NumAnimations); + int sizepercent = SI.ViewPercent; + if (sizepercent < 5) sizepercent = 100; + if (sizepercent > 300) sizepercent = 100; + double delta = (double)sizepercent / 100.0; //turn it into a double, and into something we can multiply. + DestSprite.SetSize(new Size((int)(DestSprite.GetSize.Width * delta), (int)(DestSprite.GetSize.Height * delta))); + DestSprite.SetName(SpriteName); + //We have created a new sprite. Now, return a duplicate of that sprite. + return theController.DuplicateSprite(SpriteName); + } + } + return null; + } + #endregion + + #region Generic XML Funcs + + /// + /// Load in an XML serialized item from the specified ResourceManager. You will usually make one of these by + /// creating an object and using SpriteDatabase.WriteToXmlFile to + /// save it to a file on your desktop. Then you can drag and drop that file into your project and then use this + /// LoadObjectFromXmlFile function. + /// + /// The type of object to load. It could be something as simple as an int, a class, or a list of classes. + /// The resource item to load. If you would access it like: properties.resources.myFile, + /// the correct value to put here would be "myFile" + /// The resource manager. Usually Properties.Resources.ResourceManager + /// An object of the value you specified. Or null if it fails. + public static T LoadObjectFromXmlFile(string XMLResourceToLoad, ResourceManager MyManager) where T : new() + { + //Load in the sprite data + XmlSerializer serializer = new XmlSerializer(typeof(T)); + + // Retrieves String and Image resources. + object titem = MyManager.GetObject(XMLResourceToLoad); + byte[] item = (byte[])System.Text.Encoding.UTF8.GetBytes((string)titem); + + try + { + return (T)serializer.Deserialize(new MemoryStream(item)); + } + finally + { + + } + } + + /// + /// Writes the given object instance to an XML file. + /// Only Public properties and variables will be written to the file. These can be any type though, even other classes. + /// If there are public properties/variables that you do not want written to the file, decorate them with the [XmlIgnore] attribute. + /// Object type must have a parameterless constructor. + /// + /// The type of object being written to the file. + /// The file path to write the object instance to. + /// The object instance to write to the file. + internal static void WriteToXmlFile(string filePath, T objectToWrite) where T : new() + { + TextWriter writer = null; + try + { + var serializer = new XmlSerializer(typeof(T)); + writer = new StreamWriter(filePath); + serializer.Serialize(writer, objectToWrite); + } + finally + { + if (writer != null) + writer.Close(); + } + } + + /// + /// Reads an object instance from an XML file. + /// Object type must have a parameterless constructor. + /// + /// The type of object to read from the file. + /// The file path to read the object instance from. + /// Returns a new instance of the object read from the XML file. + public static T ReadFromXmlFile(string filePath) where T : new() + { + TextReader reader = null; + try + { + var serializer = new XmlSerializer(typeof(T)); + reader = new StreamReader(filePath); + return (T)serializer.Deserialize(reader); + } + finally + { + if (reader != null) + reader.Close(); + } + } + #endregion + } + +} diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs new file mode 100644 index 0000000..ff299c1 --- /dev/null +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -0,0 +1,276 @@ +namespace SpriteLibrary +{ + partial class SpriteEntryForm + { + /// + /// 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.pbImageField = new System.Windows.Forms.PictureBox(); + this.cbStartingImage = new System.Windows.Forms.ComboBox(); + this.lblStartingImage = new System.Windows.Forms.Label(); + this.lblChosenArea = new System.Windows.Forms.Label(); + this.tbNumFrames = new System.Windows.Forms.TextBox(); + this.lblFrames = new System.Windows.Forms.Label(); + this.tbSpriteName = new System.Windows.Forms.TextBox(); + this.lblSpriteName = new System.Windows.Forms.Label(); + this.btnDone = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnApply = new System.Windows.Forms.Button(); + this.btnNew = new System.Windows.Forms.Button(); + this.tbAmimationSpeed = new System.Windows.Forms.TextBox(); + this.lblAnimationSpeed = new System.Windows.Forms.Label(); + this.lblDefaultSize = new System.Windows.Forms.Label(); + this.tbDefaultSize = new System.Windows.Forms.TextBox(); + this.btnBack = new System.Windows.Forms.Button(); + this.btnFwd = new System.Windows.Forms.Button(); + this.lblCountSprites = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); + this.SuspendLayout(); + // + // pbImageField + // + this.pbImageField.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.pbImageField.Location = new System.Drawing.Point(5, 10); + this.pbImageField.Name = "pbImageField"; + this.pbImageField.Size = new System.Drawing.Size(213, 253); + this.pbImageField.TabIndex = 0; + this.pbImageField.TabStop = false; + // + // cbStartingImage + // + this.cbStartingImage.FormattingEnabled = true; + this.cbStartingImage.Location = new System.Drawing.Point(349, 40); + this.cbStartingImage.Name = "cbStartingImage"; + this.cbStartingImage.Size = new System.Drawing.Size(131, 24); + this.cbStartingImage.TabIndex = 1; + this.cbStartingImage.SelectedIndexChanged += new System.EventHandler(this.cbStartingImage_SelectedIndexChanged); + // + // lblStartingImage + // + this.lblStartingImage.AutoSize = true; + this.lblStartingImage.Location = new System.Drawing.Point(244, 43); + this.lblStartingImage.Name = "lblStartingImage"; + this.lblStartingImage.Size = new System.Drawing.Size(99, 17); + this.lblStartingImage.TabIndex = 2; + this.lblStartingImage.Text = "Starting Image"; + // + // lblChosenArea + // + this.lblChosenArea.AutoSize = true; + this.lblChosenArea.Location = new System.Drawing.Point(350, 77); + this.lblChosenArea.Name = "lblChosenArea"; + this.lblChosenArea.Size = new System.Drawing.Size(46, 17); + this.lblChosenArea.TabIndex = 3; + this.lblChosenArea.Text = "label2"; + // + // tbNumFrames + // + this.tbNumFrames.Location = new System.Drawing.Point(349, 109); + this.tbNumFrames.Name = "tbNumFrames"; + this.tbNumFrames.Size = new System.Drawing.Size(47, 22); + this.tbNumFrames.TabIndex = 4; + // + // lblFrames + // + this.lblFrames.AutoSize = true; + this.lblFrames.Location = new System.Drawing.Point(288, 109); + this.lblFrames.Name = "lblFrames"; + this.lblFrames.Size = new System.Drawing.Size(55, 17); + this.lblFrames.TabIndex = 5; + this.lblFrames.Text = "Frames"; + // + // tbSpriteName + // + this.tbSpriteName.Location = new System.Drawing.Point(349, 10); + this.tbSpriteName.Name = "tbSpriteName"; + this.tbSpriteName.Size = new System.Drawing.Size(100, 22); + this.tbSpriteName.TabIndex = 6; + // + // lblSpriteName + // + this.lblSpriteName.AutoSize = true; + this.lblSpriteName.Location = new System.Drawing.Point(251, 14); + this.lblSpriteName.Name = "lblSpriteName"; + this.lblSpriteName.Size = new System.Drawing.Size(86, 17); + this.lblSpriteName.TabIndex = 7; + this.lblSpriteName.Text = "Sprite Name"; + // + // btnDone + // + this.btnDone.Location = new System.Drawing.Point(434, 259); + this.btnDone.Name = "btnDone"; + this.btnDone.Size = new System.Drawing.Size(75, 23); + this.btnDone.TabIndex = 8; + this.btnDone.Text = "Done"; + this.btnDone.UseVisualStyleBackColor = true; + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(353, 259); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 9; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + // + // btnApply + // + this.btnApply.Location = new System.Drawing.Point(434, 230); + this.btnApply.Name = "btnApply"; + this.btnApply.Size = new System.Drawing.Size(75, 23); + this.btnApply.TabIndex = 10; + this.btnApply.Text = "Apply"; + this.btnApply.UseVisualStyleBackColor = true; + // + // btnNew + // + this.btnNew.Location = new System.Drawing.Point(353, 230); + this.btnNew.Name = "btnNew"; + this.btnNew.Size = new System.Drawing.Size(75, 23); + this.btnNew.TabIndex = 11; + this.btnNew.Text = "New"; + this.btnNew.UseVisualStyleBackColor = true; + // + // tbAmimationSpeed + // + this.tbAmimationSpeed.Location = new System.Drawing.Point(349, 145); + this.tbAmimationSpeed.Name = "tbAmimationSpeed"; + this.tbAmimationSpeed.Size = new System.Drawing.Size(100, 22); + this.tbAmimationSpeed.TabIndex = 12; + // + // lblAnimationSpeed + // + this.lblAnimationSpeed.AutoSize = true; + this.lblAnimationSpeed.Location = new System.Drawing.Point(228, 148); + this.lblAnimationSpeed.Name = "lblAnimationSpeed"; + this.lblAnimationSpeed.Size = new System.Drawing.Size(115, 17); + this.lblAnimationSpeed.TabIndex = 13; + this.lblAnimationSpeed.Text = "Animation Speed"; + // + // lblDefaultSize + // + this.lblDefaultSize.AutoSize = true; + this.lblDefaultSize.Location = new System.Drawing.Point(261, 188); + this.lblDefaultSize.Name = "lblDefaultSize"; + this.lblDefaultSize.Size = new System.Drawing.Size(84, 17); + this.lblDefaultSize.TabIndex = 14; + this.lblDefaultSize.Text = "Default Size"; + // + // tbDefaultSize + // + this.tbDefaultSize.Location = new System.Drawing.Point(349, 185); + this.tbDefaultSize.Name = "tbDefaultSize"; + this.tbDefaultSize.Size = new System.Drawing.Size(100, 22); + this.tbDefaultSize.TabIndex = 15; + // + // btnBack + // + this.btnBack.Location = new System.Drawing.Point(43, 269); + this.btnBack.Name = "btnBack"; + this.btnBack.Size = new System.Drawing.Size(29, 23); + this.btnBack.TabIndex = 16; + this.btnBack.Text = "<"; + this.btnBack.UseVisualStyleBackColor = true; + // + // btnFwd + // + this.btnFwd.Location = new System.Drawing.Point(125, 269); + this.btnFwd.Name = "btnFwd"; + this.btnFwd.Size = new System.Drawing.Size(29, 23); + this.btnFwd.TabIndex = 17; + this.btnFwd.Text = ">"; + this.btnFwd.UseVisualStyleBackColor = true; + // + // lblCountSprites + // + this.lblCountSprites.AutoSize = true; + this.lblCountSprites.Location = new System.Drawing.Point(89, 272); + this.lblCountSprites.Name = "lblCountSprites"; + this.lblCountSprites.Size = new System.Drawing.Size(16, 17); + this.lblCountSprites.TabIndex = 18; + this.lblCountSprites.Text = "0"; + // + // SpriteEntryForm + // + this.AcceptButton = this.btnApply; + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(524, 294); + this.Controls.Add(this.lblCountSprites); + this.Controls.Add(this.btnFwd); + this.Controls.Add(this.btnBack); + this.Controls.Add(this.tbDefaultSize); + this.Controls.Add(this.lblDefaultSize); + this.Controls.Add(this.lblAnimationSpeed); + this.Controls.Add(this.tbAmimationSpeed); + this.Controls.Add(this.btnNew); + this.Controls.Add(this.btnApply); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnDone); + this.Controls.Add(this.lblSpriteName); + this.Controls.Add(this.tbSpriteName); + this.Controls.Add(this.lblFrames); + this.Controls.Add(this.tbNumFrames); + this.Controls.Add(this.lblChosenArea); + this.Controls.Add(this.lblStartingImage); + this.Controls.Add(this.cbStartingImage); + this.Controls.Add(this.pbImageField); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SpriteEntryForm"; + this.Text = "SpriteEntryForm"; + ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox pbImageField; + private System.Windows.Forms.ComboBox cbStartingImage; + private System.Windows.Forms.Label lblStartingImage; + private System.Windows.Forms.Label lblChosenArea; + private System.Windows.Forms.TextBox tbNumFrames; + private System.Windows.Forms.Label lblFrames; + private System.Windows.Forms.TextBox tbSpriteName; + private System.Windows.Forms.Label lblSpriteName; + private System.Windows.Forms.Button btnDone; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.Button btnApply; + private System.Windows.Forms.Button btnNew; + private System.Windows.Forms.TextBox tbAmimationSpeed; + private System.Windows.Forms.Label lblAnimationSpeed; + private System.Windows.Forms.Label lblDefaultSize; + private System.Windows.Forms.TextBox tbDefaultSize; + private System.Windows.Forms.Button btnBack; + private System.Windows.Forms.Button btnFwd; + private System.Windows.Forms.Label lblCountSprites; + } +} \ No newline at end of file diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs new file mode 100644 index 0000000..a5514ad --- /dev/null +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -0,0 +1,83 @@ +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.Xml; +using System.Xml.Serialization; +using System.IO; +using System.Resources; +using System.Windows.Forms; +using System.Windows; +using System.Collections; + + + +namespace SpriteLibrary +{ + public partial class SpriteEntryForm : Form + { + SpriteController MyController; + ResourceManager myResources = null; + + public SpriteEntryForm(ResourceManager theResourceManager) + { + InitializeComponent(); + myResources = theResourceManager; + LocalSetup(); + } + + public void LocalSetup() + { + pbImageField.BackgroundImageLayout = ImageLayout.Stretch; + MyController = new SpriteController(pbImageField); + PopulateMenu(); + } + + public void PopulateMenu() + { + ResourceManager rm = Properties.Resources.ResourceManager; + if (myResources != null) rm = myResources; + PopulateMenu(rm); + + } + public void PopulateMenu(ResourceManager rm) + { + if (myResources == null) myResources = rm; + ResourceSet RS = rm.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true); + cbStartingImage.Items.Clear(); + foreach (DictionaryEntry entry in RS) + { + string resourceKey = entry.Key.ToString(); + object resource = entry.Value; + if (resource is Image) + { + cbStartingImage.Items.Add(resourceKey); + } + } + cbStartingImage.SelectedIndex = 0; + } + + private void cbStartingImage_SelectedIndexChanged(object sender, EventArgs e) + { + ResourceManager rm; + if (myResources != null) rm = myResources; + else rm = Properties.Resources.ResourceManager; + //We have a selected item + if (cbStartingImage.SelectedIndex >= 0) + { + //Load in a new image into our background + Image NewImage = (Bitmap)rm.GetObject(cbStartingImage.SelectedItem.ToString()); + if (NewImage != null) + { + MyController.ReplaceOriginalImage(new Bitmap(NewImage)); + pbImageField.BackgroundImage = new Bitmap(NewImage); + pbImageField.Invalidate(); + } + } + } + } +} diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs new file mode 100644 index 0000000..a727c30 --- /dev/null +++ b/SpriteLibrary/SpriteInfo.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; + +namespace SpriteLibrary +{ + internal class SpriteInfo + { + public string SpriteName = ""; + public Point StartPoint = new Point(-1, -1); + public string ImageName = ""; + public int Width = -1; + public int Height = -1; + public int AnimSpeed = 200; + public int NumAnimations = 1; + public int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size + } +} diff --git a/SpriteLibrary/SpriteLibrary.csproj b/SpriteLibrary/SpriteLibrary.csproj index c9b2631..a3eb328 100644 --- a/SpriteLibrary/SpriteLibrary.csproj +++ b/SpriteLibrary/SpriteLibrary.csproj @@ -62,6 +62,14 @@ + + + Form + + + SpriteEntryForm.cs + + From 23814be473d7b81ca2c2480f8e63b74bf03c1532 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Fri, 15 Sep 2017 19:15:37 -0500 Subject: [PATCH 11/77] Return a spriteinfo list from the entry form --- SpriteLibrary/SpriteDatabase.cs | 11 +++++++++++ SpriteLibrary/SpriteEntryForm.cs | 22 +++++++++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 278d5a1..aca30d7 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -81,6 +81,17 @@ namespace SpriteLibrary return false; } + public void OpenEditWindow(int FirstItemIndex=-1) + { + SpriteEntryForm SEF = new SpriteEntryForm(myResourceManager, SpriteInfoList); + SEF.ShowDialog(); + //Use the updated list returned from the form. + SpriteInfoList.Clear(); + SpriteInfoList.AddRange(SEF.GetUpdatedList()); + } + #endregion + + #region General Functions public Image GetImageFromName(string Name, bool UseSmartImages) { Image MyImage = null; diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index a5514ad..e3d3349 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -18,33 +18,41 @@ using System.Collections; namespace SpriteLibrary { - public partial class SpriteEntryForm : Form + internal partial class SpriteEntryForm : Form { SpriteController MyController; ResourceManager myResources = null; + List SpriteInformation = new List(); - public SpriteEntryForm(ResourceManager theResourceManager) + internal SpriteEntryForm(ResourceManager theResourceManager, List ListToWorkOn) { InitializeComponent(); + if (theResourceManager == null) throw new Exception("NullException: The ResourceManager passed to the SpriteEntryForm cannot be null. Pass it Properties.Resources.ResourceManager"); myResources = theResourceManager; LocalSetup(); + SpriteInformation.AddRange(ListToWorkOn); } - public void LocalSetup() + private void LocalSetup() { pbImageField.BackgroundImageLayout = ImageLayout.Stretch; MyController = new SpriteController(pbImageField); PopulateMenu(); } - public void PopulateMenu() + internal List GetUpdatedList() { - ResourceManager rm = Properties.Resources.ResourceManager; - if (myResources != null) rm = myResources; + return SpriteInformation; + } + + private void PopulateMenu() + { + ResourceManager rm = myResources; PopulateMenu(rm); } - public void PopulateMenu(ResourceManager rm) + + private void PopulateMenu(ResourceManager rm) { if (myResources == null) myResources = rm; ResourceSet RS = rm.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true); From 72f1c3ac791a8bad3d60e46640726a01d51a8d20 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Fri, 15 Sep 2017 19:21:46 -0500 Subject: [PATCH 12/77] Define a grid size to snap onto. A grid of 1x1 gives us a pixel by pixel grid. But we usually want to have 5, 10, 50, 100 or something like that. --- SpriteLibrary/SpriteDatabase.cs | 11 ++++++++++- SpriteLibrary/SpriteEntryForm.cs | 6 +++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index aca30d7..0e89309 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -26,6 +26,7 @@ namespace SpriteLibrary List TheImages = new List(); ResourceManager myResourceManager = null; string Filename = ""; + Size SnapGridSize = new Size(5, 5); public SpriteDatabase(ResourceManager theResourceManager, string filename) { @@ -39,6 +40,14 @@ namespace SpriteLibrary LoadSpriteInfo(); } + public void SetSnapGridSize(Size GridSize) + { + if (GridSize.Width <= 0) return; + if (GridSize.Height <= 0) return; + if (GridSize.Width > 500) return; + if (GridSize.Height > 500) return; + SnapGridSize = GridSize; + } //******************************* //**** Sprite Info Functions *** @@ -83,7 +92,7 @@ namespace SpriteLibrary public void OpenEditWindow(int FirstItemIndex=-1) { - SpriteEntryForm SEF = new SpriteEntryForm(myResourceManager, SpriteInfoList); + SpriteEntryForm SEF = new SpriteEntryForm(myResourceManager, SpriteInfoList, SnapGridSize); SEF.ShowDialog(); //Use the updated list returned from the form. SpriteInfoList.Clear(); diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index e3d3349..26bafcc 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -11,11 +11,9 @@ using System.Xml.Serialization; using System.IO; using System.Resources; using System.Windows.Forms; -using System.Windows; using System.Collections; - namespace SpriteLibrary { internal partial class SpriteEntryForm : Form @@ -23,12 +21,14 @@ namespace SpriteLibrary SpriteController MyController; ResourceManager myResources = null; List SpriteInformation = new List(); + Size SnapGridSize = new Size(5,5); - internal SpriteEntryForm(ResourceManager theResourceManager, List ListToWorkOn) + internal SpriteEntryForm(ResourceManager theResourceManager, List ListToWorkOn, Size GridSize) { InitializeComponent(); if (theResourceManager == null) throw new Exception("NullException: The ResourceManager passed to the SpriteEntryForm cannot be null. Pass it Properties.Resources.ResourceManager"); myResources = theResourceManager; + SnapGridSize = GridSize; LocalSetup(); SpriteInformation.AddRange(ListToWorkOn); } From b881985b1b22bdbd0ab3de0200bc5284dc13d310 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Fri, 15 Sep 2017 20:16:26 -0500 Subject: [PATCH 13/77] Cloning infrastructure and breaking up spriteInfo to be able to hold multiple animations for one sprite --- SpriteLibrary/SpriteDatabase.cs | 31 +++++++++++++++++++++++++++++++ SpriteLibrary/SpriteInfo.cs | 30 +++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 0e89309..ba93380 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -238,6 +238,37 @@ namespace SpriteLibrary reader.Close(); } } + + public static string WriteToXMLString(T toSerialize) + { + XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType()); + + using (StringWriter textWriter = new StringWriter()) + { + xmlSerializer.Serialize(textWriter, toSerialize); + return textWriter.ToString(); + } + } + public static T ReadFromXmlString(string toDeserialize) where T : new() + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + using (StringReader textReader = new StringReader(toDeserialize)) + return (T)xmlSerializer.Deserialize(textReader); + } + + public static T CloneByXMLSerializing(T ObjectToClone) + { + XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); + string dest; + using (StringWriter textWriter = new StringWriter()) + { + xmlSerializer.Serialize(textWriter, ObjectToClone); + dest = textWriter.ToString(); + } + + using (StringReader textReader = new StringReader(dest)) + return (T)xmlSerializer.Deserialize(textReader); + } #endregion } diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index a727c30..89550b8 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -7,15 +7,39 @@ using System.Drawing; namespace SpriteLibrary { - internal class SpriteInfo + internal class AnimationInfo { - public string SpriteName = ""; public Point StartPoint = new Point(-1, -1); public string ImageName = ""; public int Width = -1; public int Height = -1; public int AnimSpeed = 200; - public int NumAnimations = 1; + public int NumFrames = 1; public int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size + + /// + /// A generic cloning method that works when everything is public + /// + /// + public AnimationInfo Clone() + { + return SpriteDatabase.CloneByXMLSerializing(this); + } + } + + internal class SpriteInfo + { + public string SpriteName = ""; + public int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size + public List Animations = new List(); + + /// + /// A generic cloning method that works when everything is public + /// + /// + public SpriteInfo Clone() + { + return SpriteDatabase.CloneByXMLSerializing(this); + } } } From 84e15883fde16c1e12db7c6c0a49e44813f60693 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 16 Sep 2017 08:03:58 -0500 Subject: [PATCH 14/77] SpriteDatabase creates sprites --- SpriteLibrary/SpriteDatabase.cs | 13 +-- SpriteLibrary/SpriteEntryForm.Designer.cs | 4 +- SpriteLibrary/SpriteEntryForm.resx | 120 ++++++++++++++++++++++ SpriteLibrary/SpriteInfo.cs | 48 +++++++++ SpriteLibrary/SpriteLibrary.csproj | 3 + 5 files changed, 175 insertions(+), 13 deletions(-) create mode 100644 SpriteLibrary/SpriteEntryForm.resx diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index ba93380..90b0bc3 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -140,18 +140,7 @@ namespace SpriteLibrary { if (SI.SpriteName == SpriteName) { - //This is the sprite. Pull out the image resource. then pull out the sprite. - ResourceManager rm = myResourceManager; - Image myImage = (Bitmap)rm.GetObject(SI.ImageName); - if (myImage == null) return null; //break out if we do not have the image defined for this - DestSprite = new Sprite(SI.StartPoint, theController, myImage, SI.Width, SI.Height, SI.AnimSpeed, SI.NumAnimations); - int sizepercent = SI.ViewPercent; - if (sizepercent < 5) sizepercent = 100; - if (sizepercent > 300) sizepercent = 100; - double delta = (double)sizepercent / 100.0; //turn it into a double, and into something we can multiply. - DestSprite.SetSize(new Size((int)(DestSprite.GetSize.Width * delta), (int)(DestSprite.GetSize.Height * delta))); - DestSprite.SetName(SpriteName); - //We have created a new sprite. Now, return a duplicate of that sprite. + SI.CreateSprite(theController, this); return theController.DuplicateSprite(SpriteName); } } diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index ff299c1..0759e7d 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -52,8 +52,9 @@ // // pbImageField // - this.pbImageField.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.pbImageField.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); + this.pbImageField.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.pbImageField.Location = new System.Drawing.Point(5, 10); this.pbImageField.Name = "pbImageField"; this.pbImageField.Size = new System.Drawing.Size(213, 253); @@ -130,6 +131,7 @@ // // btnCancel // + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.Location = new System.Drawing.Point(353, 259); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 23); diff --git a/SpriteLibrary/SpriteEntryForm.resx b/SpriteLibrary/SpriteEntryForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SpriteLibrary/SpriteEntryForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index 89550b8..eea3962 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -4,11 +4,19 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; +using System.Resources; + namespace SpriteLibrary { + internal enum AnimationType { SpriteDefinition=0, Rotation=1, Mirror=2 } internal class AnimationInfo { + public AnimationType FieldsToUse = AnimationType.SpriteDefinition; + public int AnimationToUse = 0; + public int RotationDegrees=0; + public bool MirrorHorizontally = false; + public bool MirrorVertically = false; public Point StartPoint = new Point(-1, -1); public string ImageName = ""; public int Width = -1; @@ -41,5 +49,45 @@ namespace SpriteLibrary { return SpriteDatabase.CloneByXMLSerializing(this); } + + public Sprite CreateSprite(SpriteController ControllerToUse, SpriteDatabase TheDatabaseToUse) + { + Sprite DestSprite = null; + for (int index = 0; index < Animations.Count; index++) + { + AnimationInfo CurrentAnimation = Animations[index]; + Image myImage = TheDatabaseToUse.GetImageFromName(CurrentAnimation.ImageName, true); + if (myImage == null) return null; //break out if we do not have the image defined for this + AnimationType AT = CurrentAnimation.FieldsToUse; + if (index == 0) AT = AnimationType.SpriteDefinition; //the first one MUST be this. + switch(AT) + { + case AnimationType.SpriteDefinition: + if(DestSprite == null)//Creating the sprite from scratch + { + DestSprite = new Sprite(CurrentAnimation.StartPoint, ControllerToUse, myImage, CurrentAnimation.Width, CurrentAnimation.Height, CurrentAnimation.AnimSpeed, CurrentAnimation.NumFrames); + } + else + { + DestSprite.AddAnimation(CurrentAnimation.StartPoint, myImage, CurrentAnimation.Width, CurrentAnimation.Height, CurrentAnimation.AnimSpeed, CurrentAnimation.NumFrames); + } + break; + case AnimationType.Rotation: + DestSprite.AddAnimation(CurrentAnimation.AnimationToUse, CurrentAnimation.RotationDegrees); + break; + case AnimationType.Mirror: + DestSprite.AddAnimation(CurrentAnimation.AnimationToUse, CurrentAnimation.MirrorHorizontally,CurrentAnimation.MirrorVertically); + break; + } + } + int sizepercent = ViewPercent; + if (sizepercent < 5) sizepercent = 100; + if (sizepercent > 300) sizepercent = 100; + double delta = (double)sizepercent / 100.0; //turn it into a double, and into something we can multiply. + DestSprite.SetSize(new Size((int)(DestSprite.GetSize.Width * delta), (int)(DestSprite.GetSize.Height * delta))); + DestSprite.SetName(SpriteName); + //We have created a new sprite. Now, return a duplicate of that sprite. + return DestSprite; + } } } diff --git a/SpriteLibrary/SpriteLibrary.csproj b/SpriteLibrary/SpriteLibrary.csproj index a3eb328..eda7b56 100644 --- a/SpriteLibrary/SpriteLibrary.csproj +++ b/SpriteLibrary/SpriteLibrary.csproj @@ -78,6 +78,9 @@ Resources.Designer.cs Designer + + SpriteEntryForm.cs + From 7d1883b7651fb2cec87c6648ae00a3bf16a57dba Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 16 Sep 2017 08:11:35 -0500 Subject: [PATCH 15/77] Add a save function --- SpriteLibrary/SpriteDatabase.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 90b0bc3..5e3475f 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -40,6 +40,22 @@ namespace SpriteLibrary LoadSpriteInfo(); } + internal void Save() + { + if(!DoesResourceExist(Filename)) + { + //we will try to save it as a file + try + { + WriteToXmlFile>(Filename, SpriteInfoList); + } + catch (Exception e) + { + throw new Exception("SpriteDatabase failed to save: Filename:" + Filename +"\n" + "ERROR: " + e.ToString(), e); + } + } + } + public void SetSnapGridSize(Size GridSize) { if (GridSize.Width <= 0) return; From 4f2d190b6c24b4cda24ec6d98bdcc19183a03483 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 16 Sep 2017 08:14:46 -0500 Subject: [PATCH 16/77] comment on save function --- SpriteLibrary/SpriteDatabase.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 5e3475f..2872998 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -40,7 +40,14 @@ namespace SpriteLibrary LoadSpriteInfo(); } - internal void Save() + /// + /// Tell the database to save the sprite definitions. Use this while you are creating your game. + /// When you are done, you will usually want to take your sprite definition file and add it to the + /// resources of your game. The resources cannot be saved to, so you cannot continue to add new sprites + /// once you are loading and saving them from a resources file. But, the resources file is included with + /// the program when you build it. + /// + public void Save() { if(!DoesResourceExist(Filename)) { From e9f1a9a3edde1a8cd4665948845aadc20edbbbee Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 16 Sep 2017 08:23:47 -0500 Subject: [PATCH 17/77] initial saving working (possibly) --- SpriteLibrary/SpriteDatabase.cs | 10 ++++++++-- SpriteLibrary/SpriteEntryForm.Designer.cs | 1 + SpriteLibrary/SpriteEntryForm.cs | 12 +++++++++--- SpriteLibrary/SpriteInfo.cs | 8 ++++---- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 2872998..86f7df9 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -22,11 +22,12 @@ namespace SpriteLibrary /// public class SpriteDatabase { - List SpriteInfoList = new List(); + public List SpriteInfoList = new List(); List TheImages = new List(); ResourceManager myResourceManager = null; string Filename = ""; Size SnapGridSize = new Size(5, 5); + int CurrentSIIndex = -1; //The information item we are editing. -1 means it is a new one. public SpriteDatabase(ResourceManager theResourceManager, string filename) { @@ -40,6 +41,11 @@ namespace SpriteLibrary LoadSpriteInfo(); } + internal ResourceManager GetResourceManager() + { + return myResourceManager; + } + /// /// Tell the database to save the sprite definitions. Use this while you are creating your game. /// When you are done, you will usually want to take your sprite definition file and add it to the @@ -115,7 +121,7 @@ namespace SpriteLibrary public void OpenEditWindow(int FirstItemIndex=-1) { - SpriteEntryForm SEF = new SpriteEntryForm(myResourceManager, SpriteInfoList, SnapGridSize); + SpriteEntryForm SEF = new SpriteEntryForm(this, SpriteInfoList, SnapGridSize); SEF.ShowDialog(); //Use the updated list returned from the form. SpriteInfoList.Clear(); diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 0759e7d..28400bb 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -247,6 +247,7 @@ this.MinimizeBox = false; this.Name = "SpriteEntryForm"; this.Text = "SpriteEntryForm"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SpriteEntryForm_FormClosing); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 26bafcc..8ece2de 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -22,12 +22,13 @@ namespace SpriteLibrary ResourceManager myResources = null; List SpriteInformation = new List(); Size SnapGridSize = new Size(5,5); + SpriteDatabase myDatabase = null; - internal SpriteEntryForm(ResourceManager theResourceManager, List ListToWorkOn, Size GridSize) + internal SpriteEntryForm(SpriteDatabase theDatabase, List ListToWorkOn, Size GridSize) { InitializeComponent(); - if (theResourceManager == null) throw new Exception("NullException: The ResourceManager passed to the SpriteEntryForm cannot be null. Pass it Properties.Resources.ResourceManager"); - myResources = theResourceManager; + myDatabase = theDatabase; + myResources = myDatabase.GetResourceManager(); SnapGridSize = GridSize; LocalSetup(); SpriteInformation.AddRange(ListToWorkOn); @@ -87,5 +88,10 @@ namespace SpriteLibrary } } } + + private void SpriteEntryForm_FormClosing(object sender, FormClosingEventArgs e) + { + myDatabase.Save(); //try saving the file + } } } diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index eea3962..6e313c1 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -35,11 +35,11 @@ namespace SpriteLibrary } } - internal class SpriteInfo + public class SpriteInfo { - public string SpriteName = ""; - public int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size - public List Animations = new List(); + internal string SpriteName = ""; + internal int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size + internal List Animations = new List(); /// /// A generic cloning method that works when everything is public From 7e22a57ca578714beef005a2f0babbad19330300 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 16 Sep 2017 15:18:49 -0500 Subject: [PATCH 18/77] move values to the correct place --- SpriteLibrary/SpriteDatabase.cs | 1 - SpriteLibrary/SpriteEntryForm.cs | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 86f7df9..361d22e 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -27,7 +27,6 @@ namespace SpriteLibrary ResourceManager myResourceManager = null; string Filename = ""; Size SnapGridSize = new Size(5, 5); - int CurrentSIIndex = -1; //The information item we are editing. -1 means it is a new one. public SpriteDatabase(ResourceManager theResourceManager, string filename) { diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 8ece2de..01c1c51 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -23,6 +23,8 @@ namespace SpriteLibrary List SpriteInformation = new List(); Size SnapGridSize = new Size(5,5); SpriteDatabase myDatabase = null; + int CurrentSIIndex = -1; //The information item we are editing. -1 means it is a new one. + int CurrentSIAnimation = -1; internal SpriteEntryForm(SpriteDatabase theDatabase, List ListToWorkOn, Size GridSize) { From c438320a5ede949c8df5f91bf064e1c99fbb20f2 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 16 Sep 2017 19:08:46 -0500 Subject: [PATCH 19/77] Set up an initial spriteinfo --- SpriteLibrary/SpriteEntryForm.Designer.cs | 279 +++++++++++++++++++--- SpriteLibrary/SpriteEntryForm.cs | 23 ++ 2 files changed, 268 insertions(+), 34 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 28400bb..0263fdc 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -39,7 +39,7 @@ this.btnDone = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button(); this.btnApply = new System.Windows.Forms.Button(); - this.btnNew = new System.Windows.Forms.Button(); + this.btnNewSprite = new System.Windows.Forms.Button(); this.tbAmimationSpeed = new System.Windows.Forms.TextBox(); this.lblAnimationSpeed = new System.Windows.Forms.Label(); this.lblDefaultSize = new System.Windows.Forms.Label(); @@ -47,7 +47,28 @@ this.btnBack = new System.Windows.Forms.Button(); this.btnFwd = new System.Windows.Forms.Button(); this.lblCountSprites = new System.Windows.Forms.Label(); + this.tpRotateMirror = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.panel1 = new System.Windows.Forms.Panel(); + this.rbFromImage = new System.Windows.Forms.RadioButton(); + this.rbRotation = new System.Windows.Forms.RadioButton(); + this.rbMirror = new System.Windows.Forms.RadioButton(); + this.btnNewAnimation = new System.Windows.Forms.Button(); + this.pbPreview = new System.Windows.Forms.PictureBox(); + this.btnPreview = new System.Windows.Forms.Button(); + this.cbAnimation = new System.Windows.Forms.ComboBox(); + this.lblWhichAnim = new System.Windows.Forms.Label(); + this.tbRotation = new System.Windows.Forms.TextBox(); + this.lblRotationDegrees = new System.Windows.Forms.Label(); + this.cbMirrorV = new System.Windows.Forms.CheckBox(); + this.cbMirrorH = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); + this.tpRotateMirror.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbPreview)).BeginInit(); this.SuspendLayout(); // // pbImageField @@ -57,14 +78,14 @@ this.pbImageField.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.pbImageField.Location = new System.Drawing.Point(5, 10); this.pbImageField.Name = "pbImageField"; - this.pbImageField.Size = new System.Drawing.Size(213, 253); + this.pbImageField.Size = new System.Drawing.Size(213, 306); this.pbImageField.TabIndex = 0; this.pbImageField.TabStop = false; // // cbStartingImage // this.cbStartingImage.FormattingEnabled = true; - this.cbStartingImage.Location = new System.Drawing.Point(349, 40); + this.cbStartingImage.Location = new System.Drawing.Point(128, 6); this.cbStartingImage.Name = "cbStartingImage"; this.cbStartingImage.Size = new System.Drawing.Size(131, 24); this.cbStartingImage.TabIndex = 1; @@ -73,7 +94,7 @@ // lblStartingImage // this.lblStartingImage.AutoSize = true; - this.lblStartingImage.Location = new System.Drawing.Point(244, 43); + this.lblStartingImage.Location = new System.Drawing.Point(23, 9); this.lblStartingImage.Name = "lblStartingImage"; this.lblStartingImage.Size = new System.Drawing.Size(99, 17); this.lblStartingImage.TabIndex = 2; @@ -82,7 +103,7 @@ // lblChosenArea // this.lblChosenArea.AutoSize = true; - this.lblChosenArea.Location = new System.Drawing.Point(350, 77); + this.lblChosenArea.Location = new System.Drawing.Point(129, 44); this.lblChosenArea.Name = "lblChosenArea"; this.lblChosenArea.Size = new System.Drawing.Size(46, 17); this.lblChosenArea.TabIndex = 3; @@ -90,7 +111,7 @@ // // tbNumFrames // - this.tbNumFrames.Location = new System.Drawing.Point(349, 109); + this.tbNumFrames.Location = new System.Drawing.Point(128, 75); this.tbNumFrames.Name = "tbNumFrames"; this.tbNumFrames.Size = new System.Drawing.Size(47, 22); this.tbNumFrames.TabIndex = 4; @@ -98,7 +119,7 @@ // lblFrames // this.lblFrames.AutoSize = true; - this.lblFrames.Location = new System.Drawing.Point(288, 109); + this.lblFrames.Location = new System.Drawing.Point(67, 75); this.lblFrames.Name = "lblFrames"; this.lblFrames.Size = new System.Drawing.Size(55, 17); this.lblFrames.TabIndex = 5; @@ -106,7 +127,7 @@ // // tbSpriteName // - this.tbSpriteName.Location = new System.Drawing.Point(349, 10); + this.tbSpriteName.Location = new System.Drawing.Point(356, 10); this.tbSpriteName.Name = "tbSpriteName"; this.tbSpriteName.Size = new System.Drawing.Size(100, 22); this.tbSpriteName.TabIndex = 6; @@ -114,7 +135,7 @@ // lblSpriteName // this.lblSpriteName.AutoSize = true; - this.lblSpriteName.Location = new System.Drawing.Point(251, 14); + this.lblSpriteName.Location = new System.Drawing.Point(258, 14); this.lblSpriteName.Name = "lblSpriteName"; this.lblSpriteName.Size = new System.Drawing.Size(86, 17); this.lblSpriteName.TabIndex = 7; @@ -122,7 +143,7 @@ // // btnDone // - this.btnDone.Location = new System.Drawing.Point(434, 259); + this.btnDone.Location = new System.Drawing.Point(421, 309); this.btnDone.Name = "btnDone"; this.btnDone.Size = new System.Drawing.Size(75, 23); this.btnDone.TabIndex = 8; @@ -132,7 +153,7 @@ // btnCancel // this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(353, 259); + this.btnCancel.Location = new System.Drawing.Point(340, 309); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 23); this.btnCancel.TabIndex = 9; @@ -141,25 +162,25 @@ // // btnApply // - this.btnApply.Location = new System.Drawing.Point(434, 230); + this.btnApply.Location = new System.Drawing.Point(340, 280); this.btnApply.Name = "btnApply"; this.btnApply.Size = new System.Drawing.Size(75, 23); this.btnApply.TabIndex = 10; this.btnApply.Text = "Apply"; this.btnApply.UseVisualStyleBackColor = true; // - // btnNew + // btnNewSprite // - this.btnNew.Location = new System.Drawing.Point(353, 230); - this.btnNew.Name = "btnNew"; - this.btnNew.Size = new System.Drawing.Size(75, 23); - this.btnNew.TabIndex = 11; - this.btnNew.Text = "New"; - this.btnNew.UseVisualStyleBackColor = true; + this.btnNewSprite.Location = new System.Drawing.Point(238, 280); + this.btnNewSprite.Name = "btnNewSprite"; + this.btnNewSprite.Size = new System.Drawing.Size(92, 23); + this.btnNewSprite.TabIndex = 11; + this.btnNewSprite.Text = "New Sprite"; + this.btnNewSprite.UseVisualStyleBackColor = true; // // tbAmimationSpeed // - this.tbAmimationSpeed.Location = new System.Drawing.Point(349, 145); + this.tbAmimationSpeed.Location = new System.Drawing.Point(356, 207); this.tbAmimationSpeed.Name = "tbAmimationSpeed"; this.tbAmimationSpeed.Size = new System.Drawing.Size(100, 22); this.tbAmimationSpeed.TabIndex = 12; @@ -167,7 +188,7 @@ // lblAnimationSpeed // this.lblAnimationSpeed.AutoSize = true; - this.lblAnimationSpeed.Location = new System.Drawing.Point(228, 148); + this.lblAnimationSpeed.Location = new System.Drawing.Point(235, 210); this.lblAnimationSpeed.Name = "lblAnimationSpeed"; this.lblAnimationSpeed.Size = new System.Drawing.Size(115, 17); this.lblAnimationSpeed.TabIndex = 13; @@ -176,7 +197,7 @@ // lblDefaultSize // this.lblDefaultSize.AutoSize = true; - this.lblDefaultSize.Location = new System.Drawing.Point(261, 188); + this.lblDefaultSize.Location = new System.Drawing.Point(268, 249); this.lblDefaultSize.Name = "lblDefaultSize"; this.lblDefaultSize.Size = new System.Drawing.Size(84, 17); this.lblDefaultSize.TabIndex = 14; @@ -184,14 +205,15 @@ // // tbDefaultSize // - this.tbDefaultSize.Location = new System.Drawing.Point(349, 185); + this.tbDefaultSize.Location = new System.Drawing.Point(356, 246); this.tbDefaultSize.Name = "tbDefaultSize"; this.tbDefaultSize.Size = new System.Drawing.Size(100, 22); this.tbDefaultSize.TabIndex = 15; // // btnBack // - this.btnBack.Location = new System.Drawing.Point(43, 269); + this.btnBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnBack.Location = new System.Drawing.Point(49, 322); this.btnBack.Name = "btnBack"; this.btnBack.Size = new System.Drawing.Size(29, 23); this.btnBack.TabIndex = 16; @@ -200,7 +222,8 @@ // // btnFwd // - this.btnFwd.Location = new System.Drawing.Point(125, 269); + this.btnFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnFwd.Location = new System.Drawing.Point(131, 322); this.btnFwd.Name = "btnFwd"; this.btnFwd.Size = new System.Drawing.Size(29, 23); this.btnFwd.TabIndex = 17; @@ -209,20 +232,189 @@ // // lblCountSprites // + this.lblCountSprites.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.lblCountSprites.AutoSize = true; - this.lblCountSprites.Location = new System.Drawing.Point(89, 272); + this.lblCountSprites.Location = new System.Drawing.Point(95, 325); this.lblCountSprites.Name = "lblCountSprites"; this.lblCountSprites.Size = new System.Drawing.Size(16, 17); this.lblCountSprites.TabIndex = 18; this.lblCountSprites.Text = "0"; // + // tpRotateMirror + // + this.tpRotateMirror.Controls.Add(this.tabPage1); + this.tpRotateMirror.Controls.Add(this.tabPage2); + this.tpRotateMirror.Location = new System.Drawing.Point(224, 58); + this.tpRotateMirror.Name = "tpRotateMirror"; + this.tpRotateMirror.SelectedIndex = 0; + this.tpRotateMirror.Size = new System.Drawing.Size(282, 143); + this.tpRotateMirror.TabIndex = 19; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.cbStartingImage); + this.tabPage1.Controls.Add(this.lblStartingImage); + this.tabPage1.Controls.Add(this.lblChosenArea); + this.tabPage1.Controls.Add(this.tbNumFrames); + this.tabPage1.Controls.Add(this.lblFrames); + this.tabPage1.Location = new System.Drawing.Point(4, 25); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(274, 114); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "tpFromImage"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.cbMirrorH); + this.tabPage2.Controls.Add(this.cbMirrorV); + this.tabPage2.Controls.Add(this.lblRotationDegrees); + this.tabPage2.Controls.Add(this.tbRotation); + this.tabPage2.Controls.Add(this.lblWhichAnim); + this.tabPage2.Controls.Add(this.cbAnimation); + this.tabPage2.Location = new System.Drawing.Point(4, 25); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(274, 114); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "tabPage2"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // panel1 + // + this.panel1.Controls.Add(this.rbMirror); + this.panel1.Controls.Add(this.rbRotation); + this.panel1.Controls.Add(this.rbFromImage); + this.panel1.Location = new System.Drawing.Point(224, 31); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(277, 27); + this.panel1.TabIndex = 20; + // + // rbFromImage + // + this.rbFromImage.AutoSize = true; + this.rbFromImage.Location = new System.Drawing.Point(14, 3); + this.rbFromImage.Name = "rbFromImage"; + this.rbFromImage.Size = new System.Drawing.Size(103, 21); + this.rbFromImage.TabIndex = 0; + this.rbFromImage.TabStop = true; + this.rbFromImage.Text = "From Image"; + this.rbFromImage.UseVisualStyleBackColor = true; + // + // rbRotation + // + this.rbRotation.AutoSize = true; + this.rbRotation.Location = new System.Drawing.Point(120, 3); + this.rbRotation.Name = "rbRotation"; + this.rbRotation.Size = new System.Drawing.Size(71, 21); + this.rbRotation.TabIndex = 1; + this.rbRotation.TabStop = true; + this.rbRotation.Text = "Rotate"; + this.rbRotation.UseVisualStyleBackColor = true; + // + // rbMirror + // + this.rbMirror.AutoSize = true; + this.rbMirror.Location = new System.Drawing.Point(197, 3); + this.rbMirror.Name = "rbMirror"; + this.rbMirror.Size = new System.Drawing.Size(66, 21); + this.rbMirror.TabIndex = 2; + this.rbMirror.TabStop = true; + this.rbMirror.Text = "Mirror"; + this.rbMirror.UseVisualStyleBackColor = true; + // + // btnNewAnimation + // + this.btnNewAnimation.Location = new System.Drawing.Point(238, 309); + this.btnNewAnimation.Name = "btnNewAnimation"; + this.btnNewAnimation.Size = new System.Drawing.Size(92, 23); + this.btnNewAnimation.TabIndex = 21; + this.btnNewAnimation.Text = "New Anim"; + this.btnNewAnimation.UseVisualStyleBackColor = true; + // + // pbPreview + // + this.pbPreview.Location = new System.Drawing.Point(512, 31); + this.pbPreview.Name = "pbPreview"; + this.pbPreview.Size = new System.Drawing.Size(91, 77); + this.pbPreview.TabIndex = 22; + this.pbPreview.TabStop = false; + // + // btnPreview + // + this.btnPreview.Location = new System.Drawing.Point(527, 114); + this.btnPreview.Name = "btnPreview"; + this.btnPreview.Size = new System.Drawing.Size(75, 23); + this.btnPreview.TabIndex = 23; + this.btnPreview.Text = "Preview"; + this.btnPreview.UseVisualStyleBackColor = true; + // + // cbAnimation + // + this.cbAnimation.FormattingEnabled = true; + this.cbAnimation.Location = new System.Drawing.Point(128, 18); + this.cbAnimation.Name = "cbAnimation"; + this.cbAnimation.Size = new System.Drawing.Size(100, 24); + this.cbAnimation.TabIndex = 0; + // + // lblWhichAnim + // + this.lblWhichAnim.AutoSize = true; + this.lblWhichAnim.Location = new System.Drawing.Point(38, 8); + this.lblWhichAnim.Name = "lblWhichAnim"; + this.lblWhichAnim.Size = new System.Drawing.Size(78, 34); + this.lblWhichAnim.TabIndex = 1; + this.lblWhichAnim.Text = "Based Off\r\nAnimation#"; + // + // tbRotation + // + this.tbRotation.Location = new System.Drawing.Point(128, 58); + this.tbRotation.Name = "tbRotation"; + this.tbRotation.Size = new System.Drawing.Size(100, 22); + this.tbRotation.TabIndex = 2; + // + // lblRotationDegrees + // + this.lblRotationDegrees.AutoSize = true; + this.lblRotationDegrees.Location = new System.Drawing.Point(54, 61); + this.lblRotationDegrees.Name = "lblRotationDegrees"; + this.lblRotationDegrees.Size = new System.Drawing.Size(62, 17); + this.lblRotationDegrees.TabIndex = 3; + this.lblRotationDegrees.Text = "Degrees"; + // + // cbMirrorV + // + this.cbMirrorV.AutoSize = true; + this.cbMirrorV.Location = new System.Drawing.Point(148, 87); + this.cbMirrorV.Name = "cbMirrorV"; + this.cbMirrorV.Size = new System.Drawing.Size(80, 21); + this.cbMirrorV.TabIndex = 4; + this.cbMirrorV.Text = "Mirror V"; + this.cbMirrorV.UseVisualStyleBackColor = true; + // + // cbMirrorH + // + this.cbMirrorH.AutoSize = true; + this.cbMirrorH.Location = new System.Drawing.Point(35, 87); + this.cbMirrorH.Name = "cbMirrorH"; + this.cbMirrorH.Size = new System.Drawing.Size(81, 21); + this.cbMirrorH.TabIndex = 5; + this.cbMirrorH.Text = "Mirror H"; + this.cbMirrorH.UseVisualStyleBackColor = true; + // // SpriteEntryForm // this.AcceptButton = this.btnApply; this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnCancel; - this.ClientSize = new System.Drawing.Size(524, 294); + this.ClientSize = new System.Drawing.Size(614, 347); + this.Controls.Add(this.btnPreview); + this.Controls.Add(this.pbPreview); + this.Controls.Add(this.btnNewAnimation); + this.Controls.Add(this.panel1); + this.Controls.Add(this.tpRotateMirror); this.Controls.Add(this.lblCountSprites); this.Controls.Add(this.btnFwd); this.Controls.Add(this.btnBack); @@ -230,17 +422,12 @@ this.Controls.Add(this.lblDefaultSize); this.Controls.Add(this.lblAnimationSpeed); this.Controls.Add(this.tbAmimationSpeed); - this.Controls.Add(this.btnNew); + this.Controls.Add(this.btnNewSprite); this.Controls.Add(this.btnApply); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnDone); this.Controls.Add(this.lblSpriteName); this.Controls.Add(this.tbSpriteName); - this.Controls.Add(this.lblFrames); - this.Controls.Add(this.tbNumFrames); - this.Controls.Add(this.lblChosenArea); - this.Controls.Add(this.lblStartingImage); - this.Controls.Add(this.cbStartingImage); this.Controls.Add(this.pbImageField); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; this.MaximizeBox = false; @@ -249,6 +436,14 @@ this.Text = "SpriteEntryForm"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SpriteEntryForm_FormClosing); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).EndInit(); + this.tpRotateMirror.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbPreview)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -267,7 +462,7 @@ private System.Windows.Forms.Button btnDone; private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnApply; - private System.Windows.Forms.Button btnNew; + private System.Windows.Forms.Button btnNewSprite; private System.Windows.Forms.TextBox tbAmimationSpeed; private System.Windows.Forms.Label lblAnimationSpeed; private System.Windows.Forms.Label lblDefaultSize; @@ -275,5 +470,21 @@ private System.Windows.Forms.Button btnBack; private System.Windows.Forms.Button btnFwd; private System.Windows.Forms.Label lblCountSprites; + private System.Windows.Forms.TabControl tpRotateMirror; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.RadioButton rbMirror; + private System.Windows.Forms.RadioButton rbRotation; + private System.Windows.Forms.RadioButton rbFromImage; + private System.Windows.Forms.Button btnNewAnimation; + private System.Windows.Forms.PictureBox pbPreview; + private System.Windows.Forms.Button btnPreview; + private System.Windows.Forms.CheckBox cbMirrorH; + private System.Windows.Forms.CheckBox cbMirrorV; + private System.Windows.Forms.Label lblRotationDegrees; + private System.Windows.Forms.TextBox tbRotation; + private System.Windows.Forms.Label lblWhichAnim; + private System.Windows.Forms.ComboBox cbAnimation; } } \ No newline at end of file diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 01c1c51..0900b98 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -21,6 +21,7 @@ namespace SpriteLibrary SpriteController MyController; ResourceManager myResources = null; List SpriteInformation = new List(); + SpriteInfo TempInformation = null; Size SnapGridSize = new Size(5,5); SpriteDatabase myDatabase = null; int CurrentSIIndex = -1; //The information item we are editing. -1 means it is a new one. @@ -40,6 +41,7 @@ namespace SpriteLibrary { pbImageField.BackgroundImageLayout = ImageLayout.Stretch; MyController = new SpriteController(pbImageField); + UpdateMenu(); PopulateMenu(); } @@ -72,6 +74,27 @@ namespace SpriteLibrary cbStartingImage.SelectedIndex = 0; } + private void UpdateMenu() + { + lblCountSprites.Text = SpriteInformation.Count.ToString(); + if (TempInformation == null) SetUpEmptyInfo(); + } + + private void SetUpEmptyInfo() + { + TempInformation = new SpriteInfo(); + TempInformation.SpriteName = ""; + TempInformation.ViewPercent = 100; + AnimationInfo AI = new AnimationInfo(); + AI.AnimSpeed = 200; + AI.FieldsToUse = AnimationType.SpriteDefinition; + AI.Height = 100; + AI.Width = 100; + AI.StartPoint = new Point(0, 0); + AI.ViewPercent = 100; + TempInformation.Animations.Add(AI); + } + private void cbStartingImage_SelectedIndexChanged(object sender, EventArgs e) { ResourceManager rm; From 32c3fa21a734e9314e393a5060444a7d7542343b Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 17 Sep 2017 08:13:04 -0500 Subject: [PATCH 20/77] more work on the form --- SpriteLibrary/SpriteEntryForm.Designer.cs | 290 +++++++++++----------- SpriteLibrary/SpriteEntryForm.cs | 65 ++++- SpriteLibrary/SpriteInfo.cs | 5 +- 3 files changed, 210 insertions(+), 150 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 0263fdc..d494504 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -47,27 +47,27 @@ this.btnBack = new System.Windows.Forms.Button(); this.btnFwd = new System.Windows.Forms.Button(); this.lblCountSprites = new System.Windows.Forms.Label(); - this.tpRotateMirror = new System.Windows.Forms.TabControl(); - this.tabPage1 = new System.Windows.Forms.TabPage(); - this.tabPage2 = new System.Windows.Forms.TabPage(); - this.panel1 = new System.Windows.Forms.Panel(); - this.rbFromImage = new System.Windows.Forms.RadioButton(); - this.rbRotation = new System.Windows.Forms.RadioButton(); + this.TCTabPages = new System.Windows.Forms.TabControl(); + this.tpFromImage = new System.Windows.Forms.TabPage(); + this.tpMirrorRotate = new System.Windows.Forms.TabPage(); + this.cbMirrorH = new System.Windows.Forms.CheckBox(); + this.cbMirrorV = new System.Windows.Forms.CheckBox(); + this.lblRotationDegrees = new System.Windows.Forms.Label(); + this.tbRotation = new System.Windows.Forms.TextBox(); + this.lblWhichAnim = new System.Windows.Forms.Label(); + this.cbAnimation = new System.Windows.Forms.ComboBox(); + this.panelRadioButtons = new System.Windows.Forms.Panel(); this.rbMirror = new System.Windows.Forms.RadioButton(); + this.rbRotation = new System.Windows.Forms.RadioButton(); + this.rbFromImage = new System.Windows.Forms.RadioButton(); this.btnNewAnimation = new System.Windows.Forms.Button(); this.pbPreview = new System.Windows.Forms.PictureBox(); this.btnPreview = new System.Windows.Forms.Button(); - this.cbAnimation = new System.Windows.Forms.ComboBox(); - this.lblWhichAnim = new System.Windows.Forms.Label(); - this.tbRotation = new System.Windows.Forms.TextBox(); - this.lblRotationDegrees = new System.Windows.Forms.Label(); - this.cbMirrorV = new System.Windows.Forms.CheckBox(); - this.cbMirrorH = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); - this.tpRotateMirror.SuspendLayout(); - this.tabPage1.SuspendLayout(); - this.tabPage2.SuspendLayout(); - this.panel1.SuspendLayout(); + this.TCTabPages.SuspendLayout(); + this.tpFromImage.SuspendLayout(); + this.tpMirrorRotate.SuspendLayout(); + this.panelRadioButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbPreview)).BeginInit(); this.SuspendLayout(); // @@ -180,7 +180,7 @@ // // tbAmimationSpeed // - this.tbAmimationSpeed.Location = new System.Drawing.Point(356, 207); + this.tbAmimationSpeed.Location = new System.Drawing.Point(356, 217); this.tbAmimationSpeed.Name = "tbAmimationSpeed"; this.tbAmimationSpeed.Size = new System.Drawing.Size(100, 22); this.tbAmimationSpeed.TabIndex = 12; @@ -188,7 +188,7 @@ // lblAnimationSpeed // this.lblAnimationSpeed.AutoSize = true; - this.lblAnimationSpeed.Location = new System.Drawing.Point(235, 210); + this.lblAnimationSpeed.Location = new System.Drawing.Point(235, 220); this.lblAnimationSpeed.Name = "lblAnimationSpeed"; this.lblAnimationSpeed.Size = new System.Drawing.Size(115, 17); this.lblAnimationSpeed.TabIndex = 13; @@ -240,67 +240,120 @@ this.lblCountSprites.TabIndex = 18; this.lblCountSprites.Text = "0"; // - // tpRotateMirror + // TCTabPages // - this.tpRotateMirror.Controls.Add(this.tabPage1); - this.tpRotateMirror.Controls.Add(this.tabPage2); - this.tpRotateMirror.Location = new System.Drawing.Point(224, 58); - this.tpRotateMirror.Name = "tpRotateMirror"; - this.tpRotateMirror.SelectedIndex = 0; - this.tpRotateMirror.Size = new System.Drawing.Size(282, 143); - this.tpRotateMirror.TabIndex = 19; + this.TCTabPages.Controls.Add(this.tpFromImage); + this.TCTabPages.Controls.Add(this.tpMirrorRotate); + this.TCTabPages.Location = new System.Drawing.Point(224, 68); + this.TCTabPages.Name = "TCTabPages"; + this.TCTabPages.SelectedIndex = 0; + this.TCTabPages.Size = new System.Drawing.Size(282, 143); + this.TCTabPages.TabIndex = 19; // - // tabPage1 + // tpFromImage // - this.tabPage1.Controls.Add(this.cbStartingImage); - this.tabPage1.Controls.Add(this.lblStartingImage); - this.tabPage1.Controls.Add(this.lblChosenArea); - this.tabPage1.Controls.Add(this.tbNumFrames); - this.tabPage1.Controls.Add(this.lblFrames); - this.tabPage1.Location = new System.Drawing.Point(4, 25); - this.tabPage1.Name = "tabPage1"; - this.tabPage1.Padding = new System.Windows.Forms.Padding(3); - this.tabPage1.Size = new System.Drawing.Size(274, 114); - this.tabPage1.TabIndex = 0; - this.tabPage1.Text = "tpFromImage"; - this.tabPage1.UseVisualStyleBackColor = true; + this.tpFromImage.Controls.Add(this.cbStartingImage); + this.tpFromImage.Controls.Add(this.lblStartingImage); + this.tpFromImage.Controls.Add(this.lblChosenArea); + this.tpFromImage.Controls.Add(this.tbNumFrames); + this.tpFromImage.Controls.Add(this.lblFrames); + this.tpFromImage.Location = new System.Drawing.Point(4, 25); + this.tpFromImage.Name = "tpFromImage"; + this.tpFromImage.Padding = new System.Windows.Forms.Padding(3); + this.tpFromImage.Size = new System.Drawing.Size(274, 114); + this.tpFromImage.TabIndex = 0; + this.tpFromImage.Text = "From Image"; + this.tpFromImage.UseVisualStyleBackColor = true; // - // tabPage2 + // tpMirrorRotate // - this.tabPage2.Controls.Add(this.cbMirrorH); - this.tabPage2.Controls.Add(this.cbMirrorV); - this.tabPage2.Controls.Add(this.lblRotationDegrees); - this.tabPage2.Controls.Add(this.tbRotation); - this.tabPage2.Controls.Add(this.lblWhichAnim); - this.tabPage2.Controls.Add(this.cbAnimation); - this.tabPage2.Location = new System.Drawing.Point(4, 25); - this.tabPage2.Name = "tabPage2"; - this.tabPage2.Padding = new System.Windows.Forms.Padding(3); - this.tabPage2.Size = new System.Drawing.Size(274, 114); - this.tabPage2.TabIndex = 1; - this.tabPage2.Text = "tabPage2"; - this.tabPage2.UseVisualStyleBackColor = true; + this.tpMirrorRotate.Controls.Add(this.cbMirrorH); + this.tpMirrorRotate.Controls.Add(this.cbMirrorV); + this.tpMirrorRotate.Controls.Add(this.lblRotationDegrees); + this.tpMirrorRotate.Controls.Add(this.tbRotation); + this.tpMirrorRotate.Controls.Add(this.lblWhichAnim); + this.tpMirrorRotate.Controls.Add(this.cbAnimation); + this.tpMirrorRotate.Location = new System.Drawing.Point(4, 25); + this.tpMirrorRotate.Name = "tpMirrorRotate"; + this.tpMirrorRotate.Padding = new System.Windows.Forms.Padding(3); + this.tpMirrorRotate.Size = new System.Drawing.Size(274, 114); + this.tpMirrorRotate.TabIndex = 1; + this.tpMirrorRotate.Text = "Mirror / Rotation"; + this.tpMirrorRotate.UseVisualStyleBackColor = true; // - // panel1 + // cbMirrorH // - this.panel1.Controls.Add(this.rbMirror); - this.panel1.Controls.Add(this.rbRotation); - this.panel1.Controls.Add(this.rbFromImage); - this.panel1.Location = new System.Drawing.Point(224, 31); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(277, 27); - this.panel1.TabIndex = 20; + this.cbMirrorH.AutoSize = true; + this.cbMirrorH.Location = new System.Drawing.Point(35, 87); + this.cbMirrorH.Name = "cbMirrorH"; + this.cbMirrorH.Size = new System.Drawing.Size(81, 21); + this.cbMirrorH.TabIndex = 5; + this.cbMirrorH.Text = "Mirror H"; + this.cbMirrorH.UseVisualStyleBackColor = true; // - // rbFromImage + // cbMirrorV // - this.rbFromImage.AutoSize = true; - this.rbFromImage.Location = new System.Drawing.Point(14, 3); - this.rbFromImage.Name = "rbFromImage"; - this.rbFromImage.Size = new System.Drawing.Size(103, 21); - this.rbFromImage.TabIndex = 0; - this.rbFromImage.TabStop = true; - this.rbFromImage.Text = "From Image"; - this.rbFromImage.UseVisualStyleBackColor = true; + this.cbMirrorV.AutoSize = true; + this.cbMirrorV.Location = new System.Drawing.Point(148, 87); + this.cbMirrorV.Name = "cbMirrorV"; + this.cbMirrorV.Size = new System.Drawing.Size(80, 21); + this.cbMirrorV.TabIndex = 4; + this.cbMirrorV.Text = "Mirror V"; + this.cbMirrorV.UseVisualStyleBackColor = true; + // + // lblRotationDegrees + // + this.lblRotationDegrees.AutoSize = true; + this.lblRotationDegrees.Location = new System.Drawing.Point(54, 61); + this.lblRotationDegrees.Name = "lblRotationDegrees"; + this.lblRotationDegrees.Size = new System.Drawing.Size(62, 17); + this.lblRotationDegrees.TabIndex = 3; + this.lblRotationDegrees.Text = "Degrees"; + // + // tbRotation + // + this.tbRotation.Location = new System.Drawing.Point(128, 58); + this.tbRotation.Name = "tbRotation"; + this.tbRotation.Size = new System.Drawing.Size(100, 22); + this.tbRotation.TabIndex = 2; + // + // lblWhichAnim + // + this.lblWhichAnim.AutoSize = true; + this.lblWhichAnim.Location = new System.Drawing.Point(38, 8); + this.lblWhichAnim.Name = "lblWhichAnim"; + this.lblWhichAnim.Size = new System.Drawing.Size(78, 34); + this.lblWhichAnim.TabIndex = 1; + this.lblWhichAnim.Text = "Based Off\r\nAnimation#"; + // + // cbAnimation + // + this.cbAnimation.FormattingEnabled = true; + this.cbAnimation.Location = new System.Drawing.Point(128, 18); + this.cbAnimation.Name = "cbAnimation"; + this.cbAnimation.Size = new System.Drawing.Size(100, 24); + this.cbAnimation.TabIndex = 0; + // + // panelRadioButtons + // + this.panelRadioButtons.Controls.Add(this.rbMirror); + this.panelRadioButtons.Controls.Add(this.rbRotation); + this.panelRadioButtons.Controls.Add(this.rbFromImage); + this.panelRadioButtons.Location = new System.Drawing.Point(224, 35); + this.panelRadioButtons.Name = "panelRadioButtons"; + this.panelRadioButtons.Size = new System.Drawing.Size(277, 27); + this.panelRadioButtons.TabIndex = 20; + // + // rbMirror + // + this.rbMirror.AutoSize = true; + this.rbMirror.Location = new System.Drawing.Point(197, 3); + this.rbMirror.Name = "rbMirror"; + this.rbMirror.Size = new System.Drawing.Size(66, 21); + this.rbMirror.TabIndex = 2; + this.rbMirror.TabStop = true; + this.rbMirror.Text = "Mirror"; + this.rbMirror.UseVisualStyleBackColor = true; // // rbRotation // @@ -313,16 +366,16 @@ this.rbRotation.Text = "Rotate"; this.rbRotation.UseVisualStyleBackColor = true; // - // rbMirror + // rbFromImage // - this.rbMirror.AutoSize = true; - this.rbMirror.Location = new System.Drawing.Point(197, 3); - this.rbMirror.Name = "rbMirror"; - this.rbMirror.Size = new System.Drawing.Size(66, 21); - this.rbMirror.TabIndex = 2; - this.rbMirror.TabStop = true; - this.rbMirror.Text = "Mirror"; - this.rbMirror.UseVisualStyleBackColor = true; + this.rbFromImage.AutoSize = true; + this.rbFromImage.Location = new System.Drawing.Point(14, 3); + this.rbFromImage.Name = "rbFromImage"; + this.rbFromImage.Size = new System.Drawing.Size(103, 21); + this.rbFromImage.TabIndex = 0; + this.rbFromImage.TabStop = true; + this.rbFromImage.Text = "From Image"; + this.rbFromImage.UseVisualStyleBackColor = true; // // btnNewAnimation // @@ -350,59 +403,6 @@ this.btnPreview.Text = "Preview"; this.btnPreview.UseVisualStyleBackColor = true; // - // cbAnimation - // - this.cbAnimation.FormattingEnabled = true; - this.cbAnimation.Location = new System.Drawing.Point(128, 18); - this.cbAnimation.Name = "cbAnimation"; - this.cbAnimation.Size = new System.Drawing.Size(100, 24); - this.cbAnimation.TabIndex = 0; - // - // lblWhichAnim - // - this.lblWhichAnim.AutoSize = true; - this.lblWhichAnim.Location = new System.Drawing.Point(38, 8); - this.lblWhichAnim.Name = "lblWhichAnim"; - this.lblWhichAnim.Size = new System.Drawing.Size(78, 34); - this.lblWhichAnim.TabIndex = 1; - this.lblWhichAnim.Text = "Based Off\r\nAnimation#"; - // - // tbRotation - // - this.tbRotation.Location = new System.Drawing.Point(128, 58); - this.tbRotation.Name = "tbRotation"; - this.tbRotation.Size = new System.Drawing.Size(100, 22); - this.tbRotation.TabIndex = 2; - // - // lblRotationDegrees - // - this.lblRotationDegrees.AutoSize = true; - this.lblRotationDegrees.Location = new System.Drawing.Point(54, 61); - this.lblRotationDegrees.Name = "lblRotationDegrees"; - this.lblRotationDegrees.Size = new System.Drawing.Size(62, 17); - this.lblRotationDegrees.TabIndex = 3; - this.lblRotationDegrees.Text = "Degrees"; - // - // cbMirrorV - // - this.cbMirrorV.AutoSize = true; - this.cbMirrorV.Location = new System.Drawing.Point(148, 87); - this.cbMirrorV.Name = "cbMirrorV"; - this.cbMirrorV.Size = new System.Drawing.Size(80, 21); - this.cbMirrorV.TabIndex = 4; - this.cbMirrorV.Text = "Mirror V"; - this.cbMirrorV.UseVisualStyleBackColor = true; - // - // cbMirrorH - // - this.cbMirrorH.AutoSize = true; - this.cbMirrorH.Location = new System.Drawing.Point(35, 87); - this.cbMirrorH.Name = "cbMirrorH"; - this.cbMirrorH.Size = new System.Drawing.Size(81, 21); - this.cbMirrorH.TabIndex = 5; - this.cbMirrorH.Text = "Mirror H"; - this.cbMirrorH.UseVisualStyleBackColor = true; - // // SpriteEntryForm // this.AcceptButton = this.btnApply; @@ -413,8 +413,8 @@ this.Controls.Add(this.btnPreview); this.Controls.Add(this.pbPreview); this.Controls.Add(this.btnNewAnimation); - this.Controls.Add(this.panel1); - this.Controls.Add(this.tpRotateMirror); + this.Controls.Add(this.panelRadioButtons); + this.Controls.Add(this.TCTabPages); this.Controls.Add(this.lblCountSprites); this.Controls.Add(this.btnFwd); this.Controls.Add(this.btnBack); @@ -436,13 +436,13 @@ this.Text = "SpriteEntryForm"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SpriteEntryForm_FormClosing); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).EndInit(); - this.tpRotateMirror.ResumeLayout(false); - this.tabPage1.ResumeLayout(false); - this.tabPage1.PerformLayout(); - this.tabPage2.ResumeLayout(false); - this.tabPage2.PerformLayout(); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); + this.TCTabPages.ResumeLayout(false); + this.tpFromImage.ResumeLayout(false); + this.tpFromImage.PerformLayout(); + this.tpMirrorRotate.ResumeLayout(false); + this.tpMirrorRotate.PerformLayout(); + this.panelRadioButtons.ResumeLayout(false); + this.panelRadioButtons.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbPreview)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -470,10 +470,10 @@ private System.Windows.Forms.Button btnBack; private System.Windows.Forms.Button btnFwd; private System.Windows.Forms.Label lblCountSprites; - private System.Windows.Forms.TabControl tpRotateMirror; - private System.Windows.Forms.TabPage tabPage1; - private System.Windows.Forms.TabPage tabPage2; - private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TabControl TCTabPages; + private System.Windows.Forms.TabPage tpFromImage; + private System.Windows.Forms.TabPage tpMirrorRotate; + private System.Windows.Forms.Panel panelRadioButtons; private System.Windows.Forms.RadioButton rbMirror; private System.Windows.Forms.RadioButton rbRotation; private System.Windows.Forms.RadioButton rbFromImage; diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 0900b98..f2c449b 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -41,8 +41,10 @@ namespace SpriteLibrary { pbImageField.BackgroundImageLayout = ImageLayout.Stretch; MyController = new SpriteController(pbImageField); - UpdateMenu(); PopulateMenu(); + UpdateMenu(); + SpriteInformationToForm(); + UpdateMenu(); } internal List GetUpdatedList() @@ -76,8 +78,38 @@ namespace SpriteLibrary private void UpdateMenu() { + SuspendLayout(); lblCountSprites.Text = SpriteInformation.Count.ToString(); if (TempInformation == null) SetUpEmptyInfo(); + + //Put in numbers into the combo-box of which frame to base ourselves off of + cbAnimation.Items.Clear(); + for(int i =0; i < TempInformation.Animations.Count; i++) + { + cbAnimation.Items.Add(i.ToString()); + } + if (CurrentSIAnimation == 0) + { + rbFromImage.Checked = true; + panelRadioButtons.Visible = false; + } + else + panelRadioButtons.Visible = true; + if(rbFromImage.Checked) + { + if(!TCTabPages.TabPages.Contains(tpFromImage)) + TCTabPages.TabPages.Add(tpFromImage); + if (TCTabPages.TabPages.Contains(tpMirrorRotate)) + TCTabPages.TabPages.Remove(tpMirrorRotate); + } + else + { + if (TCTabPages.TabPages.Contains(tpFromImage)) + TCTabPages.TabPages.Remove(tpFromImage); + if (!TCTabPages.TabPages.Contains(tpMirrorRotate)) + TCTabPages.TabPages.Add(tpMirrorRotate); + } + ResumeLayout(); } private void SetUpEmptyInfo() @@ -91,7 +123,6 @@ namespace SpriteLibrary AI.Height = 100; AI.Width = 100; AI.StartPoint = new Point(0, 0); - AI.ViewPercent = 100; TempInformation.Animations.Add(AI); } @@ -114,6 +145,36 @@ namespace SpriteLibrary } } + /// + /// Take the values stored in TempInformation and push it out to our form + /// + private void SpriteInformationToForm() + { + if (TempInformation == null) return; + //For the main sprite information + tbSpriteName.Text = TempInformation.SpriteName; + tbDefaultSize.Text = TempInformation.ViewPercent.ToString(); + + //From the current animation + AnimationInfo AI = null; + if (CurrentSIAnimation < 0) CurrentSIAnimation = 0; + if (CurrentSIAnimation >= TempInformation.Animations.Count) CurrentSIAnimation = TempInformation.Animations.Count -1; + if (CurrentSIAnimation < TempInformation.Animations.Count) + { + AI = TempInformation.Animations[CurrentSIAnimation]; + tbAmimationSpeed.Text = AI.AnimSpeed.ToString(); + cbStartingImage.Text = AI.ImageName; + cbMirrorH.Checked = AI.MirrorHorizontally; + cbMirrorV.Checked = AI.MirrorVertically; + cbAnimation.Text = AI.AnimationToUse.ToString(); + tbNumFrames.Text = AI.NumFrames.ToString(); + //Radio buttons + if (AI.FieldsToUse == AnimationType.SpriteDefinition) rbFromImage.Checked = true; + if (AI.FieldsToUse == AnimationType.Mirror) rbMirror.Checked = true; + if (AI.FieldsToUse == AnimationType.Rotation) rbRotation.Checked = true; + } + } + private void SpriteEntryForm_FormClosing(object sender, FormClosingEventArgs e) { myDatabase.Save(); //try saving the file diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index 6e313c1..1e3754a 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -21,9 +21,8 @@ namespace SpriteLibrary public string ImageName = ""; public int Width = -1; public int Height = -1; - public int AnimSpeed = 200; public int NumFrames = 1; - public int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size + public int AnimSpeed = 200; /// /// A generic cloning method that works when everything is public @@ -40,7 +39,7 @@ namespace SpriteLibrary internal string SpriteName = ""; internal int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size internal List Animations = new List(); - + /// /// A generic cloning method that works when everything is public /// From a415e89cd08e790ece57e0a6f36eba8143c9ed00 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 17 Sep 2017 15:34:51 -0500 Subject: [PATCH 21/77] SpriteInfotoForm --- SpriteLibrary/SpriteEntryForm.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index f2c449b..ea8c881 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -168,6 +168,7 @@ namespace SpriteLibrary cbMirrorV.Checked = AI.MirrorVertically; cbAnimation.Text = AI.AnimationToUse.ToString(); tbNumFrames.Text = AI.NumFrames.ToString(); + lblChosenArea.Text = AI.Width + "x" + AI.Height; //Radio buttons if (AI.FieldsToUse == AnimationType.SpriteDefinition) rbFromImage.Checked = true; if (AI.FieldsToUse == AnimationType.Mirror) rbMirror.Checked = true; From 7dea96b2663ff985a171e10ef41b21f4a94d2fb1 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 17 Sep 2017 17:07:39 -0500 Subject: [PATCH 22/77] Update drag info --- SpriteLibrary/SpriteEntryForm.Designer.cs | 7 ++- SpriteLibrary/SpriteEntryForm.cs | 64 +++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index d494504..b800d54 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -81,6 +81,9 @@ this.pbImageField.Size = new System.Drawing.Size(213, 306); this.pbImageField.TabIndex = 0; this.pbImageField.TabStop = false; + this.pbImageField.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbImageField_MouseDown); + this.pbImageField.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbImageField_MouseMove); + this.pbImageField.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbImageField_MouseUp); // // cbStartingImage // @@ -105,9 +108,9 @@ this.lblChosenArea.AutoSize = true; this.lblChosenArea.Location = new System.Drawing.Point(129, 44); this.lblChosenArea.Name = "lblChosenArea"; - this.lblChosenArea.Size = new System.Drawing.Size(46, 17); + this.lblChosenArea.Size = new System.Drawing.Size(86, 17); this.lblChosenArea.TabIndex = 3; - this.lblChosenArea.Text = "label2"; + this.lblChosenArea.Text = "ChosenArea"; // // tbNumFrames // diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index ea8c881..1c0e422 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -27,6 +27,10 @@ namespace SpriteLibrary int CurrentSIIndex = -1; //The information item we are editing. -1 means it is a new one. int CurrentSIAnimation = -1; + bool WeAreDragging = false; + Point DragStart = new Point(-1, -1); + Rectangle ChosenArea = new Rectangle(1,1,100,100); + internal SpriteEntryForm(SpriteDatabase theDatabase, List ListToWorkOn, Size GridSize) { InitializeComponent(); @@ -109,9 +113,15 @@ namespace SpriteLibrary if (!TCTabPages.TabPages.Contains(tpMirrorRotate)) TCTabPages.TabPages.Add(tpMirrorRotate); } + UpdateChosenAreaLabel(); ResumeLayout(); } + private void UpdateChosenAreaLabel() + { + lblChosenArea.Text = ChosenArea.X + "," + ChosenArea.Y + "," + ChosenArea.Width + "," + ChosenArea.Height; + } + private void SetUpEmptyInfo() { TempInformation = new SpriteInfo(); @@ -176,9 +186,63 @@ namespace SpriteLibrary } } + /// + /// Given two locations that we have clicked on, find the area we have selected + /// + /// + /// + /// + private Rectangle AreaFromGridPoints(Point Start, Point End) + { + //Get the points translated from locations on the picturebox + Point OneImagePoint = MyController.ReturnPointAdjustedForImage(Start); + Point TwoImagePoint = MyController.ReturnPointAdjustedForImage(End); + //Now, shrink them to figure out which grid points we have chosen + Point OneGridPoint = new Point(OneImagePoint.X / SnapGridSize.Width, OneImagePoint.Y / SnapGridSize.Height); + Point TwoGridPoint = new Point(TwoImagePoint.X / SnapGridSize.Width, TwoImagePoint.Y / SnapGridSize.Height); + //Find the top-left point and the bottom-right point + Point StartGridPoint = new Point(Math.Min(OneGridPoint.X, TwoGridPoint.X), Math.Min(OneGridPoint.Y, TwoGridPoint.Y)); + Point EndGridPoint = new Point(Math.Max(OneGridPoint.X, TwoGridPoint.X), Math.Max(OneGridPoint.Y, TwoGridPoint.Y)); + //Translate them back into points on the image + Point ReturnSPoint = new Point(StartGridPoint.X * SnapGridSize.Width, StartGridPoint.Y * SnapGridSize.Height); + Point ReturnEPoint = new Point((EndGridPoint.X +1) * SnapGridSize.Width, (EndGridPoint.Y +1) * SnapGridSize.Height); + //Change it into a rectangle and return it + Rectangle ReturnRec = new Rectangle(ReturnSPoint.X, ReturnSPoint.Y, ReturnEPoint.X - ReturnSPoint.X, ReturnEPoint.Y - ReturnSPoint.Y); + return ReturnRec; + } + private void SpriteEntryForm_FormClosing(object sender, FormClosingEventArgs e) { myDatabase.Save(); //try saving the file } + + private void pbImageField_MouseMove(object sender, MouseEventArgs e) + { + //If we are dragging, process the dragging + if (WeAreDragging) + { + ChosenArea = AreaFromGridPoints(DragStart, e.Location); + UpdateChosenAreaLabel(); + } + } + + private void pbImageField_MouseDown(object sender, MouseEventArgs e) + { + //When the mouse goes down, we note that we are trying to drag + WeAreDragging = true; + DragStart = e.Location; + } + + private void pbImageField_MouseUp(object sender, MouseEventArgs e) + { + //When the mouse goes up, stop dragging and update + if(WeAreDragging) + { + ChosenArea = AreaFromGridPoints(DragStart, e.Location); + UpdateChosenAreaLabel(); + } + WeAreDragging = false; + + } } } From 30a3d1e4b3ea239e18b3eb27a4b5a253dfb591f3 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 17 Sep 2017 17:10:03 -0500 Subject: [PATCH 23/77] update the selected box from the SpriteInfo --- SpriteLibrary/SpriteEntryForm.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 1c0e422..6c49cfc 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -178,7 +178,9 @@ namespace SpriteLibrary cbMirrorV.Checked = AI.MirrorVertically; cbAnimation.Text = AI.AnimationToUse.ToString(); tbNumFrames.Text = AI.NumFrames.ToString(); - lblChosenArea.Text = AI.Width + "x" + AI.Height; + //lblChosenArea.Text = AI.Width + "x" + AI.Height; + ChosenArea = new Rectangle(AI.StartPoint.X, AI.StartPoint.Y, AI.Width, AI.Height); + UpdateChosenAreaLabel(); //Radio buttons if (AI.FieldsToUse == AnimationType.SpriteDefinition) rbFromImage.Checked = true; if (AI.FieldsToUse == AnimationType.Mirror) rbMirror.Checked = true; From 1361a46b7c90b73955cf4c20c9c75ab01342c3e6 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 17 Sep 2017 17:36:57 -0500 Subject: [PATCH 24/77] initial drag and drop visual (shows there is a bug to figure out) --- SpriteLibrary/SpriteEntryForm.cs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 6c49cfc..353e7ec 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -12,6 +12,7 @@ using System.IO; using System.Resources; using System.Windows.Forms; using System.Collections; +using System.Drawing.Drawing2D; namespace SpriteLibrary @@ -120,6 +121,30 @@ namespace SpriteLibrary private void UpdateChosenAreaLabel() { lblChosenArea.Text = ChosenArea.X + "," + ChosenArea.Y + "," + ChosenArea.Width + "," + ChosenArea.Height; + UpdateHighlightBox(); + } + + private void UpdateHighlightBox() + { + int transparency = 200; + Image NewFrontImage = new Bitmap(pbImageField.BackgroundImage.Width, pbImageField.BackgroundImage.Height); + Color FillColor = Color.Green; + Brush brush = new SolidBrush(Color.FromArgb(transparency, FillColor.R, FillColor.G, FillColor.B)); + Brush nobrush = new SolidBrush(Color.FromArgb(0,0,0,0)); + using (Graphics G = Graphics.FromImage(NewFrontImage)) + { + G.FillRectangle(brush, 0,0,NewFrontImage.Width,NewFrontImage.Height); + GraphicsPath path = new GraphicsPath(); + path.AddRectangle(ChosenArea); + G.SetClip(path); + G.Clear(Color.Transparent); + G.ResetClip(); + // G.FillRectangle(nobrush, ChosenArea); + + } + pbImageField.Image = NewFrontImage; + pbImageField.SizeMode = PictureBoxSizeMode.StretchImage; + pbImageField.Invalidate(); } private void SetUpEmptyInfo() From 71cf7c19c1e3f7f756b467c8456a59a6e2130dde Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sun, 17 Sep 2017 18:18:22 -0500 Subject: [PATCH 25/77] Dragging works better now --- SpriteLibrary/SpriteEntryForm.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 353e7ec..53106ce 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -45,6 +45,7 @@ namespace SpriteLibrary private void LocalSetup() { pbImageField.BackgroundImageLayout = ImageLayout.Stretch; + pbImageField.BackgroundImage = new Bitmap(600, 800); MyController = new SpriteController(pbImageField); PopulateMenu(); UpdateMenu(); @@ -126,7 +127,7 @@ namespace SpriteLibrary private void UpdateHighlightBox() { - int transparency = 200; + int transparency = 50; Image NewFrontImage = new Bitmap(pbImageField.BackgroundImage.Width, pbImageField.BackgroundImage.Height); Color FillColor = Color.Green; Brush brush = new SolidBrush(Color.FromArgb(transparency, FillColor.R, FillColor.G, FillColor.B)); From caf7f8cbd21871e33a8102f8309098e46299d038 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 07:32:17 -0500 Subject: [PATCH 26/77] Add a tooltip --- SpriteLibrary/SpriteEntryForm.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 53106ce..dbf14e3 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -32,6 +32,8 @@ namespace SpriteLibrary Point DragStart = new Point(-1, -1); Rectangle ChosenArea = new Rectangle(1,1,100,100); + ToolTip myToolTip = new ToolTip(); + internal SpriteEntryForm(SpriteDatabase theDatabase, List ListToWorkOn, Size GridSize) { InitializeComponent(); @@ -47,10 +49,16 @@ namespace SpriteLibrary pbImageField.BackgroundImageLayout = ImageLayout.Stretch; pbImageField.BackgroundImage = new Bitmap(600, 800); MyController = new SpriteController(pbImageField); + + myToolTip.AutoPopDelay = 5000; + myToolTip.AutomaticDelay = 500; + PopulateMenu(); UpdateMenu(); SpriteInformationToForm(); UpdateMenu(); + + myToolTip.SetToolTip(btnNewAnimation, "Create another animation for the current sprite."); } internal List GetUpdatedList() From ee9f0465622ead63d5208f8e14777fa58bfc9bcf Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 07:41:02 -0500 Subject: [PATCH 27/77] Update a sprite-info from another sprite-info --- SpriteLibrary/SpriteInfo.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index 1e3754a..75fe6bd 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -49,6 +49,22 @@ namespace SpriteLibrary return SpriteDatabase.CloneByXMLSerializing(this); } + /// + /// Update the current SpriteInfo class such that it is identical to the class you are copying from. + /// + /// A spriteInfo class + public void CopyFrom(SpriteInfo toCopyFrom) + { + if (toCopyFrom == null) return; + SpriteName = toCopyFrom.SpriteName; + ViewPercent = toCopyFrom.ViewPercent; + Animations.Clear(); + foreach(AnimationInfo AI in toCopyFrom.Animations) + { + Animations.Add(AI.Clone()); + } + } + public Sprite CreateSprite(SpriteController ControllerToUse, SpriteDatabase TheDatabaseToUse) { Sprite DestSprite = null; From 795a4c6ce7e907e6a463961f001d103aefd711d7 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 07:47:58 -0500 Subject: [PATCH 28/77] forward/back buttons working & initial "save" --- SpriteLibrary/SpriteEntryForm.Designer.cs | 3 +++ SpriteLibrary/SpriteEntryForm.cs | 32 +++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index b800d54..80d9a88 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -171,6 +171,7 @@ this.btnApply.TabIndex = 10; this.btnApply.Text = "Apply"; this.btnApply.UseVisualStyleBackColor = true; + this.btnApply.Click += new System.EventHandler(this.btnApply_Click); // // btnNewSprite // @@ -222,6 +223,7 @@ this.btnBack.TabIndex = 16; this.btnBack.Text = "<"; this.btnBack.UseVisualStyleBackColor = true; + this.btnBack.Click += new System.EventHandler(this.btnBack_Click); // // btnFwd // @@ -232,6 +234,7 @@ this.btnFwd.TabIndex = 17; this.btnFwd.Text = ">"; this.btnFwd.UseVisualStyleBackColor = true; + this.btnFwd.Click += new System.EventHandler(this.btnFwd_Click); // // lblCountSprites // diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index dbf14e3..8810bc7 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -280,5 +280,37 @@ namespace SpriteLibrary WeAreDragging = false; } + + private void btnApply_Click(object sender, EventArgs e) + { + if(CurrentSIIndex >0 && CurrentSIIndex < SpriteInformation.Count) + { + SpriteInformation[CurrentSIIndex].CopyFrom(TempInformation); + } + else + { + SpriteInformation.Add(TempInformation); + CurrentSIIndex = SpriteInformation.IndexOf(TempInformation); + } + UpdateMenu(); + } + + private void btnFwd_Click(object sender, EventArgs e) + { + if (SpriteInformation.Count == 0) return; //nothing to do + CurrentSIIndex++; + if (CurrentSIIndex >= SpriteInformation.Count) CurrentSIIndex = 0; + SpriteInformationToForm(); + UpdateMenu(); + } + + private void btnBack_Click(object sender, EventArgs e) + { + if (SpriteInformation.Count == 0) return; //nothing to do + CurrentSIIndex--; + if (CurrentSIIndex < 0) CurrentSIIndex = SpriteInformation.Count - 1; + SpriteInformationToForm(); + UpdateMenu(); + } } } From 8e502e3b1ee0bb4a1825d66de8d9a9ee5c4d5e9c Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 07:55:52 -0500 Subject: [PATCH 29/77] finish save by pulling info from form to the sprite information record --- SpriteLibrary/SpriteEntryForm.cs | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 8810bc7..f2e6cde 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -222,6 +222,44 @@ namespace SpriteLibrary } } + /// + /// Take the values stored in TempInformation and push it out to our form + /// + private void FormToSpriteInformation() + { + if (TempInformation == null) return; + //For the main sprite information + + TempInformation.SpriteName = tbSpriteName.Text; + int.TryParse(tbDefaultSize.Text, out TempInformation.ViewPercent); + + //From the current animation + AnimationInfo AI = null; + if (CurrentSIAnimation < 0) CurrentSIAnimation = 0; + if (CurrentSIAnimation >= TempInformation.Animations.Count) CurrentSIAnimation = TempInformation.Animations.Count - 1; + if (CurrentSIAnimation < TempInformation.Animations.Count) + { + AI = TempInformation.Animations[CurrentSIAnimation]; + + int.TryParse(tbAmimationSpeed.Text, out AI.AnimSpeed); + AI.ImageName = cbStartingImage.Text; + + AI.MirrorHorizontally = cbMirrorH.Checked; + AI.MirrorVertically = cbMirrorV.Checked; + + int.TryParse(cbAnimation.Text, out AI.AnimationToUse); + int.TryParse(tbNumFrames.Text, out AI.NumFrames); + + AI.StartPoint = ChosenArea.Location; + AI.Width = ChosenArea.Width; + AI.Height = ChosenArea.Height; + + if (rbFromImage.Checked) AI.FieldsToUse = AnimationType.SpriteDefinition; + if (rbMirror.Checked) AI.FieldsToUse = AnimationType.Mirror; + if (rbRotation.Checked) AI.FieldsToUse = AnimationType.Rotation; + } + } + /// /// Given two locations that we have clicked on, find the area we have selected /// @@ -283,6 +321,7 @@ namespace SpriteLibrary private void btnApply_Click(object sender, EventArgs e) { + FormToSpriteInformation(); if(CurrentSIIndex >0 && CurrentSIIndex < SpriteInformation.Count) { SpriteInformation[CurrentSIIndex].CopyFrom(TempInformation); From 273c381389771ca9442fee7e5bd766e9567c37e2 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 08:40:18 -0500 Subject: [PATCH 30/77] Debug Item entry and forward / back buttons --- SpriteLibrary/SpriteEntryForm.cs | 5 +++++ SpriteLibrary/SpriteInfo.cs | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index f2e6cde..52948a9 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -328,6 +328,7 @@ namespace SpriteLibrary } else { + string Try = SpriteDatabase.WriteToXMLString(TempInformation); SpriteInformation.Add(TempInformation); CurrentSIIndex = SpriteInformation.IndexOf(TempInformation); } @@ -339,6 +340,8 @@ namespace SpriteLibrary if (SpriteInformation.Count == 0) return; //nothing to do CurrentSIIndex++; if (CurrentSIIndex >= SpriteInformation.Count) CurrentSIIndex = 0; + if (TempInformation == null) TempInformation = new SpriteInfo(); + TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); SpriteInformationToForm(); UpdateMenu(); } @@ -348,6 +351,8 @@ namespace SpriteLibrary if (SpriteInformation.Count == 0) return; //nothing to do CurrentSIIndex--; if (CurrentSIIndex < 0) CurrentSIIndex = SpriteInformation.Count - 1; + if (TempInformation == null) TempInformation = new SpriteInfo(); + TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); SpriteInformationToForm(); UpdateMenu(); } diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index 75fe6bd..feceb6d 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -9,8 +9,8 @@ using System.Resources; namespace SpriteLibrary { - internal enum AnimationType { SpriteDefinition=0, Rotation=1, Mirror=2 } - internal class AnimationInfo + public enum AnimationType { SpriteDefinition=0, Rotation=1, Mirror=2 } + public class AnimationInfo { public AnimationType FieldsToUse = AnimationType.SpriteDefinition; public int AnimationToUse = 0; @@ -36,9 +36,9 @@ namespace SpriteLibrary public class SpriteInfo { - internal string SpriteName = ""; - internal int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size - internal List Animations = new List(); + public string SpriteName = ""; + public int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size + public List Animations = new List(); /// /// A generic cloning method that works when everything is public From fac246187526b4c0359ad7612df96d3af8e9a67f Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 10:31:47 -0500 Subject: [PATCH 31/77] Fixed some bugs with forward/back and applying new sprites. --- SpriteLibrary/SpriteEntryForm.Designer.cs | 7 ++-- SpriteLibrary/SpriteEntryForm.cs | 41 ++++++++++++++++++----- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 80d9a88..1d094af 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -181,6 +181,7 @@ this.btnNewSprite.TabIndex = 11; this.btnNewSprite.Text = "New Sprite"; this.btnNewSprite.UseVisualStyleBackColor = true; + this.btnNewSprite.Click += new System.EventHandler(this.btnNewSprite_Click); // // tbAmimationSpeed // @@ -217,7 +218,7 @@ // btnBack // this.btnBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnBack.Location = new System.Drawing.Point(49, 322); + this.btnBack.Location = new System.Drawing.Point(25, 322); this.btnBack.Name = "btnBack"; this.btnBack.Size = new System.Drawing.Size(29, 23); this.btnBack.TabIndex = 16; @@ -228,7 +229,7 @@ // btnFwd // this.btnFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnFwd.Location = new System.Drawing.Point(131, 322); + this.btnFwd.Location = new System.Drawing.Point(177, 322); this.btnFwd.Name = "btnFwd"; this.btnFwd.Size = new System.Drawing.Size(29, 23); this.btnFwd.TabIndex = 17; @@ -240,7 +241,7 @@ // this.lblCountSprites.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.lblCountSprites.AutoSize = true; - this.lblCountSprites.Location = new System.Drawing.Point(95, 325); + this.lblCountSprites.Location = new System.Drawing.Point(75, 325); this.lblCountSprites.Name = "lblCountSprites"; this.lblCountSprites.Size = new System.Drawing.Size(16, 17); this.lblCountSprites.TabIndex = 18; diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 52948a9..26452a3 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -42,6 +42,10 @@ namespace SpriteLibrary SnapGridSize = GridSize; LocalSetup(); SpriteInformation.AddRange(ListToWorkOn); + if (SpriteInformation.Count > 0) + { + SelectNewIndex(0); + } } private void LocalSetup() @@ -93,7 +97,7 @@ namespace SpriteLibrary private void UpdateMenu() { SuspendLayout(); - lblCountSprites.Text = SpriteInformation.Count.ToString(); + lblCountSprites.Text = CurrentSIIndex+":"+CurrentSIAnimation+" of " + SpriteInformation.Count.ToString(); if (TempInformation == null) SetUpEmptyInfo(); //Put in numbers into the combo-box of which frame to base ourselves off of @@ -186,7 +190,7 @@ namespace SpriteLibrary pbImageField.BackgroundImage = new Bitmap(NewImage); pbImageField.Invalidate(); } - } + } } /// @@ -328,22 +332,35 @@ namespace SpriteLibrary } else { - string Try = SpriteDatabase.WriteToXMLString(TempInformation); - SpriteInformation.Add(TempInformation); + SpriteInformation.Add(TempInformation.Clone()); CurrentSIIndex = SpriteInformation.IndexOf(TempInformation); } UpdateMenu(); } + private void WeHaveNewItem() + { + TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); + SpriteInformationToForm(); + UpdateMenu(); + } + private void SelectNewIndex(int nindex) + { + if (nindex < 0) return; + if (nindex >= SpriteInformation.Count) return; + CurrentSIIndex = nindex; + TempInformation = SpriteInformation[nindex].Clone(); + WeHaveNewItem(); + UpdateMenu(); + } + private void btnFwd_Click(object sender, EventArgs e) { if (SpriteInformation.Count == 0) return; //nothing to do CurrentSIIndex++; if (CurrentSIIndex >= SpriteInformation.Count) CurrentSIIndex = 0; if (TempInformation == null) TempInformation = new SpriteInfo(); - TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); - SpriteInformationToForm(); - UpdateMenu(); + WeHaveNewItem(); } private void btnBack_Click(object sender, EventArgs e) @@ -352,7 +369,15 @@ namespace SpriteLibrary CurrentSIIndex--; if (CurrentSIIndex < 0) CurrentSIIndex = SpriteInformation.Count - 1; if (TempInformation == null) TempInformation = new SpriteInfo(); - TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); + WeHaveNewItem(); + } + + private void btnNewSprite_Click(object sender, EventArgs e) + { + TempInformation = null; + CurrentSIIndex = -1; + + SetUpEmptyInfo(); SpriteInformationToForm(); UpdateMenu(); } From 2e5bf62fb13bd219b925dae02168cb96246dd797 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 10:33:34 -0500 Subject: [PATCH 32/77] Able to add a new animation. --- SpriteLibrary/SpriteEntryForm.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 26452a3..65b1721 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -209,6 +209,8 @@ namespace SpriteLibrary if (CurrentSIAnimation >= TempInformation.Animations.Count) CurrentSIAnimation = TempInformation.Animations.Count -1; if (CurrentSIAnimation < TempInformation.Animations.Count) { + if (CurrentSIAnimation >= TempInformation.Animations.Count) + TempInformation.Animations.Add(new AnimationInfo()); AI = TempInformation.Animations[CurrentSIAnimation]; tbAmimationSpeed.Text = AI.AnimSpeed.ToString(); cbStartingImage.Text = AI.ImageName; From 4ce60ad42231dbfc7bd65a290aa3d3ea081e558f Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 11:18:26 -0500 Subject: [PATCH 33/77] Get new animation working --- SpriteLibrary/SpriteEntryForm.Designer.cs | 1 + SpriteLibrary/SpriteEntryForm.cs | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 1d094af..b8cb5dc 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -392,6 +392,7 @@ this.btnNewAnimation.TabIndex = 21; this.btnNewAnimation.Text = "New Anim"; this.btnNewAnimation.UseVisualStyleBackColor = true; + this.btnNewAnimation.Click += new System.EventHandler(this.btnNewAnimation_Click); // // pbPreview // diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 65b1721..21df9cc 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -325,10 +325,10 @@ namespace SpriteLibrary } - private void btnApply_Click(object sender, EventArgs e) + void ApplyChanges() { FormToSpriteInformation(); - if(CurrentSIIndex >0 && CurrentSIIndex < SpriteInformation.Count) + if (CurrentSIIndex > 0 && CurrentSIIndex < SpriteInformation.Count) { SpriteInformation[CurrentSIIndex].CopyFrom(TempInformation); } @@ -340,6 +340,11 @@ namespace SpriteLibrary UpdateMenu(); } + private void btnApply_Click(object sender, EventArgs e) + { + ApplyChanges(); + } + private void WeHaveNewItem() { TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); @@ -383,5 +388,15 @@ namespace SpriteLibrary SpriteInformationToForm(); UpdateMenu(); } + + private void btnNewAnimation_Click(object sender, EventArgs e) + { + ApplyChanges(); + AnimationInfo AI = TempInformation.Animations[CurrentSIAnimation].Clone(); + TempInformation.Animations.Add(AI); + CurrentSIAnimation++; + SpriteInformationToForm(); + UpdateMenu(); + } } } From 86d956365e1068ee1520cf94caa236a6400a019c Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 14:08:06 -0500 Subject: [PATCH 34/77] some documentation --- SpriteLibrary/SpriteDatabase.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 361d22e..2b31726 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -18,16 +18,33 @@ namespace SpriteLibrary } /// - /// Store of all the types of things in the ADVDemo + /// Store Sprite information in a database. You can preload your database with sprite definitions, and then + /// create the sprites as needed. This can drastically reduce the initial load time of a game or something. + /// Though, what it really does is spread out the load time. It still takes the same amount of time to + /// load all the sprites, it just loads them on-demand. Using a dictionary often hides any load time issues. /// public class SpriteDatabase { + /// + /// This is the list of SpriteInfo records that the database knows about. You can create your own list, + /// modify this list, or whatever. The database has some reasonable functions for loading and saving a + /// sprite database. + /// public List SpriteInfoList = new List(); List TheImages = new List(); ResourceManager myResourceManager = null; string Filename = ""; Size SnapGridSize = new Size(5, 5); + /// + /// The sprite database instantiation function. The filename can either be a file on the computer or it + /// can be the string name of a resource (the filename without the extension. If your file is accessed + /// by Properties.Resources.MySprites, the "filename" would be "MySprites") + /// + /// The ResourceManager for your project. Usually + /// Properties.Resources.ResourceManager + /// Either a path and file (like: @"c:\users\me\Desktop\myfile.xml") or + /// the name of a resource (like: "myfile") public SpriteDatabase(ResourceManager theResourceManager, string filename) { myResourceManager = theResourceManager; From e74de637eb150e8deb46b456d5e0aa6b9c75b0ef Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 15:29:00 -0500 Subject: [PATCH 35/77] Add animation fwd/back buttons --- SpriteLibrary/SpriteEntryForm.Designer.cs | 62 ++++++++++++++++++++--- 1 file changed, 56 insertions(+), 6 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index b8cb5dc..f4ad359 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -63,6 +63,10 @@ this.btnNewAnimation = new System.Windows.Forms.Button(); this.pbPreview = new System.Windows.Forms.PictureBox(); this.btnPreview = new System.Windows.Forms.Button(); + this.btnReset = new System.Windows.Forms.Button(); + this.btnAnimFwd = new System.Windows.Forms.Button(); + this.btnAnimBack = new System.Windows.Forms.Button(); + this.lblAnimationFwdBack = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); this.TCTabPages.SuspendLayout(); this.tpFromImage.SuspendLayout(); @@ -106,7 +110,7 @@ // lblChosenArea // this.lblChosenArea.AutoSize = true; - this.lblChosenArea.Location = new System.Drawing.Point(129, 44); + this.lblChosenArea.Location = new System.Drawing.Point(125, 33); this.lblChosenArea.Name = "lblChosenArea"; this.lblChosenArea.Size = new System.Drawing.Size(86, 17); this.lblChosenArea.TabIndex = 3; @@ -114,7 +118,7 @@ // // tbNumFrames // - this.tbNumFrames.Location = new System.Drawing.Point(128, 75); + this.tbNumFrames.Location = new System.Drawing.Point(128, 53); this.tbNumFrames.Name = "tbNumFrames"; this.tbNumFrames.Size = new System.Drawing.Size(47, 22); this.tbNumFrames.TabIndex = 4; @@ -122,7 +126,7 @@ // lblFrames // this.lblFrames.AutoSize = true; - this.lblFrames.Location = new System.Drawing.Point(67, 75); + this.lblFrames.Location = new System.Drawing.Point(69, 53); this.lblFrames.Name = "lblFrames"; this.lblFrames.Size = new System.Drawing.Size(55, 17); this.lblFrames.TabIndex = 5; @@ -218,9 +222,9 @@ // btnBack // this.btnBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnBack.Location = new System.Drawing.Point(25, 322); + this.btnBack.Location = new System.Drawing.Point(12, 322); this.btnBack.Name = "btnBack"; - this.btnBack.Size = new System.Drawing.Size(29, 23); + this.btnBack.Size = new System.Drawing.Size(32, 23); this.btnBack.TabIndex = 16; this.btnBack.Text = "<"; this.btnBack.UseVisualStyleBackColor = true; @@ -231,7 +235,7 @@ this.btnFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.btnFwd.Location = new System.Drawing.Point(177, 322); this.btnFwd.Name = "btnFwd"; - this.btnFwd.Size = new System.Drawing.Size(29, 23); + this.btnFwd.Size = new System.Drawing.Size(32, 23); this.btnFwd.TabIndex = 17; this.btnFwd.Text = ">"; this.btnFwd.UseVisualStyleBackColor = true; @@ -259,6 +263,9 @@ // // tpFromImage // + this.tpFromImage.Controls.Add(this.lblAnimationFwdBack); + this.tpFromImage.Controls.Add(this.btnAnimBack); + this.tpFromImage.Controls.Add(this.btnAnimFwd); this.tpFromImage.Controls.Add(this.cbStartingImage); this.tpFromImage.Controls.Add(this.lblStartingImage); this.tpFromImage.Controls.Add(this.lblChosenArea); @@ -411,6 +418,44 @@ this.btnPreview.Text = "Preview"; this.btnPreview.UseVisualStyleBackColor = true; // + // btnReset + // + this.btnReset.Location = new System.Drawing.Point(426, 280); + this.btnReset.Name = "btnReset"; + this.btnReset.Size = new System.Drawing.Size(75, 23); + this.btnReset.TabIndex = 24; + this.btnReset.Text = "Reset"; + this.btnReset.UseVisualStyleBackColor = true; + // + // btnAnimFwd + // + this.btnAnimFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnAnimFwd.Location = new System.Drawing.Point(227, 85); + this.btnAnimFwd.Name = "btnAnimFwd"; + this.btnAnimFwd.Size = new System.Drawing.Size(32, 23); + this.btnAnimFwd.TabIndex = 18; + this.btnAnimFwd.Text = ">"; + this.btnAnimFwd.UseVisualStyleBackColor = true; + // + // btnAnimBack + // + this.btnAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnAnimBack.Location = new System.Drawing.Point(189, 85); + this.btnAnimBack.Name = "btnAnimBack"; + this.btnAnimBack.Size = new System.Drawing.Size(32, 23); + this.btnAnimBack.TabIndex = 19; + this.btnAnimBack.Text = "<"; + this.btnAnimBack.UseVisualStyleBackColor = true; + // + // lblAnimationFwdBack + // + this.lblAnimationFwdBack.AutoSize = true; + this.lblAnimationFwdBack.Location = new System.Drawing.Point(109, 88); + this.lblAnimationFwdBack.Name = "lblAnimationFwdBack"; + this.lblAnimationFwdBack.Size = new System.Drawing.Size(74, 17); + this.lblAnimationFwdBack.TabIndex = 20; + this.lblAnimationFwdBack.Text = "Animation:"; + // // SpriteEntryForm // this.AcceptButton = this.btnApply; @@ -418,6 +463,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnCancel; this.ClientSize = new System.Drawing.Size(614, 347); + this.Controls.Add(this.btnReset); this.Controls.Add(this.btnPreview); this.Controls.Add(this.pbPreview); this.Controls.Add(this.btnNewAnimation); @@ -494,5 +540,9 @@ private System.Windows.Forms.TextBox tbRotation; private System.Windows.Forms.Label lblWhichAnim; private System.Windows.Forms.ComboBox cbAnimation; + private System.Windows.Forms.Label lblAnimationFwdBack; + private System.Windows.Forms.Button btnAnimBack; + private System.Windows.Forms.Button btnAnimFwd; + private System.Windows.Forms.Button btnReset; } } \ No newline at end of file From c0d1d1599df07aa51bf4e751e84373888c9baed0 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Mon, 18 Sep 2017 15:34:30 -0500 Subject: [PATCH 36/77] Get anim fwd/backw working --- SpriteLibrary/SpriteEntryForm.Designer.cs | 2 ++ SpriteLibrary/SpriteEntryForm.cs | 35 ++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index f4ad359..3bbc4a1 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -436,6 +436,7 @@ this.btnAnimFwd.TabIndex = 18; this.btnAnimFwd.Text = ">"; this.btnAnimFwd.UseVisualStyleBackColor = true; + this.btnAnimFwd.Click += new System.EventHandler(this.btnAnimFwd_Click); // // btnAnimBack // @@ -446,6 +447,7 @@ this.btnAnimBack.TabIndex = 19; this.btnAnimBack.Text = "<"; this.btnAnimBack.UseVisualStyleBackColor = true; + this.btnAnimBack.Click += new System.EventHandler(this.btnAnimBack_Click); // // lblAnimationFwdBack // diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 21df9cc..dd18a0e 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -113,7 +113,17 @@ namespace SpriteLibrary } else panelRadioButtons.Visible = true; - if(rbFromImage.Checked) + if(TempInformation.Animations.Count >1) + { + btnAnimBack.Enabled = true; + btnAnimFwd.Enabled = true; + } + else + { + btnAnimBack.Enabled = false; + btnAnimFwd.Enabled = false; + } + if (rbFromImage.Checked) { if(!TCTabPages.TabPages.Contains(tpFromImage)) TCTabPages.TabPages.Add(tpFromImage); @@ -398,5 +408,28 @@ namespace SpriteLibrary SpriteInformationToForm(); UpdateMenu(); } + + private void btnAnimBack_Click(object sender, EventArgs e) + { + ApplyChanges(); + CurrentSIAnimation--; + if (CurrentSIAnimation < 0) + CurrentSIAnimation = TempInformation.Animations.Count - 1; + + SpriteInformationToForm(); + UpdateMenu(); + } + + private void btnAnimFwd_Click(object sender, EventArgs e) + { + ApplyChanges(); + CurrentSIAnimation++; + if (CurrentSIAnimation >=TempInformation.Animations.Count) + CurrentSIAnimation = 0; + + SpriteInformationToForm(); + UpdateMenu(); + + } } } From 8067b91759644aa9f3c4ecf4ddd2c3c6d9bc6be3 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 08:35:00 -0500 Subject: [PATCH 37/77] Add preview animation fwd/back buttons --- SpriteLibrary/SpriteEntryForm.Designer.cs | 92 +++++++++++++++-------- SpriteLibrary/SpriteEntryForm.cs | 21 ++++++ 2 files changed, 81 insertions(+), 32 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 3bbc4a1..526e9d6 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -49,6 +49,9 @@ this.lblCountSprites = new System.Windows.Forms.Label(); this.TCTabPages = new System.Windows.Forms.TabControl(); this.tpFromImage = new System.Windows.Forms.TabPage(); + this.lblAnimationFwdBack = new System.Windows.Forms.Label(); + this.btnAnimBack = new System.Windows.Forms.Button(); + this.btnAnimFwd = new System.Windows.Forms.Button(); this.tpMirrorRotate = new System.Windows.Forms.TabPage(); this.cbMirrorH = new System.Windows.Forms.CheckBox(); this.cbMirrorV = new System.Windows.Forms.CheckBox(); @@ -64,9 +67,8 @@ this.pbPreview = new System.Windows.Forms.PictureBox(); this.btnPreview = new System.Windows.Forms.Button(); this.btnReset = new System.Windows.Forms.Button(); - this.btnAnimFwd = new System.Windows.Forms.Button(); - this.btnAnimBack = new System.Windows.Forms.Button(); - this.lblAnimationFwdBack = new System.Windows.Forms.Label(); + this.btnPreviewAnimFwd = new System.Windows.Forms.Button(); + this.btnPreviewAnimBack = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); this.TCTabPages.SuspendLayout(); this.tpFromImage.SuspendLayout(); @@ -279,6 +281,37 @@ this.tpFromImage.Text = "From Image"; this.tpFromImage.UseVisualStyleBackColor = true; // + // lblAnimationFwdBack + // + this.lblAnimationFwdBack.AutoSize = true; + this.lblAnimationFwdBack.Location = new System.Drawing.Point(109, 88); + this.lblAnimationFwdBack.Name = "lblAnimationFwdBack"; + this.lblAnimationFwdBack.Size = new System.Drawing.Size(74, 17); + this.lblAnimationFwdBack.TabIndex = 20; + this.lblAnimationFwdBack.Text = "Animation:"; + // + // btnAnimBack + // + this.btnAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnAnimBack.Location = new System.Drawing.Point(189, 85); + this.btnAnimBack.Name = "btnAnimBack"; + this.btnAnimBack.Size = new System.Drawing.Size(32, 23); + this.btnAnimBack.TabIndex = 19; + this.btnAnimBack.Text = "<"; + this.btnAnimBack.UseVisualStyleBackColor = true; + this.btnAnimBack.Click += new System.EventHandler(this.btnAnimBack_Click); + // + // btnAnimFwd + // + this.btnAnimFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnAnimFwd.Location = new System.Drawing.Point(227, 85); + this.btnAnimFwd.Name = "btnAnimFwd"; + this.btnAnimFwd.Size = new System.Drawing.Size(32, 23); + this.btnAnimFwd.TabIndex = 18; + this.btnAnimFwd.Text = ">"; + this.btnAnimFwd.UseVisualStyleBackColor = true; + this.btnAnimFwd.Click += new System.EventHandler(this.btnAnimFwd_Click); + // // tpMirrorRotate // this.tpMirrorRotate.Controls.Add(this.cbMirrorH); @@ -403,20 +436,22 @@ // // pbPreview // + this.pbPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.pbPreview.Location = new System.Drawing.Point(512, 31); this.pbPreview.Name = "pbPreview"; - this.pbPreview.Size = new System.Drawing.Size(91, 77); + this.pbPreview.Size = new System.Drawing.Size(91, 89); this.pbPreview.TabIndex = 22; this.pbPreview.TabStop = false; // // btnPreview // - this.btnPreview.Location = new System.Drawing.Point(527, 114); + this.btnPreview.Location = new System.Drawing.Point(518, 126); this.btnPreview.Name = "btnPreview"; this.btnPreview.Size = new System.Drawing.Size(75, 23); this.btnPreview.TabIndex = 23; this.btnPreview.Text = "Preview"; this.btnPreview.UseVisualStyleBackColor = true; + this.btnPreview.Click += new System.EventHandler(this.btnPreview_Click); // // btnReset // @@ -427,36 +462,25 @@ this.btnReset.Text = "Reset"; this.btnReset.UseVisualStyleBackColor = true; // - // btnAnimFwd + // btnPreviewAnimFwd // - this.btnAnimFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAnimFwd.Location = new System.Drawing.Point(227, 85); - this.btnAnimFwd.Name = "btnAnimFwd"; - this.btnAnimFwd.Size = new System.Drawing.Size(32, 23); - this.btnAnimFwd.TabIndex = 18; - this.btnAnimFwd.Text = ">"; - this.btnAnimFwd.UseVisualStyleBackColor = true; - this.btnAnimFwd.Click += new System.EventHandler(this.btnAnimFwd_Click); + this.btnPreviewAnimFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnPreviewAnimFwd.Location = new System.Drawing.Point(561, 155); + this.btnPreviewAnimFwd.Name = "btnPreviewAnimFwd"; + this.btnPreviewAnimFwd.Size = new System.Drawing.Size(32, 23); + this.btnPreviewAnimFwd.TabIndex = 25; + this.btnPreviewAnimFwd.Text = ">"; + this.btnPreviewAnimFwd.UseVisualStyleBackColor = true; // - // btnAnimBack + // btnPreviewAnimBack // - this.btnAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAnimBack.Location = new System.Drawing.Point(189, 85); - this.btnAnimBack.Name = "btnAnimBack"; - this.btnAnimBack.Size = new System.Drawing.Size(32, 23); - this.btnAnimBack.TabIndex = 19; - this.btnAnimBack.Text = "<"; - this.btnAnimBack.UseVisualStyleBackColor = true; - this.btnAnimBack.Click += new System.EventHandler(this.btnAnimBack_Click); - // - // lblAnimationFwdBack - // - this.lblAnimationFwdBack.AutoSize = true; - this.lblAnimationFwdBack.Location = new System.Drawing.Point(109, 88); - this.lblAnimationFwdBack.Name = "lblAnimationFwdBack"; - this.lblAnimationFwdBack.Size = new System.Drawing.Size(74, 17); - this.lblAnimationFwdBack.TabIndex = 20; - this.lblAnimationFwdBack.Text = "Animation:"; + this.btnPreviewAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnPreviewAnimBack.Location = new System.Drawing.Point(518, 155); + this.btnPreviewAnimBack.Name = "btnPreviewAnimBack"; + this.btnPreviewAnimBack.Size = new System.Drawing.Size(32, 23); + this.btnPreviewAnimBack.TabIndex = 26; + this.btnPreviewAnimBack.Text = "<"; + this.btnPreviewAnimBack.UseVisualStyleBackColor = true; // // SpriteEntryForm // @@ -465,6 +489,8 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnCancel; this.ClientSize = new System.Drawing.Size(614, 347); + this.Controls.Add(this.btnPreviewAnimBack); + this.Controls.Add(this.btnPreviewAnimFwd); this.Controls.Add(this.btnReset); this.Controls.Add(this.btnPreview); this.Controls.Add(this.pbPreview); @@ -546,5 +572,7 @@ private System.Windows.Forms.Button btnAnimBack; private System.Windows.Forms.Button btnAnimFwd; private System.Windows.Forms.Button btnReset; + private System.Windows.Forms.Button btnPreviewAnimFwd; + private System.Windows.Forms.Button btnPreviewAnimBack; } } \ No newline at end of file diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index dd18a0e..9e21c1c 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -20,6 +20,8 @@ namespace SpriteLibrary internal partial class SpriteEntryForm : Form { SpriteController MyController; + SpriteController PreviewController; + ResourceManager myResources = null; List SpriteInformation = new List(); SpriteInfo TempInformation = null; @@ -34,6 +36,8 @@ namespace SpriteLibrary ToolTip myToolTip = new ToolTip(); + Sprite PreviewSprite = null; + internal SpriteEntryForm(SpriteDatabase theDatabase, List ListToWorkOn, Size GridSize) { InitializeComponent(); @@ -50,10 +54,17 @@ namespace SpriteLibrary private void LocalSetup() { + //set up the controller for the image-choice window pbImageField.BackgroundImageLayout = ImageLayout.Stretch; pbImageField.BackgroundImage = new Bitmap(600, 800); MyController = new SpriteController(pbImageField); + //set up the sprite controller for the preview window + pbPreview.BackgroundImage = new Bitmap(400, 400); + Graphics.FromImage(pbPreview.BackgroundImage).Clear(Color.Gray); + pbPreview.BackgroundImageLayout = ImageLayout.Stretch; + PreviewController = new SpriteController(pbPreview); + myToolTip.AutoPopDelay = 5000; myToolTip.AutomaticDelay = 500; @@ -431,5 +442,15 @@ namespace SpriteLibrary UpdateMenu(); } + + private void btnPreview_Click(object sender, EventArgs e) + { + //remove the old one + if (PreviewSprite != null) PreviewSprite.Destroy(); + //Create a new one + PreviewSprite = TempInformation.CreateSprite(PreviewController, myDatabase); + PreviewSprite.PutBaseImageLocation(new Point(1, 1)); + //PreviewSprite.SetSize(new Size(50, 50)); + } } } From fb0771a474b47957a470c68b6e9536296365ed14 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 08:42:04 -0500 Subject: [PATCH 38/77] Preview animations fwd/back buttons working --- SpriteLibrary/SpriteEntryForm.Designer.cs | 2 ++ SpriteLibrary/SpriteEntryForm.cs | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 526e9d6..40cd52a 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -471,6 +471,7 @@ this.btnPreviewAnimFwd.TabIndex = 25; this.btnPreviewAnimFwd.Text = ">"; this.btnPreviewAnimFwd.UseVisualStyleBackColor = true; + this.btnPreviewAnimFwd.Click += new System.EventHandler(this.btnPreviewAnimFwd_Click); // // btnPreviewAnimBack // @@ -481,6 +482,7 @@ this.btnPreviewAnimBack.TabIndex = 26; this.btnPreviewAnimBack.Text = "<"; this.btnPreviewAnimBack.UseVisualStyleBackColor = true; + this.btnPreviewAnimBack.Click += new System.EventHandler(this.btnPreviewAnimBack_Click); // // SpriteEntryForm // diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 9e21c1c..c958818 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -452,5 +452,27 @@ namespace SpriteLibrary PreviewSprite.PutBaseImageLocation(new Point(1, 1)); //PreviewSprite.SetSize(new Size(50, 50)); } + + private void btnPreviewAnimBack_Click(object sender, EventArgs e) + { + if(PreviewSprite != null) + { + int Animations = PreviewSprite.AnimationCount; + int NextAnim = PreviewSprite.AnimationIndex - 1; + if (NextAnim < 0) NextAnim = Animations - 1; + PreviewSprite.ChangeAnimation(NextAnim); + } + } + + private void btnPreviewAnimFwd_Click(object sender, EventArgs e) + { + if (PreviewSprite != null) + { + int Animations = PreviewSprite.AnimationCount; + int NextAnim = PreviewSprite.AnimationIndex + 1; + if (NextAnim >= Animations) NextAnim = 0; + PreviewSprite.ChangeAnimation(NextAnim); + } + } } } From 9f6412e916d4070275c2f13acfd12fb7c920025e Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 08:44:04 -0500 Subject: [PATCH 39/77] preview fw/back buttons not enabled if only one animation --- SpriteLibrary/SpriteEntryForm.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index c958818..3b14c2d 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -128,11 +128,15 @@ namespace SpriteLibrary { btnAnimBack.Enabled = true; btnAnimFwd.Enabled = true; + btnPreviewAnimBack.Enabled = true; + btnPreviewAnimFwd.Enabled = true; } else { btnAnimBack.Enabled = false; btnAnimFwd.Enabled = false; + btnPreviewAnimBack.Enabled = false; + btnPreviewAnimFwd.Enabled = false; } if (rbFromImage.Checked) { From 005c35761c4ac5a27c5569a0df16683a44366091 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 13:10:36 -0500 Subject: [PATCH 40/77] make a ValuesDifferFromData function --- SpriteLibrary/SpriteEntryForm.cs | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 3b14c2d..8f306fe 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -291,6 +291,51 @@ namespace SpriteLibrary } } + /// + /// Take the values stored in TempInformation and push it out to our form + /// + private bool ValuesDifferFromData() + { + if (TempInformation == null) return true; + //For the main sprite information + int tValue; + + if(TempInformation.SpriteName != tbSpriteName.Text) return true; + int.TryParse(tbDefaultSize.Text, out tValue); + if(tValue != TempInformation.ViewPercent)return true; + + //From the current animation + AnimationInfo AI = null; + if (CurrentSIAnimation < 0) CurrentSIAnimation = 0; + if (CurrentSIAnimation >= TempInformation.Animations.Count) CurrentSIAnimation = TempInformation.Animations.Count - 1; + if (CurrentSIAnimation < TempInformation.Animations.Count) + { + AI = TempInformation.Animations[CurrentSIAnimation]; + + int.TryParse(tbAmimationSpeed.Text, out tValue); + if (tValue != AI.AnimSpeed) return true; + if(AI.ImageName != cbStartingImage.Text) return true; + + if(AI.MirrorHorizontally != cbMirrorH.Checked) return true; + if(AI.MirrorVertically != cbMirrorV.Checked) return true; + + int.TryParse(cbAnimation.Text, out tValue); + if (tValue != AI.AnimationToUse) return true; + + int.TryParse(tbNumFrames.Text, out tValue); + if(tValue != AI.NumFrames) return true; + + if(AI.StartPoint != ChosenArea.Location) return true; + if(AI.Width != ChosenArea.Width) return true; + if(AI.Height != ChosenArea.Height) return true; + + if (rbFromImage.Checked && AI.FieldsToUse != AnimationType.SpriteDefinition) return true; + if (rbMirror.Checked && AI.FieldsToUse != AnimationType.Mirror) return true; + if (rbRotation.Checked && AI.FieldsToUse != AnimationType.Rotation) return true; + } + return false; + } + /// /// Given two locations that we have clicked on, find the area we have selected /// From 6e2661a6488967601c603b7950000da01da489b0 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 13:19:46 -0500 Subject: [PATCH 41/77] use prompt for saving when moving around --- SpriteLibrary/SpriteEntryForm.cs | 97 +++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 34 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 8f306fe..41a2827 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -410,6 +410,21 @@ namespace SpriteLibrary UpdateMenu(); } + /// + /// Prompt to apply changes. We return true if we continue, or false if we canceled out. + /// + /// + bool PromptToApplyChangesAndContinue() + { + if(ValuesDifferFromData()) + { + DialogResult Answer = MessageBox.Show("You have unsaved Changes. Would you like to save them before proceeding?","Save?",MessageBoxButtons.YesNoCancel); + if (Answer == DialogResult.Yes) ApplyChanges(); + if (Answer == DialogResult.Cancel) return false; + } + return true; + } + private void btnApply_Click(object sender, EventArgs e) { ApplyChanges(); @@ -433,63 +448,77 @@ namespace SpriteLibrary private void btnFwd_Click(object sender, EventArgs e) { - if (SpriteInformation.Count == 0) return; //nothing to do - CurrentSIIndex++; - if (CurrentSIIndex >= SpriteInformation.Count) CurrentSIIndex = 0; - if (TempInformation == null) TempInformation = new SpriteInfo(); - WeHaveNewItem(); + if (PromptToApplyChangesAndContinue()) + { + if (SpriteInformation.Count == 0) return; //nothing to do + CurrentSIIndex++; + if (CurrentSIIndex >= SpriteInformation.Count) CurrentSIIndex = 0; + if (TempInformation == null) TempInformation = new SpriteInfo(); + WeHaveNewItem(); + } } private void btnBack_Click(object sender, EventArgs e) { - if (SpriteInformation.Count == 0) return; //nothing to do - CurrentSIIndex--; - if (CurrentSIIndex < 0) CurrentSIIndex = SpriteInformation.Count - 1; - if (TempInformation == null) TempInformation = new SpriteInfo(); - WeHaveNewItem(); + if (PromptToApplyChangesAndContinue()) + { + if (SpriteInformation.Count == 0) return; //nothing to do + CurrentSIIndex--; + if (CurrentSIIndex < 0) CurrentSIIndex = SpriteInformation.Count - 1; + if (TempInformation == null) TempInformation = new SpriteInfo(); + WeHaveNewItem(); + } } private void btnNewSprite_Click(object sender, EventArgs e) { - TempInformation = null; - CurrentSIIndex = -1; + if (PromptToApplyChangesAndContinue()) + { + TempInformation = null; + CurrentSIIndex = -1; - SetUpEmptyInfo(); - SpriteInformationToForm(); - UpdateMenu(); + SetUpEmptyInfo(); + SpriteInformationToForm(); + UpdateMenu(); + } } private void btnNewAnimation_Click(object sender, EventArgs e) { - ApplyChanges(); - AnimationInfo AI = TempInformation.Animations[CurrentSIAnimation].Clone(); - TempInformation.Animations.Add(AI); - CurrentSIAnimation++; - SpriteInformationToForm(); - UpdateMenu(); + if (PromptToApplyChangesAndContinue()) + { + AnimationInfo AI = TempInformation.Animations[CurrentSIAnimation].Clone(); + TempInformation.Animations.Add(AI); + CurrentSIAnimation++; + SpriteInformationToForm(); + UpdateMenu(); + } } private void btnAnimBack_Click(object sender, EventArgs e) { - ApplyChanges(); - CurrentSIAnimation--; - if (CurrentSIAnimation < 0) - CurrentSIAnimation = TempInformation.Animations.Count - 1; + if (PromptToApplyChangesAndContinue()) + { + CurrentSIAnimation--; + if (CurrentSIAnimation < 0) + CurrentSIAnimation = TempInformation.Animations.Count - 1; - SpriteInformationToForm(); - UpdateMenu(); + SpriteInformationToForm(); + UpdateMenu(); + } } private void btnAnimFwd_Click(object sender, EventArgs e) { - ApplyChanges(); - CurrentSIAnimation++; - if (CurrentSIAnimation >=TempInformation.Animations.Count) - CurrentSIAnimation = 0; - - SpriteInformationToForm(); - UpdateMenu(); + if (PromptToApplyChangesAndContinue()) + { + CurrentSIAnimation++; + if (CurrentSIAnimation >= TempInformation.Animations.Count) + CurrentSIAnimation = 0; + SpriteInformationToForm(); + UpdateMenu(); + } } private void btnPreview_Click(object sender, EventArgs e) From 0389b3a75996c65dad27d441e598fd530444a9eb Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 13:22:25 -0500 Subject: [PATCH 42/77] destroy the sprite if we were doing a preview --- SpriteLibrary/SpriteEntryForm.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 41a2827..6f2b924 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -432,6 +432,7 @@ namespace SpriteLibrary private void WeHaveNewItem() { + if (PreviewSprite != null) PreviewSprite.Destroy(); TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); SpriteInformationToForm(); UpdateMenu(); @@ -441,7 +442,9 @@ namespace SpriteLibrary if (nindex < 0) return; if (nindex >= SpriteInformation.Count) return; CurrentSIIndex = nindex; + if (PreviewSprite != null) PreviewSprite.Destroy(); TempInformation = SpriteInformation[nindex].Clone(); + CurrentSIAnimation = 0; //always start at animation 0 WeHaveNewItem(); UpdateMenu(); } From 5fd16be79286aa130ef0c864789ce0e7e582ca38 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 14:55:58 -0500 Subject: [PATCH 43/77] Show the current animation number --- SpriteLibrary/SpriteEntryForm.Designer.cs | 16 ++++++++++++++-- SpriteLibrary/SpriteEntryForm.cs | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 40cd52a..4d2e0ec 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -69,6 +69,7 @@ this.btnReset = new System.Windows.Forms.Button(); this.btnPreviewAnimFwd = new System.Windows.Forms.Button(); this.btnPreviewAnimBack = new System.Windows.Forms.Button(); + this.lblAnimationNumber = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); this.TCTabPages.SuspendLayout(); this.tpFromImage.SuspendLayout(); @@ -265,6 +266,7 @@ // // tpFromImage // + this.tpFromImage.Controls.Add(this.lblAnimationNumber); this.tpFromImage.Controls.Add(this.lblAnimationFwdBack); this.tpFromImage.Controls.Add(this.btnAnimBack); this.tpFromImage.Controls.Add(this.btnAnimFwd); @@ -284,7 +286,7 @@ // lblAnimationFwdBack // this.lblAnimationFwdBack.AutoSize = true; - this.lblAnimationFwdBack.Location = new System.Drawing.Point(109, 88); + this.lblAnimationFwdBack.Location = new System.Drawing.Point(69, 88); this.lblAnimationFwdBack.Name = "lblAnimationFwdBack"; this.lblAnimationFwdBack.Size = new System.Drawing.Size(74, 17); this.lblAnimationFwdBack.TabIndex = 20; @@ -293,7 +295,7 @@ // btnAnimBack // this.btnAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAnimBack.Location = new System.Drawing.Point(189, 85); + this.btnAnimBack.Location = new System.Drawing.Point(149, 85); this.btnAnimBack.Name = "btnAnimBack"; this.btnAnimBack.Size = new System.Drawing.Size(32, 23); this.btnAnimBack.TabIndex = 19; @@ -484,6 +486,15 @@ this.btnPreviewAnimBack.UseVisualStyleBackColor = true; this.btnPreviewAnimBack.Click += new System.EventHandler(this.btnPreviewAnimBack_Click); // + // lblAnimationNumber + // + this.lblAnimationNumber.AutoSize = true; + this.lblAnimationNumber.Location = new System.Drawing.Point(190, 91); + this.lblAnimationNumber.Name = "lblAnimationNumber"; + this.lblAnimationNumber.Size = new System.Drawing.Size(16, 17); + this.lblAnimationNumber.TabIndex = 21; + this.lblAnimationNumber.Text = "0"; + // // SpriteEntryForm // this.AcceptButton = this.btnApply; @@ -576,5 +587,6 @@ private System.Windows.Forms.Button btnReset; private System.Windows.Forms.Button btnPreviewAnimFwd; private System.Windows.Forms.Button btnPreviewAnimBack; + private System.Windows.Forms.Label lblAnimationNumber; } } \ No newline at end of file diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 6f2b924..21cf804 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -117,6 +117,7 @@ namespace SpriteLibrary { cbAnimation.Items.Add(i.ToString()); } + lblAnimationNumber.Text = CurrentSIAnimation.ToString(); if (CurrentSIAnimation == 0) { rbFromImage.Checked = true; From a5c9449ddafdf8841c1f9e926e40b2a412562c07 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 14:59:52 -0500 Subject: [PATCH 44/77] fix Apply. It had not been tracking the correct item number. --- SpriteLibrary/SpriteEntryForm.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 21cf804..87579d6 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -405,8 +405,9 @@ namespace SpriteLibrary } else { - SpriteInformation.Add(TempInformation.Clone()); - CurrentSIIndex = SpriteInformation.IndexOf(TempInformation); + SpriteInfo tSI = TempInformation.Clone(); + SpriteInformation.Add(tSI); + CurrentSIIndex = SpriteInformation.IndexOf(tSI); } UpdateMenu(); } From 764d969c50f251953218a34a60778f67e782cb94 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 19 Sep 2017 15:03:24 -0500 Subject: [PATCH 45/77] Add some tooltips --- SpriteLibrary/SpriteEntryForm.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 87579d6..d7ee745 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -74,6 +74,13 @@ namespace SpriteLibrary UpdateMenu(); myToolTip.SetToolTip(btnNewAnimation, "Create another animation for the current sprite."); + myToolTip.SetToolTip(btnAnimBack, "Move to previous animation within this sprite."); + myToolTip.SetToolTip(btnAnimFwd, "Move to next animation within this sprite."); + myToolTip.SetToolTip(btnBack, "Move to previous sprite."); + myToolTip.SetToolTip(btnFwd, "Move to next sprite."); + myToolTip.SetToolTip(btnPreviewAnimBack, "Change preview to previous animation."); + myToolTip.SetToolTip(btnPreviewAnimFwd, "Change preview to next animation."); + } internal List GetUpdatedList() From 03e5724a25906a93989c605a20866d7ec0c7d28c Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 08:02:47 -0500 Subject: [PATCH 46/77] documentation of public functions --- SpriteLibrary/SpriteDatabase.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index 2b31726..f0d7357 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -85,6 +85,12 @@ namespace SpriteLibrary } } + /// + /// 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 + /// specified in the snap-grid. It takes a "Size" specified by System.Drawing.Size. + /// + /// The size of the grid space to snap to when dragging public void SetSnapGridSize(Size GridSize) { if (GridSize.Width <= 0) return; From 03ab2781adec3a15042d5f4cac8c30bbfa4485bf Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 08:03:07 -0500 Subject: [PATCH 47/77] prompt to save if closing form and changes have been made --- SpriteLibrary/SpriteEntryForm.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index d7ee745..e6ce6fd 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -371,7 +371,14 @@ namespace SpriteLibrary private void SpriteEntryForm_FormClosing(object sender, FormClosingEventArgs e) { - myDatabase.Save(); //try saving the file + if (PromptToApplyChangesAndContinue()) + { + myDatabase.Save(); //try saving the file + } + else + { + e.Cancel = true; + } } private void pbImageField_MouseMove(object sender, MouseEventArgs e) From 42b98b65dbcda908a77b9475ddc565df5300c6ff Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 09:59:18 -0500 Subject: [PATCH 48/77] Update change log --- SpriteLibrary/Resources/ChangeLog.rtf | 382 +++++++++++++++++++++----- 1 file changed, 312 insertions(+), 70 deletions(-) diff --git a/SpriteLibrary/Resources/ChangeLog.rtf b/SpriteLibrary/Resources/ChangeLog.rtf index 62304d7..5409f32 100644 --- a/SpriteLibrary/Resources/ChangeLog.rtf +++ b/SpriteLibrary/Resources/ChangeLog.rtf @@ -1,70 +1,312 @@ -{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fmodern\fprq1\fcharset0 Consolas;}} -{\colortbl ;\red0\green0\blue255;\red0\green0\blue0;\red255\green255\blue255;\red43\green145\blue175;} -{\*\generator Riched20 10.0.14393}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 -\pard\nowidctlpar\sa200\sl276\slmult1\f0\fs22\lang9 1.0.6\par -* Fized MouseEnterTransparent, MouseLeaveTransparent\par -* Added a number more Sprite creation functions\par -* Added a number more Sprite.AddAnimation functions\par -* Allow us to set the ending frame after we animate (which frame do we display when we are done) in AnimateOnce and AnimateJustAFewTimes\par -* After a ReplaceImage, it immediately invalidates the sprite and re-draws it.\par -* Add a series of Events, Sprite.MouseOverTransparent, Sprite.MouseEnterTransparent, and Sprite.MouseLeaveTransparent. These check the transparent areas of a sprite to see if you are moving over a solid or transparent area of a sprite. For use if there is a lot of empty area inside a sprite, and you do not want to trigger a MouseEnter function over the empty region.\par -1.0.5\par -* upgraded a lot of documentation. Started the big documentation push\par - - inline documentation updated\par - - Online documentation file: {{\field{\*\fldinst{HYPERLINK http://tyounglightsys.ddns.info/SpriteLibrary/doc }}{\fldrslt{http://tyounglightsys.ddns.info/SpriteLibrary/doc\ul0\cf0}}}}\f0\fs22\par - - Start of a large documentation PDF - Will not see the light of day until 1.0.6\par -* added a SpriteIsBeingDestroyed event. That way you can have code fired off as a particular sprite is being destroyed.\par -* added three events; MouseHover, MouseEnter, and MouseLeave. When the mouse moves over a sprite for the first time, it does the MouseEnter. When we move off the sprite, it does the MouseLeave, and when we pause over the sprite, it does a MouseHover.\par -* Added sprite opacity. Sprite.opacity = .5; \par -* fixed some issues with transparency and sprites\par -* Fixed my new way to add animations. The rotation they use is opposite of what I use. So everything rotated opposite from what was expected.\par -* Added Sprite.MoveTo(Sprite) so a Sprite can target another sprite. The moving sprite will probably need to be moving a bit faster than the destination sprite if the moving sprite hopes to catch up with it.\par -* Added GetSpriteBaseImageCenter and GetSpritePictureboxCenter to find the center-point of the sprite.\par -* Added SpriteComparisonDelegate, the ability to override the sort order (display order) of sprites. The sort order affects which sprite is printed on top of the other sprites. Whichever one has the highest priority is the one that appears on top of the other ones. The default sort order is created by: \cf2\highlight3\f1\fs19\lang1033 SpriteComparisonDelegate\highlight0 = \cf1\highlight3 delegate\cf2 (\cf4 Sprite\cf2 first, \cf4 Sprite\cf2 second) \{ \cf1 return\cf2 first.Zvalue.CompareTo(second.Zvalue); \}; \highlight0\par -\f0\fs22 The sort function simply compares the Zvalue. A more complex version might be:\cf0\lang9\par - -\pard\widctlpar\cf1\highlight3\f1\fs19\lang1033 delegate\cf2 (\cf4 Sprite\cf2 first, \cf4 Sprite\cf2 second) \{\par - \cf1 if\cf2 (first.Zvalue != second.Zvalue) \cf1 return\cf2 first.Zvalue.CompareTo(second.Zvalue);\par - \cf1 if\cf2 (first.BaseImageLocation.Y != second.BaseImageLocation.Y) \cf1 return\cf2 first.BaseImageLocation.Y.CompareTo(second.BaseImageLocation.Y);\par - \cf1 return\cf2 first.BaseImageLocation.X.CompareTo(second.BaseImageLocation.X);\par - -\pard\nowidctlpar\sa200\sl276\slmult1 \};\highlight0\par -\cf0\f0\fs22\lang9 * Added another way to Add Animations. We can create an animation that is a rotation of a different animation. For example, you can have something rotated by 45 or 90 degrees.\par -* Fixed a bug with large sprites that make other things blink\par -* SpriteController.ResetKeypressState() clears any residual keypress. Sometimes the program misses keys being pressed and released. This clears any memory, and starts it from scratch.\par -1.0.4\par -* fix timing issue with start-animation. It had not been setting the animation start time.\par -* Added ability to change the animation speed of one frame. Works across all sprites. \cf2\highlight3\f1\fs19 ChangeFrameAnimationSpeed\lang1033 / GetFrameAnimationSpeed\cf0\highlight0\f0\fs22\lang9\par -* Added the ability to return the count of animations this sprite has (Sprite.AnimationCount)\par -* Added a Sprite.GetImage(animation, frame) so we can retrieve any specific image\par -* added a sprite.unhidesprite function that does the opposite of the hidesprite function.\par -* Fix the getanimationspeed func to return the real amount\par -* Add a random number generator to the sprite controller\par -*Allow a change to the tick-speed. Default is 10ms.\par -*Add a spriteController.DestroyAllSprites function\par -* Added the ability to replace a sprite frame. (Sprite.ReplaceImage)\par -* Added a \cf2\highlight3\f1\fs19 RegisterKeyDownFunction\lang1033 and RegisterKeyUpFunction, as well as the corresponding events on the keyfilter. This allows you to trigger things when a key is pressed and released.\cf0\highlight0\f0\fs22\lang9\par -* Added a function to return all the sprites that intersect with a given rectangle\par -* Added a KeysPressed function that returns a list of all the keys which are currently pressed.\par -* Repaired a glitch in playing sounds. Set the stream position back to 0 (the beginning so you can play it a second time)\par -*Repaired a small bug with the animate-once function that kept rotating the animation once it had finished.\line * Support for large sprites. SpriteController.\cf2\highlight3 OptimizeForLargeSpriteImages\lang1033 = true/false will resize the sprite and store it in its resized state. It should print the sprite faster this way than if it needs to squish or expand the sprite every time it goes to print it.\par -*Add the ability to specify the starting frame when we tell the sprite to do an animation. \cf1\f1\fs19 public\cf2 \cf1 void\cf2 ChangeAnimation(\cf1 int\cf2 WhichAnimation, \cf1\b int\cf2 StartFrame = 0\b0 )\cf0\highlight0\f0\fs22\lang9\par -1.0.3\par -* Fixed a problem in the "animate a few times" function. It basically would only animate once, regardless of how many times you told it to animate.\par -* Fixed a problem in the sound. I was itterating through a list of sounds, and the list changed. My foreach loop would break. Changed that. Thanks, Warren for pointing that out.\par -* Fixed MoveTo - Occasionally the MoveTo will break terribly. If you move the sprite to the position where it is, it will make a vector with NaN (Not a Number) and it throws the sprite off to a place waaaay long away.\par -* Fixed MoveTo - Would occasionally send the sprite off in the wrong direction for a bit. The "last movement" time was not set, so, when a direction was set, it would think it had been kept from moving for some time, and leap forward that amount of time. This resulted in the sprite suddenly being half-way across the screen in a strange location. All fixed.\par -* Fixed MoveTo(List). It works much better now. It used to get a slightly off direction (probably a rounding issue) and would not recorrect. It always missed the destination. Changed it to be self correcting.\par -* FIxed faster movement to the left than right (due to dropping of decimals instead of rounding)\par -* Added this release notes file so people can figure out what has changed since the last update.\par -1.0.2\par -* Able to change animation speed\par -* Added MoveTo\par -* Added Mirroring\par -1.0.1\par -* Minor changes (DateTime.Now -> DateTime.UtcNow)\par -* Change to Payload structure. Was "Object" now it is a class of its own: SpritePayload\par -* return sprites at point broken terribly. Would return all the named sprites which had never been displayed. Finding all the sprites in the top-left corner returned a ton of sprites that should not have been there. Now it only returns sprites that have been printed.\par -1.0.0 Initial Version\par -} - \ No newline at end of file +{\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;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} +{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f41\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f42\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f44\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f45\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f46\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f47\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f48\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f49\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f431\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f432\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} +{\f434\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f435\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f436\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f437\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);} +{\f438\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f439\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f441\fbidi \fmodern\fcharset238\fprq1 Consolas CE;}{\f442\fbidi \fmodern\fcharset204\fprq1 Consolas Cyr;} +{\f444\fbidi \fmodern\fcharset161\fprq1 Consolas Greek;}{\f445\fbidi \fmodern\fcharset162\fprq1 Consolas Tur;}{\f448\fbidi \fmodern\fcharset186\fprq1 Consolas Baltic;}{\f449\fbidi \fmodern\fcharset163\fprq1 Consolas (Vietnamese);} +{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;} +{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);} +{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} +{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} +{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} +{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; +\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red43\green145\blue175;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 +\ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused +Normal Table;}}{\*\rsidtbl \rsid70908\rsid3222827}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator tim.young@lightsys.org}{\creatim\yr2017\mo9\dy20\hr8\min3} +{\revtim\yr2017\mo9\dy20\hr8\min8}{\version2}{\edmins5}{\nofpages4}{\nofwords1130}{\nofchars6445}{\nofcharsws7560}{\vern91}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 +\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale90\rsidroot3222827 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1 +\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5 +\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 +\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 1.0.6 +\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 \hich\af39\dbch\af31505\loch\f39 * \hich\af39\dbch\af31505\loch\f39 Ad\hich\af39\dbch\af31505\loch\f39 +ded linked sprite-controllers so we can share sprite definitions between controllers (decreases load time considerably) +\par \hich\af39\dbch\af31505\loch\f39 * Added a \hich\af39\dbch\af31505\loch\f39 S\hich\af39\dbch\af31505\loch\f39 prite\hich\af39\dbch\af31505\loch\f39 Database s\hich\af39\dbch\af31505\loch\f39 +ystem that can help you define, load, and save sprites. It also decreases load time. +\par \hich\af39\dbch\af31505\loch\f39 * Adde\hich\af39\dbch\af31505\loch\f39 d the SpriteDatabase \hich\af39\dbch\af31505\loch\f39 Open\hich\af39\dbch\af31505\loch\f39 EditWindow\hich\af39\dbch\af31505\loch\f39 +, which allows you to graphically define sprites. Add your sprite images to your \hich\af39\dbch\af31505\loch\f39 resources\hich\af39\dbch\af31505\loch\f39 +, and then make a function to call the OpenEditWindow function (passing it a filename). It will save the sprite definitions to the \hich\af39\dbch\af31505\loch\f39 filename. Then you can add that file to your \hich\af39\dbch\af31505\loch\f39 +resources and load that\hich\af39\dbch\af31505\loch\f39 new resource. +\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 * F}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 \hich\af39\dbch\af31505\loch\f39 ix}{\rtlch\fcs1 \af39 \ltrch\fcs0 +\f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 ed MouseEnterTransparent, MouseLeaveTransparent +\par \hich\af39\dbch\af31505\loch\f39 * Added a number more Sprite creation functions +\par \hich\af39\dbch\af31505\loch\f39 * Added a number more Sprite.AddAnimation functions +\par \hich\af39\dbch\af31505\loch\f39 * Allow us to set the ending frame after we animate (which frame do we display when we are done) in AnimateOnce and AnimateJustAFewTimes +\par \hich\af39\dbch\af31505\loch\f39 * After a ReplaceImage, it immediately invalidates the sprite and re-draws it. +\par \hich\af39\dbch\af31505\loch\f39 * Add a series of Events, Sprite.MouseOv\hich\af39\dbch\af31505\loch\f39 +erTransparent, Sprite.MouseEnterTransparent, and Sprite.MouseLeaveTransparent. These check the transparent areas of a sprite to see if you are moving over a solid or transparent area of a sprite. For use if there is a lot of empty area inside a sprite, +\hich\af39\dbch\af31505\loch\f39 a\hich\af39\dbch\af31505\loch\f39 nd you do not want to trigger a MouseEnter function over the empty region. +\par \hich\af39\dbch\af31505\loch\f39 1.0.5 +\par \hich\af39\dbch\af31505\loch\f39 * upgraded a lot of documentation. Started the big documentation push +\par \hich\af39\dbch\af31505\loch\f39 - inline documentation updated +\par \hich\af39\dbch\af31505\loch\f39 - Online documentation file: }{\field{\*\fldinst {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 HYPERLINK http://tyounglightsys.ddns.info +\hich\af39\dbch\af31505\loch\f39 /SpriteLibrary/doc }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7c00000068007400740070003a002f002f00740079006f0075006e0067006c0069006700680074007300790073002e00640064006e0073002e0069006e0066006f002f005300700072006900740065004c0069006200 +72006100720079002f0064006f0063000000795881f43b1d7f48af2c825dc485276300000000a5ab0003}}}{\fldrslt {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 http://tyounglightsys.ddns.info/SpriteLibrary/doc} +}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 +\par \hich\af39\dbch\af31505\loch\f39 - Start of a large documentation PDF - Will not see the light of day until 1.0.6 +\par \hich\af39\dbch\af31505\loch\f39 * added a SpriteIsBeingDestroyed event. That way you can have code fired off as a particular sprite is being destroyed. +\par \hich\af39\dbch\af31505\loch\f39 * added three events; MouseHover, MouseEnter, and MouseLeave. When the mouse moves over a sprite for the first time, it does the Mouse\hich\af39\dbch\af31505\loch\f39 +Enter. When we move off the sprite, it does the MouseLeave, and when we pause over the sprite, it does a MouseHover. +\par \hich\af39\dbch\af31505\loch\f39 * Added sprite opacity. Sprite.opacity = .5; +\par \hich\af39\dbch\af31505\loch\f39 * fixed some issues with transparency and sprites +\par \hich\af39\dbch\af31505\loch\f39 * Fixed my new way to add animations. Th\hich\af39\dbch\af31505\loch\f39 e rotation they use is opposite of what I use. So everything rotated opposite from what was expected. +\par \hich\af39\dbch\af31505\loch\f39 * Added Sprite.MoveTo(Sprite) so a Sprite can target another sprite. The moving sprite will probably need to be moving a bit faster than the destination\hich\af39\dbch\af31505\loch\f39 + sprite if the moving sprite hopes to catch up with it. +\par \hich\af39\dbch\af31505\loch\f39 * Added GetSpriteBaseImageCenter and GetSpritePictureboxCenter to find the center-point of the sprite. +\par \hich\af39\dbch\af31505\loch\f39 * Added SpriteComparisonDelegate, the ability to override the sort order (display order) of sprit\hich\af39\dbch\af31505\loch\f39 +es. The sort order affects which sprite is printed on top of the other sprites. Whichever one has the highest priority is the one that appears on top of the other ones. The default sort order is created by: }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 SpriteComparisonDelegate}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\insrsid70908 \hich\af40\dbch\af31505\loch\f40 = }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 delegate}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 (}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 fi\hich\af40\dbch\af31505\loch\f40 rst, }{\rtlch\fcs1 \af40\afs19 +\ltrch\fcs0 \f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 second) \{ }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first.Zvalue.CompareTo(second.Zvalue); \}; }{\rtlch\fcs1 +\af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\insrsid70908 +\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\cf1\insrsid70908 \hich\af39\dbch\af31505\loch\f39 The sort function simply compares the Zvalue. A more complex version might be:}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 +\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 delegate}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 (}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first, }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 second) \{ +\par \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 if}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 +\hich\af40\dbch\af31505\loch\f40 (first.Zvalue != second.Zvalue) }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first\hich\af40\dbch\af31505\loch\f40 .Zvalue.CompareTo(second.Zvalue); +\par \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 if}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 +\hich\af40\dbch\af31505\loch\f40 (first.BaseImageLocation.Y != second.BaseImageLocation.Y) }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first.BaseImageLocation.Y.CompareTo(second.BaseImageLocation.Y); +\par \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 +\hich\af40\dbch\af31505\loch\f40 first.BaseImageLocation.X.CompareTo(second.BaseIma\hich\af40\dbch\af31505\loch\f40 geLocation.X); +\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 \};}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\insrsid70908 +\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 +* Added another way to Add Animations. We can create an animation that is a rotation of a different animation. For example, you can have something rotated by 45 or 90 degrees. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed a bug with large sprites that make other things blink +\par \hich\af39\dbch\af31505\loch\f39 * SpriteController.ResetKeypressState() clears any residual keypress. Sometimes the program misses keys being pressed and released. This clears any memory, and starts it from scratch. +\par \hich\af39\dbch\af31505\loch\f39 1.0.4 +\par \hich\af39\dbch\af31505\loch\f39 * \hich\af39\dbch\af31505\loch\f39 fix timing issue with start-animation. It had not been setting the animation start time. +\par \hich\af39\dbch\af31505\loch\f39 * Added ability to change the animation speed of one frame. Works across all sprites. }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\lang9\langfe1033\highlight8\langnp9\insrsid70908 \hich\af40\dbch\af31505\loch\f40 +ChangeFrameAnimationSpeed}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 / GetFrameAnimationSpeed}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 +\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to retur\hich\af39\dbch\af31505\loch\f39 n the count of animations this sprite has (Sprite.AnimationCount) +\par \hich\af39\dbch\af31505\loch\f39 * Added a Sprite.GetImage(animation, frame) so we can retrieve any specific image +\par \hich\af39\dbch\af31505\loch\f39 * added a sprite.unhidesprite function that does the opposite of the hidesprite function. +\par \hich\af39\dbch\af31505\loch\f39 * Fix the getanima\hich\af39\dbch\af31505\loch\f39 tionspeed func to return the real amount +\par \hich\af39\dbch\af31505\loch\f39 * Add a random number generator to the sprite controller +\par \hich\af39\dbch\af31505\loch\f39 *Allow a change to the tick-speed. Default is 10ms. +\par \hich\af39\dbch\af31505\loch\f39 *Add a spriteController.DestroyAllSprites function +\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to replace a sprite frame. (Sprit\hich\af39\dbch\af31505\loch\f39 e.ReplaceImage) +\par \hich\af39\dbch\af31505\loch\f39 * Added a }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\lang9\langfe1033\highlight8\langnp9\insrsid70908 \hich\af40\dbch\af31505\loch\f40 RegisterKeyDownFunction}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 and RegisterKeyUpFunction, as well as the corresponding events on the keyfilter. This allows you to trigger things when a key is pressed and released.}{\rtlch\fcs1 \af39 \ltrch\fcs0 +\f39\lang9\langfe1033\langnp9\insrsid70908 +\par \hich\af39\dbch\af31505\loch\f39 * Added a function to return all the sprites that inte\hich\af39\dbch\af31505\loch\f39 rsect with a given rectangle +\par \hich\af39\dbch\af31505\loch\f39 * Added a KeysPressed function that returns a list of all the keys which are currently pressed. +\par \hich\af39\dbch\af31505\loch\f39 * Repaired a glitch in playing sounds. Set the stream position back to 0 (the beginning so you can play it a second time) +\par \hich\af39\dbch\af31505\loch\f39 *Repaire\hich\af39\dbch\af31505\loch\f39 d a small bug with the animate-once function that kept rotating the animation once it had finished.\line * Support for large sprites. SpriteController.}{\rtlch\fcs1 \af39 +\ltrch\fcs0 \f39\cf1\lang9\langfe1033\highlight8\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 OptimizeForLargeSpriteImages}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\cf1\highlight8\insrsid70908 \hich\af39\dbch\af31505\loch\f39 + = true/false will resize the sprite and store it in its resized state. It shoul\hich\af39\dbch\af31505\loch\f39 d print the sprite faster this way than if it needs to squish or expand the sprite every time it goes to print it. +\par \hich\af39\dbch\af31505\loch\f39 *Add the ability to specify the starting frame when we tell the sprite to do an animation. }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 public}{\rtlch\fcs1 +\af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 void}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 ChangeAnimation(}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 int}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 WhichAnimation, }{\rtlch\fcs1 \ab\af40\afs19 \ltrch\fcs0 \b\f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 int}{\rtlch\fcs1 \ab\af40\afs19 \ltrch\fcs0 +\b\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 StartFrame = 0}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 )}{\rtlch\fcs1 \af39 \ltrch\fcs0 +\f39\lang9\langfe1033\langnp9\insrsid70908 +\par \hich\af39\dbch\af31505\loch\f39 1.0.3 +\par \hich\af39\dbch\af31505\loch\f39 * Fixed a problem in the "animate a few times" function. It basically would only animate once, regardless of how many times you told it to animate. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed a problem in the sound. I was itterating through a list of sounds, and t\hich\af39\dbch\af31505\loch\f39 he list changed. My foreach loop would break. Changed that. Thanks, Warren for pointing that out. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo - Occasionally the MoveTo will break terribly. If you move the sprite to the position where it is, it will make a vector with NaN (Not a Nu\hich\af39\dbch\af31505\loch\f39 +mber) and it throws the sprite off to a place waaaay long away. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo - Would occasionally send the sprite off in the wrong direction for a bit. The "last movement" time was not set, so, when a direction was set, it would think it had been kept f +\hich\af39\dbch\af31505\loch\f39 rom moving for some time, and leap forward that amount of time. This resulted in the sprite suddenly being half-way across the screen in a strange location. All fixed. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo(List). It works much better now. It used to get a slightly off\hich\af39\dbch\af31505\loch\f39 + direction (probably a rounding issue) and would not recorrect. It always missed the destination. Changed it to be self correcting. +\par \hich\af39\dbch\af31505\loch\f39 * FIxed faster movement to the left than right (due to dropping of decimals instead of rounding) +\par \hich\af39\dbch\af31505\loch\f39 * Added this release note\hich\af39\dbch\af31505\loch\f39 s file so people can figure out what has changed since the last update. +\par \hich\af39\dbch\af31505\loch\f39 1.0.2 +\par \hich\af39\dbch\af31505\loch\f39 * Able to change animation speed +\par \hich\af39\dbch\af31505\loch\f39 * Added MoveTo +\par \hich\af39\dbch\af31505\loch\f39 * Added Mirroring +\par \hich\af39\dbch\af31505\loch\f39 1.0.1 +\par \hich\af39\dbch\af31505\loch\f39 * Minor changes (DateTime.Now -> DateTime.UtcNow) +\par \hich\af39\dbch\af31505\loch\f39 * Change to Payload structure. Was "Object" now it is a class of its own: SpritePayload +\par \hich\af39\dbch\af31505\loch\f39 * return sprites at point broken terribly. Would return all the named sprites which had never been displayed. Finding all the sprites in the top-left corner returned\hich\af39\dbch\af31505\loch\f39 + a ton of sprites that should not have been there. Now it only returns sprites that have been printed. +\par \hich\af39\dbch\af31505\loch\f39 1.0.0 Initial Version}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210007b740aaca0600008f1a0000160000007468656d652f7468656d652f +7468656d65312e786d6cec595b8bdb46147e2ff43f08bd3bbe49be2cf1065bb69336bb49889d943cceda636bb2238dd18c776342a0244f7d2914d2d28706fad6 +87521a68a0a12ffd310b1bdaf447f4cc489667ec71f6420aa1640d8b34face996fce39face48ba7aed51449d239c70c2e2965bbe52721d1c8fd898c4d3967b6f +d82f345c870b148f1165316eb90bccdd6bbb9f7e7215ed881047d801fb98efa0961b0a31db2916f9088611bfc26638866b13964448c069322d8e13740c7e235a +ac944ab5628448ec3a318ac0ededc9848cb033942edddda5f31e85d358703930a2c940bac68685c28e0fcb12c1173ca089738468cb8579c6ec78881f09d7a188 +0bb8d0724beacf2dee5e2da29dcc888a2db69a5d5ffd657699c1f8b0a2e64ca607f9a49ee77bb576ee5f01a8d8c4f5eabd5aaf96fb5300341ac14a532eba4fbf +d3ec74fd0cab81d2438bef6ebd5b2d1b78cd7f758373db973f03af40a97f6f03dfef07104503af4029dedfc07b5ebd1278065e81527c6d035f2fb5bb5eddc02b +5048497cb8812ef9b56ab05c6d0e99307ac30a6ffa5ebf5ec99caf50500d7975c929262c16db6a2d420f59d2078004522448ec88c50c4fd008aa3840941c24c4 +d923d3100a6f8662c661b85429f54b55f82f7f9e3a5211413b1869d6921730e11b43928fc34709998996fb39787535c8e9ebd7274f5f9d3cfdfde4d9b393a7bf +66732b5786dd0d144f75bbb73f7df3cf8b2f9dbf7ffbf1edf36fd3a9d7f15cc7bff9e5ab377ffcf92ef7b0e255284ebf7bf9e6d5cbd3efbffeebe7e716efed04 +1de8f0218930776ee163e72e8b608116fef820b998c5304444b768c7538e622467b1f8ef89d040df5a208a2cb80e36e3783f01a9b101afcf1f1a8407613217c4 +e2f1661819c07dc6688725d628dc947369611ecee3a97df264aee3ee2274649b3b40b191e5de7c061a4b6c2e83101b34ef50140b34c531168ebcc60e31b6acee +0121465cf7c928619c4d84f380381d44ac21199203a39a56463748047959d80842be8dd8ecdf773a8cda56ddc5472612ee0d442de487981a61bc8ee602453697 +4314513de07b48843692834532d2713d2e20d3534c99d31b63ce6d36b71358af96f49b2033f6b4efd345642213410e6d3ef710633ab2cb0e831045331b7640e2 +50c77ec60fa144917387091b7c9f9977883c873ca0786bbaef136ca4fb6c35b8070aab535a1588bc324f2cb9bc8e9951bf83059d20aca4061a80a1eb1189cf14 +f93579f7ff3b7907113dfde1856545ef47d2ed8e8d7c5c50ccdb09b1de4d37d6247c1b6e5db803968cc987afdb5d348fef60b855369bd747d9fe28dbeeff5eb6 +b7ddcfef5fac57fa0cd22db7ade9765d6ddea3ad7bf709a174201614ef71b57de7d095c67d189476eab915e7cf72b3100ee59d0c1318b86982948d9330f10511 +e1204433d8e3975de964ca33d753eecc1887adbf1ab6fa96783a8ff6d9387d642d97e5e3692a1e1c89d578c9cfc7e17143a4e85a7df51896bb576ca7ea717949 +40da5e8484369949a26a21515f0eca20a98773089a85845ad97b61d1b4b06848f7cb546db0006a795660dbe4c066abe5fa1e9880113c55218ac7324f69aa97d9 +55c97c9f99de164ca302600fb1ac8055a69b92ebd6e5c9d5a5a5768e4c1b24b4723349a8c8a81ec64334c65975cad1f3d0b868ae9bab941af46428d47c505a2b +1af5c6bb585c36d760b7ae0d34d69582c6ce71cbad557d2899119ab5dc093cfac3613483dae172bb8be814de9f8d4492def097519659c24517f1300db8129d54 +0d222270e25012b55cb9fc3c0d34561aa2b8952b20081f2cb926c8ca87460e926e26194f267824f4b46b2332d2e929287caa15d6abcafcf26069c9e690ee4138 +3e760ee83cb98ba0c4fc7a5906704c38bc012aa7d11c1378a5990bd9aafed61a5326bbfa3b455543e938a2b310651d4517f314aea43ca7a3cef2186867d99a21 +a05a48b2467830950d560faad14df3ae9172d8da75cf369291d34473d5330d55915dd3ae62c60ccb36b016cbcb35798dd532c4a0697a874fa57b5d729b4bad5b +db27e45d02029ec7cfd275cfd110346aabc90c6a92f1a60c4bcdce46cddeb15ce019d4ced32434d5af2dddaec52def11d6e960f0529d1fecd6ab168626cb7da5 +8ab4faf6a17f9e60070f413cbaf022784e0557a9848f0f09820dd140ed4952d9805be491c86e0d3872e60969b98f4b7edb0b2a7e502835fc5ec1ab7aa542c36f +570b6ddfaf967b7eb9d4ed549e4063116154f6d3ef2e7d780d4517d9d71735bef105265abe69bb32625191a92f2c45455c7d812957b67f81710888cee35aa5df +ac363bb542b3daee17bc6ea7516806b54ea15b0beadd7e37f01bcdfe13d7395260af5d0dbc5aaf51a89583a0e0d54a927ea359a87b954adbabb71b3daffd24db +c6c0ca53f9c86201e155bc76ff050000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72 +656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c08 +2e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd0 +8a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa +4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f +6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72 +656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210007b740aaca0600008f1a00001600000000000000000000000000d60200 +007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000000000000000000000 +00d40900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cf0a00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; +\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; +\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; +\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; +\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; +\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; +\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; +\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; +\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; +\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; +\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; +\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; +\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; +\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; +\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; +\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; +\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; +\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; +\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; +\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; +\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; +\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; +\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; +\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000 +4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000050f4 +a0841132d301feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file From 7ed9e548a88a263951765251274fcbdf990fe219 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 09:59:48 -0500 Subject: [PATCH 49/77] more changes. Better viewing of preview --- SpriteLibrary/SpriteEntryForm.Designer.cs | 21 ++++---- SpriteLibrary/SpriteEntryForm.cs | 59 ++++++++++++++++++++--- 2 files changed, 62 insertions(+), 18 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 4d2e0ec..c236679 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -49,6 +49,7 @@ this.lblCountSprites = new System.Windows.Forms.Label(); this.TCTabPages = new System.Windows.Forms.TabControl(); this.tpFromImage = new System.Windows.Forms.TabPage(); + this.lblAnimationNumber = new System.Windows.Forms.Label(); this.lblAnimationFwdBack = new System.Windows.Forms.Label(); this.btnAnimBack = new System.Windows.Forms.Button(); this.btnAnimFwd = new System.Windows.Forms.Button(); @@ -69,7 +70,6 @@ this.btnReset = new System.Windows.Forms.Button(); this.btnPreviewAnimFwd = new System.Windows.Forms.Button(); this.btnPreviewAnimBack = new System.Windows.Forms.Button(); - this.lblAnimationNumber = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); this.TCTabPages.SuspendLayout(); this.tpFromImage.SuspendLayout(); @@ -283,6 +283,15 @@ this.tpFromImage.Text = "From Image"; this.tpFromImage.UseVisualStyleBackColor = true; // + // lblAnimationNumber + // + this.lblAnimationNumber.AutoSize = true; + this.lblAnimationNumber.Location = new System.Drawing.Point(190, 91); + this.lblAnimationNumber.Name = "lblAnimationNumber"; + this.lblAnimationNumber.Size = new System.Drawing.Size(16, 17); + this.lblAnimationNumber.TabIndex = 21; + this.lblAnimationNumber.Text = "0"; + // // lblAnimationFwdBack // this.lblAnimationFwdBack.AutoSize = true; @@ -463,6 +472,7 @@ this.btnReset.TabIndex = 24; this.btnReset.Text = "Reset"; this.btnReset.UseVisualStyleBackColor = true; + this.btnReset.Click += new System.EventHandler(this.btnReset_Click); // // btnPreviewAnimFwd // @@ -486,15 +496,6 @@ this.btnPreviewAnimBack.UseVisualStyleBackColor = true; this.btnPreviewAnimBack.Click += new System.EventHandler(this.btnPreviewAnimBack_Click); // - // lblAnimationNumber - // - this.lblAnimationNumber.AutoSize = true; - this.lblAnimationNumber.Location = new System.Drawing.Point(190, 91); - this.lblAnimationNumber.Name = "lblAnimationNumber"; - this.lblAnimationNumber.Size = new System.Drawing.Size(16, 17); - this.lblAnimationNumber.TabIndex = 21; - this.lblAnimationNumber.Text = "0"; - // // SpriteEntryForm // this.AcceptButton = this.btnApply; diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index e6ce6fd..94b42ad 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -170,23 +170,64 @@ namespace SpriteLibrary UpdateHighlightBox(); } + /// + /// If multiple frames are selected, retrieve all of their rectangles + /// + /// + private List AnimationFrameAreas() + { + List Frames = new List(); + Point start = ChosenArea.Location; + int animations; + int.TryParse(tbNumFrames.Text, out animations); + Frames.Add(ChosenArea); + Image tImage = myDatabase.GetImageFromName(cbStartingImage.SelectedItem.ToString(), true); + + for (int i=1; i< animations; i++) + { + start = new Point(start.X + ChosenArea.Width, start.Y); + if(start.X >= tImage.Width) + { + start.X = 0; + start.Y += ChosenArea.Height; + } + Rectangle tRec = new Rectangle(start.X, start.Y, ChosenArea.Width, ChosenArea.Height); + Frames.Add(tRec); + } + return Frames; + } + private void UpdateHighlightBox() { int transparency = 50; Image NewFrontImage = new Bitmap(pbImageField.BackgroundImage.Width, pbImageField.BackgroundImage.Height); - Color FillColor = Color.Green; + Color FillColor = Color.Gray; Brush brush = new SolidBrush(Color.FromArgb(transparency, FillColor.R, FillColor.G, FillColor.B)); Brush nobrush = new SolidBrush(Color.FromArgb(0,0,0,0)); + List areas = AnimationFrameAreas(); using (Graphics G = Graphics.FromImage(NewFrontImage)) { G.FillRectangle(brush, 0,0,NewFrontImage.Width,NewFrontImage.Height); GraphicsPath path = new GraphicsPath(); - path.AddRectangle(ChosenArea); + foreach (Rectangle one in areas) + { + path.AddRectangle(one); + } G.SetClip(path); G.Clear(Color.Transparent); G.ResetClip(); - // G.FillRectangle(nobrush, ChosenArea); - + transparency = 50; + FillColor = Color.Green; + int increment = 10; + if (areas.Count > 7) increment = 5; + foreach (Rectangle one in areas) + { + transparency += increment; + if (transparency > 150) transparency = 160; + brush = new SolidBrush(Color.FromArgb(transparency, FillColor.R, FillColor.G, FillColor.B)); + G.FillRectangle(brush, one); + } + } pbImageField.Image = NewFrontImage; pbImageField.SizeMode = PictureBoxSizeMode.StretchImage; @@ -209,14 +250,11 @@ namespace SpriteLibrary private void cbStartingImage_SelectedIndexChanged(object sender, EventArgs e) { - ResourceManager rm; - if (myResources != null) rm = myResources; - else rm = Properties.Resources.ResourceManager; //We have a selected item if (cbStartingImage.SelectedIndex >= 0) { //Load in a new image into our background - Image NewImage = (Bitmap)rm.GetObject(cbStartingImage.SelectedItem.ToString()); + Image NewImage = myDatabase.GetImageFromName(cbStartingImage.SelectedItem.ToString(),true); if (NewImage != null) { MyController.ReplaceOriginalImage(new Bitmap(NewImage)); @@ -571,5 +609,10 @@ namespace SpriteLibrary PreviewSprite.ChangeAnimation(NextAnim); } } + + private void btnReset_Click(object sender, EventArgs e) + { + SpriteInformationToForm(); + } } } From 08641c71746b66a07e3689a04f7619301ee9ad91 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 10:30:08 -0500 Subject: [PATCH 50/77] Destroy the preview sprite if we are moving on --- SpriteLibrary/SpriteEntryForm.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 94b42ad..45afdfd 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -475,6 +475,7 @@ namespace SpriteLibrary DialogResult Answer = MessageBox.Show("You have unsaved Changes. Would you like to save them before proceeding?","Save?",MessageBoxButtons.YesNoCancel); if (Answer == DialogResult.Yes) ApplyChanges(); if (Answer == DialogResult.Cancel) return false; + if (PreviewSprite != null) PreviewSprite.Destroy(); } return true; } From 8ee0e435287fb1b744bdae2952388dd2d0c8636d Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 10:46:26 -0500 Subject: [PATCH 51/77] pogress on rotation / mirror --- SpriteLibrary/SpriteEntryForm.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 45afdfd..48aa1b6 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -68,6 +68,10 @@ namespace SpriteLibrary myToolTip.AutoPopDelay = 5000; myToolTip.AutomaticDelay = 500; + rbFromImage.Click += UpdateMenuClick; + rbMirror.Click += UpdateMenuClick; + rbRotation.Click += UpdateMenuClick; + PopulateMenu(); UpdateMenu(); SpriteInformationToForm(); @@ -164,6 +168,11 @@ namespace SpriteLibrary ResumeLayout(); } + private void UpdateMenuClick(object sender, EventArgs e) + { + UpdateMenu(); + } + private void UpdateChosenAreaLabel() { lblChosenArea.Text = ChosenArea.X + "," + ChosenArea.Y + "," + ChosenArea.Width + "," + ChosenArea.Height; @@ -284,6 +293,7 @@ namespace SpriteLibrary TempInformation.Animations.Add(new AnimationInfo()); AI = TempInformation.Animations[CurrentSIAnimation]; tbAmimationSpeed.Text = AI.AnimSpeed.ToString(); + tbRotation.Text = AI.RotationDegrees.ToString(); cbStartingImage.Text = AI.ImageName; cbMirrorH.Checked = AI.MirrorHorizontally; cbMirrorV.Checked = AI.MirrorVertically; @@ -324,6 +334,8 @@ namespace SpriteLibrary AI.MirrorHorizontally = cbMirrorH.Checked; AI.MirrorVertically = cbMirrorV.Checked; + int.TryParse(tbRotation.Text, out AI.RotationDegrees); + int.TryParse(cbAnimation.Text, out AI.AnimationToUse); int.TryParse(tbNumFrames.Text, out AI.NumFrames); From 5420c2131b383a3cefd582a477b23be6136bf76d Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 10:49:04 -0500 Subject: [PATCH 52/77] Move animation fwd bck out of tab-page --- SpriteLibrary/SpriteEntryForm.Designer.cs | 31 +++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index c236679..9eabd9c 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -70,12 +70,14 @@ this.btnReset = new System.Windows.Forms.Button(); this.btnPreviewAnimFwd = new System.Windows.Forms.Button(); this.btnPreviewAnimBack = new System.Windows.Forms.Button(); + this.pnlAnimationFWBK = new System.Windows.Forms.Panel(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); this.TCTabPages.SuspendLayout(); this.tpFromImage.SuspendLayout(); this.tpMirrorRotate.SuspendLayout(); this.panelRadioButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbPreview)).BeginInit(); + this.pnlAnimationFWBK.SuspendLayout(); this.SuspendLayout(); // // pbImageField @@ -266,10 +268,6 @@ // // tpFromImage // - this.tpFromImage.Controls.Add(this.lblAnimationNumber); - this.tpFromImage.Controls.Add(this.lblAnimationFwdBack); - this.tpFromImage.Controls.Add(this.btnAnimBack); - this.tpFromImage.Controls.Add(this.btnAnimFwd); this.tpFromImage.Controls.Add(this.cbStartingImage); this.tpFromImage.Controls.Add(this.lblStartingImage); this.tpFromImage.Controls.Add(this.lblChosenArea); @@ -286,7 +284,7 @@ // lblAnimationNumber // this.lblAnimationNumber.AutoSize = true; - this.lblAnimationNumber.Location = new System.Drawing.Point(190, 91); + this.lblAnimationNumber.Location = new System.Drawing.Point(42, 24); this.lblAnimationNumber.Name = "lblAnimationNumber"; this.lblAnimationNumber.Size = new System.Drawing.Size(16, 17); this.lblAnimationNumber.TabIndex = 21; @@ -295,7 +293,7 @@ // lblAnimationFwdBack // this.lblAnimationFwdBack.AutoSize = true; - this.lblAnimationFwdBack.Location = new System.Drawing.Point(69, 88); + this.lblAnimationFwdBack.Location = new System.Drawing.Point(6, -4); this.lblAnimationFwdBack.Name = "lblAnimationFwdBack"; this.lblAnimationFwdBack.Size = new System.Drawing.Size(74, 17); this.lblAnimationFwdBack.TabIndex = 20; @@ -304,7 +302,7 @@ // btnAnimBack // this.btnAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAnimBack.Location = new System.Drawing.Point(149, 85); + this.btnAnimBack.Location = new System.Drawing.Point(4, 18); this.btnAnimBack.Name = "btnAnimBack"; this.btnAnimBack.Size = new System.Drawing.Size(32, 23); this.btnAnimBack.TabIndex = 19; @@ -315,7 +313,7 @@ // btnAnimFwd // this.btnAnimFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAnimFwd.Location = new System.Drawing.Point(227, 85); + this.btnAnimFwd.Location = new System.Drawing.Point(96, 18); this.btnAnimFwd.Name = "btnAnimFwd"; this.btnAnimFwd.Size = new System.Drawing.Size(32, 23); this.btnAnimFwd.TabIndex = 18; @@ -496,6 +494,19 @@ this.btnPreviewAnimBack.UseVisualStyleBackColor = true; this.btnPreviewAnimBack.Click += new System.EventHandler(this.btnPreviewAnimBack_Click); // + // pnlAnimationFWBK + // + this.pnlAnimationFWBK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.pnlAnimationFWBK.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlAnimationFWBK.Controls.Add(this.lblAnimationNumber); + this.pnlAnimationFWBK.Controls.Add(this.lblAnimationFwdBack); + this.pnlAnimationFWBK.Controls.Add(this.btnAnimFwd); + this.pnlAnimationFWBK.Controls.Add(this.btnAnimBack); + this.pnlAnimationFWBK.Location = new System.Drawing.Point(469, 223); + this.pnlAnimationFWBK.Name = "pnlAnimationFWBK"; + this.pnlAnimationFWBK.Size = new System.Drawing.Size(133, 44); + this.pnlAnimationFWBK.TabIndex = 27; + // // SpriteEntryForm // this.AcceptButton = this.btnApply; @@ -525,6 +536,7 @@ this.Controls.Add(this.lblSpriteName); this.Controls.Add(this.tbSpriteName); this.Controls.Add(this.pbImageField); + this.Controls.Add(this.pnlAnimationFWBK); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; this.MaximizeBox = false; this.MinimizeBox = false; @@ -540,6 +552,8 @@ this.panelRadioButtons.ResumeLayout(false); this.panelRadioButtons.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbPreview)).EndInit(); + this.pnlAnimationFWBK.ResumeLayout(false); + this.pnlAnimationFWBK.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -589,5 +603,6 @@ private System.Windows.Forms.Button btnPreviewAnimFwd; private System.Windows.Forms.Button btnPreviewAnimBack; private System.Windows.Forms.Label lblAnimationNumber; + private System.Windows.Forms.Panel pnlAnimationFWBK; } } \ No newline at end of file From 087b4283fcdb7302cdf9ea01a217ca3536575ae9 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 10:51:49 -0500 Subject: [PATCH 53/77] show total number of animations --- SpriteLibrary/SpriteEntryForm.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 48aa1b6..1b62100 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -128,7 +128,8 @@ namespace SpriteLibrary { cbAnimation.Items.Add(i.ToString()); } - lblAnimationNumber.Text = CurrentSIAnimation.ToString(); + //Update the animation number text + lblAnimationNumber.Text = CurrentSIAnimation.ToString() + " of " + (TempInformation.Animations.Count() -1); if (CurrentSIAnimation == 0) { rbFromImage.Checked = true; From c15bba62fb9983d59e9c51c6c84e6b769f54e76e Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 10:53:10 -0500 Subject: [PATCH 54/77] Cannot base a rotated or mirrored animation off something that is not created yet. --- SpriteLibrary/SpriteEntryForm.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 1b62100..c4f78f6 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -124,7 +124,8 @@ namespace SpriteLibrary //Put in numbers into the combo-box of which frame to base ourselves off of cbAnimation.Items.Clear(); - for(int i =0; i < TempInformation.Animations.Count; i++) + //We cannot base ourselves off an animation we have not created yet + for(int i =0; i < CurrentSIAnimation; i++) { cbAnimation.Items.Add(i.ToString()); } From 6e08d0d6f504f82ddc4c0ab69155933aea2a7750 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 10:55:00 -0500 Subject: [PATCH 55/77] hide the mirror or rotation fields we are not using --- SpriteLibrary/SpriteEntryForm.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index c4f78f6..ae78e3a 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -166,6 +166,18 @@ namespace SpriteLibrary if (!TCTabPages.TabPages.Contains(tpMirrorRotate)) TCTabPages.TabPages.Add(tpMirrorRotate); } + if(rbMirror.Checked) + { + cbMirrorH.Visible = true; + cbMirrorV.Visible = true; + tbRotation.Visible = false; + } + if (rbRotation.Checked) + { + cbMirrorH.Visible = false; + cbMirrorV.Visible = false; + tbRotation.Visible = true; + } UpdateChosenAreaLabel(); ResumeLayout(); } From 3f4e6c5e719a42b3a7bc4fd0612ba961c188eaff Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 10:57:24 -0500 Subject: [PATCH 56/77] do preview if preview fwd / back pressed but preview not pressed yet. --- SpriteLibrary/SpriteEntryForm.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index ae78e3a..f0690b2 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -605,25 +605,30 @@ namespace SpriteLibrary } } - private void btnPreview_Click(object sender, EventArgs e) + private void DoPreview() { //remove the old one if (PreviewSprite != null) PreviewSprite.Destroy(); //Create a new one PreviewSprite = TempInformation.CreateSprite(PreviewController, myDatabase); PreviewSprite.PutBaseImageLocation(new Point(1, 1)); - //PreviewSprite.SetSize(new Size(50, 50)); + } + + private void btnPreview_Click(object sender, EventArgs e) + { + DoPreview(); } private void btnPreviewAnimBack_Click(object sender, EventArgs e) { - if(PreviewSprite != null) + if (PreviewSprite != null) { int Animations = PreviewSprite.AnimationCount; int NextAnim = PreviewSprite.AnimationIndex - 1; if (NextAnim < 0) NextAnim = Animations - 1; PreviewSprite.ChangeAnimation(NextAnim); } + else DoPreview(); } private void btnPreviewAnimFwd_Click(object sender, EventArgs e) @@ -635,6 +640,7 @@ namespace SpriteLibrary if (NextAnim >= Animations) NextAnim = 0; PreviewSprite.ChangeAnimation(NextAnim); } + else DoPreview(); } private void btnReset_Click(object sender, EventArgs e) From f363a9ba7663038692357ec680f071a3f64a80f5 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 11:03:53 -0500 Subject: [PATCH 57/77] Add del sprite, del anim buttons --- SpriteLibrary/SpriteEntryForm.Designer.cs | 132 +++++++++++++--------- 1 file changed, 78 insertions(+), 54 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 9eabd9c..49a8b95 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -49,10 +49,6 @@ this.lblCountSprites = new System.Windows.Forms.Label(); this.TCTabPages = new System.Windows.Forms.TabControl(); this.tpFromImage = new System.Windows.Forms.TabPage(); - this.lblAnimationNumber = new System.Windows.Forms.Label(); - this.lblAnimationFwdBack = new System.Windows.Forms.Label(); - this.btnAnimBack = new System.Windows.Forms.Button(); - this.btnAnimFwd = new System.Windows.Forms.Button(); this.tpMirrorRotate = new System.Windows.Forms.TabPage(); this.cbMirrorH = new System.Windows.Forms.CheckBox(); this.cbMirrorV = new System.Windows.Forms.CheckBox(); @@ -60,6 +56,10 @@ this.tbRotation = new System.Windows.Forms.TextBox(); this.lblWhichAnim = new System.Windows.Forms.Label(); this.cbAnimation = new System.Windows.Forms.ComboBox(); + this.lblAnimationNumber = new System.Windows.Forms.Label(); + this.lblAnimationFwdBack = new System.Windows.Forms.Label(); + this.btnAnimBack = new System.Windows.Forms.Button(); + this.btnAnimFwd = new System.Windows.Forms.Button(); this.panelRadioButtons = new System.Windows.Forms.Panel(); this.rbMirror = new System.Windows.Forms.RadioButton(); this.rbRotation = new System.Windows.Forms.RadioButton(); @@ -71,6 +71,8 @@ this.btnPreviewAnimFwd = new System.Windows.Forms.Button(); this.btnPreviewAnimBack = new System.Windows.Forms.Button(); this.pnlAnimationFWBK = new System.Windows.Forms.Panel(); + this.btnDeleteAnim = new System.Windows.Forms.Button(); + this.btnDelSprite = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.pbImageField)).BeginInit(); this.TCTabPages.SuspendLayout(); this.tpFromImage.SuspendLayout(); @@ -155,7 +157,7 @@ // // btnDone // - this.btnDone.Location = new System.Drawing.Point(421, 309); + this.btnDone.Location = new System.Drawing.Point(528, 312); this.btnDone.Name = "btnDone"; this.btnDone.Size = new System.Drawing.Size(75, 23); this.btnDone.TabIndex = 8; @@ -165,7 +167,7 @@ // btnCancel // this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(340, 309); + this.btnCancel.Location = new System.Drawing.Point(447, 312); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 23); this.btnCancel.TabIndex = 9; @@ -174,7 +176,7 @@ // // btnApply // - this.btnApply.Location = new System.Drawing.Point(340, 280); + this.btnApply.Location = new System.Drawing.Point(252, 312); this.btnApply.Name = "btnApply"; this.btnApply.Size = new System.Drawing.Size(75, 23); this.btnApply.TabIndex = 10; @@ -184,7 +186,7 @@ // // btnNewSprite // - this.btnNewSprite.Location = new System.Drawing.Point(238, 280); + this.btnNewSprite.Location = new System.Drawing.Point(252, 280); this.btnNewSprite.Name = "btnNewSprite"; this.btnNewSprite.Size = new System.Drawing.Size(92, 23); this.btnNewSprite.TabIndex = 11; @@ -281,46 +283,6 @@ this.tpFromImage.Text = "From Image"; this.tpFromImage.UseVisualStyleBackColor = true; // - // lblAnimationNumber - // - this.lblAnimationNumber.AutoSize = true; - this.lblAnimationNumber.Location = new System.Drawing.Point(42, 24); - this.lblAnimationNumber.Name = "lblAnimationNumber"; - this.lblAnimationNumber.Size = new System.Drawing.Size(16, 17); - this.lblAnimationNumber.TabIndex = 21; - this.lblAnimationNumber.Text = "0"; - // - // lblAnimationFwdBack - // - this.lblAnimationFwdBack.AutoSize = true; - this.lblAnimationFwdBack.Location = new System.Drawing.Point(6, -4); - this.lblAnimationFwdBack.Name = "lblAnimationFwdBack"; - this.lblAnimationFwdBack.Size = new System.Drawing.Size(74, 17); - this.lblAnimationFwdBack.TabIndex = 20; - this.lblAnimationFwdBack.Text = "Animation:"; - // - // btnAnimBack - // - this.btnAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAnimBack.Location = new System.Drawing.Point(4, 18); - this.btnAnimBack.Name = "btnAnimBack"; - this.btnAnimBack.Size = new System.Drawing.Size(32, 23); - this.btnAnimBack.TabIndex = 19; - this.btnAnimBack.Text = "<"; - this.btnAnimBack.UseVisualStyleBackColor = true; - this.btnAnimBack.Click += new System.EventHandler(this.btnAnimBack_Click); - // - // btnAnimFwd - // - this.btnAnimFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAnimFwd.Location = new System.Drawing.Point(96, 18); - this.btnAnimFwd.Name = "btnAnimFwd"; - this.btnAnimFwd.Size = new System.Drawing.Size(32, 23); - this.btnAnimFwd.TabIndex = 18; - this.btnAnimFwd.Text = ">"; - this.btnAnimFwd.UseVisualStyleBackColor = true; - this.btnAnimFwd.Click += new System.EventHandler(this.btnAnimFwd_Click); - // // tpMirrorRotate // this.tpMirrorRotate.Controls.Add(this.cbMirrorH); @@ -390,6 +352,46 @@ this.cbAnimation.Size = new System.Drawing.Size(100, 24); this.cbAnimation.TabIndex = 0; // + // lblAnimationNumber + // + this.lblAnimationNumber.AutoSize = true; + this.lblAnimationNumber.Location = new System.Drawing.Point(42, 24); + this.lblAnimationNumber.Name = "lblAnimationNumber"; + this.lblAnimationNumber.Size = new System.Drawing.Size(16, 17); + this.lblAnimationNumber.TabIndex = 21; + this.lblAnimationNumber.Text = "0"; + // + // lblAnimationFwdBack + // + this.lblAnimationFwdBack.AutoSize = true; + this.lblAnimationFwdBack.Location = new System.Drawing.Point(6, -4); + this.lblAnimationFwdBack.Name = "lblAnimationFwdBack"; + this.lblAnimationFwdBack.Size = new System.Drawing.Size(74, 17); + this.lblAnimationFwdBack.TabIndex = 20; + this.lblAnimationFwdBack.Text = "Animation:"; + // + // btnAnimBack + // + this.btnAnimBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnAnimBack.Location = new System.Drawing.Point(5, 18); + this.btnAnimBack.Name = "btnAnimBack"; + this.btnAnimBack.Size = new System.Drawing.Size(32, 23); + this.btnAnimBack.TabIndex = 19; + this.btnAnimBack.Text = "<"; + this.btnAnimBack.UseVisualStyleBackColor = true; + this.btnAnimBack.Click += new System.EventHandler(this.btnAnimBack_Click); + // + // btnAnimFwd + // + this.btnAnimFwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnAnimFwd.Location = new System.Drawing.Point(96, 18); + this.btnAnimFwd.Name = "btnAnimFwd"; + this.btnAnimFwd.Size = new System.Drawing.Size(32, 23); + this.btnAnimFwd.TabIndex = 18; + this.btnAnimFwd.Text = ">"; + this.btnAnimFwd.UseVisualStyleBackColor = true; + this.btnAnimFwd.Click += new System.EventHandler(this.btnAnimFwd_Click); + // // panelRadioButtons // this.panelRadioButtons.Controls.Add(this.rbMirror); @@ -435,11 +437,11 @@ // // btnNewAnimation // - this.btnNewAnimation.Location = new System.Drawing.Point(238, 309); + this.btnNewAnimation.Location = new System.Drawing.Point(4, 47); this.btnNewAnimation.Name = "btnNewAnimation"; - this.btnNewAnimation.Size = new System.Drawing.Size(92, 23); + this.btnNewAnimation.Size = new System.Drawing.Size(33, 23); this.btnNewAnimation.TabIndex = 21; - this.btnNewAnimation.Text = "New Anim"; + this.btnNewAnimation.Text = "+"; this.btnNewAnimation.UseVisualStyleBackColor = true; this.btnNewAnimation.Click += new System.EventHandler(this.btnNewAnimation_Click); // @@ -464,7 +466,7 @@ // // btnReset // - this.btnReset.Location = new System.Drawing.Point(426, 280); + this.btnReset.Location = new System.Drawing.Point(366, 312); this.btnReset.Name = "btnReset"; this.btnReset.Size = new System.Drawing.Size(75, 23); this.btnReset.TabIndex = 24; @@ -498,15 +500,35 @@ // this.pnlAnimationFWBK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.pnlAnimationFWBK.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlAnimationFWBK.Controls.Add(this.btnDeleteAnim); this.pnlAnimationFWBK.Controls.Add(this.lblAnimationNumber); this.pnlAnimationFWBK.Controls.Add(this.lblAnimationFwdBack); this.pnlAnimationFWBK.Controls.Add(this.btnAnimFwd); this.pnlAnimationFWBK.Controls.Add(this.btnAnimBack); + this.pnlAnimationFWBK.Controls.Add(this.btnNewAnimation); this.pnlAnimationFWBK.Location = new System.Drawing.Point(469, 223); this.pnlAnimationFWBK.Name = "pnlAnimationFWBK"; - this.pnlAnimationFWBK.Size = new System.Drawing.Size(133, 44); + this.pnlAnimationFWBK.Size = new System.Drawing.Size(133, 80); this.pnlAnimationFWBK.TabIndex = 27; // + // btnDeleteAnim + // + this.btnDeleteAnim.Location = new System.Drawing.Point(95, 47); + this.btnDeleteAnim.Name = "btnDeleteAnim"; + this.btnDeleteAnim.Size = new System.Drawing.Size(33, 23); + this.btnDeleteAnim.TabIndex = 22; + this.btnDeleteAnim.Text = "-"; + this.btnDeleteAnim.UseVisualStyleBackColor = true; + // + // btnDelSprite + // + this.btnDelSprite.Location = new System.Drawing.Point(356, 280); + this.btnDelSprite.Name = "btnDelSprite"; + this.btnDelSprite.Size = new System.Drawing.Size(92, 23); + this.btnDelSprite.TabIndex = 28; + this.btnDelSprite.Text = "Del Sprite"; + this.btnDelSprite.UseVisualStyleBackColor = true; + // // SpriteEntryForm // this.AcceptButton = this.btnApply; @@ -514,12 +536,12 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnCancel; this.ClientSize = new System.Drawing.Size(614, 347); + this.Controls.Add(this.btnDelSprite); this.Controls.Add(this.btnPreviewAnimBack); this.Controls.Add(this.btnPreviewAnimFwd); this.Controls.Add(this.btnReset); this.Controls.Add(this.btnPreview); this.Controls.Add(this.pbPreview); - this.Controls.Add(this.btnNewAnimation); this.Controls.Add(this.panelRadioButtons); this.Controls.Add(this.TCTabPages); this.Controls.Add(this.lblCountSprites); @@ -604,5 +626,7 @@ private System.Windows.Forms.Button btnPreviewAnimBack; private System.Windows.Forms.Label lblAnimationNumber; private System.Windows.Forms.Panel pnlAnimationFWBK; + private System.Windows.Forms.Button btnDeleteAnim; + private System.Windows.Forms.Button btnDelSprite; } } \ No newline at end of file From 35133e64b77a0df45d82410b87094c1523c3d18d Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 11:18:31 -0500 Subject: [PATCH 58/77] delete working + tooltips --- SpriteLibrary/SpriteEntryForm.Designer.cs | 2 ++ SpriteLibrary/SpriteEntryForm.cs | 41 +++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 49a8b95..f7c7096 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -519,6 +519,7 @@ this.btnDeleteAnim.TabIndex = 22; this.btnDeleteAnim.Text = "-"; this.btnDeleteAnim.UseVisualStyleBackColor = true; + this.btnDeleteAnim.Click += new System.EventHandler(this.btnDeleteAnim_Click); // // btnDelSprite // @@ -528,6 +529,7 @@ this.btnDelSprite.TabIndex = 28; this.btnDelSprite.Text = "Del Sprite"; this.btnDelSprite.UseVisualStyleBackColor = true; + this.btnDelSprite.Click += new System.EventHandler(this.btnDelSprite_Click); // // SpriteEntryForm // diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index f0690b2..f0b1037 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -84,7 +84,9 @@ namespace SpriteLibrary myToolTip.SetToolTip(btnFwd, "Move to next sprite."); myToolTip.SetToolTip(btnPreviewAnimBack, "Change preview to previous animation."); myToolTip.SetToolTip(btnPreviewAnimFwd, "Change preview to next animation."); - + 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."); } internal List GetUpdatedList() @@ -514,7 +516,10 @@ namespace SpriteLibrary private void WeHaveNewItem() { if (PreviewSprite != null) PreviewSprite.Destroy(); - TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); + if (CurrentSIIndex >= 0 && CurrentSIIndex < SpriteInformation.Count) + TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); + else + SetUpEmptyInfo(); SpriteInformationToForm(); UpdateMenu(); } @@ -647,5 +652,37 @@ namespace SpriteLibrary { SpriteInformationToForm(); } + + private void btnDelSprite_Click(object sender, EventArgs e) + { + if (CurrentSIIndex == -1) + { + //we are making a new sprite, but it has not been saved yet. + if (SpriteInformation.Count > 0) + { + CurrentSIIndex = 0; + WeHaveNewItem(); + return; + } + //If we are here, then we have no sprites and we are deleting our temp one. Clear it out + SetUpEmptyInfo(); + WeHaveNewItem(); + return; + } + //delete the current entry. Deal with zero entries. + DialogResult Answer = MessageBox.Show("Delete The current Sprite?", "Delete", MessageBoxButtons.YesNo); + if(Answer == DialogResult.Yes) + { + SpriteInformation.RemoveAt(CurrentSIIndex); + CurrentSIIndex--; + if (CurrentSIIndex < 0 && SpriteInformation.Count > 0) CurrentSIIndex = 0; + WeHaveNewItem(); + } + } + + private void btnDeleteAnim_Click(object sender, EventArgs e) + { + + } } } From 8bf63782468b7e35e8005ec2224a37746f71cf55 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 11:25:58 -0500 Subject: [PATCH 59/77] Make sure the preview sprite updates properly. --- SpriteLibrary/SpriteEntryForm.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index f0b1037..ce8c60d 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -515,7 +515,11 @@ namespace SpriteLibrary private void WeHaveNewItem() { - if (PreviewSprite != null) PreviewSprite.Destroy(); + if (PreviewSprite != null) + { + PreviewSprite.Destroy(); + PreviewSprite = null; + } if (CurrentSIIndex >= 0 && CurrentSIIndex < SpriteInformation.Count) TempInformation.CopyFrom(SpriteInformation[CurrentSIIndex]); else @@ -626,7 +630,7 @@ namespace SpriteLibrary private void btnPreviewAnimBack_Click(object sender, EventArgs e) { - if (PreviewSprite != null) + if (PreviewSprite != null && !PreviewSprite.Destroying) { int Animations = PreviewSprite.AnimationCount; int NextAnim = PreviewSprite.AnimationIndex - 1; From dddab20eefb66bc977821042388fdcad0d27ba47 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 11:39:09 -0500 Subject: [PATCH 60/77] Delete animations --- SpriteLibrary/SpriteEntryForm.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index ce8c60d..8b8fb40 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -686,7 +686,21 @@ namespace SpriteLibrary private void btnDeleteAnim_Click(object sender, EventArgs e) { - + //delete the current entry. Deal with zero entries. + DialogResult Answer = MessageBox.Show("Delete The current Animation?", "Delete", MessageBoxButtons.YesNo); + if (Answer == DialogResult.Yes) + { + TempInformation.Animations.RemoveAt(CurrentSIAnimation); + CurrentSIAnimation--; + if (CurrentSIAnimation < 0 && TempInformation.Animations.Count > 0) CurrentSIAnimation = 0; + if(TempInformation.Animations.Count == 0) + { + AnimationInfo AI = new AnimationInfo(); + TempInformation.Animations.Add(AI); + CurrentSIAnimation = 0; + } + WeHaveNewItem(); + } } } } From 201e42b37045b13c290017b68a4b892168bfe59d Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 11:40:56 -0500 Subject: [PATCH 61/77] Cannot save an unnamed sprite --- SpriteLibrary/SpriteEntryForm.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 8b8fb40..b287a60 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -478,6 +478,11 @@ namespace SpriteLibrary void ApplyChanges() { + if (tbSpriteName.Text == "") + { + MessageBox.Show("You cannot save a sprite that has no name."); + return; + } FormToSpriteInformation(); if (CurrentSIIndex > 0 && CurrentSIIndex < SpriteInformation.Count) { @@ -498,7 +503,12 @@ namespace SpriteLibrary /// bool PromptToApplyChangesAndContinue() { - if(ValuesDifferFromData()) + if (tbSpriteName.Text == "") + { + MessageBox.Show("You cannot save a sprite that has no name."); + return true; + } + if (ValuesDifferFromData()) { DialogResult Answer = MessageBox.Show("You have unsaved Changes. Would you like to save them before proceeding?","Save?",MessageBoxButtons.YesNoCancel); if (Answer == DialogResult.Yes) ApplyChanges(); From 08b7dbd9a1a24b978afadd266da695503b832c8e Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 12:39:34 -0500 Subject: [PATCH 62/77] done button working --- SpriteLibrary/SpriteEntryForm.Designer.cs | 1 + SpriteLibrary/SpriteEntryForm.cs | 39 ++++++++++++++++++++--- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index f7c7096..ba2819f 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -163,6 +163,7 @@ this.btnDone.TabIndex = 8; this.btnDone.Text = "Done"; this.btnDone.UseVisualStyleBackColor = true; + this.btnDone.Click += new System.EventHandler(this.btnDone_Click); // // btnCancel // diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index b287a60..ade5e40 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -476,13 +476,35 @@ namespace SpriteLibrary } - void ApplyChanges() + int IndexOfName(string spritname) + { + for(int i=0; i< SpriteInformation.Count; i++) + { + if (SpriteInformation[i].SpriteName == spritname) + return i; + } + return -1; + } + + bool VerifySpriteBeforeSaving() { if (tbSpriteName.Text == "") { MessageBox.Show("You cannot save a sprite that has no name."); - return; + return false; } + int index = IndexOfName(tbSpriteName.Text); + if(index != CurrentSIIndex && index != -1) + { + MessageBox.Show("You cannot have two sprites with the same name."); + return false; + } + return true; + } + + void ApplyChanges() + { + if (!VerifySpriteBeforeSaving()) return; FormToSpriteInformation(); if (CurrentSIIndex > 0 && CurrentSIIndex < SpriteInformation.Count) { @@ -503,10 +525,9 @@ namespace SpriteLibrary /// bool PromptToApplyChangesAndContinue() { - if (tbSpriteName.Text == "") + if (!VerifySpriteBeforeSaving()) { - MessageBox.Show("You cannot save a sprite that has no name."); - return true; + return true; //We could not verify, say we canceled out. } if (ValuesDifferFromData()) { @@ -712,5 +733,13 @@ namespace SpriteLibrary WeHaveNewItem(); } } + + private void btnDone_Click(object sender, EventArgs e) + { + if (PromptToApplyChangesAndContinue()) + { + Close(); + } + } } } From 9754afd4cd830cc92189437accab6abc2f5d2e84 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 12:42:58 -0500 Subject: [PATCH 63/77] stave off an error --- SpriteLibrary/SpriteEntryForm.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index ade5e40..7f90650 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -741,5 +741,13 @@ namespace SpriteLibrary Close(); } } + + private void btnCancel_Click(object sender, EventArgs e) + { + if (PromptToApplyChangesAndContinue()) + { + Close(); + } + } } } From ed09c5602c7d328b3ddad87572cc3aa5be9cf6e1 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 12:43:05 -0500 Subject: [PATCH 64/77] get cancel button working --- SpriteLibrary/SpriteEntryForm.Designer.cs | 1 + SpriteLibrary/SpriteInfo.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index ba2819f..86975ac 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -174,6 +174,7 @@ this.btnCancel.TabIndex = 9; this.btnCancel.Text = "Cancel"; this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); // // btnApply // diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index feceb6d..3407aac 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -68,6 +68,7 @@ namespace SpriteLibrary public Sprite CreateSprite(SpriteController ControllerToUse, SpriteDatabase TheDatabaseToUse) { Sprite DestSprite = null; + if (ControllerToUse == null) return null; for (int index = 0; index < Animations.Count; index++) { AnimationInfo CurrentAnimation = Animations[index]; From b25907c143455fd8e1c109293a1d66fdfc0c639d Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 13:07:14 -0500 Subject: [PATCH 65/77] Documentation for the SpriteInfo class --- SpriteLibrary/SpriteInfo.cs | 106 +++++++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/SpriteInfo.cs b/SpriteLibrary/SpriteInfo.cs index 3407aac..7a312b5 100644 --- a/SpriteLibrary/SpriteInfo.cs +++ b/SpriteLibrary/SpriteInfo.cs @@ -9,19 +9,89 @@ using System.Resources; namespace SpriteLibrary { - public enum AnimationType { SpriteDefinition=0, Rotation=1, Mirror=2 } + /// + /// The SpriteInfo only recognizes a few ways to create a sprite. Here are the different ways. + /// + public enum AnimationType { + /// + /// A Sprite definition knows an image, an X and Y, a size, and a few other items. + /// + SpriteDefinition =0, + /// + /// A rotated sprite is based off a pre-existing animation, but it is rotated by some degrees. + /// + Rotation =1, + /// + /// A mirrored sprite is based off a pre-existing animation, but is mirrored vertically or horizontally. + /// + Mirror =2 } + + /// + /// An AnimationInfo class is used by the SpriteInfo class to + /// contain the instructions for creating a sprite through the dictionary. Most people will not want + /// to manually use these. It is simplest to use the + /// SpriteDatabase.OpenEditWindow function and use the built-in sprite editor. That editor will create a file + /// that can be used in the database without your needing to know about the AnimationInfo. + /// Again, you do not want to use these within + /// your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + /// This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + /// serializing to be "public", which makes them visible. + /// public class AnimationInfo { + /// + /// The FieldsToUse tracks which of the values in AnimationInfo are important + /// public AnimationType FieldsToUse = AnimationType.SpriteDefinition; + /// + /// If the sprite is either a mirror sprite, or a rotated sprite, it must be based off of + /// a pre-existing animation. This value states which animation we copy. + /// public int AnimationToUse = 0; + /// + /// If the sprite is a rotated copy of a pre-existing sprite, this value tells how many degrees to + /// rotate the sprite. + /// public int RotationDegrees=0; + /// + /// If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + /// the sprite is mirrored Horizontally. + /// public bool MirrorHorizontally = false; + /// + /// If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + /// the sprite is mirrored Vertically. + /// public bool MirrorVertically = false; + /// + /// If the sprite is based off of an image, this value is the starting point of the top-left corner + /// of the sprite on the image. You will also want to include a Width and Height. + /// public Point StartPoint = new Point(-1, -1); + /// + /// This is the image name which contains the sprite. This image should be in the Properties.Resources + /// of your project. The name you want to give is case-sensitive, and should be the exact name as + /// listed in Properties.Resources. For example, if your image name were Properties.Resources.Runner + /// you would want to use the string "Runner" Note the caps are identical, and we have removed the + /// "Properties.Resources. from the front. + /// public string ImageName = ""; + /// + /// The width of the sprite to pull from the specified image. + /// public int Width = -1; + /// + /// The height of the sprite to pull from the specified image. + /// public int Height = -1; + /// + /// The number of frames to pull, one following the other, from the specified image. + /// public int NumFrames = 1; + /// + /// The delay in milliseconds in-between frames of the sprite. This number is not exact, but is pretty + /// close to what happens. Never use a number less than 20. + /// public int AnimSpeed = 200; /// @@ -34,10 +104,33 @@ namespace SpriteLibrary } } + /// + /// A class which is used by the SpriteDatabase to build + /// Sprites. You should not need to use this in your programming. It is simplest to use the Load/Save features + /// of the SpriteDatabase, which will load and save the SpriteInfo. + /// Again, you do not want to use these within + /// your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + /// This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + /// serializing to be "public", which makes them visible. + /// public class SpriteInfo { + /// + /// The name of the sprite. It should be unique within your application + /// public string SpriteName = ""; + /// + /// The percentage size when the sprite is normally displayed. For example: If the image you drew your + /// sprite on has your sprite drawn on a 200x200 grid, but you want your sprite to normally be 100x100, + /// you would tell it to be 50 (50 percent of the original size). + /// public int ViewPercent = 100; //The percent size of the sprite. 100 is full. 50 is half-size + /// + /// This is the list of animations that make up the sprite. Again, you do not want to use these within + /// your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + /// This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + /// serializing to be "public", which makes them visible. + /// public List Animations = new List(); /// @@ -65,7 +158,16 @@ namespace SpriteLibrary } } - public Sprite CreateSprite(SpriteController ControllerToUse, SpriteDatabase TheDatabaseToUse) + /// + /// Create a sprite using the database sprite information. This does not do any checking to make sure + /// the named sprite already exists. Usually, what you want to do is to create your SpriteController and + /// register your SpriteDatabase with the controller. Then, when you ask the SpriteController for a sprite, + /// if that sprite does not exist yet, it will create it from the database. + /// + /// The sprite controller that will end up controlling the sprite + /// The database + /// + internal Sprite CreateSprite(SpriteController ControllerToUse, SpriteDatabase TheDatabaseToUse) { Sprite DestSprite = null; if (ControllerToUse == null) return null; From 4911a787d47f940be18d700273fa4f08ee8c375a Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 13:31:35 -0500 Subject: [PATCH 66/77] Documentation for the SpriteDatabase --- SpriteLibrary/SpriteDatabase.cs | 60 ++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index f0d7357..f253b48 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -123,6 +123,10 @@ namespace SpriteLibrary SpriteInfoList = new List(); //make an empty one so things do not explode. } + /// + /// Return a list of the SpriteNames that this Database knows how to create. + /// + /// A list of strings, each one is the name of a sprite public List SpriteNames() { List theNames = new List(); @@ -141,6 +145,11 @@ namespace SpriteLibrary return false; } + /// + /// Open a Sprite Edit Window. This window does not let you draw a sprite. What it does is to help + /// you define your sprites and makes the process of using Sprites in your program a lot easier. + /// + /// public void OpenEditWindow(int FirstItemIndex=-1) { SpriteEntryForm SEF = new SpriteEntryForm(this, SpriteInfoList, SnapGridSize); @@ -152,6 +161,19 @@ namespace SpriteLibrary #endregion #region General Functions + /// + /// This function returns an image from the Properties.Resources. If we tell it to UseSmartImages, then + /// it caches the image in memory. This makes it a little faster to return. If you have a lot of sprites + /// to load, using this system can speed up things a fair bit. But, try to remember not to change the + /// image that this returns unless you duplicate it first. Otherwise you will end up changing the image + /// for all the other times you reference it. This is usualy a bad thing. + /// + /// The string name of the image. If your image is usually named + /// Properties.Resources.mySpriteImage, you will want to have "mySpriteImage" as the Name passed + /// to GetImageFromName + /// A parameter stating whether we should cache the image in memory + /// or simply retrieve it from the resource manager. + /// public Image GetImageFromName(string Name, bool UseSmartImages) { Image MyImage = null; @@ -181,7 +203,16 @@ namespace SpriteLibrary return MyImage; } - public Sprite SmartDuplicateSprite(SpriteController theController, string SpriteName, bool UseSmartImages = true) + /// + /// This code is mostly handled by the sprite controller. If the SpriteController has a SpriteDatabase + /// registered, then it will automatically ask the SpriteDatabase to create any sprite it does not already + /// have. + /// + /// The controller that will manage the newly created Sprite + /// The name of the sprite to look up and then create + /// Whether or not we should cache images to give a very small increase in speed + /// + internal Sprite SmartDuplicateSprite(SpriteController theController, string SpriteName, bool UseSmartImages = true) { Sprite DestSprite = theController.DuplicateSprite(SpriteName); if (DestSprite != null) return DestSprite; @@ -279,6 +310,15 @@ namespace SpriteLibrary } } + /// + /// This is a generic function which the SpriteDatabase uses. It does XML Serialization of most anything, + /// and generates an XML String. XML Serialization will take any public value of a public class and + /// make an XML entry for it. It is a very convienent way to save data. You can "Deserialize" the value + /// with the ReadFromXMLString function. + /// + /// The type of the item that you are trying to serialize + /// the variable you are trying to turn into XML + /// An XML string public static string WriteToXMLString(T toSerialize) { XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType()); @@ -289,6 +329,16 @@ namespace SpriteLibrary return textWriter.ToString(); } } + + /// + /// This is a generic function which the SpriteDatabase uses. It does XML Deserialization of most anything, + /// and generates an XML String. XML Serialization will take any public value of a public class and + /// make an XML entry for it. It is a very convienent way to save and retrieve data. You can "Serialize" the value + /// with the WriteToXMLString function. + /// + /// The type of the item that you are trying to deserialize + /// an XML string, of something you serialized previously + /// An object of type T public static T ReadFromXmlString(string toDeserialize) where T : new() { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); @@ -296,6 +346,14 @@ namespace SpriteLibrary return (T)xmlSerializer.Deserialize(textReader); } + /// + /// This is an inefficient, but simple function to clone a class. It works by serializing an item + /// to a string, and then deserializing it into a class. The end result is that any value which is + /// publically visible is duplicated, but it is a completely separate class from the original. + /// + /// The type of the item to clone + /// The actual object to clone + /// A duplicate of the original public static T CloneByXMLSerializing(T ObjectToClone) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); From 59bea020b685bfabad0a7b466bf5f246251dd481 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 14:18:00 -0500 Subject: [PATCH 67/77] Choose a good image at the start of the window being opened. --- SpriteLibrary/SpriteDatabase.cs | 20 ++++++++++++++++++++ SpriteLibrary/SpriteEntryForm.cs | 12 ++++++++++++ 2 files changed, 32 insertions(+) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index f253b48..c1339c5 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -8,6 +8,7 @@ using System.Xml; using System.Xml.Serialization; using System.Resources; using System.IO; +using System.Collections; namespace SpriteLibrary { @@ -203,6 +204,25 @@ namespace SpriteLibrary return MyImage; } + + /// + /// Return a list of the image names in the Properties.Resources + /// + /// + public List GetImageNames() + { + List Names = new List(); + if (myResourceManager == null) return Names; + ResourceSet Rs = myResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true); + foreach (DictionaryEntry entry in Rs) + { + string resourceKey = entry.Key.ToString(); //The name + object resource = entry.Value; //The object itself + if (resource is Image) Names.Add(resourceKey); + } + return Names; + } + /// /// This code is mostly handled by the sprite controller. If the SpriteController has a SpriteDatabase /// registered, then it will automatically ask the SpriteDatabase to create any sprite it does not already diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index 7f90650..b51ebd5 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -261,11 +261,23 @@ namespace SpriteLibrary private void SetUpEmptyInfo() { + string startingimage = cbStartingImage.Text; //grab whatever we were using last + Console.WriteLine("Setting up an empty info rec."); + if(startingimage == null || startingimage == "")//If we are not looking at anything yet + { + List ImageNames = myDatabase.GetImageNames(); + if (ImageNames.Count > 0) + startingimage = ImageNames[0]; + foreach(string name in ImageNames) + Console.WriteLine(" Name: " + name); + } + Console.WriteLine("NewName=" + startingimage); TempInformation = new SpriteInfo(); TempInformation.SpriteName = ""; TempInformation.ViewPercent = 100; AnimationInfo AI = new AnimationInfo(); AI.AnimSpeed = 200; + AI.ImageName = startingimage; AI.FieldsToUse = AnimationType.SpriteDefinition; AI.Height = 100; AI.Width = 100; From dcc9d92ca9ab24d2b1a812c6750bcd5273618a81 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 14:38:30 -0500 Subject: [PATCH 68/77] Update tab indexes for things --- SpriteLibrary/SpriteDatabase.cs | 1 + SpriteLibrary/SpriteEntryForm.Designer.cs | 52 +++++++++++------------ SpriteLibrary/SpriteEntryForm.cs | 9 ++++ 3 files changed, 36 insertions(+), 26 deletions(-) diff --git a/SpriteLibrary/SpriteDatabase.cs b/SpriteLibrary/SpriteDatabase.cs index c1339c5..c9475c4 100644 --- a/SpriteLibrary/SpriteDatabase.cs +++ b/SpriteLibrary/SpriteDatabase.cs @@ -154,6 +154,7 @@ namespace SpriteLibrary public void OpenEditWindow(int FirstItemIndex=-1) { SpriteEntryForm SEF = new SpriteEntryForm(this, SpriteInfoList, SnapGridSize); + SEF.SetInitialSprite(FirstItemIndex); SEF.ShowDialog(); //Use the updated list returned from the form. SpriteInfoList.Clear(); diff --git a/SpriteLibrary/SpriteEntryForm.Designer.cs b/SpriteLibrary/SpriteEntryForm.Designer.cs index 86975ac..a2a92e0 100644 --- a/SpriteLibrary/SpriteEntryForm.Designer.cs +++ b/SpriteLibrary/SpriteEntryForm.Designer.cs @@ -102,7 +102,7 @@ this.cbStartingImage.Location = new System.Drawing.Point(128, 6); this.cbStartingImage.Name = "cbStartingImage"; this.cbStartingImage.Size = new System.Drawing.Size(131, 24); - this.cbStartingImage.TabIndex = 1; + this.cbStartingImage.TabIndex = 5; this.cbStartingImage.SelectedIndexChanged += new System.EventHandler(this.cbStartingImage_SelectedIndexChanged); // // lblStartingImage @@ -128,7 +128,7 @@ this.tbNumFrames.Location = new System.Drawing.Point(128, 53); this.tbNumFrames.Name = "tbNumFrames"; this.tbNumFrames.Size = new System.Drawing.Size(47, 22); - this.tbNumFrames.TabIndex = 4; + this.tbNumFrames.TabIndex = 6; // // lblFrames // @@ -144,7 +144,7 @@ this.tbSpriteName.Location = new System.Drawing.Point(356, 10); this.tbSpriteName.Name = "tbSpriteName"; this.tbSpriteName.Size = new System.Drawing.Size(100, 22); - this.tbSpriteName.TabIndex = 6; + this.tbSpriteName.TabIndex = 1; // // lblSpriteName // @@ -160,7 +160,7 @@ this.btnDone.Location = new System.Drawing.Point(528, 312); this.btnDone.Name = "btnDone"; this.btnDone.Size = new System.Drawing.Size(75, 23); - this.btnDone.TabIndex = 8; + this.btnDone.TabIndex = 23; this.btnDone.Text = "Done"; this.btnDone.UseVisualStyleBackColor = true; this.btnDone.Click += new System.EventHandler(this.btnDone_Click); @@ -171,7 +171,7 @@ this.btnCancel.Location = new System.Drawing.Point(447, 312); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 9; + this.btnCancel.TabIndex = 22; this.btnCancel.Text = "Cancel"; this.btnCancel.UseVisualStyleBackColor = true; this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); @@ -181,7 +181,7 @@ this.btnApply.Location = new System.Drawing.Point(252, 312); this.btnApply.Name = "btnApply"; this.btnApply.Size = new System.Drawing.Size(75, 23); - this.btnApply.TabIndex = 10; + this.btnApply.TabIndex = 20; this.btnApply.Text = "Apply"; this.btnApply.UseVisualStyleBackColor = true; this.btnApply.Click += new System.EventHandler(this.btnApply_Click); @@ -191,7 +191,7 @@ this.btnNewSprite.Location = new System.Drawing.Point(252, 280); this.btnNewSprite.Name = "btnNewSprite"; this.btnNewSprite.Size = new System.Drawing.Size(92, 23); - this.btnNewSprite.TabIndex = 11; + this.btnNewSprite.TabIndex = 18; this.btnNewSprite.Text = "New Sprite"; this.btnNewSprite.UseVisualStyleBackColor = true; this.btnNewSprite.Click += new System.EventHandler(this.btnNewSprite_Click); @@ -201,7 +201,7 @@ this.tbAmimationSpeed.Location = new System.Drawing.Point(356, 217); this.tbAmimationSpeed.Name = "tbAmimationSpeed"; this.tbAmimationSpeed.Size = new System.Drawing.Size(100, 22); - this.tbAmimationSpeed.TabIndex = 12; + this.tbAmimationSpeed.TabIndex = 11; // // lblAnimationSpeed // @@ -226,7 +226,7 @@ this.tbDefaultSize.Location = new System.Drawing.Point(356, 246); this.tbDefaultSize.Name = "tbDefaultSize"; this.tbDefaultSize.Size = new System.Drawing.Size(100, 22); - this.tbDefaultSize.TabIndex = 15; + this.tbDefaultSize.TabIndex = 12; // // btnBack // @@ -234,7 +234,7 @@ this.btnBack.Location = new System.Drawing.Point(12, 322); this.btnBack.Name = "btnBack"; this.btnBack.Size = new System.Drawing.Size(32, 23); - this.btnBack.TabIndex = 16; + this.btnBack.TabIndex = 24; this.btnBack.Text = "<"; this.btnBack.UseVisualStyleBackColor = true; this.btnBack.Click += new System.EventHandler(this.btnBack_Click); @@ -245,7 +245,7 @@ this.btnFwd.Location = new System.Drawing.Point(177, 322); this.btnFwd.Name = "btnFwd"; this.btnFwd.Size = new System.Drawing.Size(32, 23); - this.btnFwd.TabIndex = 17; + this.btnFwd.TabIndex = 25; this.btnFwd.Text = ">"; this.btnFwd.UseVisualStyleBackColor = true; this.btnFwd.Click += new System.EventHandler(this.btnFwd_Click); @@ -268,7 +268,7 @@ this.TCTabPages.Name = "TCTabPages"; this.TCTabPages.SelectedIndex = 0; this.TCTabPages.Size = new System.Drawing.Size(282, 143); - this.TCTabPages.TabIndex = 19; + this.TCTabPages.TabIndex = 5; // // tpFromImage // @@ -307,7 +307,7 @@ this.cbMirrorH.Location = new System.Drawing.Point(35, 87); this.cbMirrorH.Name = "cbMirrorH"; this.cbMirrorH.Size = new System.Drawing.Size(81, 21); - this.cbMirrorH.TabIndex = 5; + this.cbMirrorH.TabIndex = 9; this.cbMirrorH.Text = "Mirror H"; this.cbMirrorH.UseVisualStyleBackColor = true; // @@ -317,7 +317,7 @@ this.cbMirrorV.Location = new System.Drawing.Point(148, 87); this.cbMirrorV.Name = "cbMirrorV"; this.cbMirrorV.Size = new System.Drawing.Size(80, 21); - this.cbMirrorV.TabIndex = 4; + this.cbMirrorV.TabIndex = 10; this.cbMirrorV.Text = "Mirror V"; this.cbMirrorV.UseVisualStyleBackColor = true; // @@ -335,7 +335,7 @@ this.tbRotation.Location = new System.Drawing.Point(128, 58); this.tbRotation.Name = "tbRotation"; this.tbRotation.Size = new System.Drawing.Size(100, 22); - this.tbRotation.TabIndex = 2; + this.tbRotation.TabIndex = 8; // // lblWhichAnim // @@ -352,7 +352,7 @@ this.cbAnimation.Location = new System.Drawing.Point(128, 18); this.cbAnimation.Name = "cbAnimation"; this.cbAnimation.Size = new System.Drawing.Size(100, 24); - this.cbAnimation.TabIndex = 0; + this.cbAnimation.TabIndex = 7; // // lblAnimationNumber // @@ -378,7 +378,7 @@ this.btnAnimBack.Location = new System.Drawing.Point(5, 18); this.btnAnimBack.Name = "btnAnimBack"; this.btnAnimBack.Size = new System.Drawing.Size(32, 23); - this.btnAnimBack.TabIndex = 19; + this.btnAnimBack.TabIndex = 16; this.btnAnimBack.Text = "<"; this.btnAnimBack.UseVisualStyleBackColor = true; this.btnAnimBack.Click += new System.EventHandler(this.btnAnimBack_Click); @@ -389,7 +389,7 @@ this.btnAnimFwd.Location = new System.Drawing.Point(96, 18); this.btnAnimFwd.Name = "btnAnimFwd"; this.btnAnimFwd.Size = new System.Drawing.Size(32, 23); - this.btnAnimFwd.TabIndex = 18; + this.btnAnimFwd.TabIndex = 17; this.btnAnimFwd.Text = ">"; this.btnAnimFwd.UseVisualStyleBackColor = true; this.btnAnimFwd.Click += new System.EventHandler(this.btnAnimFwd_Click); @@ -410,7 +410,7 @@ this.rbMirror.Location = new System.Drawing.Point(197, 3); this.rbMirror.Name = "rbMirror"; this.rbMirror.Size = new System.Drawing.Size(66, 21); - this.rbMirror.TabIndex = 2; + this.rbMirror.TabIndex = 4; this.rbMirror.TabStop = true; this.rbMirror.Text = "Mirror"; this.rbMirror.UseVisualStyleBackColor = true; @@ -421,7 +421,7 @@ this.rbRotation.Location = new System.Drawing.Point(120, 3); this.rbRotation.Name = "rbRotation"; this.rbRotation.Size = new System.Drawing.Size(71, 21); - this.rbRotation.TabIndex = 1; + this.rbRotation.TabIndex = 3; this.rbRotation.TabStop = true; this.rbRotation.Text = "Rotate"; this.rbRotation.UseVisualStyleBackColor = true; @@ -432,7 +432,7 @@ this.rbFromImage.Location = new System.Drawing.Point(14, 3); this.rbFromImage.Name = "rbFromImage"; this.rbFromImage.Size = new System.Drawing.Size(103, 21); - this.rbFromImage.TabIndex = 0; + this.rbFromImage.TabIndex = 2; this.rbFromImage.TabStop = true; this.rbFromImage.Text = "From Image"; this.rbFromImage.UseVisualStyleBackColor = true; @@ -461,7 +461,7 @@ this.btnPreview.Location = new System.Drawing.Point(518, 126); this.btnPreview.Name = "btnPreview"; this.btnPreview.Size = new System.Drawing.Size(75, 23); - this.btnPreview.TabIndex = 23; + this.btnPreview.TabIndex = 13; this.btnPreview.Text = "Preview"; this.btnPreview.UseVisualStyleBackColor = true; this.btnPreview.Click += new System.EventHandler(this.btnPreview_Click); @@ -471,7 +471,7 @@ this.btnReset.Location = new System.Drawing.Point(366, 312); this.btnReset.Name = "btnReset"; this.btnReset.Size = new System.Drawing.Size(75, 23); - this.btnReset.TabIndex = 24; + this.btnReset.TabIndex = 21; this.btnReset.Text = "Reset"; this.btnReset.UseVisualStyleBackColor = true; this.btnReset.Click += new System.EventHandler(this.btnReset_Click); @@ -482,7 +482,7 @@ this.btnPreviewAnimFwd.Location = new System.Drawing.Point(561, 155); this.btnPreviewAnimFwd.Name = "btnPreviewAnimFwd"; this.btnPreviewAnimFwd.Size = new System.Drawing.Size(32, 23); - this.btnPreviewAnimFwd.TabIndex = 25; + this.btnPreviewAnimFwd.TabIndex = 15; this.btnPreviewAnimFwd.Text = ">"; this.btnPreviewAnimFwd.UseVisualStyleBackColor = true; this.btnPreviewAnimFwd.Click += new System.EventHandler(this.btnPreviewAnimFwd_Click); @@ -493,7 +493,7 @@ this.btnPreviewAnimBack.Location = new System.Drawing.Point(518, 155); this.btnPreviewAnimBack.Name = "btnPreviewAnimBack"; this.btnPreviewAnimBack.Size = new System.Drawing.Size(32, 23); - this.btnPreviewAnimBack.TabIndex = 26; + this.btnPreviewAnimBack.TabIndex = 14; this.btnPreviewAnimBack.Text = "<"; this.btnPreviewAnimBack.UseVisualStyleBackColor = true; this.btnPreviewAnimBack.Click += new System.EventHandler(this.btnPreviewAnimBack_Click); @@ -528,7 +528,7 @@ this.btnDelSprite.Location = new System.Drawing.Point(356, 280); this.btnDelSprite.Name = "btnDelSprite"; this.btnDelSprite.Size = new System.Drawing.Size(92, 23); - this.btnDelSprite.TabIndex = 28; + this.btnDelSprite.TabIndex = 19; this.btnDelSprite.Text = "Del Sprite"; this.btnDelSprite.UseVisualStyleBackColor = true; this.btnDelSprite.Click += new System.EventHandler(this.btnDelSprite_Click); diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index b51ebd5..a30b2d7 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -259,6 +259,15 @@ namespace SpriteLibrary pbImageField.Invalidate(); } + internal void SetInitialSprite(int StartingSprite) + { + CurrentSIIndex = StartingSprite; + if (CurrentSIIndex >= SpriteInformation.Count) + CurrentSIIndex = SpriteInformation.Count - 1; + if (CurrentSIIndex < -1) CurrentSIIndex = -1; + WeHaveNewItem(); + } + private void SetUpEmptyInfo() { string startingimage = cbStartingImage.Text; //grab whatever we were using last From b01341439bd4b4516cf387f8c685bf3cc697bf39 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Wed, 20 Sep 2017 16:27:35 -0500 Subject: [PATCH 69/77] Have the grahical selection box represent the sprite we are based off of. It seems more realistic that way. --- SpriteLibrary/SpriteEntryForm.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/SpriteLibrary/SpriteEntryForm.cs b/SpriteLibrary/SpriteEntryForm.cs index a30b2d7..d17e286 100644 --- a/SpriteLibrary/SpriteEntryForm.cs +++ b/SpriteLibrary/SpriteEntryForm.cs @@ -527,6 +527,22 @@ namespace SpriteLibrary { if (!VerifySpriteBeforeSaving()) return; FormToSpriteInformation(); + //Copy information from the frame we are based off of. This makes the visible selection + //equal to the one it is a copy of. + if(CurrentSIAnimation >=0 && TempInformation.Animations[CurrentSIAnimation].FieldsToUse != AnimationType.SpriteDefinition) + { + int which = TempInformation.Animations[CurrentSIAnimation].AnimationToUse; + if (which >= 0 && which < TempInformation.Animations.Count) + { + AnimationInfo oAI = TempInformation.Animations[TempInformation.Animations[CurrentSIAnimation].AnimationToUse]; + AnimationInfo nAI = TempInformation.Animations[CurrentSIAnimation]; + nAI.ImageName = oAI.ImageName; + nAI.StartPoint = oAI.StartPoint; + nAI.Width = oAI.Width; + nAI.Height = oAI.Height; + nAI.NumFrames = oAI.NumFrames; + } + } if (CurrentSIIndex > 0 && CurrentSIIndex < SpriteInformation.Count) { SpriteInformation[CurrentSIIndex].CopyFrom(TempInformation); From 743ab78c285e5c90d803473c5e8eb89ab08d9120 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Thu, 21 Sep 2017 06:46:31 -0500 Subject: [PATCH 70/77] 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 zcmeHw2Yggj+PClbzUVGN0U;oSrmm|%LN6h`%p{q#nYn#h0^$mxsB1-3&|T2gwE zh&0=-3Me)Z1REAQNq{7zOuPNgOgg;Z|IWoR8xZ_{yMDX-`|ag&IQQH$_nz~=&-0w8 zoO8J3lK;Y=a_1#TuexMy#U+;vxa5*cZouDi{N0MbdihTsUNzjiPoGvrZW98n?Gag% z!;0J<4oOll+^V(7Jj&;W?in83KN?uu1R4uH8P6fm*J9pi4&pj;y zA65e1P{6MVsw}k$sum12hdWeJX%A~jmtOk4%hg0MeuAr|*yFCE6Yj!#imm6UQ|0tA z&T)UjkdIh*rGu8|eX^#C zYMUeqVJ{!@iJCYqCo2#T6iKVmLJgWK%Th=YRE3un5f?&GnlxcbL{jl5pzx=8v6UAE zN%Kpgpri>Bx+ZN{x@5K4wBO^ZVgczTf}-{5)3;ex01@7U2S#M2MNu?ak|e%GRazu* z-kdq#9Xu$>DxMsY6-ki;s_e(V8fxL)+KxSY@4fe4{7_RQUKLRR)tb>FDI5?{M{ZVx zNj-X;U|h1D(+Dm^(kfdjb0uMt7D#&|VXbGlKO`i4<|(V8sQ}IRY1+qk ziau;59?#Bsd*w4>P4VJ7SXGcD^ixw?qdk&j4P6lQQbJVccuYH(tY z9w%w1pJLHjjifY+R47uWD1jt{6w^pK77b4L$m6M@Se{~nH07r$iKJAL^-*jS#T;YV z$1^kDS+P8dBbp6dVVSv~nNo0OQO_b^(?C`L9` z0}t7>bm>cZc}FSEPjbKqzc=tPeiHqu{?xNiz`LXP96WeXf7LmMQEj(@&)?p~Qw044 z4@k{Xd`{3#bk;{xfJFi_w0;YsQQ z!z|0l*s^>%NLrA<+tE&eLUmm9@2I1ts%dFyMk`|N|Jz0>Nl9Js>2?pWM)7$u-&7eT z+FukOyc}c=VFfV&`kBz9M>XSY1TjQm(J6!hD^UVvS7;(g(|=4D{Arn^0qD_$!q_Cn z7NKk{Bq8cFM%6IP%8ZPy%a^y~u@Do{t^pa~qeB$^p#K^y7paXLf_MWC9WqH5@~ z_;dgYfc^tM5OVrp0MPzX^z-nN7YcHZvLqP%7sV&aUn)ip;1g1VNj-WTjpEZl(*j6> zilU@v2#E#=^n(e5ca}L$(X>dBViY2kwuLDoKv7K;Rmn0>W@fy*e0eiQBS{BDrx^@p zKi~s~`iIcZ#)p?YUyyqQ14I{m@MJt6q6VJ@c}>%hK?x3I=FFLMUipK&sEi7`cI|?E zHY(%NIPgne(R?ywg`{eNflnjJ`6&kSIehk{6&)hFiDVvve0DqQC{7?5Kon#M2yl#a zsDFxKzvbwqnHg`dT8Z&9pr}E#7O#m4pR@8O+Va%YRJ|BOf+QJjJKLJ*KWHK3k8ulk zyEWK&9^~_L=G-HY10-Y6Pw(En0Z1SaXm4*91Pt*yCZZ^Y!(rt8e*gUW^A8+2fPB{j z^;=q6@I#*GKl$X7`|i6B@9kOv7k)e}(hMmrY2wIBFFoQaJ3+IMBpALiY9qy2OAz%= zceSJJ_MyWzJGsN0yO!Zl=Q#8thHj$RYT9v-qQ0A1{y=ud=9MdWRccZcef+}9z*V}s zA!!(-Wd%(&nM}c8FcOKNRb3ln(;Hi@x~itw_=&SyFcHxxw~H(rip;MSnO-e6y;x#;p~SSl z*!)_tWoi#J*FUn?|kEHb}UX#R^OZ==PswWR1xi}|)G6Q8_q;m*%L z+xgX3AMN@SZ`u3V?mf}-i`}2?-L)G{oj7qKS`KE65VU2x9=)LC%<-M{@+k7c8iR*f39eDtW*qere7 zJ@U!XBcB?D{OIRKC$1QsWWA#I{7Dm+jUB&cQSSgA3b{2 z_^~st9yX)Ua^L+6@44^3yB93Dcfo>%c)I?Adlue<`~tLR=+L2PFj{i|{r8{S9+V6i zFu-Ut2p$V;&hRwuLVu}d6_B)n-Gz;=)l`4raYrrpIU0sI+jGlO*!4hD$BY?+-l3^R<3piP*9s83n;%~KOh(2b%28|oQU2g{kUR!gqCS3Z z2ovKWkk9AJA5_MRP#HDBp7;=`{5LEQg9LVl1O;D?gyiv;>f=`}!JMLKfuJNPes)r| zQ7T1;-L3{Zxp>f^k33uh>(ECx(iWs_3Te{_!cWjXimom5Jdv8Z^@%4tWIR+2NlHk6 zz64u~*H2j&b&*JVdOAc3nuN9i9kd5xFeVo9xyOzjYXBmNA};mzcWE@_&udGUtTp8{ zmCq0uU4KS5!C&ZF3=>pGp@9$J#U+^QT>1f?#$CJuybM}3-uq*UkzG(jVn|a|pX|T> z(jLcYCr`03uSA-bDH@8g4D*U)8cVGr$^J1R;XN1KNV6(IhbY|uiJs83X`CnQ#B=GH z@2^~mv7J{#yaKCN@oBmx$g8@!0Z<}ZC^Iz;8oL+?gA!UK(3s3e)p!g!`lzF-Nn?^w z0R-I+J5AI4vWN=kBx=H3LkfIeHsw|kOn}ho2gv+F_5~Ug7DHhH>a)@i=7;y_QO7t! z1UgIcGzF~~nD8W5Pcbk$U}u59woZ36V)Q3i*sV|iV21EfOGG58Q#A8@TIQA&D|{iX zURM1wAW|Bl_<)RfeK=Dhik6d_j&iT2U_|Sbp3BpeSf!ppg3q4}SMXM%SNp1B4W5($5f0 zEa7ME4GeLVWmcwVZe9M2tZMLBvlC_ZhH5|I?( z1H|x+qADfypF}^HBPzatTZ5*9sf#jL(|R@7r%QgYzkYH0QQ<^@cR`VT;ox;WdO)$! z2q=Ukx^I}MAde;*ehgBg$wdi+w#=lDb9P|T#M*tVy%8s8_p)e14>p5|bb$fscL*Na}t7 z9Y$R0!bn!2AL{m3)B*y3LG1i;^b>Wh;A_jlaPYT1dQ`ETNYWq-K1v>d{#8WD<`NCF$9`HFOkA41vi*iQJO-!{f_T} zF)6G|Z=ED`F|8Fym?Dq~lOn`-|e{Q|+Iu~OQ3V|2`Atfy>6~eX!vPc&%I(eWPcn4$_6~D^l#IcH~ z@sa`^+6RCYxj8DF!GlepG+EiWbSdnwqp-gi-9E)o1$<%y7RU)A#gHno!t>f+#(0N1 zsBG9@`WO1!0|PNW795CeA!%}t9*5!oAs~}!P!R-mvt3VlI}>Ex=sx^E-*`AL%?K33 zQ+gel&}DUq(53eYmU}V_^t1eoEI~69WXY>aL40pGJS7>!J!lB_P+EFwSW{a>2@nA` zbQv9oGqWX%4@#1f#=<8I76Ujw86HQ-a4{^4f-0c|57F(fJkwEzYa(gjgAM^7LuY`j zMg}Fw#0)WHZoc{EbH{fmV@7>I1kD`dJ0$tv!lP)s*rq`PgPYYm_1Bl};@tZg*Fn~K zh;vl3j%vnnjCFiVJNLP6{FHOuF=WUNCs)mIbu^3f6wNkLoR>s9xf+uGzRa~SW7=Pq zKYd0LPYZmj-Zj2e#O&-zoF$iqNKr9g+xqmYZ@9yJwuF90oq|@$n-@j2Iq0uD$kJ zZ+?y2br!FaBsoj@~(I06kAW(5cXm!OJy^X8pPKd6Rpf|}4;!C$a_ zn#GLso{j1jl=r#viu2x$70xIuSm|PSmY412m@l357Y^o22lIuK`OL|F<6ypW(GO>( zE}fdZlXD+%PXCH^e&KLnP}|ROUvrLKoNJGx{I8tbk~&QYL5~-kMewzTL>GP-xS=#^ zq7)Lck`lLjW_;@?-$OIIJdV9C_G<^T*U5h7L`bTIga;c220#4T{1G7-(OML!rcmHD2xt6(84}b4Ukjf$F7bQL5wX%849B||pTi#H ztO3?8GxiWdDkQym+}PL6x%F;OW2r61U+5zM0W81-8RIZ01nE!FkHL(nd|~=AaOii% zMew-3TgT(TlV$_ybf zc8MWc?Mxl*X49tmw4h&u+82V36c*Jm6dgU@A$b+KJ`~IxGx`wgY_U1Rb~eabd9Day zI3EX(w_Qb0fTA~z8^0ktv&P{-$e=4e1|=9oV#pSxIMDr{XCnX+Z-I~=c*qnmHrZ@^UuDBjbDQ6Se(g4M- z8#`fBo*v(UZ}VRYpSvuUk6kX9s|X81Zv-+?O_By0P4=>*)*IKS=e#v(T7Yx~pdC?A zxe@rV3yfWiLIgMdK9{33bDA#_@P`yXgpMkOVT!7JMCC)O08`W-67!N04{}by?(`E5 zfwQYzQJ5(K{-9FO58Ml{j-9YM&s>cdCH15K2XyjJr=L45mJeL68d?vq!oWvpEU4S> zw2$N(?Vh7V`MQkk*QZYQa)ghw;#-4eV0xf}074?6DPfFr5a}tl>e`Q&utdV zyKXlW*9HpX2<>HnkI{D)O7&5edL=9UwP|C$?n1AlSY)iaoeN|LM}UA@?)DPgw+@#p zHLV4x$YDS1DLwk5n}8ujgary4BqW835|h4gIcgDxBRL=dS=T}^g53pVV93DyiPBGA zHR9ku#Fzg?@R?O;dEHZXfI$chfY2ZejbPgBY^#lx^|6=*f4z}B&g&}ig7xg2icZ-u zOmh$vO$^zTbiVBgA&3l1+Wz+9)yJE5Z}@fY+(||d|gJ=IZGPB zO{_gk+nOnztq|#!m{JU6>&B1Wl$TcpKVBDnV#XAtF=z>+n4#Dhmlv?VFoa>0MPr{-d3ouU83Z>i>$I<}Q*8E2a9?P!(0ScNRzd>C=19A*-8O2{ z*6Gxj(@Vd0SP#3|qa0buk>7C~RM78S_AlJ_C6mWKmY@5n)Ac=jc76i%pW@=;l9Cdn zR;#tBs0hIpWKd!h{^mEo$;rthB*I$2q*Skg@b?_*prKP1kdh|f$ zbL&`(t)<0QqPTeKRRgCF8M1K5kVQih?io7x_OoZgtwR#-OBnq7Awx_04Ym&MbMvSH zH(x(^-ZevR88&q8u%WX@47vH*!PBoDTt4zD@`iy){rdl|p!C+FVnjNAS5#C{R5+^$ znZlb2i*e4#ClfEfioH7F=HCvQHR7sUuNivFu)((sPq=y5keMSAZoFo&=Qo41<9p`~ z?l*hb(EEla81l!^4?#1~mf_Y$ioh8N0}>nRBJ>}`FAg0#1iI>apg!yoXo;wXDAEP& z3xiI;#Z#snxxjf_aq-(8_jfc?#V}P)=BSIQbg)$p?x@4DkF@VCbKjqt_0FTkXX<7~ zD$6^n%g-G5oH^+^UCVXWvCXya=IWc;4n0T>8}wJFV>e^nf0Jt;NmNqYL8on>gWAhE zK6NsirxUpey-(NN)mq7(uA6zLYUY{h8_yh{(Oz|POZ82WlQTjmXT0`6=Cc;lQBPTw zm5j+}fM9S67z+J0*vcpbCeVM*wJ*Sc1{>msh!S3uzhJ;#036)9s{s15=M?JNtfxy?egOISPDL3S;Q|C%$_2l z>XT8=7$p)6ysr&q&SjaITOOU%DP)AC?68#HCZ)8%B9_u{YJof@P!OssFCQAezl`8t zSS5Y_*}3=}ET`R9_3fyg(Iypy0$CxiIpog`3t5qXIpWWc1oBz}d9Ob>@wvS0YEM}` zeHI_^7c2{~6`(-IP=wHHgPRa!NBsTp;lm)9t_PS4^}&fq5&v4WXi+ynx?NtBzZTj` zJ}xh-C3V*{%!;Vi2QR&@2+5??%h*??rhl|NqurksY|K&lys%)3@cGR`ZbZxu2P|r1 z&goNS6$$Z&T#WMG)`rI(uAP5pH;4|g%*+9Ol*0~xU2=P*piL>(q@0kF(ZZYBg87|6 z^O=Bo+meZ|=4T(V+P!unMn48C0V0EDfDBMVAr6oh-R;L_g&6+^GK9WH36F?<<$b%U-~4Ie<^%me|_R|L3x(p()q#u zf-3R#tDagWlsA0kENdW=eGrN!ht;SR7Wry-yK-B1#;W?thPG3e8_;Woj=WA9Ov%W zx8sDT8RQqt3iIX`Jj8E4BcubL4n7Ox+FOezM)CP4*k2dM=Un>>c6!wIWc+MNWtnAp z-qbBmB)38S1adWhq3SDc_d)FB0jpM@1z*4Y6je4X{);lAE6sGx?{g9Cz&@=fJ>g)U zijgar-y8ti=1xAdgU^HrY7Uy-(DC`_*k2dMXLh0GjUVhU$Q;;TA%f|!vu&`yXj`Sb zWSKc-%b!!*0+wcfUf5>|`3gHhHbQ2rnAsW3`d@F}{~nz=YtVpi++;Vg6NBjM@=|I@ z@8()A!kaa}sU-+-@;U;hPClzMnB5*QxBK&S`pNH(&xQ>f)~{cW^xOmGuo0eq`ss6T zp~U#r(xpoYg1A5h-0Io0XRLm#=Bpbvyu4x43+p$o-?*`O;>3ruvNoipzmuB!Zd%Hg zw3O{BsUJ;C{cu{^_LP)O>1lJ5#w?zZ^v>(4Z*59`ePilt8`9q0H1(a$lmGhK#CJDO z-m)oq>sm|ZfZmVhPkFg8X?_0KwFMJiESRvtte>x#C%l+H?oauXQsR5Q@oLVSuTOdF zwJGnsp8WRaKrfy&>i8jnfvmuD@&YxV5S2@1~|1@)?@jv(G;J%rnm* zU9)D*s#U9&FJJ!LbI;*&*|KHNKmR-?^(|Sl1m#_i7hZT_#fla96>7q`fRVL&_3Ew_ zkVgp~xN_yn7hinw*T4QXGTkezTD@lFnwOq?`Pr4LO2&1Q(@UXwX; z{D8-o+SV^KZ(Nr5{F6D)K4n_>glX;L=I0*IU;Vh{>BZcHYx^!+oww}Sv{kFKo_j85 z_3G?Zt8(;nMc%4q1*=w=XHui-#A_eTNO>lCN^Jaso&!zBu&1J0j~*4p;0_H3aX|Rz z&()uy7on!10Kk5~^UgcFDLmaSFRK4Q{=DUMRLz)C1)JSLA9hf%-;Z+aVU9gU5r;g^ zB^jxIc`{FED2a%4&`SipwB{>S0!31=Nbwgd0h_;}oG84;SAC1YP>Q%$7WV3S{vE-4 zr@z6`RDEYb`c+K+!U}z0ShpJqKFI-GcwSh&ugEeCh)<5`7IaKpE2?8!t&?-l9CUc&T1Q$W59n% z2N-?zfr!BiD>4}JIBR>>ochsIY3+@WBUM z^+O*44vY(AfE7|0VgLt)xIAxs2j!q2Lxo0s8PgrR5lpvBe1!|+bGN17V~%TLIGG?3 z;?ceI$Plo<^cmx)9PFCR)DQohd8VnL-D_&~7dCr~I=%TF-u$+vqK<~rj{1`JCXc&l zh*IZ?3FK}WvF1i=X1pel&A$AO`qDEE1)W~VWOFOV!N%e?Jj9#-=Awx&7MPAXU5(6- z{#8I>^weN0*q%nL2SDN0dF=}@BdUSMKzNw{jQN?}0O@vlQTyw5;8R{!&oCOxYI@*? zlv!G4=pe)R2;w+HugS~Y^2p>fu(|k5O~_S6bE}xsB4vj}b92z5dh>iW#gu(uLp|3G zme^%ujni7(udX3a@aDEOm7GyZ+QpoRlBvnrnrIFS`OR|XTYnh)N?y(}g7VtW`ZxOb z?~iU8oMq4tu!49&YGlrfkHL&ah!8W1FKWNT3cfJ?+=lqhjOiyxLcsb0%FZJ^K@mX; zkxeS-a2%${m8Q)1pGt3q<}9U2QidpHhU8RLNfDJa*cwXEB=Jm%J)!2*j2Ix@GEMbv zlc|4$uUHW*a-%uIo5WzMET<`ArXpl1Ql=uOz5d6s8}f7NSWfxDe~9tRkjaK~!;m~c z#^4~_`YHda;T1tm_%|-<|GB7q*5jws%VB>h3x>|QPSYnsn8c&I(UsGMN<~K)t=2oRp z7PD13tC`Ph<4w)Ti@C2oG;v*CPBlrx4P}g9n7;uKFgYKt3_t`}a2WE(;GkP?y%qL5 zaO--Y4leOS5EA6`Mfq#UkRcbQpS$z(Ab)(UL$cd3tyd-p)lSHElDF%DuttyTx$KM& z9!)>vv$QtlH2Vrd5JXMpwx+yDV_{o8q(?z}fMZLB1nZ{90O^)dYNp$A<6C*Q-D~b> zgb*`@1DTOvMu*qb>C5Q|WJG*98y8J{sW7j~<&Mc8P(C_q$YcP7i$K}pHSPG=n^{nAjF5j#ed5R*BvR)xisyyLWORo1i*pUUcNG@ph+ z5h!Z)mz)XY!`*?A=(MlsjK3h#V0Bs(_@9=~YE2oH*H3LIJ{>UOx2?Y1b`fVb@@L@u z5whEZ`ENWp`FV5p5gLmY&&p?G{4$_0v>Kp<%h(Wx@%>!-iRnM6`E&fMka8EMpSy|* z-*GxHaA0xDNfr||sS_-Hl3|ZCYz1nVd4XvTEUps<}0lb81iAR(*0#)rpFl%3JFyZ>_1GS6Ox2qxa{}&raSpv+QHX zkN#&&`@{khq&P4|A1M|xM6dMn!Gi}+nl#C{Ja0N~+&Ih}JMXR7WB>cV{~J$^U7me- zT3Sk4MsjLKW=2L*zbhRB2i`GYzj2KypSAa+?N=h@h<*$eKWO-6Cd(k2?B}xeV{QHI_Wm@{k0kmL_Wo>X zd`bS`AwzpuZSkn@BKxsaKRbCPL0-vP`#Y`rqfkFB@e0eJD`&+IxF>!<%)S5>flZ7w zmcbFvgY&QzKER+^YACgrBsA9jr2ZT{IioPQzu>jD1oK+` z_+g%+`yq4S9%=Ix;310NvVPH&7YgzYQ5bp-&YlZ*EZ_<1*|BpH9|0(DQnw6#^vUITbl=J-Z2h*WzJjJGdu)NxN zQ-?nXzWtDp84@$0LU;Pj?ZNC&FmKc1N$Y+Y|Ign^KX+Ix+g+~XG#0!=;nA1wBE=*V zOcnDpwrW?&Gp3Ynk57X;v?Y+E1@c4ii6Mps7d?mv_JY4aJ!L10hj?qte-fXQGm3Ni zOO0f^-_qfQpRFJigqJM0-CNL!Cj?9(f5E0jlh^6~)qlMI@bAROnE!L?hxtEI;}n_? z4f`}mGA9{sb!OJ~Kk539?tca>K@(zOZDKkM8F*Pc19@5gjf0QD>6{MqDV$o}FIHX>S3HT)5p{TQvC>@<0Eb_+WmWF@Fs6qp+;|Z2XJD;%z+d>hrC%4 zvs4kD)!g==9t}~0rcDn{1pQR%PVXPbF9=&mT0`0EDxXn;asRybg;C8=BQd@s{`Gg_ zb8BJ2wla4$3+IMDH%w$~m>Y%}Vpy!Rc0c(WPc+>hnPF$0pS&Kz{?2qv;=z*XI z^c0$*0S?Hf3tbAw4AV+!~ zBqpz7p=E>3_Ht(C`%k2`hl^y`r2aIJjUcCnq|~-xmK-!A5~0@FOG*aU|Md9PP*Y~f z>EGI9@6dAn!W5A&P`!{s<`zDqmCtAkWQY8D8y8R7SYkO@YWEhE#Kw16Qie4FLPEyC z3N9c+kv^~fW6Xg8M5qsZV1Hd0A6PLLu5ed=!H1q1wX7#ha2+-}Y}c2lU>3K4wS<@< zM%g!7^4@zi1wz9wq^g=pk+XwpdRRf|3UQhIR&QPh@3LEmG&TIB{q8?C!;;&-y@?3< zr$s{9B0{mglG7N=c!V%=&%mtn7r*{M@`i$fS}UzNryKYf{tZ|PhCu0w+!Y22_gOt|Hg&8e^L6GUtGM_<@uC#AER9jq^q8Eouc#;`I8K@f4b|D%#^Kv z&R0%SVgn_gqSbm@YP7dBSkKfE?X~pjIwoB0A&Z7KRo$$L)oqQ_+v}#EsbSmdrnfcR z*;apNdo9~^q@o}_zO$yhv(XxAEQ!=R+iTsYYnaYD;&d&A%Izmzn-^v*&&m0YDLX*v z`y+vyU^&7%z+w}mSf7H_SgV2(EL6cIM8~=7Q?SxJwuWWUph4(9YMy)GQO4pI*cZkt zy4D$rixF326${?m_t!m#_3W7#7dN?Q+|-_WICdriLbSJ(XNvb0{8=l1Rs z<1d4)Ko4LRAO>F$tWFRHhy=7`(9Z?P1MA-}DxYDW;%VSVL%zjQS-`queQHfnNf9=9 z3c?Yt@xhSb*F>BFO<$Q6k^`M#<*%=7zBPN|w%=JkbldlG&V97!E4u7U*16Zgehibg zoY`LPCI(*pntSH^?$S@DQ@hHk-EQJj7qi33>~Jw3yO~X{n+p0~wR5I>&rS9Z%Zqo+ zaD3`!ce}|QI9<#x2ltVSnK5O;mTm8z)|6H;5W@$p1@9PXEMs&5C>iqS0{Hw)`z!Vq zyJ!(?fO!g{)TnyzNq zy9W&Vp7GRUz7RHmVzBDO7Q{So!ikB^nCI{f>zUK%%9Ai#u!MWOPgGUSfGm8WuOpHR0G9UGThw*uF~;|THnABbL<71o40we&>r}F z&Fb`X9Pu@rm>+I;!1#r867$dfgj2A2uo8dqgz-DJZo_hVRZ;)x^aBF%X-cCGgJLf# zieOQszNH&{wpf*{FS|y$j*rw940e97_N~>E(iJ;433P%Z8eB!_8gy*vkkKW*n8{4v zHDKWPoU@T;d^97mr5aZx5)RSsgal35FQq}VCgifd9lhKUR+GY zXNU(Uj{9)i)&O>{Q2+V(p!;AP?4bctAs~M+-CdO%HGO3|z`+84tQ(aSsXmO8-?nk> zvs02IHh0kKX+%(iwT1NE0vT8$SZjc;VW#(;0|$KP;G+1@5?35@SVV%uDbe--SNf%! zn%TEc6=%cDJ?sdF$Rij~VoR`!9Mq-nCCJ+TFmcQ$Tek+W+2J|(82YfG*th}7nZ=psmGx*%&?GI7j~ty}dy1b*Nzs5d~y z7|NkABX1~vXusivhkbfsd|;nmR6oR9@Ib)c6&&RCSMz*W)ryN?ILN%dN#)r}I-7y> z^f3%OOe!C2cxCz2X(HupDkXS*lM_bKS4x65*svbvV2)B0+_T@)tUx+sibDh>z}c`p zg%n*L*vOJ!x!C!A`|u2lWr(+0!h#~OvmzeiC73#jK1pMUC;l*g+y`&JZ8Rw+pAGvx)>J?Q z5;E$bwa^bQOh1_4@-y|rbLj`4!1y{?%>ktpFYQ(b1Q&!{Qj|Ad+puub#1kIRcSI>> zzZ`X7*H-qBgT>Ypkj&K#{Vm6q4IHrD?b$~<4lu3*tmAu@+0Rkc*yW654pYvzU7pgu zeZO~jDjm-6^z|?Fafh>taU4ZW&H=%7#KA0>IN{R|J^&Q>Mg~5J@4&jm21l5qf($qX z!F0q!vE3F5;n+z|P6msiyz7B-;}XBZ=3|IWbiHfjjmH8yWG=hxGCc6yIv_l}4i#>= z;fBSF7oVrXz4zXE@50;eUBGdaW60pO6DO=0{o55|M?aY~^6{imOOr-DG-lKzNh6;b zGkW>N30b{+Rg4?^`|C$896SD=v19KXlXTaZ#0SPC{vj!8Vd7ZNgbAa1{`%3ejcSqG{JF0hoTD9x5!=HUta@}v<%F5fDU$nch zXlG9DUUU9lbHV2(%Wkt}r@7#>y!=~7j(p~c$BmZ9_{-oX5H{E!q=f@)WfUS0;yHKz zykW9|JMb%X>Z0<;7{9s+7F-$@AKnG|gO}ogcw^UUxR3?0MGJkfas9HX)AZ@k*jq9> z03iT`sS6l-Fc{TP)K0gP$w+OJgQr!wU4v}L6gS=r_QfU>*mVNhf+(|ziHDi#4K`RM zoR7g~upD&e=<-YibXepcnlNGK`|qPwIAZvqJw~gL#xh1D(f#xKe~i0E<-f=NioM#v z$9SOe@UySLPyz!?QQqCS?$1+`{WOQAxVrZq>kgutFcxBC$p+@wf9=Hj?vxgVZ!qLd~j9$?F$CpR*LmnFRnlxIDV1pNoAbP;rWP`59(qStu) zzY9JvP_akNwhil^nwpG}oyP?5&=>Ua5BtXGTgS*C z9sGg85*9+(`nxbGaX;rl*vJpXTi<*M3P5xVTs@*hco|~x#D710box={EgRN7IW;-J zVCA*G-xSs$V7mh#14U6ryn~>z{^D-46XxvJCq|f7uU%mp*KrJ@p+9vDkn6hPBHe ze<+w0u$u^(vV+UO5paCLI1Lk29qaU@rAU}NsVdmtrbEz;TX z=dgbu!baEy4)g=_7IcVpi;&gu|D1~t&@c{+u*jg1NYM);f8PB`x>o!7h{i8x}uW_u^BNCSzG>3(d5UShsEsQ{WEUDcIxKY@EdZ zdf+NcOA)jHACfwG>9oE(r5eCS0lERF3u-~t_qW+cJHcOJY^qFK>p5E!XGN?nLfP6# zo1Z2YPZ;;%yYCtZ#PmZn8x4bQ53L3nAYr(xK#_emCL? zL*c>hLyCg6-;oe@p3{j)|1>|G@UlYQhQjL3_3Iv+oP3=1G}xnCPr!A9*{uvLDH4&O z0Oi=rxg6Q4fe0@)Yps61L%{y5p#UOKii$0^utidfB5;X`2PhAmNP%K|!0D*xNPUY% z2GmG`LmO!3z6ldRKi%xFBS((xj~-ZOihptW?YG}z&e*Lv{+-~>#@4pWdtm|>? z*fCrhzk2h{H-TZ-yG9;brEwfRdi3(kFUK>_t@HhN-yJ)0hBL$?mztPfrDQiJcy@NqEiRoQk{W%()GHiZ%va13v#b{)51O 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 @@ + + + g> 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

S~>+F>R_%&TL2yyh5}Un}X+i7w0bA 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­QUE3S5^~ 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


7ElhLFq%DQjr^uS*G!a@NwXG91P40@g4fETjI_ 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 z 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�V46Ji*|#3q`5Hc!R?m%`i~6X(^U~Q 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 delta 386712 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%0DeP>$RDnnSHVPW0-3 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

>rpWMS<`l|6-dNFNyscik^ayE=YoaV(%ObuY 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 z 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 io9~xxXW~Y-e_`cjpv9-MJvYy*Vqrv<+Pt - + Finding tools... The Sandcastle tools are located in 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\' @@ -10,11 +10,12 @@ Locating components in the following folder(s): Using framework reflection data for '.NET Framework 4.5' located in 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\Data\.NETFramework' Using presentation style 'VS2013' located in 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013' Loading and initializing plug-ins... -Lightweight Website Style Version 2016.9.17.0 -Copyright © 2006-2016, Eric Woodruff, All Rights Reserved +Lightweight Website Style Version 2017.5.15.0 +Copyright © 2006-2017, Eric Woodruff, All Rights Reserved Portions Copyright © 2014, Sam Harwell, All Rights Reserved ------------------------------- Clearing any prior web/markdown output... + Ignoring folder 'C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\scripts': The process cannot access the file 'jquery-1.11.0.min.js' because it is being used by another process. Validating and copying documentation source information @@ -28,7 +29,7 @@ Copying XML comments files Generating shared content files (en-US, English (United States))... - Last step completed in 00:00:00.0431 + Last step completed in 00:00:00.0429 Generating API filter for MRefBuilder... @@ -36,94 +37,91 @@ Generating API filter for MRefBuilder... Generating reflection information... -[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe - GenerateRefInfo.proj] -Build started 1/14/2017 2:18:27 PM. +[C:\Program Files (x86)\MSBuild\14.0\bin\amd64\MSBuild.exe - GenerateRefInfo.proj] +Build started 9/21/2017 12:54:12 PM. Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\GenerateRefInfo.proj" on node 1 (default targets). -Project file contains ToolsVersion="12.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="4.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=291333. PrepareForBuild: Creating directory "obj\Debug\". GenerateRefInfo: - MRefBuilder (v2016.9.17.0) - Copyright c 2006-2016, Microsoft Corporation, All Rights Reserved. + MRefBuilder (v2017.5.15.0) + Copyright c 2006-2017, Microsoft Corporation, All Rights Reserved. Portions Copyright c 2006-2016, Eric Woodruff, All Rights Reserved. No source code context base path specified. Source context information is unavailable. Loaded 1 assemblies for reflection and 1 dependency assemblies. - Wrote information on 1 namespaces, 9 types, and 172 members + Wrote information on 1 namespaces, 13 types, and 215 members Copying file from "reflection.org" to "reflection.all". - XslTransform (v2016.9.17.0) - Copyright c 2006-2016, Microsoft Corporation, All Rights Reserved. + XslTransform (v2017.5.15.0) + Copyright c 2006-2017, Microsoft Corporation, All Rights Reserved. Portions Copyright c 2006-2016, Eric Woodruff, All Rights Reserved. Applying XSL transformation 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\ProductionTransforms\MergeDuplicates.xsl'. Done Building Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\GenerateRefInfo.proj" (default targets). Build succeeded. -Time Elapsed 00:00:01.25 - Last step completed in 00:00:01.7018 +Time Elapsed 00:00:00.80 + Last step completed in 00:00:01.1668 Transforming reflection output... -[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe - TransformManifest.proj] -Build started 1/14/2017 2:18:28 PM. +[C:\Program Files (x86)\MSBuild\14.0\bin\amd64\MSBuild.exe - TransformManifest.proj] +Build started 9/21/2017 12:54:13 PM. Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\TransformManifest.proj" on node 1 (default targets). -Project file contains ToolsVersion="12.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="4.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=291333. TransformManifest: - XslTransform (v2016.9.17.0) - Copyright c 2006-2016, Microsoft Corporation, All Rights Reserved. + XslTransform (v2017.5.15.0) + Copyright c 2006-2017, Microsoft Corporation, All Rights Reserved. Portions Copyright c 2006-2016, Eric Woodruff, All Rights Reserved. Applying XSL transformation 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\\ProductionTransforms\ApplyVSDocModel.xsl'. Copying file from "reflection.xml" to "reflection.nofilenames". - XslTransform (v2016.9.17.0) - Copyright c 2006-2016, Microsoft Corporation, All Rights Reserved. + XslTransform (v2017.5.15.0) + Copyright c 2006-2017, Microsoft Corporation, All Rights Reserved. Portions Copyright c 2006-2016, Eric Woodruff, All Rights Reserved. Applying XSL transformation 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\ProductionTransforms\AddFilenames.xsl'. - XslTransform (v2016.9.17.0) - Copyright c 2006-2016, Microsoft Corporation, All Rights Reserved. + XslTransform (v2017.5.15.0) + Copyright c 2006-2017, Microsoft Corporation, All Rights Reserved. Portions Copyright c 2006-2016, Eric Woodruff, All Rights Reserved. Applying XSL transformation 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\ProductionTransforms\ReflectionToManifest.xsl'. Done Building Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\TransformManifest.proj" (default targets). Build succeeded. -Time Elapsed 00:00:01.07 - Last step completed in 00:00:01.4112 +Time Elapsed 00:00:00.96 + Last step completed in 00:00:01.0732 Generating namespace summary information... - Last step completed in 00:00:00.0210 + Last step completed in 00:00:00.0250 Copying additional content files... No additional content to copy - Last step completed in 00:00:00.0025 + Last step completed in 00:00:00.0035 Merging conceptual and additional tables of contents... - Last step completed in 00:00:00.0005 + Last step completed in 00:00:00.0006 Generating intermediate table of contents file... -[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe - GenerateIntermediateTOC.proj] -Build started 1/14/2017 2:18:30 PM. +[C:\Program Files (x86)\MSBuild\14.0\bin\amd64\MSBuild.exe - GenerateIntermediateTOC.proj] +Build started 9/21/2017 12:54:14 PM. Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\GenerateIntermediateTOC.proj" on node 1 (default targets). -Project file contains ToolsVersion="12.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="4.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=291333. GenerateIntermediateTOC: - XslTransform (v2016.9.17.0) - Copyright c 2006-2016, Microsoft Corporation, All Rights Reserved. + XslTransform (v2017.5.15.0) + Copyright c 2006-2017, Microsoft Corporation, All Rights Reserved. Portions Copyright c 2006-2016, Eric Woodruff, All Rights Reserved. Applying XSL transformation 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\\ProductionTransforms\CreateVSToc.xsl'. Done Building Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\GenerateIntermediateTOC.proj" (default targets). Build succeeded. -Time Elapsed 00:00:00.55 +Time Elapsed 00:00:00.25 Generating conceptual content intermediate TOC file... - Last step completed in 00:00:00.9175 + Last step completed in 00:00:00.4034 Creating Sandcastle configuration files... sandcastle.config - Last step completed in 00:00:00.4511 + Last step completed in 00:00:00.1858 Merging custom build component configurations @@ -131,50 +129,49 @@ C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary Updating reference topic configurations. Replaced configuration for 'Syntax Component' (instance 1) with configuration for 'Syntax Component' No conceptual content. Removing conceptual content components. - Last step completed in 00:00:00.0165 + Last step completed in 00:00:00.0155 Building help topics... -[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe - BuildTopics.proj] -Build started 1/14/2017 2:18:31 PM. +[C:\Program Files (x86)\MSBuild\14.0\bin\amd64\MSBuild.exe - BuildTopics.proj] +Build started 9/21/2017 12:54:15 PM. Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\BuildTopics.proj" on node 1 (default targets). -Project file contains ToolsVersion="12.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="4.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=291333. BuildTopics: - BuildAssembler (v2016.9.17.0) - Copyright c 2006-2016, Microsoft Corporation, All Rights Reserved. + BuildAssembler (v2017.5.15.0) + Copyright c 2006-2017, Microsoft Corporation, All Rights Reserved. Portions Copyright c 2006-2016, Eric Woodruff, All Rights Reserved. Loading configuration... Processing topics... - Processed 198 topic(s) - CopyFromIndexComponent: "reflection" in-memory cache entries used: 7 of 15. - CopyFromIndexComponent: "comments" in-memory cache entries used: 2 of 30. + Processed 248 topic(s) + CopyFromIndexComponent: "reflection" in-memory cache entries used: 8 of 15. + CopyFromIndexComponent: "comments" in-memory cache entries used: 1 of 30. + SaveComponent: Waiting for the document writer task to finish (17 MSHelpViewer API file(s) remaining)... Done Building Project "C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\BuildTopics.proj" (default targets). Build succeeded. -Time Elapsed 00:00:10.90 - Last step completed in 00:00:11.2938 +Time Elapsed 00:00:16.32 + Last step completed in 00:00:16.4631 Combining conceptual and API intermediate TOC files... - Last step completed in 00:00:00.0040 + Last step completed in 00:00:00.0035 Extracting HTML info for HTML Help 1 and/or website... -[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe - ExtractHtmlInfo.proj] -Project file contains ToolsVersion="12.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="4.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=291333. -Sandcastle Help File Builder and Tools, version 2016.9.17.0 -Copyright c 2006-2016, Eric Woodruff, All Rights Reserved +[C:\Program Files (x86)\MSBuild\14.0\bin\amd64\MSBuild.exe - ExtractHtmlInfo.proj] +Sandcastle Help File Builder and Tools, version 2017.5.15.0 +Copyright c 2006-2017, Eric Woodruff, All Rights Reserved E-Mail: Eric@EWoodruff.us Using LCID '1033', code page '65001', encoding charset 'UTF-8'. Processing website files in C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website -Processed 198 HTML files +Processed 248 HTML files Sorting keywords and generating See Also indices Saving website keyword index to C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\WebKI.xml Saving website table of contents to C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\WebTOC.xml - Last step completed in 00:00:00.9811 + Last step completed in 00:00:00.4747 Copying standard help content... @@ -308,6 +305,8 @@ C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyle C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\SearchHelp.inc.php -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\SearchHelp.inc.php C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\SearchHelp.php -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\SearchHelp.php C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\Web.Config -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\Web.Config +C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\html\GeneralError.htm -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\html\GeneralError.htm +C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\html\PageNotFound.htm -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\html\PageNotFound.htm C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\icons\Search.png -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\icons\Search.png C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\icons\TocClose.gif -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\icons\TocClose.gif C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\icons\TocCollapsed.gif -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\icons\TocCollapsed.gif @@ -316,26 +315,25 @@ C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyle C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\scripts\branding-Website.js -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\scripts\branding-Website.js C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\scripts\clipboard.min.js -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\scripts\clipboard.min.js C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\PresentationStyles\VS2013\Web\scripts\jquery-1.11.0.min.js -> C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Working\Output\Website\scripts\jquery-1.11.0.min.js - Last step completed in 00:00:02.2605 + Last step completed in 00:00:01.6869 Executing informational Generate Table of Contents build step for plug-ins (not used for MS Help Viewer) - Last step completed in 00:00:00.0015 + Last step completed in 00:03:14.7267 Executing informational Generate Help Project build step for plug-ins (not used for MS Help Viewer) - Last step completed in 00:00:00.0015 + Last step completed in 00:00:00.0090 Generating MS Help Viewer file... -[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe - BuildHelpViewerFile.proj] -Project file contains ToolsVersion="12.0". This toolset may be unknown or missing, in which case you may be able to resolve this by installing the appropriate version of MSBuild, or the build may have been forced to a particular ToolsVersion for policy reasons. Treating the project as if it had ToolsVersion="4.0". For more information, please see http://go.microsoft.com/fwlink/?LinkId=291333. +[C:\Program Files (x86)\MSBuild\14.0\bin\amd64\MSBuild.exe - BuildHelpViewerFile.proj] Compressing help content files... - Compression finished. 267 items added + Compression finished. 317 items added Saving C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Documentation.mshc... Finished saving C:\Users\TimYo\Documents\Visual Studio 2015\Projects\SpriteLibrary\SpriteLibrary\Doc\Help\Documentation.mshc - Compressed 4 folders, 263 files. Reduced size by 1,043,810 bytes (71%). - Last step completed in 00:00:01.4054 + Compressed 4 folders, 313 files. Reduced size by 1,302,136 bytes (72%). + Last step completed in 00:00:00.7745 Generating website table of contents file... @@ -346,21 +344,21 @@ Generating full-text index for the website... Adding lightweight search and TOC elements to each topic... - Last step completed in 00:00:00.2865 + Last step completed in 00:00:00.3023 Copying website files to output folder... -Copied 328 files for the website content - Last step completed in 00:00:00.6354 +Copied 390 files for the website content + Last step completed in 00:00:00.9312 Removing intermediate files... - Last step completed in 00:00:01.1018 + Last step completed in 00:00:00.8134 -Build completed successfully at 1/14/2017 2:18:49 PM. Total time: 00:00:23.8718 +Build completed successfully at 9/21/2017 12:57:51 PM. Total time: 00:03:40.6567 diff --git a/SpriteLibrary/Doc/Help/Web.Config b/SpriteLibrary/Doc/Help/Web.Config index 26672e8..f0f3e6c 100644 --- a/SpriteLibrary/Doc/Help/Web.Config +++ b/SpriteLibrary/Doc/Help/Web.Config @@ -1,6 +1,9 @@ + + + diff --git a/SpriteLibrary/Doc/Help/WebKI.xml b/SpriteLibrary/Doc/Help/WebKI.xml index c275a6f..66f6214 100644 --- a/SpriteLibrary/Doc/Help/WebKI.xml +++ b/SpriteLibrary/Doc/Help/WebKI.xml @@ -4,12 +4,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -25,9 +50,16 @@ + + + + + + + @@ -35,10 +67,13 @@ + + + @@ -47,15 +82,27 @@ + + - - + + + + + + + + + + + + @@ -67,7 +114,9 @@ + + @@ -85,6 +134,10 @@ + + + + @@ -100,11 +153,17 @@ + + + + + + @@ -243,6 +302,7 @@ + @@ -254,6 +314,7 @@ + @@ -270,6 +331,7 @@ + @@ -286,8 +348,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302,23 +395,46 @@ - + + + + + + + + + + + + + + + + + + + + + + + + @@ -337,15 +453,23 @@ + + + + + + + + diff --git a/SpriteLibrary/Doc/Help/WebTOC.xml b/SpriteLibrary/Doc/Help/WebTOC.xml index 4348aff..d13bcf9 100644 --- a/SpriteLibrary/Doc/Help/WebTOC.xml +++ b/SpriteLibrary/Doc/Help/WebTOC.xml @@ -1,9 +1,29 @@  - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -11,7 +31,7 @@ - + @@ -34,8 +54,8 @@ - - + + @@ -57,7 +77,7 @@ - + @@ -68,13 +88,13 @@ - + - + @@ -99,7 +119,7 @@ - + @@ -119,7 +139,7 @@ - + @@ -128,53 +148,56 @@ - + - + - - + + + - + - + + - + - + - + + - + @@ -184,6 +207,7 @@ + @@ -197,30 +221,65 @@ + - + - + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - + diff --git a/SpriteLibrary/Doc/Help/fti/FTI_100.json b/SpriteLibrary/Doc/Help/fti/FTI_100.json index ab7b83c..25cd2b5 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_100.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_100.json @@ -1 +1 @@ -{"duplicate":[1048578,1376258,1572865,1835009,3932162,4063236,4325380,5898241,7536643,9633793,10027009,10747907,10813442,11403265,12648451,12910593,13041669],"datetime":[9240578],"display":[196610,2424833,3145729,3866625,4063237,4325381,6160386,6356993,8716289,9371649,10944513,11993089],"drawn":[1441793,1835009,2293762,4063236,4259841,4325379,5046273,5505025,6291457,6684673,6946817,9306113,9568257,10027013,10551297,10682369,11075585,11206657,11534337,12910594,13041670],"draws":[6881281,9175041,13041665],"determines":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,12582913,13041665],"didsomething":[9240580],"data":[3604481,5373953,6881281,11206657,13041665],"default":[1,3342337,3604481,4063234,4325378,4915201,5046273,7340033,9043969,10027009,10747906,11927553,12582914,13041667],"define":[2490369,4063233,9240577,10027009,11403265,13041665],"decimal":[9830401],"dealing":[4390913,10027009,13041665],"destroysprite":[3407874,4063233,4325377],"destinationlist":[786434],"determining":[7208961],"degrees":[655361,1048578,1376260,1441795,1638402,9830403,10027011,10747912,10813442,11272196,13041675],"ddns":[6881281],"duplicating":[4063233,4325377,11862017],"defining":[9568257],"destroyed":[589827,3407873,4063233,4325377,5373953,10027011,11206657,13041668],"defined":[2031617,3604481,4063234,6881281,10551297],"defines":[9568257,10551297],"dimentions":[327681,3735553,6029313,7667714,10747907,13041667],"documentation":[4063233,4325377,9961473],"determine":[65537,3211265,3670017,4063233,4325377,4456449,4718593,9961473,10027009,12713985,13041666],"duplicated":[4063235,4325379,4849666,5898241,9502722,9633793,10027010,11730945,13041667],"displayed":[1703937,2031618,2621441,3801089,4063239,4325379,5505026,7077889,7405569,9568257,10551297],"delegate":[1179651,2359299,6881283,12582913],"distinguish":[5898241,9633793,13041665],"double":[327686,655362,1638404,4718594,5308418,6750210,7667714,7733250,9830403,10747906,11272196,11665410,12255234,13041668],"drawing":[262145,393217,1114113,2752514,2818049,2883585,3080193,3211265,3735553,4128769,4063233,4653057,5832706,5963777,6029313,6422529,6553601,6815746,7012353,7077890,7208961,7602177,7798785,8650753,8912897,9109505,9437186,10092545,10420225,10747906,10878977,12058626,12320769,12910593,13041666],"destination":[1310724,1769475,10420226,10747908,11206657,12124161,12320771,13041669],"different":[1703937,1835009,2883586,4063238,4325381,6553602,6881281,7405569,9175041,10747905,11993089,12910593,13041665],"destroyallsprites":[3801090,4063233,4325377],"decides":[6881281,9175041],"direction":[655361,1310721,1769473,4718593,5308418,7929857,9830404,10027009,10420226,10747914,11665409,12255233,12713985,13041676],"draw":[1835009,3014657,4063233,4325377,12582913],"destroying":[589826,3407873,4063234,4325377,6881281,10027009,13041665],"degree":[655361,10747905,13041665],"drag":[6946817,10027009,13041665],"deals":[6881281,13041665],"duplicatesprite":[3932164,4063237,4325381,7536643,9502721,10027009,11403265,11730945,11862017,12648451,13041665],"delegates":[6881281],"dumb":[1310721,1769473,10747905,13041665],"description":[1376257,1769473,1835009,2031617,2490369,2949121,3342337,3473409,3604482,4063237,4325377,4718593,4915201,5111809,5898241,6881284,7143425,7405569,7536641,7667713,7864321,9175041,9306113,10027009,10289154,10747905,10944513,11206657,11534337,11927555,13041669],"directly":[2883585,4063233,4325377],"delta":[7929857,10747905,13041665],"duplicates":[4063233,4325377,9502721,9764865,10027009,11403265,13041665],"dotick":[2490369,4063233,9240581,9568257],"divide":[6750209,7143426,7733249,10289154],"designated":[3932161],"destroy":[589826,3407876,4063238,4325381,5373953,6881281,8126466,10027010,10354689,10747906,11206657,11862018,13041669],"dll":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1900545,1966081,2097153,2162689,2228225,2293761,2359297,2424833,2555905,2621441,2686977,2752513,2818049,2883585,3014657,3080193,3145729,3211265,3276801,3407873,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4063233,4194305,4259841,4390913,4456449,4521985,4587521,4653057,4784129,4849665,4980737,5046273,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7208961,7274497,7340033,7471105,7602177,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10813441,10878977,10944513,11010049,11075585,11141121,11272193,11337729,11403265,11468801,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665],"durationinmilliseconds":[5963778],"demand":[1048577,1376258,10747906,10813441,13041666],"duration":[3080195,5832706,5898241,5963777,6225921,7077890,7798786,9240578,13041665]} \ No newline at end of file +{"dictionary":[5242881,6881282,12845057],"duplicate":[1245186,1703938,1966081,2228225,2359297,2490369,2752513,4653060,4980738,5439492,8257537,9633793,9830401,10616835,11206659,11862017,12845057,12976129,13172739,13828098,15728645,16384001],"datetime":[10813442],"directional":[15466497],"dragging":[11534337],"display":[458754,3276801,3866625,4128769,4653061,5439493,7667713,8126466,12124161,14024705,14548993,14745601],"drawn":[1900545,2162690,2752513,3604481,4653059,5177345,5439492,7077889,7733249,7864321,8519681,9371649,10747905,11862021,12648449,12910593,14811137,14876673,14942209,15269889,15400961,15728646,15925249,16318465,16384002],"draws":[6881281,9502721,15728641],"determines":[16449537],"didsomething":[10813444],"data":[2228226,2949121,4325377,4718593,6815745,6881281,12845058,14942209,15728641],"default":[1,4653057,5177345,5439489,8388609,10682369,11206657,11862017,15728642,16449538],"definition":[851969,2228225,9437185,12845057],"define":[2228225,3145729,5439489,5636097,10813441,11862017,12845057,12976129,15728641],"decimal":[12451841],"dealing":[4587521,11862017,15728641],"deserializing":[2228225,2359297,12845057],"drastically":[6881281,12845057],"destroysprite":[4653057,5111810,5439489],"destinationlist":[1114114],"determining":[8847361],"databasetouse":[9371650,11337730],"degrees":[655361,1245186,1507330,1703940,1900547,5242881,9109505,9437185,11206664,11862019,12451843,13107201,13828098,15728651,16121860],"ddns":[6881281],"duplicating":[4653057,5439489,14221313],"drop":[2228225,11993089,12845057],"defining":[12910593],"destroyed":[786435,4653057,4718593,5111809,5439489,11862019,14942209,15728644],"defined":[2228225,2555906,4325377,5439491,5636097,5832705,6881281,9371649,12648449,12845057],"defines":[9371649,12648449,12910593],"dimentions":[327681,5701633,5898241,9699330,11206659,15728643],"documentation":[4653057,5439489,13369345],"determine":[393217,4390913,4653057,5439489,5767169,6684673,8650753,11862017,13369345,13762561,15728642],"duplicated":[2228225,2359297,4653059,5439491,6553602,8257537,9633793,11468802,11862018,12845057,13959169,15728643],"displayed":[2555907,3211265,3342337,4653059,4784129,5439496,7012353,7077890,8323073,9371649,12648449,12910593,14876673,15400961,15925249],"delegate":[1835011,2883587,6881283,16449537],"distinguish":[8257537,9633793,15728641],"double":[327686,655362,1507332,7602178,8650754,8716290,9240578,9699330,11206658,12451843,14286850,14614530,15728644,16121860],"deserialization":[2228225,6815745,12845057],"drawing":[589825,720897,2228225,3014657,3801089,4521985,4915202,5308417,5439489,5701633,5767169,5898241,6029313,6422529,7012354,7274498,7340033,7536641,7798785,7929857,7995393,8060929,8454146,8847361,9568257,11206658,11403265,11534338,11796481,12058626,12517377,12713985,12845057,14483457,14680066,15532033,15728642,15859713,16384001],"destination":[1572867,1638404,11206660,11796482,14352385,14942209,15728645,15859715],"different":[2752513,3211265,3801090,4653063,5439496,6881282,7340034,8323073,9437185,9502721,11206657,11665409,14745601,15466497,15728641,16384001],"delay":[5242881,9109505,15335425],"developing":[5636097],"destroyallsprites":[4653057,4784130,5439489],"desktop":[2228225,2424833,5636102,11993089,12845057],"decorate":[2228225,12845057,13631489],"decides":[6881281,9502721],"direction":[655361,1572865,1638401,7602178,8650753,10878977,11206666,11796482,11862017,12451844,13762561,14286849,14614529,15466497,15728652],"database":[851969,2228228,2424833,4653057,5242881,5373953,5439489,5636099,5832706,6881283,9961475,11337730,12582915,12845066],"draw":[2228225,2752513,4456449,4653057,5439489,5636097,12845057,16449537],"drew":[14876673,15400961,15925249],"destroying":[786434,4653057,5111809,5439490,6881281,11862017,15728641],"degree":[655361,11206657,15728641],"drag":[2228225,7864321,11862017,11993089,12845057,15728641],"deals":[6881281,15728641],"duplicatesprite":[4653061,4980740,5439493,10616835,11468801,11862017,12976129,13172739,13959169,14221313,15728641],"delegates":[6881281],"dumb":[1572865,1638401,11206657,15728641],"description":[1572865,1703937,2228225,2555905,2752513,3145729,3407873,3997697,4194305,4325378,4653057,4849665,5242883,5439493,5963777,6356993,6881284,8192001,8257537,8323073,8650753,8781825,9109505,9437185,9502721,9699329,10616833,10747905,11010049,11206657,11862017,12582913,12845059,13303810,14548993,14942209,15400961,15728645,15925251,16056323,16318465],"directly":[3801089,4653057,5439489],"delta":[10878977,11206657,15728641],"duplicates":[4653057,5439489,10944513,11468801,11862017,12976129,15728641],"dotick":[3145729,5439489,10813445,12910593],"divide":[8716289,8781826,9240577,13303810],"designated":[4980737],"deserialize":[2228225,2949121,6815745,12845057],"destroy":[786434,4653061,4718593,5111812,5439494,6881281,10289154,11206658,11862018,14221314,14942209,15663105,15728645],"dll":[65537,131073,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1638401,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2490369,2621441,2686977,2818049,2883585,2949121,3014657,3080193,3211265,3276801,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,4063233,4128769,4259841,4325377,4390913,4456449,4521985,4587521,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,6029313,6094849,6160385,6225921,6291457,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8388609,8454145,8519681,8585217,8716289,8847361,8912897,8978433,9043969,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10682369,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,15073281,15138817,15269889,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16384001,16449537],"definitions":[851969,2228225,2555905,5439489,6881281,9371649,12845058],"durationinmilliseconds":[7798786],"demand":[1245185,1703938,6881281,11206658,12845057,13828097,15728642],"duration":[4521987,7012354,7143425,7274498,7798785,8257537,9568258,10813442,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_101.json b/SpriteLibrary/Doc/Help/fti/FTI_101.json index 4e85ec7..4943c69 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_101.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_101.json @@ -1 +1 @@ -{"exposes":[2490369,3342337,3473409,3604481,4063233,4325377,4718593,4915201,5111809,7143425,7405569,9306113,10027009,10289153,10747905,11206657,11927553,13041665],"existing":[1376262,2752513,3080193,5832705,7798785,8650753,10092545,10747910,13041670],"easiest":[327681,3735553,4784129,7667714,10027009,10747906,13041667],"entirely":[11075585,11206657,13041665],"explorer":[6881281],"enumerations":[6881281],"exited":[1966081,11206657,13041665],"examples":[1835009,3604481,3932161,4063234,4325377,9240577,9568257,10551297,12582913,12910593],"ellipse":[9175041],"erased":[10027009,10682369,13041665],"events":[1179650,2490370,4063233,6881284,9175041,10944513,11206658,11927553,13041665],"enumeration":[6881281,9175041,10944513],"expect":[5701633,11206657,13041665],"equals":[3342337,3473409,3604481,4063233,4325377,4915201,10289153,10747905,11927553,13041665],"equal":[3342337,3473409,3604481,4063233,4325377,4915201,10289153,10747905,11927553,13041665],"exiting":[1966081,9240577,11206657,13041665],"emmediately":[6946817,10027009,13041665],"easy":[9240577],"ends":[4063233,6684673,9306113],"easier":[524289,10027009,13041665],"end":[458753,4063233,4325377,11206657,11862017,13041665],"eventargs":[1179650,6881283,9240577,9568257,11927555],"extra":[2097153,4718593,13041665],"entire":[4063233,4259841,4325377,11534337],"example":[1048577,1376264,2424833,2752513,3080193,5832705,7798785,8650753,9568257,9830401,10092545,10551297,10747914,10813441,13041674],"event":[131076,458754,720898,786434,851969,917507,1179650,1769475,1900547,1966082,2359297,2424833,2555906,3276803,4063236,4325380,4980738,5111812,5373954,5701634,6094849,6881281,7274497,7471106,8257538,8323074,9240580,9568257,10223619,10616835,10747909,11075587,11141122,11206666,11337729,11599874,11927556,11993089,12124164,12320769,13041679],"enum":[9175041,10944513],"effect":[6946819,10027011,10747905,11993089,13041668],"explode":[2555905,11206657,13041665],"ellipses":[9175041],"exists":[3211265,10747905,11862017,13041665],"erase":[589825,3407873,4063234,4325377,5439489,8126465,9306113,10027009,10747905,13041666],"eventhandler":[2031617,4063233,9240578,9568259]} \ No newline at end of file +{"exposes":[2228225,3145729,3407873,3997697,4194305,4325377,4653057,4849665,5242881,5439489,5963777,8192001,8323073,8650753,8781825,9109505,10747905,11206657,11862017,12582913,12845057,13303809,14942209,15400961,15728641,15925249,16056321],"existing":[1703942,4521985,4915201,5242884,7274497,8060929,9043969,9109508,9437186,9568257,9764865,11206662,13107201,14155777,15532033,15728646],"exact":[5242882,9109506,11599873,15335425],"easiest":[327681,2031617,5701633,9699330,11206658,11862017,15728643],"entered":[15204353],"entirely":[14942209,15269889,15728641],"explorer":[6881281],"enumerations":[6881281],"exited":[2621441,14942209,15728641],"examples":[2752513,4325377,4653057,4980737,5439490,5636097,9371649,10813441,12648449,12910593,16384001,16449537],"ellipse":[9502721],"erased":[11862017,14811137,15728641],"events":[1835010,3145730,5439489,6881284,9502721,14548993,14942210,15728641,16056321],"environment":[5636100],"enumeration":[6881281,9437185,9502721,14548993],"expect":[6750209,14942209,15728641],"equals":[2228225,3407873,3997697,4194305,4325377,4653057,4849665,5242881,5439489,5963777,11206657,12845057,13303809,15728641,15925249,16056321],"exiting":[2621441,10813441,14942209,15728641],"emmediately":[7864321,11862017,15728641],"easy":[10813441],"ends":[5439489,8519681,10747905],"easier":[983041,2228225,5636097,11862017,12845057,15728641],"error":[15007746],"editorwindow":[5636097],"end":[524289,1966081,2228226,2359297,4653057,5439489,12845058,14221313,14942209,15728641],"edit":[2228225,5636097,12845057],"eventargs":[1835010,6881283,10813441,12910593,16056323],"extra":[2818049,8650753,15728641],"entire":[3604481,4653057,5439489,16318465],"example":[1245185,1703944,2228225,3276801,4521985,4653057,4915201,5242881,5439489,5636097,7274497,8060929,9109505,9371649,9568257,11206666,11534337,11599873,12451841,12648449,12845057,12910593,13828097,14876673,15400961,15466497,15532033,15728650,15925249],"event":[196612,524290,1048578,1114114,1179651,1310721,1572867,1835010,2293763,2621442,2883585,3276801,3670018,4063235,4653060,4718594,5439492,6488065,6619138,6750210,6881281,7471106,8192004,9306113,10813444,11141123,11206661,11272194,11730946,12189698,12779523,12910593,13238274,13434881,14352388,14745601,14942218,15269891,15728655,15859713,16056324],"enum":[9437185,9502721,14548993],"extension":[2424833,12845057],"entry":[2228226,2949121,6815745,12845058],"effect":[7864323,11206657,11862019,14745601,15728644],"editor":[5242882,5636097,6881282],"explode":[3670017,14942209,15728641],"ellipses":[9502721],"exists":[5767169,11206657,14221313,15728641],"erase":[786433,4653057,5111809,5439490,6946817,10289153,10747905,11206657,11862017,15728642],"eventhandler":[2555905,5439489,10813442,12910595]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_102.json b/SpriteLibrary/Doc/Help/fti/FTI_102.json index 87623a7..09e58b2 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_102.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_102.json @@ -1 +1 @@ -{"false":[786433,1769473,3211265,5767169,6815745,7208962,7340033,8781825,9240580,9437185,9633793,10027012,10747906,11010049,11468804,13041670],"frames":[1376268,2752515,3080195,5832708,5898241,7077892,7798787,8650755,10092547,10747916,13041677],"func":[8257538,8323074],"focus":[2949124,4063238,4325382,5767170,8519682,8781826],"following":[2490369,3342337,3473409,3604481,4063233,4325377,4718593,4915201,5111809,7143425,7405569,9306113,10027009,10289153,10747905,11206657,11927553,13041665],"finds":[262145,10747905,13041665],"forms":[2359297,4063233,5767169,6881282,9240577,9568257,10551297],"forever":[1966081,8126465,10747905,11206657,13041666],"frameindex":[3997698,5701633,10027009,11206657,13041666],"form":[2949124,4063240,4325382,5767170,8519682,8781826,9240577,9568259,10223617,10551298,10616833,11206658,13041666],"fails":[5111809,7274497,11927553],"flag":[2424833,10747905,13041665],"facing":[1441793,4718593,5570561,10027009,13041666],"fast":[4063233,4325377,9043969],"fires":[458753,917506,11075585,11206661,12124161,13041669],"frame":[393221,1114114,1245185,2162692,2424835,2752513,3080193,3997698,5701633,5832708,5898242,5963780,6225924,6422529,6619138,7077891,7798787,7864324,8650754,9240577,10027012,10747915,10944514,11206657,11468802,11993091,12058625,12451843,12976131,13041682],"frame_index":[2162690],"function":[262146,458753,589825,2490369,2686977,2883585,3342337,3604481,3932161,4063244,4325386,4915201,6553601,7929857,8257539,8323075,8388609,9240579,9502721,9568258,9830401,10027009,10420227,10747913,10878977,11206657,11730945,11927553,12582913,13041675],"faces":[4718593,5570561,13041665],"fully":[3473409,10289153],"free":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"flip":[4718594,5570561,9699329,13041666],"finishes":[10747905,11993089,13041665],"figure":[3997697,4063233,4325377,10027009,10878977,13041665],"follow":[1,786433],"firetime":[3604481],"faster":[1310721,1703937,1769473,4063233,4718593,7405569,8978433,10747905,12255233,13041666],"fields":[4063233,4718594,5111810,7143426,7405570,10289153,11927553,13041665],"finished":[65537,2424833,4063233,4325377,8454145,10027010,11010049,11468801,11993089,13041666],"finally":[1835009,4063233,4325377,12910593],"field":[851970,1703938,1835009,2097154,4063233,4325377,4456450,5570562,6094850,6750210,7274498,7733250,7995394,9699330,10354689,10747905,11337730,12255234,12582914,12910593,13041665],"first":[786433,1245185,1769473,5832705,6619137,9240577,10747906,12582914,13041666],"fit":[1441793,10027009,13041665],"flipping":[4718593,9699329,13041665],"final":[786433,917505,1769473,10747905,11206658,12124161,13041667],"finalize":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"float":[6946817],"foot":[5701633,11206657,13041665],"finish":[9240577],"functions":[2883585,3604481,4063235,4325379,6553602,6881281,9240577,10027009,12713985,13041665]} \ No newline at end of file +{"false":[1114113,1572865,5767169,7208961,8388609,8454145,8847362,9633793,10813444,11206658,11862020,12058625,13041665,13697028,15597569,15728646],"frames":[1703948,4521987,4915203,5242882,7012356,7274500,8060931,8257537,9109506,9568259,10420225,11206668,15335425,15532035,15728653],"func":[11272194,13238274],"focus":[4653062,5439494,6356996,7208962,10551298,15597570],"filepath":[1376258,13631490],"following":[2228225,3145729,3407873,3997697,4194305,4325377,4653057,4849665,5242882,5439489,5963777,8192001,8323073,8650753,8781825,9109506,10420225,10747905,11206657,11862017,12582913,12845057,13303809,14942209,15400961,15728641,15925249,16056321],"finds":[589825,11206657,15728641],"forms":[2883585,5439489,6881282,7208961,9371649,10813441,12648449,12910593],"forever":[2621441,10289153,11206657,14942209,15728642],"frameindex":[4259842,6750209,11862017,14942209,15728642],"form":[4653062,5439496,5636098,6356996,7208962,9371650,10551298,10813441,11141121,12648450,12779521,12910595,14942210,15597570,15728642],"fails":[8192001,9306113,11993089,16056321],"flag":[3276801,11206657,15728641],"facing":[1900545,5570561,8650753,11862017,15728642],"fast":[4653057,5439489,10682369],"fires":[524289,1179650,14352385,14942213,15269889,15728645],"firstitemindex":[5636098],"frame":[720901,1769473,3014658,3276803,3538948,4259842,4521985,4915201,6750209,7012355,7143428,7274500,7405570,7798788,7995393,8060930,8257538,9568259,10813441,11010052,11206667,11862020,13697026,14548994,14680065,14745603,14942209,15073283,15728658,15794179],"frame_index":[3538946],"function":[524289,589826,786433,1966081,2228232,2359297,2424833,2949122,3145729,3735553,3801089,4653066,4980737,5242881,5439500,5832705,6815746,6881281,7340033,10223617,10813443,10878977,11206664,11272195,11337729,11468801,11796483,11862017,11993089,12451841,12517377,12845065,12910594,13238275,13959169,14942209,15728650,16449537],"file":[851971,1376260,2228233,2424835,5242881,5636102,6881281,11993090,12845067,13631494],"faces":[5570561,8650753,15728641],"flip":[5570561,8650754,12386305,15728642],"finishes":[11206657,14745601,15728641],"figure":[4259841,4653057,5439489,11862017,12517377,15728641],"follow":[1,1114113],"filename":[2424837,12845059],"fieldstouse":[65539,5242882,9109506],"firetime":[4325377],"faster":[1572865,1638401,1966081,2228225,3211265,4653057,5439490,8323073,8650753,11206657,12255233,12845057,14614529,15466497,15728642],"fields":[5242881,5439489,8192002,8323074,8650754,8781826,9109506,12582914,12845057,13303809,15400962,15728641,15925249,16056321],"finished":[393217,3276801,4653057,5439489,10485761,11862018,13041665,13697025,14745601,15728642],"fair":[1966081,2228225,12845057],"finally":[2752513,4653057,5439489,16384001],"field":[65538,917506,1310722,2686978,2752513,2818050,3211266,4653057,5439489,5570562,6225922,6488066,6684674,8716290,8912898,9043970,9240578,9306114,9764866,9895938,9961474,10420226,11206657,11599874,12386306,13107202,13434882,13565954,14155778,14614530,14876674,15335426,15663105,15728641,16384001,16449538],"first":[1114113,1572865,1769473,1966081,2228225,5636097,7274497,7405569,10813441,11206658,12845057,15728642,16449538],"fit":[1900545,11862017,15728641],"flipping":[8650753,12386305,15728641],"final":[1114113,1179649,1572865,11206657,14352385,14942210,15728643],"finalize":[2228225,3407873,3997697,4325377,4653057,4849665,5242881,5439489,5963777,11206657,12845057,15728641,15925249,16056321],"float":[7864321],"foot":[6750209,14942209,15728641],"finish":[10813441],"functions":[3801089,4325377,4653059,5439491,6881281,7340034,9961473,10813441,11862017,12582913,12845057,13762561,15728641],"features":[6881281,15925249]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_103.json b/SpriteLibrary/Doc/Help/fti/FTI_103.json index 79c44fe..413b827 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_103.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_103.json @@ -1 +1 @@ -{"generator":[4063233,7405569,7995393],"getsize":[6291458,10027009,13041665],"goes":[1441793,3866625,4063234,4325378,6356993,10027009,13041665],"going":[4718593,5111809,7274497,9699329,11927553,13041665],"generating":[1048577,1376258,10747906,10813441,13041666],"great":[4718594,5570561,9699329,13041666],"goofs":[1835010,4063234,4325378,12910594],"got":[6029313,10747905,13041665],"gone":[3407873,4063233,4325377,8126465,10747905,13041665],"gethashcode":[3342337,3473409,3604481,4063233,4325377,4915201,10289153,10747905,11927553,13041665],"general":[10420225,10747905,13041665],"generic":[786433],"graphical":[6881282,13041665],"getframeanimationspeed":[10747905,12451842,13041665],"getspritevector":[10747905,12517378,13041665],"guy":[1376268,2752514,3080194,5832706,7798786,8650754,10092546,10747916,13041676],"getimage":[2162691,7864323,10747906,12976131,13041666],"glow":[720897,11206658,11599873,13041666],"getspriteradans":[5308418,10747905,13041665],"gobbling":[4718594,5570561,9699329,13041666],"glowing":[4980737,7471105,11206658,13041666],"gotten":[327681,3735553,7667714,10747906,13041666],"getspritepictureboxcenter":[10485762,10747905,13041665],"grabbing":[7077889],"given":[262145,655361,2162689,2883585,2949121,3211265,4063235,4325379,5767169,6815745,7864321,9109505,9437185,10420225,10747908,13041668],"garbage":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"game":[1703937,4063234,6881281,7405569],"getspritebaseimagecenter":[10747905,12845058,13041665],"grab":[2752513,3080193,5832707,5898241,7077891,7798785,8650753,10092545,13041665],"grabs":[1376262,2752513,3080193,5832705,7798785,8650753,10092545,10747910,13041670],"generate":[1114113,5898244,5963777,6422529,12058625,13041668],"getanimationspeed":[8978434,10747905,13041665],"gettype":[3342337,3473409,3604481,4063233,4325377,4915201,10289153,10747905,11927553,13041665],"glitch":[2949122,4063235,4325379,5767169,8519681,8781825],"good":[589825,2949122,3080193,4063235,4325379,5767169,8519681,8781825,10027009,13041665],"gets":[917506,1769473,3342337,3473409,3604481,4063233,4325377,4718594,4915201,5570561,9699329,10289153,10420225,10747907,11206658,11927553,12320769,13041671],"getvisiblesize":[6291457,8585218,10027010,13041666],"growing":[1703937,4063233,7405569],"getspritedegrees":[9830402,10747905,13041665]} \ No newline at end of file +{"generator":[5439489,8323073,9895937],"getsize":[7733250,11862017,15728641],"goes":[1900545,4128769,4653058,5439490,7667713,11862017,15728641],"going":[8192001,8650753,9306113,12386305,15728641,16056321],"generating":[1245185,1703938,11206658,13828097,15728642],"great":[5570561,8650754,12386305,15728642],"goofs":[2752514,4653058,5439490,16384002],"got":[5636097,5898241,11206657,15728641],"gone":[4653057,5111809,5439489,10289153,11206657,15728641],"gethashcode":[2228225,3407873,3997697,4194305,4325377,4653057,4849665,5242881,5439489,5963777,11206657,12845057,13303809,15728641,15925249,16056321],"general":[11206657,11796481,15007745,15728641],"generic":[131073,1114113,2228226,2949121,4849665,5242881,5963777,6815745,9830401,12845058,15925249],"graphical":[6881282,15728641],"getframeanimationspeed":[11206657,15073282,15728641],"getspritevector":[11206657,15138818,15728641],"guy":[1703948,4521986,4653058,4915202,5439490,7274498,8060930,9568258,11206668,15466498,15532034,15728652],"getimage":[3538947,11010051,11206658,15728642,15794179],"gridsize":[11534338],"glow":[1048577,12189697,14942210,15728642],"getspriteradans":[7602178,11206657,15728641],"generates":[2228226,2949121,6815745,12845058],"gobbling":[5570561,8650754,12386305,15728642],"glowing":[6619137,7471105,14942210,15728642],"gotten":[327681,5701633,9699330,11206658,15728642],"getfolderpath":[5636098],"getspritepictureboxcenter":[11206657,13893634,15728641],"grabbing":[7012353],"getimagefromname":[1966083,2228225,12845057],"given":[589825,655361,2228225,3538945,3801089,4653059,5439491,5767169,6356993,7208961,8454145,11010049,11206660,11403265,11796481,12058625,12845057,13631489,15728644],"game":[851970,2228226,3211265,5439490,6881282,8323073,12845059],"getspritebaseimagecenter":[11206657,13500418,15728641],"getimagenames":[2228225,10092546,12845057],"grab":[4521985,4915201,7012355,7274499,8060929,8257537,9568257,15532033,15728641],"grabs":[1703942,4521985,4915201,7274497,8060929,9568257,11206662,15532033,15728646],"generate":[2228225,3014657,5832705,7798785,7995393,8257540,12845057,14680065,15728644],"games":[4653057,5439489,15466497],"getanimationspeed":[11206657,12255234,15728641],"gettype":[2228225,3407873,3997697,4194305,4325377,4653057,4849665,5242881,5439489,5963777,11206657,12845057,13303809,15728641,15925249,16056321],"glitch":[4653059,5439491,6356994,7208961,10551297,15597569],"grid":[2228225,11534338,12845057,14876673,15400961,15925249],"good":[786433,4521985,4653059,5439491,6356994,7208961,10551297,11862017,15597569,15728641],"gets":[1179650,1572865,5570561,8650754,11206658,11796481,12386305,14942210,15728646,15859713],"getvisiblesize":[7733249,9175042,11862018,15728642],"growing":[3211265,5439489,8323073],"getspritedegrees":[11206657,12451842,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_104.json b/SpriteLibrary/Doc/Help/fti/FTI_104.json index 8d4c49c..f3312c8 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_104.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_104.json @@ -1 +1 @@ -{"health":[2097153,4718593,13041665],"height":[1114117,2621445,3538945,4063234,4325378,4653058,5832707,5898245,5963780,6881281,7077891,7798787,8650755,9175041,10027009,10289153,10747905,12058626,13041671],"happen":[4063233,4325377,5701633,9043969,11206657,13041665],"http":[6881282],"hasbeendrawn":[10027009,10682370,13041665],"head":[10420225,10747905,13041665],"house":[589825,10027009,13041665],"hierarchy":[3604481,4063233,11927553,13041665],"hard":[4063233,6881281],"haul":[1048577,1376258,10747906,10813441,13041666],"horizontally":[1048577],"heigh":[2621441],"hover":[10223617,10616833,11206658,13041666],"height_ratio":[6750210,7143425,10289153],"heart":[4063233,6881281],"hight":[2621441],"help":[4063233,6881281,9175041],"harder":[6029313,10747905,13041665],"hidden":[3276801,5636097,10747905,11206657,13041666],"hit":[1310722,1769473,2555905,3670019,4456449,4718593,7602177,10747906,11141121,11206658,13041669],"happens":[131073,1900545,1966081,2555905,3276801,10223617,10616833,11141121,11206664,13041672],"hold":[2097153,4718593,13041665],"hash":[3342337,3473409,3604481,4063233,4325377,4915201,10289153,10747905,11927553,13041665],"howmanyanimations":[2424834],"hits":[2555905,11141121,11206658,13041666],"hidesprite":[5636097,10354690,10747906,13041666],"higher":[4718593,5046274,8978433,10027010,12255233,13041667],"having":[4063233,6684673,9306113]} \ No newline at end of file +{"health":[2818049,8650753,15728641],"height":[2686979,3014661,3342341,4653058,5242883,5439490,6160385,6422530,6881281,7012355,7274499,7798788,8060931,8257541,9109507,9568259,9502721,11206657,11862017,13303809,13565953,14680066,15728647],"happen":[4653057,5439489,6750209,10682369,14942209,15728641],"http":[6881282],"hasbeendrawn":[11862017,14811138,15728641],"head":[11206657,11796481,15728641],"house":[786433,11862017,15728641],"hierarchy":[4325377,5242881,5439489,12845057,15728641,15925249,16056321],"hard":[5439489,6881281],"haul":[1245185,1703938,11206658,13828097,15728642],"horizontally":[1245185,5242881,9109505,9437185,9764865],"heigh":[3342337],"hover":[11141121,12779521,14942210,15728642],"height_ratio":[8781825,9240578,13303809],"heart":[5439489,6881281],"hight":[3342337],"help":[2228225,5439489,5636097,6881281,9502721,12845057],"hides":[6881281,12845057],"harder":[5898241,11206657,15728641],"hidden":[4063233,5505025,11206657,14942209,15728642],"hit":[1572865,1638402,3670017,4390915,6684673,7536641,8650753,11206658,11730945,14942210,15728645],"happens":[196609,2293761,2621441,3670017,4063233,5242881,9109505,11141121,11730945,12779521,14942216,15335425,15728648],"hold":[2818049,8650753,15728641],"howmanyanimations":[3276802],"hits":[3670017,11730945,14942210,15728642],"hidesprite":[5505025,11206658,15663106,15728642],"higher":[5177346,8650753,11862018,12255233,14614529,15728643],"having":[5439489,8519681,10747905]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_105.json b/SpriteLibrary/Doc/Help/fti/FTI_105.json index 33b8c90..0e51c4a 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_105.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_105.json @@ -1 +1 @@ -{"inheritance":[3604481,4063233,11927553,13041665],"imprecise":[10420225,10747905,13041665],"incredibly":[9240577],"indicates":[3473409,10289153],"index":[1245186,2162691,2424833,3997697,6225922,7864321,10027009,10747906,11993089,12451842,13041667],"instant":[3276801,11206657,13041665],"imagine":[1835009,4063233,4325377,12910593],"includes":[4063233,5242881,9306113],"information":[1179649,2097154,4718594,6881282,11927553,13041666],"images":[1114113,1703937,1835009,4063235,4325377,5439489,5898242,7405569,9306113,10027009,11403265,12058625,12910593,13041667],"involved":[5111810,6094850,11927554],"item":[720898,2621441,4063234,4325378,4980738,5505026,7340033,7471106,11206664,11599874,13041672],"immediately":[1900545,11206657,13041665],"inside":[6881281,9109505,9175041],"image_frame":[393217,10747905,13041665],"imagepointdestination":[10420226],"idea":[9633793],"imagelayout":[4063233,9240577,9568257,10551297],"invalidate":[1835010,4063238,4259844,4325382,8912900,11534341,12910594],"instance":[3342337,3473412,3604482,4063233,4325377,4521985,4915201,10289156,10747905,11927554,12779521,13041665],"ispaused":[7340034,10747905,13041665],"initializecomponent":[9240577,9568257,10551297],"image":[262145,327682,393221,786433,1114118,1376268,1441793,1703938,1835022,2031617,2162692,2228226,2293761,2621441,2752517,2818050,2883585,3014657,3080197,3211266,3276801,3538945,3735553,4128770,4063269,4259841,4325404,4653058,4718594,4784129,5439493,5570561,5832711,5898251,5963780,6291457,6422533,6553605,6684677,6750210,6881283,7012356,7077894,7143428,7405570,7733250,7798789,7864323,8650757,8912898,9109506,9306118,9437185,9699329,10027013,10092549,10158081,10289157,10420225,10551297,10747925,10878979,10944513,11206657,11534338,12058630,12320769,12845058,12910608,12976133,13041705],"initializes":[3604481,4521985,11927553,12779521],"int":[393218,1048577,1114114,1245186,1441793,1507329,2097154,2162690,2424835,2621442,3080193,3538945,3604482,3932162,3997697,4718594,5046273,5242881,5505026,5832708,5963779,6225923,6488065,6619138,7077892,7798787,8650754,8978434,9043969,9502721,10158081,10813442,11993090,12189697,12255233,12451843,13041666],"int32":[393218,1048578,1114116,1245186,1376269,1441793,1507329,2162692,2424835,2621442,3080194,3538945,3997697,5046273,5242881,5505026,5832712,5898249,5963782,6225923,6488065,6619138,7077896,7798790,7864322,8650756,8978434,9043969,9502721,10158081,10747919,10813444,11993090,12189697,12255233,12451843,13041688],"interval":[4063233,4325377,9043970],"intensive":[1048577,1376258,10747906,10813441,13041666],"integer":[1048577,2621441,5505026,6619137,10420225,10747905,10813441,13041665],"instantiate":[2490369,4063233,9240577],"iskeypressed":[2949123,4063234,4325378,5767171,8781827,9240580],"internal":[262145,10747905,13041665],"info":[6881281],"initial":[6881281,10027009,11403265,13041665],"important":[589825,10027009,13041665],"intersect":[4063233,4325377,9109505],"inherited":[3342342,3473412,3604486,4063238,4325382,4915206,10289156,10747910,11927558,13041670],"included":[5111809,6094849,11927553],"imagerectangle":[2818050,8912898],"initializecomponents":[4063233],"imagebox":[3211265,7208961],"instead":[131073,1179649,1703937,3276801,4063233,6029313,6881281,7208961,7405569,7929857,10420225,10747909,11206658,11665409,13041671],"initially":[9240577,10027009,11403265,13041665]} \ No newline at end of file +{"inheritance":[4325377,5242881,5439489,12845057,15728641,15925249,16056321],"imagename":[5242881,9109505,11599874],"imprecise":[11206657,11796481,15728641],"include":[5242881,9109505,13565953],"incredibly":[10813441],"index":[1769474,3276801,3538947,4259841,7143426,11010049,11206658,11862017,14745601,15073282,15728643],"instant":[4063233,14942209,15728641],"imagine":[2752513,4653057,5439489,16384001],"includes":[5439489,8978433,10747905],"information":[1835009,2818050,6881283,8650754,12845057,15728642,16056321],"images":[2752513,3014657,3211265,4653057,5439491,5636097,6946817,8257538,8323073,10747905,11862017,12976129,14680065,15728643,16384001],"instructions":[5242881,6881281],"involved":[6488066,8192002,16056322],"item":[1048578,2228226,2359298,2949121,3342337,4653058,5439490,6619138,6815745,7077890,7471106,8388609,11993090,12189698,12845058,14942216,15728648],"immediately":[2293761,14942209,15728641],"inside":[6881281,9502721,11403265],"instantiated":[5636097],"image_frame":[720897,11206657,15728641],"imagepointdestination":[11796482],"idea":[9633793],"imagelayout":[5439489,5636098,9371649,10813441,12648449,12910593],"invalidate":[2752514,3604484,4653062,5439494,12713988,16318469,16384002],"instance":[1376259,2097153,2228226,3932161,4325377,5242881,6291457,12845058,13631491,14417921,15925249,16056321],"ispaused":[8388610,11206657,15728641],"initializecomponent":[5636098,9371649,10813441,12648449,12910593],"image":[327682,589825,720901,1114113,1703948,1900545,1966090,2031617,2162689,2228229,2555906,2686977,2752526,3014662,3211266,3342337,3473410,3538948,3604481,3801089,4063233,4456449,4521989,4653084,4915205,5242888,5308418,5439526,5570561,5701633,5767170,6029314,6160385,6225921,6422530,6881283,6946821,7012358,7274503,7340037,7733249,7798788,7929860,7995397,8060933,8257547,8323074,8519685,8650754,8716290,8781828,9109512,9240578,9371649,9437185,9568261,10092546,10420225,10747910,11010051,11206677,11403266,11599875,11796481,11862021,11927553,12058625,12386305,12517379,12648449,12713986,12845061,13303813,13500418,13565954,14483457,14548993,14680070,14876673,14942209,15400961,15532037,15728681,15794181,15859713,15925249,16318466,16384016],"identical":[5242881,5963777,9109505,10354689,11599873,15925249],"initializes":[2097153,3932161,4325377,5242881,6291457,14417921,15925249,16056321],"int":[720898,1245185,1441793,1769474,1900545,2686977,2818050,3014658,3276803,3342338,3538946,4259841,4325378,4521985,4980738,5177345,5636097,6160385,6225921,7012356,7077890,7143427,7274500,7405570,7798787,8060930,8585217,8650754,8978433,9043969,9568259,10420225,10682369,11468801,11927553,11993089,12255234,13107201,13828098,14614529,14745602,14876673,15073283,15335425,15728642,16252929],"int32":[720898,1245186,1441793,1703949,1769474,1900545,2686977,3014660,3276803,3342338,3538948,4259841,4521986,5177345,5636097,6160385,6225921,7012360,7077890,7143427,7274504,7405570,7798790,8060932,8257545,8585217,8978433,9043969,9568262,10420225,10682369,11010050,11206671,11468801,11927553,12255234,13107201,13828100,14614529,14745602,14876673,15073283,15335425,15728664,16252929],"interval":[4653057,5439489,10682370],"instantiation":[2424833,4653057,5439489,5636097,11337729,12845057],"intensive":[1245185,1703938,11206658,13828097,15728642],"integer":[1245185,3342337,7077890,7405569,11206657,11796481,13828097,15728641],"instantiate":[3145729,4653057,5439490,10813441,11337729],"iskeypressed":[4653058,5439490,6356995,7208963,10813444,15597571],"internal":[589825,11206657,15728641],"icon":[2228225,12845057,14483460],"info":[6881281,9830401],"initial":[6881282,11862017,12845057,12976129,15728641],"issues":[6881281,12845057],"important":[65537,786433,5242881,9109505,11862017,15728641],"intersect":[4653057,5439489,11403265],"items":[5242881,6881282,8912897,9437185,15400961,15925250],"inherited":[2228230,3407878,3997702,4194308,4325382,4653062,4849670,5242886,5439494,5963782,11206662,12845062,13303812,15728646,15925254,16056326],"inefficient":[2228225,2359297,12845057],"included":[851969,2228225,6488065,8192001,12845057,16056321],"imagerectangle":[5308418,12713986],"initializecomponents":[5439489],"imagebox":[5767169,8847361],"instead":[196609,1835009,3211265,4063233,5439489,5636097,5898241,6881281,8323073,8847361,10878977,11206661,11796481,14286849,14942210,15728647],"initially":[10813441,11862017,12976129,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_106.json b/SpriteLibrary/Doc/Help/fti/FTI_106.json index 51e5746..1799621 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_106.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_106.json @@ -1 +1 @@ -{"just":[1835009,4063233,4325377,5373953,6946817,7208961,9830401,9895937,10027009,10747908,10944513,11206657,11993089,12582913,12910593,13041670],"jerky":[9240577],"journey":[1769473,10747905,12320769,13041665]} \ No newline at end of file +{"just":[2228225,2752513,3080193,4653058,4718593,5439490,5636097,5832705,6881281,7864321,8847361,11206660,11862017,12320769,12451841,12845058,14548993,14745601,14942209,15728646,16384001,16449537],"jerky":[10813441],"journey":[1572865,11206657,15728641,15859713]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_107.json b/SpriteLibrary/Doc/Help/fti/FTI_107.json index 32c7d6f..c07c571 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_107.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_107.json @@ -1 +1 @@ -{"keys":[2949122,4063235,4325379,5767171,8519684,8781826,9240581],"kill":[8126465,10747905,13041665],"know":[4063233,4325377,5898241,9633793,10747905,11665409,11796481,13041666],"keypress":[2359297,2686977,4063235,4325379,6881281,8257537,8323073],"key":[2686978,2949127,4063245,4325388,5767175,8519683,8781828],"keyeventargs":[2359298,4063234,4325378,8257537,8323073],"keyup":[4063233,4325377,8257537],"keydown":[4063233,4325377,8323073],"keyspressed":[4063233,4325377,8519682],"knows":[4063233,5242881,9306113]} \ No newline at end of file +{"keys":[4653059,5439491,6356994,7208963,10551300,10813445,15597570],"kill":[4653057,5439489,10289153,11206657,11665409,15728641],"know":[4653057,5242881,5439489,6881281,8257537,9633793,11206657,14090241,14286849,15728642],"keypress":[2883585,3735553,4653059,5439491,6881281,11272193,13238273],"key":[3735554,4653068,5439501,6356999,7208967,10551299,15597572],"keyeventargs":[2883586,4653058,5439490,11272193,13238273],"keyup":[4653057,5439489,13238273],"keydown":[4653057,5439489,11272193],"keyspressed":[4653057,5439489,10551298],"knows":[2228225,5373953,5439489,8978433,9437185,9961473,10747905,12582913,12845058]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_108.json b/SpriteLibrary/Doc/Help/fti/FTI_108.json index a42db2c..1c1fa3d 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_108.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_108.json @@ -1 +1 @@ -{"looks":[3604481,4718593,5570561,6619137,10747905,13041666],"losing":[4063233,4325377,11862017],"locationonpicturebox":[10878978],"library":[6881283,9240577],"lot":[1835009,4063233,4325377,10420225,10747905,12910593,13041665],"list":[786437,917505,1376257,1769475,1835009,2031617,2293764,2883587,2949121,4063239,4194308,4325383,5898241,6553603,7536641,7667713,7864321,8454145,8519684,9109508,9764868,10027009,10747906,11206658,11534337,11730948,11796481,12124161,13041669],"left":[655361,1376268,1441794,2752514,3080194,3932161,4718593,5111809,5832706,6881281,7798786,8650754,9175041,9240583,9699329,10027010,10092546,10747917,10944513,11337729,11927553,13041680],"let":[9895938,10747906,13041666],"long":[1048577,1376258,9240577,10747906,10813441,13041666],"locationonimage":[4128770,7012354],"likely":[4063234,4325378,8716289,9371649],"location":[262147,327683,2883586,3211267,3735553,3932161,4128769,4063239,4325383,4390913,4784130,5111809,6029313,6553606,6750211,6881281,7012353,7143430,7208964,7536641,7667714,7733251,8388609,9109506,9175041,10027011,10289158,10747909,10878979,11075585,11206657,11337729,11927553,12648449,12845057,13041673],"like":[1900545,3604482,3997697,4718595,5570562,9699329,10027010,10747905,11206657,11468801,11665409,13041671],"line":[786433,1769473,10747905,13041665],"lastdirection":[9240581],"lastmovement":[9240578],"looking":[7602177,8978433,9240577,12451841],"link":[1],"loses":[2949122,4063235,4325379,5767169,8519681,8781825],"lower":[4718593,5046274,8978433,10027010,12255233,13041667],"loops":[4063233,4325377,9961473],"locations":[2228225,4063235,4325379,10878978],"look":[4063233,4325377,4718594,5570561,9502721,9699329,9961473,10027009,11468801,13041667],"little":[1441793,10027009,10420225,10747905,13041666],"looked":[6553601],"load":[10027009,11403265,13041665],"lost":[2949122,4063235,4325379,5767169,8519681,8781825]} \ No newline at end of file +{"loads":[2555905,5439489,6881281,9371649,12845057],"looks":[4325377,5570561,7405569,8650753,11206657,15728642],"losing":[4653057,5439489,14221313],"locationonpicturebox":[12517378],"library":[6881283,10813441],"lot":[1966081,2228226,2752513,4653057,5439489,5636097,11206657,11796481,12845058,15728641,16384001],"list":[1114117,1179649,1572867,1703937,2162692,2228226,2555905,2752513,3080196,3801091,4653064,5373956,5439496,6356993,7340035,8257537,8912899,9699329,9961477,10092548,10485761,10551300,10616833,10944516,11010049,11206658,11403268,11862017,11993089,12582915,12845061,13959172,14090241,14352385,14942210,15400961,15728645,15925249,15990788,16318465],"longer":[15204353],"left":[655361,1703948,1900546,4521986,4915202,4980737,5242881,6881281,7274498,8060930,8192001,8650753,9109505,9568258,9502721,10813447,11206669,11862018,12386305,13434881,13565953,14548993,15532034,15728656,16056321],"let":[2228225,5242881,5636098,6881282,8912897,11206658,12320770,12845057,15400961,15728642,15925250],"long":[1245185,1703938,10813441,11206658,13828097,15728642],"locationonimage":[6029314,7929858],"loading":[851969,2228225,4653057,5439489,9961473,12582913,12845058,15466497],"likely":[4653058,5439490,12124161,14024705],"location":[327683,589827,2031618,3801090,4587521,4653063,4980737,5439495,5701633,5767171,5898241,6029313,6881281,7340038,7929857,8192001,8716291,8781830,8847364,9240579,9502721,9699330,10223617,10616833,11206661,11403266,11862019,12517379,13172737,13303814,13434881,13500417,14942209,15269889,15728649,16056321],"locate":[15204353],"like":[2293761,2424834,4259841,4325378,5570562,5636097,8650755,11206657,11862018,11993089,12386305,13697025,14286849,14942209,15728647],"line":[1114113,1572865,11206657,15728641],"lastdirection":[10813445],"listed":[5242881,9109505,11599873],"lastmovement":[10813442],"looking":[7536641,10813441,12255233,15073281,15204353],"link":[1,4653057,5439489,15466500],"loses":[4653059,5439491,6356994,7208961,10551297,15597569],"lower":[5177346,8650753,11862018,12255233,14614529,15728643],"linked":[4653061,4980738,5439493,10616834,11665410,15466497],"loops":[4653057,5439489,13369345],"locations":[3473409,4653059,5439491,12517378],"look":[2228225,4653057,5439489,5570561,5832705,8650754,11468801,11862017,12386305,12845057,13369345,13697025,15728643],"little":[1900545,1966081,2228225,11206657,11796481,11862017,12845057,15728642],"looked":[4653057,4980737,5439489,7340033,10616833],"load":[1966081,2228226,4653057,5242881,5439489,5832705,6881288,8912897,11862017,11993091,12845062,12976129,15007745,15400961,15466497,15728641,15925252],"lost":[4653059,5439491,6356994,7208961,10551297,15597569],"linkcontrollersforspritetemplatesharing":[4653058,4980737,5439490,10616833,15466498],"loadobjectfromxmlfile":[2228226,11993091,12845058]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_109.json b/SpriteLibrary/Doc/Help/fti/FTI_109.json index 917efcc..d4fb0d6 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_109.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_109.json @@ -1 +1 @@ -{"mirrorhorizontal":[1048578],"memory":[1048577,1376258,1835009,2686977,4063234,4325378,4718594,5570561,9699329,10747906,10813441,12910593,13041668],"mirror":[1048578],"movementspeed":[1769474,3932161,4718594,9240579,10027009,10747906,12255235,12320770,12713985,13041669],"making":[3604481,4063233,6881281],"majority":[2490369,4063233,9240577],"mirrorhorizontally":[1048577,1376257,4718593,9699330,10747905,13041666],"mirrorvertically":[1048577,1376257,4718593,5570562,10747905,13041666],"makes":[1703937,4063233,7405569],"main":[4063234,6881282],"multiple":[1114113,3604481,5898242,12058625,13041666],"mouseleave":[4980738,11206657,13041665],"movingtopoint":[524290,10027009,13041665],"moveto":[524289,786435,917505,1310723,1769476,8060929,8454146,10027011,10420228,10747912,11206659,12124162,12320771,13041678],"millisecods":[2490369,4063233,9240577],"mouseenter":[720898,11206657,13041665],"moving":[786433,1310722,1769475,6946817,8060929,9240577,10027009,10420225,10747910,12517377,13041671],"mouseleavetransparent":[7471106,11206657,13041665],"mousedown":[2883585,4063234,4325378,6553601],"master":[4063233,4325377,9764865],"mousehovertransparent":[10223618,11206657,13041665],"maindrawingarea":[4063236,9240579,9568260,10551300],"method":[65537,196609,262145,327681,393217,655361,786433,1048577,1245185,1310721,1376257,1572865,1638401,1769473,1835009,2162689,2228225,2293761,2424833,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211268,3407873,3670018,3735553,3801089,3866625,3932161,4128769,4194305,4063233,4259841,4587521,4653057,5177345,5308417,5505025,5636097,5767169,5832705,6029313,6160385,6225921,6356993,6553601,6619137,6815745,7012353,7208964,7340033,7405569,7536641,7602177,7667713,7798785,7864321,7929857,8060929,8126465,8192001,8257537,8323073,8388609,8519681,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9371649,9437185,9502721,9764865,9830401,9895937,9961473,10092545,10354689,10420225,10485761,10813441,10878977,11010049,11272193,11534337,11665409,11730945,11796481,11862017,11993089,12320769,12386305,12451841,12517377,12582914,12648449,12845057,12910593,12976129],"menu":[720899,4980739,7471107,11206668,11599875,13041676],"mouse":[327682,720898,2883585,3735554,4063233,4325377,4390913,4980738,6029313,7208961,7471106,7667716,10027009,10223617,10616833,10747910,11206666,11599874,13041681],"mouseup":[2883585,4063234,4325378,6553601],"middle":[589826,10027010,13041666],"misses":[2686977,4063233,4325377],"methods":[3342338,3473410,3604481,3670017,4063233,4325378,4915202,10289153,10747907,11927553,13041666],"marking":[9175041],"monster":[5701633,11206657,13041665],"mouseentertransparent":[11206657,11599874,13041665],"make":[1572865,2097153,2424833,4063236,4325378,4653057,4718596,5046273,5570561,5636097,6160386,7405569,7536641,7995393,8847361,9240577,9633793,9699329,10027009,10747909,12255233,12386305,12648449,13041674],"myspritecontroller":[3932161,4063234,9240581,9568257,10551297],"manages":[1114113,4063233,6422529,6881281,12058625],"manually":[2490369,4063233,6881282,9240577,10289153],"mycontroller":[1835010,4063234,4325378,12910594],"multiply":[6750209,7143426,7733249,10289154],"mousehover":[10616834,11206657,13041665],"map":[6946817,10027009,13041665],"matches":[11862017],"milliseconds":[5832705,5898241,5963778,6225921,6619137,7077889,7798785,9240577,12451841,13041665],"math":[9830401,10747906,11665409,13041666],"memberwiseclone":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"mirrorvertical":[1048578],"movement":[1310721,1769473,4718593,6881281,7929858,9830401,9895937,10747909,10944515,12255233,13041670],"moves":[655361,720897,786433,1769473,4980738,6881281,7471106,10027009,10223617,10616833,10747906,11206664,11599873,12713985,13041676],"moved":[6881281],"member":[9175041,10944513],"mydir":[9240581],"members":[2490369,3342337,3473409,3604481,4063233,4325377,4718593,4915201,5111809,7143425,7405569,9175041,9306113,10027009,10289153,10747905,10944513,11206657,11927553,13041665]} \ No newline at end of file +{"mirrorhorizontal":[1245186],"memory":[1245185,1703938,1966082,2228225,2752513,3735553,4653058,5439490,5570561,8650754,11206658,12386305,12845057,13828097,15728644,16384001],"mirror":[1245186,5242881,9043969,9109505,9437185],"movementspeed":[1572866,4980737,8650754,10813443,11206658,11862017,13762561,14614531,15728645,15859714],"myspriteimage":[1966082],"making":[2555905,4325377,5439490,6881281,9371649],"majority":[3145729,5439489,10813441],"mirrorhorizontally":[1245185,1703937,5242881,8650753,9109505,9764866,11206657,12386306,15728642],"mirrored":[5242884,9109508,9437186,9764866,14155778],"mirrorvertically":[1245185,1703937,5242881,5570562,8650753,9109505,11206657,14155778,15728642],"makes":[1966081,2228226,3211265,4653057,5242881,5439490,5636097,6881282,8323073,8912897,12845058,15400961,15466497,15925250],"main":[5439490,6881282],"myspritedatabase":[5636111,9371650],"multiple":[3014657,4325377,4653057,5439489,8257538,14680065,15466497,15728642],"mouseleave":[6619138,14942209,15728641],"movingtopoint":[983042,11862017,15728641],"moveto":[983041,1114115,1179649,1572868,1638403,10158081,10485762,11206664,11796484,11862019,14352386,14942211,15728654,15859715],"millisecods":[3145729,5439489,10813441],"mouseenter":[1048578,14942209,15728641],"moving":[1114113,1572867,1638402,7864321,10158081,10813441,11206662,11796481,11862017,15138817,15728647],"mouseleavetransparent":[7471106,14942209,15728641],"myspritedefinitions":[9371649],"moment":[4653057,5439489,11665409],"mousedown":[3801089,4653058,5439490,7340033],"means":[2228225,4653057,5439489,11534337,12845057,15466497],"mygameform":[5636100],"master":[4653057,5439489,10944513],"mousehovertransparent":[12779522,14942209,15728641],"maindrawingarea":[5439492,5636102,9371652,10813443,12648452,12910596],"method":[131074,327681,393217,458753,589825,655361,720897,851969,1114113,1245185,1376257,1507329,1572865,1638401,1703937,1769473,1966081,2162689,2359297,2490369,2752513,2949121,3080193,3276801,3342337,3473409,3538945,3604481,3735553,3801089,3866625,4128769,4390914,4456449,4521985,4784129,4849665,4915201,4980737,5046273,5111809,5242881,5308417,5373953,5439489,5505025,5636097,5701633,5767172,5832705,5898241,5963777,6029313,6094849,6356993,6422529,6815745,7077889,7143425,7208961,7274497,7340033,7405569,7536641,7602177,7667713,7929857,8060929,8126465,8323073,8388609,8454145,8847364,9568257,9699329,9830402,10027009,10092545,10158081,10223617,10289153,10354689,10551297,10616833,10682369,10878977,10944513,11010049,11075585,11272193,11337729,11403265,11468801,11534337,11665409,11796481,11993089,12058625,12124161,12255233,12320769,12451841,12517377,12713985,13041665,13172737,13238273,13369345,13500417,13631489,13828097,13893633,13959169,14024705,14090241,14221313,14286849,14483457,14745601,15073281,15138817,15466497,15532033,15597569,15663105,15794177,15859713,15925249,15990785,16121857,16187393,16318465,16384001,16449538],"mysprites":[2424834,12845058],"mymanager":[11993090],"menu":[1048579,6619139,7471107,12189699,14942220,15728652],"mouse":[327682,1048578,3801089,4587521,4653057,5439489,5701634,5898241,6619138,7471106,8847361,9699332,11141121,11206662,11862017,12189698,12779521,14942218,15728657],"mouseup":[3801089,4653058,5439490,7340033],"middle":[786434,11862018,15728642],"misses":[3735553,4653057,5439489],"methods":[2228226,3407874,3997698,4194306,4325377,4390913,4653058,4849666,5242881,5439489,5963778,11206659,12845057,13303809,15728642,15925249,16056321],"marking":[9502721],"monster":[6750209,14942209,15728641],"mouseentertransparent":[12189698,14942209,15728641],"modify":[9961473,12582913,12845057],"make":[2228227,2490369,2818049,2949121,3276801,4653058,5177345,5439492,5505025,5570561,6422529,6815745,8126466,8323073,8650756,8912897,9633793,9895937,10616833,10813441,11075585,11206661,11862017,11993089,12386305,12845059,13172737,14614529,15400961,15728650,15925249,16187393],"myspritecontroller":[4980737,5439490,5636100,9371649,10813445,12648449,12910593],"manages":[3014657,5439489,6881281,7995393,14680065],"manager":[1966081,11993089],"manually":[3145729,5242881,5439489,6881283,10813441,13303809],"mycontroller":[2752514,4653058,5439490,16384002],"multiply":[8716289,8781826,9240577,13303810],"mousehover":[11141122,14942209,15728641],"map":[7864321,11862017,15728641],"matches":[14221313],"milliseconds":[5242881,7012353,7143425,7274497,7405569,7798786,8257537,9109505,9568257,10813441,15073281,15335425,15728641],"math":[11206658,12451841,14286849,15728642],"memberwiseclone":[2228225,3407873,3997697,4325377,4653057,4849665,5242881,5439489,5963777,11206657,12845057,15728641,15925249,16056321],"mirrorvertical":[1245186],"myfile":[2424834,5636102,11993090],"movement":[1572865,1638401,6881281,8650753,10878978,11206661,12320769,12451841,14548995,14614529,15728646],"moves":[655361,1048577,1114113,1572865,6619138,6881281,7471106,11141121,11206658,11862017,12189697,12779521,13762561,14942216,15728652],"moved":[6881281],"member":[9437185,9502721,14548993],"misspelled":[15204353],"mydir":[10813445],"members":[2228225,3145729,3407873,3997697,4194305,4325377,4653057,4849665,5242881,5439489,5963777,8192001,8323073,8650753,8781825,9109505,9437185,9502721,10747905,11206657,11862017,12582913,12845057,13303809,14548993,14942209,15400961,15728641,15925249,16056321]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_110.json b/SpriteLibrary/Doc/Help/fti/FTI_110.json index ac94e15..dd75385 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_110.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_110.json @@ -1 +1 @@ -{"notify":[1835009,3014657,4063233,4325377],"nimber":[10027009,12189697,13041665],"newlocationonpicturebox":[6029314],"newpoint":[6815746,9437186],"numbers":[5046274,10027010,13041666],"namesprite":[4063233,4325377,8192002],"need":[1310721,1703937,1769474,1835011,2097153,3604481,3997697,4063239,4325380,4718596,5373953,5570561,6881283,7405569,8388610,9699329,10027010,10289153,10747908,11206657,11796481,12255233,12320769,12713985,12910595,13041675],"namespace":[65538,131074,196610,262146,327682,393218,458754,524290,589826,655362,720898,786434,851970,917506,1048578,1114114,1179650,1245186,1310722,1376257,1441794,1507330,1572866,1638402,1703938,1769473,1835009,1900546,1966082,2031617,2097154,2162690,2228226,2293762,2359298,2424834,2490369,2555906,2621442,2686978,2752514,2818050,2883586,2949121,3014658,3080194,3145730,3211266,3276802,3342337,3407874,3473409,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4128770,4063234,4194306,4259842,4325377,4390914,4456450,4521986,4587522,4653058,4784130,4718593,4849666,4915201,4980738,5046274,5111809,5177346,5242882,5308418,5373954,5439490,5505026,5570562,5636098,5701634,5767170,5832706,5898241,5963778,6029314,6094850,6160386,6225922,6291458,6356994,6422530,6488066,6553602,6619138,6684674,6750210,6815746,6881281,6946818,7012354,7077890,7143425,7208962,7274498,7340034,7405569,7471106,7536641,7602178,7667713,7733250,7798786,7864321,7929858,7995394,8060930,8126466,8192002,8257538,8323074,8388610,8454146,8519682,8585218,8650754,8716290,8781826,8847362,8912898,8978434,9043970,9109506,9175042,9240578,9306113,9371650,9437186,9502722,9568258,9633794,9699330,9764866,9830402,9895938,9961474,10027009,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616834,10682370,10747905,10813442,10878978,10944514,11010050,11075586,11141122,11206657,11272194,11337730,11403266,11468802,11534337,11599874,11665410,11730946,11796482,11862018,11927554,11993090,12058626,12124162,12189698,12255234,12320770,12386306,12451842,12517378,12582914,12648450,12713986,12779522,12845058,12910594,12976130,13041666],"new":[393217,1114113,1245185,1572865,1835011,2097153,2424833,3604482,3735553,3932161,4063240,4325382,4521985,4718593,5898244,5963777,6225921,6422529,6619137,6881281,9043969,9240577,9502721,9568257,10551297,10747907,11730945,11796481,11927553,11993089,12058625,12648449,12779521,12910596,13041672],"net":[6881281],"newtickmilliseconds":[9043970],"newvector":[7929858],"nontransparent":[9175041],"newsize":[4653058],"needed":[1835009,4063233,4325377,6881281,9175041,12910593],"newlocation":[5111810,11337731,11927554],"named":[524289,3801089,3932161,4063238,4325381,5242881,7536641,9306113,9502721,10027011,11403266,11730946,11862017,13041667],"newsprite":[3932167],"nearly":[6946817,10027009,13041665],"notice":[1441793,10027009,13041665],"null":[1835010,3604482,3932161,4063234,4325378,5111809,6094849,11862017,11927553,12648450,12910594],"newlocationonimage":[3735554],"newimage":[393218],"notoriously":[9240577],"newbackground":[1835012,4063236,4325380,12910596],"needs":[589825,4063233,7405569,7995393,9240577,10027010,10682369,13041666],"newspeed":[6225922,6619138],"number":[262145,1048577,1376264,1507329,1638403,1835009,2424835,2752513,3080194,4063237,4325380,4718594,5046275,5505025,5832706,5898241,5963777,7077891,7405569,7798785,7995393,8650753,8978434,9502721,9830401,10027012,10092545,10747918,10813441,10878978,11272195,11993090,12255234,12910593,13041685]} \ No newline at end of file +{"notify":[2752513,4456449,4653057,5439489],"nimber":[11862017,15728641,16252929],"newlocationonpicturebox":[5898242],"newpoint":[8454146,12058626],"numbers":[5177346,11862018,15728642],"namesprite":[4653057,5439489,10027010],"need":[1572866,1638401,2752515,2818049,3211265,4259841,4325377,4653061,4718593,5439496,5570561,6881284,8323073,8650756,10223618,11206660,11862018,12386305,13303809,13762561,14090241,14614529,14942209,15466498,15728651,15859713,15925249,16384003],"namespace":[65538,131074,196610,327682,393218,458754,524290,589826,655362,720898,786434,851970,917506,983042,1048578,1114114,1179650,1245186,1310722,1376258,1441794,1507330,1572865,1638402,1703937,1769474,1835010,1900546,1966082,2031618,2097154,2162690,2228225,2293762,2359298,2424834,2490370,2555905,2621442,2686978,2752513,2818050,2883586,2949122,3014658,3080194,3145729,3211266,3276802,3342338,3407873,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997697,4063234,4128770,4194305,4259842,4325378,4390914,4456450,4521986,4587522,4718594,4653057,4784130,4849665,4915202,4980738,5046274,5111810,5177346,5242882,5308418,5373954,5439490,5505026,5570562,5636098,5701634,5767170,5832706,5898242,5963777,6029314,6094850,6160386,6225922,6291458,6356993,6422530,6488066,6553602,6619138,6684674,6750210,6815746,6881281,6946818,7012354,7077890,7143426,7208962,7274498,7340034,7405570,7471106,7536642,7602178,7667714,7733250,7798786,7864322,7929858,7995394,8060930,8126466,8192001,8257537,8323073,8388610,8454146,8519682,8585218,8650753,8716290,8781825,8847362,8912898,8978434,9043970,9109505,9175042,9240578,9306114,9371650,9437186,9502722,9568258,9633794,9699329,9764866,9830402,9895938,9961474,10027010,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616833,10682370,10747905,10813442,10878978,10944514,11010049,11075586,11141122,11206657,11272194,11337730,11403266,11468802,11534338,11599874,11665410,11730946,11796482,11862017,11927554,11993090,12058626,12124162,12189698,12255234,12320770,12386306,12451842,12517378,12582913,12648450,12713986,12779522,12845058,12910594,12976130,13041666,13107202,13172738,13238274,13303810,13369346,13434882,13500418,13565954,13631490,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221314,14286850,14352386,14417922,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942209,15073282,15138818,15269890,15335426,15400961,15466498,15532034,15597570,15663106,15728642,15794178,15859714,15925250,15990786,16056322,16121858,16187394,16252930,16318465,16384002,16449538],"new":[720897,851969,1376258,1769473,2097153,2228226,2490369,2752515,2818049,3014657,3276801,3932161,4325378,4653062,4980737,5242881,5439496,5636101,5701633,5832706,6291457,6815745,6881281,7143425,7405569,7798785,7995393,8257540,8650753,9371650,10682369,10813441,11206659,11468801,11993089,12648449,12845058,12910593,13172737,13631489,13959169,14090241,14417921,14680065,14745601,15728648,15925249,16056321,16384004],"net":[6881281],"newtickmilliseconds":[10682370],"newvector":[10878978],"nontransparent":[9502721],"newsize":[6422530],"needed":[2752513,4653057,5439489,6881282,9502721,12845057,16384001],"newlocation":[8192002,13434883,16056322],"named":[983041,1966081,2228225,3080194,4653064,4784129,4980737,5439497,5636100,5832706,8978433,10616833,10747905,11468801,11862019,12845057,12976130,13959170,14221313,15466498,15728643],"names":[2228225,5832705,10092546,12845057],"newsprite":[4980743],"nearly":[7864321,11862017,15728641],"notice":[1900545,11862017,15728641],"numframes":[5242881,9109505,10420226],"normally":[14876674,15400962,15925250],"null":[2752514,4325378,4653058,4980737,5439490,5636100,5832705,6488065,8192001,11993089,13172738,14221313,16056321,16384002],"newlocationonimage":[5701634],"newimage":[720898],"notoriously":[10813441],"newbackground":[2752516,4653060,5439492,16384004],"needs":[786433,5439489,8323073,9895937,10813441,11862018,14811137,15728642],"needing":[4653057,5242881,5439489,6881281,15466497],"newspeed":[7143426,7405570],"number":[589825,1245185,1441793,1507331,1703944,2752513,3276803,4521986,4653060,4915201,5177347,5242883,5439493,7012355,7077889,7274498,7798785,8060929,8257537,8323073,8650754,9109507,9568257,9895937,10420225,11206670,11468801,11862020,12255234,12451841,12517378,13828097,14614530,14745602,15335426,15532033,15728661,16121859,16384001]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_111.json b/SpriteLibrary/Doc/Help/fti/FTI_111.json index 283aee8..73a980e 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_111.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_111.json @@ -1 +1 @@ -{"oldsprite":[5898241,9633795,13041665],"outside":[4456449,4718593,13041665],"optional":[393218,1245185,2424833,3211265,4259841,4587521,5177345,7208961,7340033,8912897,9633793,9895937,9961473,11993089],"optimizeforlargespriteimages":[1703938,4063233,7405569],"ought":[5111809,7274497,11927553],"opacity":[6946821,10027012,13041668],"overlap":[9175042],"origspritename":[5898241,9633793,13041665],"overridden":[4063233,7405569,12582913],"overridding":[12582913],"oneimage":[1835010,4063234,4325378,12910594],"opposite":[524289,10027009,13041665],"occasionally":[2949122,4063235,4325379,5767169,8519681,8781825],"operations":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"override":[3604481],"object":[1179650,2359298,2621441,3342347,3473410,3604492,4063248,4325391,4915211,5505025,8257537,8323073,9240577,9568257,10289154,10747915,11927564,13041676],"originally":[1441793,10027009,13041665],"one":[524289,786433,917505,1114114,1835011,2424834,2883585,4063244,4325384,5963778,6553601,6881282,6946817,7012353,7077890,7405569,7995393,8454145,9961473,10027014,10420225,10747907,11206657,11468802,11862017,12582914,12713985,12910595,13041674],"operation":[524289,10027009,13041665],"order":[196610,3866625,4063237,4325381,6160385,6356993,8716289,9371649,12582914],"original":[5898242,9633795,13041666],"originalimage":[4063234,5439490,6684673,9306114],"overload":[327681,786433,1048577,1114113,1310721,1376257,1769473,1835009,2031617,2162689,2752513,2949121,3014657,3080193,3735553,3932161,4259841,5767169,5832705,5898241,5963777,6422529,7077889,7536641,7667713,7798785,7864321,8650753,8781825,8912897,9568257,9633793,10092545,10551297,10813441,11534337,12058625,12320769,12648449,12910593,12976129],"overlaps":[7602178,10747905,13041665]} \ No newline at end of file +{"oldsprite":[8257537,9633795,15728641],"openeditwindow":[2228225,5242881,5636100,6881281,12845057],"opening":[5636097],"outside":[6684673,8650753,15728641],"optional":[720898,1769473,3276801,3604481,5046273,5636097,5767169,6094849,8388609,8847361,9633793,12320769,12713985,13369345,14745601],"optimizeforlargespriteimages":[3211266,5439489,8323073],"ought":[8192001,9306113,16056321],"opacity":[7864325,11862020,15728644],"overlap":[9502722],"origspritename":[8257537,9633793,15728641],"overridden":[5439489,8323073,16449537],"overridding":[16449537],"oneimage":[2752514,4653058,5439490,16384002],"opposite":[983041,11862017,15728641],"occasionally":[4653059,5439491,6356994,7208961,10551297,15597569],"objecttowrite":[13631490],"override":[4325377],"object":[1376261,1835010,2228235,2359297,2883586,3342337,3407878,3997702,4194305,4325383,4653066,4849670,5242887,5439499,5963782,6815745,7077889,10813441,11206662,11272193,11993091,12845068,12910593,13238273,13303809,13631493,15728647,15925255,16056327],"originally":[1900545,11862017,15728641],"one":[983041,1114113,1179649,2228225,2752515,3014658,3276802,3801089,4653066,5242881,5373953,5439502,6881282,7012354,7340033,7798786,7864321,7929857,8323073,9109505,9895937,10420225,10485761,11206659,11337729,11796481,11862022,11993089,12845057,13369345,13697026,13762561,14221313,14942209,15466498,15728650,16384003,16449538],"objecttoclone":[2359298],"operation":[983041,11862017,15728641],"order":[458754,4128769,4653061,5439493,7667713,8126465,12124161,14024705,16449538],"original":[2228225,2359298,8257538,9633795,12845057,14876673,15400961,15728642,15925249],"originalimage":[5439490,6946818,8519681,10747906],"open":[2228225,5636097,12845057],"overload":[327681,1114113,1245185,1572865,1638401,1703937,2555905,2752513,3014657,3538945,3604481,4456449,4521985,4915201,4980737,5701633,6356993,7012353,7208961,7274497,7798785,7995393,8060929,8257537,9371649,9568257,9633793,9699329,10616833,11010049,12648449,12713985,12910593,13172737,13828097,14680065,15532033,15597569,15794177,15859713,16318465,16384001],"occurred":[15007745],"overlaps":[7536642,11206657,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_112.json b/SpriteLibrary/Doc/Help/fti/FTI_112.json index d3e71fd..820b30b 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_112.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_112.json @@ -1 +1 @@ -{"pixels":[2228227,4063233,4325377,4718593,5505025,6815746,7012353,8978433,9437186,12255233,13041665],"problem":[1835009,4063233,4325377,12910593],"putpictureboxlocation":[327681,3735553,6029314,7667714,10747907,13041667],"positioned":[5636097,10747905,13041665],"placespritebehind":[196610,4063233,4325377],"parameters":[65537,196609,262145,327681,393217,655361,786433,1048577,1114113,1179649,1245185,1310721,1572865,1638401,2162689,2359297,2424833,2621441,2752513,2818049,2883585,3080193,3211265,3407873,3670017,3735553,3866625,3932161,4128769,4063234,4259841,4325378,4587521,4653057,5177345,5505025,5767169,5832705,5963777,6029313,6160385,6225921,6356993,6422529,6553601,6619137,6815745,7012353,7077889,7208961,7340033,7602177,7798785,7929857,8192001,8257538,8323074,8650753,8716289,8912897,8978433,9043969,9109505,9371649,9437185,9502721,9568257,9633793,9895937,9961473,10092545,10420225,10551297,10813441,10878977,11010049,11272193,11665409,11730945,11796481,11862017,11993089,12058625,12320769,12451841,12648449,12910593],"project":[6881282],"paused":[7340034,10027009,10747905,10944514,11468801,13041666],"pictuerbox":[4128769],"pb_map":[1835010,4063234,4325378,12910594],"perform":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"percentage":[6619137,10747905,13041665],"play":[65538,4063233,4325377],"puts":[3932161],"pauseevents":[10944514],"place":[327681,3735553,7667714,8454145,9830401,10027009,10747906,13041667],"pass":[1179649,6881281,9240577],"points":[786433,917506,5701633,8454145,10027009,11206660,12124161,13041669],"people":[4063233,4325377,7929857,9043969,10747906,11665409,13041666],"prefer":[4063233,4325377,7929857,9043969,10747905,13041665],"public":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1900545,1966081,2097156,2162689,2228225,2293761,2359297,2424833,2555905,2621441,2686977,2752513,2818049,2883585,3014657,3080193,3145729,3211265,3276801,3407873,3538945,3604484,3670017,3735553,3801089,3866625,3932162,3997697,4128769,4063233,4194305,4259841,4390913,4456449,4521985,4587521,4653057,4718595,4784129,4849665,4980737,5046273,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7208961,7274497,7340033,7471105,7602177,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240579,9371649,9437185,9502721,9568259,9633793,9699329,9764865,9830401,9895937,9961473,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551299,10616833,10682369,10813441,10878977,10944513,11010049,11075585,11141121,11272193,11337729,11403265,11468801,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041668],"pause":[4063236,4325380,5177345,6881281,7340033,9895943,9961476,10747909,10944516,13041669],"places":[5111809,6881281,7274497,11927553],"picturebox":[1835011,2031622,2621441,2818050,2883586,3014658,3211265,3538945,4063253,4128769,4325388,4653057,5505025,6029314,6291457,6553602,6750210,6815745,6881285,7012353,7143428,7208961,7733250,8388609,8585217,9568262,10027012,10158081,10289157,10485762,10551304,10747910,10878979,12910593,13041674],"pictureboxes":[4063233,6881281],"pauseall":[4587521,5177345,7340034,9895937,9961473,10747905,10944513,13041665],"pointers":[1835009,4063233,4325377,12910593],"priority":[2686977,4063233,4325377],"portoin":[11206657,11599873,13041665],"portions":[9175041],"private":[9240577,9568257],"point":[262151,786441,917505,1376257,1769482,2883590,3211268,3735556,3932161,4128774,4063241,4325385,4390914,4718593,4784130,5111809,5832707,5898241,6029315,6553606,6815748,7012359,7077892,7208963,7667713,8454145,9437188,10027010,10420233,10485763,10682369,10747928,10878984,11206659,11337731,11927553,12124162,12255233,12320774,12845059,13041695],"pauses":[10223617,10616833,11206658,13041666],"precise":[2228225,4063236,4325380,6553601,9240577,10878978,12582913],"particularly":[6029313,10747905,13041665],"perpetually":[10420225,10747905,13041665],"picture":[1966081,2228227,2555905,2621441,2883585,4063237,4325381,4390913,5505026,7012353,10027009,10878977,11206658,13041667],"probably":[262145,9830401,10747906,13041666],"parent":[10223617,10616833,11206658,13041666],"payload":[2097157,3604486,4718596,5373953,11206657,13041669],"pausemovement":[10944514],"part":[131073,7077889,11206657,13041665],"primarily":[5111809,6881281,7274497,9175041,11927553],"placespriteinfrontof":[4063233,4325377,6160386],"possible":[4063233,6881282,9240577,13041665],"position":[3211265,5832705,6029313,6881281,7208961,10747905,13041666],"parts":[4063233,6684673,9306113],"programs":[6881281,9240577],"print":[5046273,10027009,13041665],"placement":[5111809,11337729,11927553],"pausable":[10944513],"program":[4063234,4325377,4718594,5570561,6881281,7405569,7995393,9175041,9240577,9699329,11862017,13041666],"pauseanimation":[10944514],"properties":[4063234,9240577,9306114,9568257,10027010,10551297,13041665],"pressed":[2686977,2949124,4063239,4325383,5767173,8519683,8781828,9240577],"presses":[4063233],"pull":[1114113,5963777,6422529,12058625],"programmed":[3670017,10747905,13041665],"pixel":[262146,7208961,10747905,10878977,13041665],"pointing":[1441793,10027009,13041665],"printed":[4718594,5570561,9699329,13041666],"partial":[9240577,9568257,10551297],"poorly":[524289,10027009,13041665],"pieces":[9240577],"processing":[10027009,11403265,13041665],"playing":[1835009,4063234,4325378,11010051,12910593],"process":[524289,10027009,13041665],"property":[524290,589826,1441794,1507330,3407873,3538946,3604481,3997698,4063233,4325377,4390914,4718593,4784130,4849666,5046274,5242882,5439490,6291458,6488066,6684674,6946818,8454146,8585218,10158082,10682370,11403266,11468802,12189698,12255233,12713986,13041665],"processes":[262145,10747905,13041665],"portion":[7471105,9109505,10223617,11206658,13041666],"positions":[6881281,10289153],"putbaseimagelocation":[327683,3735555,3932161,6029313,7667715,10747907,13041667],"pictureboxlocation":[4390914,10027009,13041665],"particular":[262145,4063233,4325377,6619137,10747905,11730945,13041665],"particualar":[8978433,10747905,13041665]} \ No newline at end of file +{"pixels":[3473411,4653057,5439489,7077889,7929857,8454146,8650753,12058626,12255233,14614529,15728641],"problem":[2752513,4653057,5439489,16384001],"putpictureboxlocation":[327681,5701633,5898242,9699330,11206659,15728643],"positioned":[5505025,11206657,15728641],"placespritebehind":[458754,4653057,5439489],"parameters":[327681,393217,458753,589825,655361,720897,1114113,1245185,1376258,1507329,1638401,1769473,1835009,1966081,2359298,2424833,2490369,2883585,2949122,3014657,3276801,3342337,3538945,3604481,3801089,4128769,4390913,4521985,4653058,4915201,4980737,5046273,5111809,5308417,5439490,5636097,5701633,5767169,5832705,5898241,6029313,6094849,6422529,6815746,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7536641,7667713,7798785,7929857,7995393,8060929,8126465,8388609,8454145,8847361,9371649,9568257,9633793,10027009,10354689,10682369,10878977,11272194,11337729,11403265,11468801,11534337,11665409,11796481,11993090,12058625,12124161,12255233,12320769,12517377,12648449,12713985,12910593,13041665,13172737,13238274,13369345,13631490,13828097,13959169,14024705,14090241,14221313,14286849,14483457,14680065,14745601,15073281,15466497,15532033,15859713,16121857,16384001],"project":[2228225,2424833,5242881,5636097,6881282,9109505,11599873,11993089,12845057],"paused":[8388610,11206657,11862017,13697025,14548994,15728642],"pictuerbox":[6029313],"passed":[1966081],"pb_map":[2752514,4653058,5439490,16384002],"percentage":[7405569,11206657,14876673,15400961,15728641,15925249],"play":[393218,4653057,5439489],"puts":[4980737],"pauseevents":[14548994],"place":[327681,5701633,9699330,10485761,11206658,11862017,12451841,15728643],"pass":[1835009,5636097,6881281,10813441],"points":[1114113,1179650,6750209,10485761,11862017,14352385,14942212,15728645],"people":[4653057,5242881,5439489,6881281,10682369,10878977,11206658,14286849,15728642],"programming":[6881281,15925249],"prefer":[4653057,5439489,10682369,10878977,11206657,15728641],"public":[65537,131074,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1638401,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228230,2293761,2359297,2424833,2490369,2621441,2686977,2818052,2883585,2949123,3014657,3080193,3211265,3276801,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,4063233,4128769,4259841,4325380,4390913,4456449,4521985,4587521,4718593,4784129,4849665,4915201,4980738,5046273,5111809,5177345,5242883,5308417,5373953,5439489,5505025,5570561,5636101,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6422529,6488065,6553601,6619137,6684673,6750209,6815747,6881282,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8388609,8454145,8519681,8585217,8650755,8716289,8847361,8912898,8978433,9043969,9175041,9240577,9306113,9371651,9437185,9502721,9568257,9633793,9764865,9830402,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10682369,10813443,10878977,10944513,11075585,11141121,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12648451,12713985,12779521,12845063,12910595,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631491,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,15073281,15138817,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728644,15794177,15859713,15925252,15990785,16056321,16121857,16187393,16252929,16384001,16449537],"pause":[4653060,5046273,5439492,6881281,8388609,11206661,12320775,13369348,14548996,15728645],"places":[6881281,8192001,9306113,16056321],"parameter":[1966081],"picturebox":[2555914,2752515,3342337,3801090,4456450,4653068,5308418,5439513,5636097,5767169,5898242,6029313,6160385,6422529,6881285,7077889,7340034,7733249,7929857,8454145,8716290,8781828,8847361,9175041,9240578,9371656,10223617,11206662,11862020,11927553,12517379,12648456,12910598,13303813,13893634,15728650,16384001],"pictureboxes":[4653057,5439490,6881281,15466497],"pauseall":[5046273,6094849,8388610,11206657,12320769,13369345,14548993,15728641],"pointers":[2752513,4653057,5439489,16384001],"priority":[3735553,4653057,5439489],"portoin":[12189697,14942209,15728641],"portions":[9502721],"persists":[15007745],"private":[10813441,12910593],"point":[589831,1114121,1179649,1572874,1703937,2031618,3801094,4587522,4653065,4980737,5242881,5439497,5701636,5767172,5898243,6029318,7012356,7274499,7340038,7929863,8192001,8257537,8454148,8650753,8847363,9109505,9699329,10485761,11206680,11796489,11862018,12058628,12517384,13434883,13500419,13565955,13893635,14352386,14614529,14811137,14942211,15728671,15859718,16056321],"pauses":[11141121,12779521,14942210,15728642],"precise":[3473409,4653060,5439492,7340033,10813441,12517378,16449537],"particularly":[5898241,11206657,15728641],"perpetually":[11206657,11796481,15728641],"picture":[2621441,3342337,3473411,3670017,3801089,4587521,4653061,5439493,7077890,7929857,11862017,12517377,14942210,15728643],"probably":[589825,11206658,12451841,15728642],"preload":[6881281,12845057],"parent":[11141121,12779521,14942210,15728642],"payload":[2818053,4325382,4718593,8650756,14942209,15728645],"pausemovement":[14548994],"part":[196609,7012353,14942209,15728641],"primarily":[6881281,8192001,9306113,9502721,16056321],"publically":[2228225,2359297,12845057],"placespriteinfrontof":[4653057,5439489,8126466],"possible":[5439489,6881282,10813441,15728641],"position":[5767169,5898241,6881281,7274497,8847361,11206657,15728642],"parts":[5439489,8519681,10747905],"programs":[6881281,10813441],"print":[5177345,11862017,15728641],"placement":[8192001,13434881,16056321],"pausable":[14548993],"program":[851969,2228226,4653057,5242882,5439490,5570561,5636099,6881285,8323073,8650754,8912898,9502721,9895937,10813441,12386305,12845058,14221313,15400962,15728642,15925252],"pauseanimation":[14548994],"properties":[1966082,2228228,2424834,5242884,5439490,5636101,9109508,9371650,10092546,10747906,10813441,11599876,11862018,11993090,12648449,12845061,12910593,13631490,15728641],"pressed":[3735553,4653063,5439495,6356996,7208965,10551299,10813441,15597572],"presses":[5439489],"pull":[2686977,3014657,5242883,6225921,7798785,7995393,9109507,10420225,11337729,14680065],"programmed":[4390913,11206657,15728641],"pixel":[589826,8847361,11206657,12517377,15728641],"pointing":[1900545,5636097,11862017,15728641],"printed":[5570561,8650754,12386305,15728642],"partial":[5636098,9371649,10813441,12648449,12910593],"poorly":[983041,11862017,15728641],"page":[15007745,15204356],"pieces":[10813441],"pretty":[5242881,9109505,15335425],"processing":[11862017,12976129,15728641],"playing":[2752513,4653058,5439490,13041667,16384001],"process":[983041,2228225,5636097,11862017,12845057,15728641],"previously":[4653057,5439489,6815745,11665409],"property":[786434,983042,1441794,1900546,2031618,4259842,4325377,4587522,4653057,5111809,5177346,5439489,6160386,6553602,6946818,7733250,7864322,8519682,8585218,8650753,8978434,9175042,10485762,11927554,12976130,13697026,13762562,14614529,14811138,15728641,16252930],"parameterless":[1376257,2228226,12845058,13631489],"processes":[589825,11206657,15728641],"portion":[7471105,11403265,12779521,14942210,15728642],"positions":[6881281,13303809],"percent":[14876673,15400961,15925249],"putbaseimagelocation":[327683,4980737,5701635,5898241,9699331,11206659,15728643],"pictureboxlocation":[4587522,11862017,15728641],"particular":[589825,4653057,5439489,7405569,11206657,13959169,15728641],"path":[1376257,2424833,5636098,13631489],"particualar":[11206657,12255233,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_113.json b/SpriteLibrary/Doc/Help/fti/FTI_113.json index d838d9d..8d48806 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_113.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_113.json @@ -1 +1 @@ -{"queue":[4259841,8912897],"qualified":[3473409,10289153],"quickly":[9240577],"queueupinvalidation":[4259842,8912898],"quite":[6946817,10027009,13041665]} \ No newline at end of file +{"queue":[3604481,12713985],"query":[4653057,5439489,15466497],"quickly":[10813441],"queueupinvalidation":[3604482,12713986],"quite":[7864321,11862017,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_114.json b/SpriteLibrary/Doc/Help/fti/FTI_114.json index 8efeba6..e6be5e4 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_114.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_114.json @@ -1 +1 @@ -{"ratio":[2228227,4063234,4325378,6750209,6881281,7143426,7733249,10289155],"rarely":[1441793,10027009,13041665],"rule":[10027009,11403265,13041665],"returnpictureboxadjustedwidth":[4063233,4325377,5505026],"right":[655361,1376262,1441793,1900545,2752513,3080193,4718593,5111809,5832705,6881281,7798785,8650753,9240583,9699329,10027009,10092545,10747911,11206657,11337729,11927553,13041674],"remainder":[4063233,4325377,11862017],"reset":[2686978,4063234,4325378],"registerkeyupfunction":[4063233,4325377,8257538],"rectangle":[131073,851969,1441793,2818055,3211265,4063236,4325380,5111809,6881281,7208962,7602181,8912901,9109509,9175044,10027009,10747906,11206657,11534338,11927553,13041668],"reaches":[786434,1769474,10747906,13041666],"reached":[786433,1769473,10747905,11206657,12124161,13041666],"rapidly":[6946817,10027009,13041665],"recalcpictureboxlocation":[8388610,10747905,13041665],"replacing":[1835010,4063234,4325378,12910594],"rectangles":[9175042],"refined":[12582913],"representing":[6619137],"rotated":[1048578,1376260,10747908,10813442,13041668],"registerkeydownfunction":[4063233,4325377,8323074],"resume":[3997697,10027009,13041665],"range":[12451841],"returnadjustmentratio":[2228226,3145730,4063233,4325377,10747905,13041665],"random":[4063233,7405569,7995395],"resize":[1703937,4063233,4653057,6029313,7405569,8388609,10747907,13041667],"retainname":[9633794],"rounding":[4063233,4325377,9830401,10420225,10747906,10878977,13041666],"returnpictureboxadjustedpoint":[4063233,4325377,7012354],"reverse":[4063233,4325377,7012353],"recalculate":[10420225,10747905,13041665],"randomnumbergenerator":[4063233,7405569,7995394],"rotation":[1048577,1376258,1441795,6881281,10027010,10747906,10813442,13041669],"reclaimed":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"reach":[10420225,10747905,13041665],"regularly":[4063233,4325377,9043969],"resumes":[10944514],"return":[262145,1638401,1835010,2162690,2228226,2293762,2621442,2818049,2883585,3145729,3211265,3932161,4128769,4063243,4194306,4325387,4849665,5308417,5505026,5767169,6291457,6553601,6815746,7012353,7208962,7340033,7602177,7864322,8519682,8585217,8781825,8978434,9109506,9240578,9437186,9502721,9764866,9830402,10027012,10485762,10747914,10878977,11010049,11272193,11468801,11730946,11862017,12451842,12517378,12582913,12648449,12845058,12910594,12976130,13041678],"represents":[1572865,3342337,3604481,4063233,4325377,4915201,9830401,10747905,11927553,13041665],"relative":[4653057,8585217,10027009,10747905,13041666],"resetkeypressstate":[2686978,2949122,4063236,4325380,5767169,8519681,8781825],"responsible":[10420225,10747905,13041665],"replaceoriginalimage":[1835012,3014659,4063237,4325379,5439489,6684673,9306114,12910596],"releases":[2949122,4063235,4325379,5767169,8519681,8781825],"result":[2424833,10747905,13041665],"reports":[10027009,11468801,13041665],"redirected":[1],"resources":[3342337,3604481,4063234,4325377,4915201,9240577,9568257,10551297,10747905,11927553,13041665],"round":[9830401,10747905,13041665],"released":[2686977,4063233,4325377],"resizes":[8388609,10747905,13041665],"replaces":[393217,10747905,13041665],"retain":[3932161],"rotate":[1048577,1376258,10747906,10813441,13041666],"ready":[9240577],"rectabgle":[7602177],"returnpointadjustedforimage":[4063233,4325377,10878978],"remove":[3407873,3801089,4063234,4325378,10354689,10747905,13041665],"replaceimage":[393218,10747905,13041665],"results":[1441793,9830401,10027009,10747905,13041666],"rotationdegrees":[10813442],"returned":[9830401,10747905,11141121,11206657,13041666],"replace":[393219,1835009,4063235,4325377,5439489,6684673,9306114,10747907,12910593,13041667],"reaching":[10420225,10747905,13041665],"replacebackground":[1835009,4063233,4325377,12910593],"relation":[6291457,8585217,10027010,13041666],"reason":[10027009,11403265,13041665],"recompute":[8388609,10747905,13041665],"removed":[8060929,8126465,10747906,13041666],"refreshing":[3080193],"removes":[10354689,10747905,13041665],"reappear":[5636097,10747905,13041665],"returns":[2883585,3145729,3342337,3473410,3604481,4063239,4325383,4915201,5308417,6553601,10027010,10289154,10747907,10878978,11468802,11730945,11862017,11927553,12648449,13041669],"rotating":[1048577,1376258,1441793,10027009,10747906,10813441,13041667],"report":[6881281,10027012,10682369,11468803,13041669],"reference":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4194305,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4784129,4718593,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6291458,6225921,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881283,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027010,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041666],"radians":[1638404,5308418,10747909,11272194,11665411,13041669],"returnpictureboxadjustedheight":[2621442,4063233,4325377],"retrieve":[2097153,4718593,13041665]} \ No newline at end of file +{"ratio":[3473411,4653058,5439490,6881281,8716289,8781826,9240577,13303811],"rarely":[1900545,11862017,15728641],"rule":[11862017,12976129,15728641],"returnpictureboxadjustedwidth":[4653057,5439489,7077890],"right":[655361,1703942,1900545,2293761,4521985,4915201,6881281,7274497,8060929,8192001,8650753,9568257,10813447,11206663,11862017,12386305,13434881,14942209,15532033,15728650,16056321],"remainder":[4653057,5439489,14221313],"reset":[3735554,4653058,5439490],"registerkeyupfunction":[4653057,5439489,13238274],"rectangle":[196609,1310721,1900545,4653060,5308423,5439492,5767169,6881281,7536645,8192001,8847362,9502724,11206658,11403269,11862017,12713989,14942209,15728644,16056321,16318466],"runner":[5242882,9109506,11599874],"remember":[1966081,2228225,12845057],"reaches":[1114114,1572866,11206658,15728642],"reached":[1114113,1572865,11206657,14352385,14942209,15728642],"rapidly":[7864321,11862017,15728641],"resourcemanager":[2228225,2424836,5636099,9371649,11993092,12845057],"recalcpictureboxlocation":[10223618,11206657,15728641],"recognizes":[6881281,9437185],"replacing":[2752514,4653058,5439490,16384002],"rectangles":[9502722],"refined":[16449537],"representing":[7405569],"rotated":[1245186,1703940,5242882,9043969,9109506,9437186,11206660,13107201,13828098,15728644],"registerkeydownfunction":[4653057,5439489,11272194],"running":[4653057,5439489,15466497],"resume":[4259841,11862017,15728641],"range":[15073281],"returnadjustmentratio":[3473410,3866626,4653057,5439489,11206657,15728641],"random":[5439489,8323073,9895939],"resize":[3211265,5439489,5898241,6422529,8323073,10223617,11206659,15728643],"retainname":[9633794],"rounding":[4653057,5439489,11206658,11796481,12451841,12517377,15728642],"returnpictureboxadjustedpoint":[4653057,5439489,7929858],"reverse":[4653057,5439489,7929857],"readfromxmlfile":[1376258,2228225,12845057],"read":[1376259],"recalculate":[11206657,11796481,15728641],"randomnumbergenerator":[5439489,8323073,9895938],"reduce":[6881281,12845057],"rotation":[1245185,1703938,1900547,6881281,9437185,11206658,11862018,13828098,15728645],"reach":[11206657,11796481,15728641],"regularly":[4653057,5439489,10682369],"resumes":[14548994],"return":[131073,589825,1376257,1507329,1966082,2162690,2228227,2359297,2752514,2949121,3080193,3342338,3473410,3538946,3801089,3866625,4653067,4980737,5308417,5373954,5439499,5767169,5832705,6029313,6553601,6815745,7077890,7208961,7340033,7536641,7602177,7733249,7929857,8388609,8454146,8847362,9175041,9830401,10092546,10551298,10813442,10944514,11010050,11206666,11403266,11468801,11862020,11993089,12058626,12255234,12451842,12517377,12845059,13041665,13172737,13500418,13697025,13893634,13959170,14221313,15073282,15138818,15597569,15728654,15794178,15990786,16121857,16384002,16449537],"represents":[2490369,12451841],"relative":[6422529,9175041,11206657,11862017,15728642],"resetkeypressstate":[3735554,4653060,5439492,6356994,7208961,10551297,15597569],"responsible":[11206657,11796481,15728641],"replaceoriginalimage":[2752516,4456451,4653059,5439493,6946817,8519681,10747906,16384004],"releases":[4653059,5439491,6356994,7208961,10551297,15597569],"result":[2228225,2359297,3276801,11206657,12845057,15728641],"reports":[11862017,13697025,15728641],"redirected":[1],"resources":[851972,1966082,2228230,2424835,5242884,5439489,5636104,9109508,9371650,10092546,10813441,11599876,11993091,12648449,12845063,12910593],"round":[11206657,12451841,15728641],"released":[3735553,4653057,5439489],"resizes":[10223617,11206657,15728641],"replaces":[720897,11206657,15728641],"requested":[15204353],"retain":[4980737],"rotate":[1245185,1703938,5242881,9109505,11206658,13107201,13828097,15728642],"reads":[1376257,2228225,12845057],"ready":[10813441],"rectabgle":[7536641],"returnpointadjustedforimage":[4653057,5439489,12517378],"remove":[4653058,4784129,5111809,5439490,11206657,15663105,15728641],"replaceimage":[720898,11206657,15728641],"requires":[5242881,6881282,8912897,15400961,15925250],"results":[1900545,11206657,11862017,12451841,15728642],"rotationdegrees":[5242881,9109505,13107202,13828098],"returned":[11206657,11730945,12451841,14942209,15728642],"records":[9961473,12582913,12845057],"replace":[720899,2752513,4653057,5439491,6946817,8519681,10747906,11206659,15728643,16384001],"reaching":[11206657,11796481,15728641],"replacebackground":[2752513,4653057,5439489,16384001],"relation":[7733249,9175041,11862018,15728642],"reason":[5242881,6881282,8912897,11862017,12976129,15400961,15728641,15925250],"recompute":[10223617,11206657,15728641],"removed":[5242881,9109505,10158081,10289153,11206658,11599873,15728642],"refreshing":[4521985],"removes":[11206657,15663105,15728641],"reasonable":[9961473,12582913,12845057],"reappear":[5505025,11206657,15728641],"resource":[1966082,2424834,5636097,11993090,12845057],"returns":[1376257,1966082,2228226,3801089,3866625,4653062,5439494,7340033,7602177,11206658,11862018,12517378,12845058,13172737,13697026,13959169,14221313,15728644],"rotating":[1245185,1703938,1900545,11206658,11862017,13828097,15728643],"report":[6881281,11862020,13697027,14811137,15728645],"reference":[65537,131073,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966082,2031617,2097153,2162689,2228226,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4718593,4653057,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881283,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733250,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9568257,9502721,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862018,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845058,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15073281,15138817,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728642,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537],"radians":[1507332,7602178,11206661,14286851,15728645,16121858],"returnpictureboxadjustedheight":[3342338,4653057,5439489],"really":[6881281,12845057],"readfromxmlstring":[2228226,2949121,6815746,12845058],"retrieve":[1966081,2228225,2818049,6815745,8650753,12845057,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_115.json b/SpriteLibrary/Doc/Help/fti/FTI_115.json index 594d10b..b3894b5 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_115.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_115.json @@ -1 +1 @@ -{"spritesbasedoff":[4063233,4325377,11730946],"setspritedirectionradians":[4718593,10747905,11665410,12255233,13041666],"sword":[5701633,11206657,13041665],"spriteatimagepoint":[3211266,10747905,13041665],"specifying":[1048577,1572865,2031618,2424833,4063234,5898241,7077889,9568257,10551297,10747906,10813441,13041667],"spritekeyeventhandler":[2359298,6881281,8257538,8323074],"sort":[983041,4063233,7405569,10420225,10747905,12582917,13041665],"spriteanimationcomplete":[458754,2424833,10747906,11206657,11993089,13041667],"setspritedirectiondegrees":[655362,3932161,4718593,7929857,9240578,10747907,11665409,12255233,13041668],"sure":[2424833,6160385,10747905,13041665],"spritecollisionmethod":[851970,3211267,3670018,6881281,7208964,9175042,10747905,13041665],"spriteforwards":[4063233,4325377,8716290],"syntax":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1900545,1966081,2097154,2162689,2228225,2293761,2359297,2424833,2555905,2621441,2686977,2752513,2818049,2883585,3014657,3080193,3145729,3211265,3276801,3407873,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4063233,4194305,4259841,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7208961,7274497,7340033,7471105,7602177,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10813441,10878977,10944513,11010049,11075585,11141121,11272193,11337729,11403265,11468801,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041666],"sets":[1835009,4063233,4325377,10420225,10747905,12910593,13041665],"solution":[6881281],"sample":[6881281],"shift":[7929858,10747906,13041666],"stops":[2424835,10747906,13041666],"spritesize":[2752514,12058626],"shrunk":[262145,3145729,3538945,8585217,10027011,10158081,10747906,13041669],"specifiec":[7208961,10747905,13041665],"specified":[196609,262145,327681,1048577,1376264,2752513,2883585,3080193,3211265,3342337,3473409,3604481,3735553,3866625,3932162,4063252,4325396,4653057,4915201,5177345,5832705,5898242,6029313,6160385,6356993,6422529,6488065,6553602,6619137,7077889,7208961,7340034,7536642,7602177,7667714,7798785,8192002,8650753,8716289,8912897,9371649,9502722,9633793,9961473,10027009,10092545,10289153,10747922,10813441,10878977,11010049,11534337,11796481,11862018,11927553,12451841,12648449,13041685],"stretch":[2818049,4063234,4325377,9240577,9568257,10551297],"setspritedirectiontopoint":[4718593,10420227,10747906,12255233,13041667],"stub":[3604481,6881281],"spriteexitspicturebox":[1966082,11206657,13041665],"specify":[393217,1376262,2424833,2752513,3080193,5832705,7798785,8650753,10092545,10747912,12582913,13041672],"someday":[6881281,9175041],"status":[2686977,4063233,4325377],"sendtoback":[8847362,10747905,13041665],"spriteeventargs":[851970,1179652,4915203,5111811,6094850,6881283,7274498,11141121,11206657,11337730,11927559,12779524,13041665],"setting":[1703938,4063234,6946817,7405570,9568257,10027009,13041665],"stating":[1048578],"spritebackwards":[4063233,4325377,9371650],"simply":[10027009,10354689,10747905,11468801,13041666],"shots":[2555905,11206657,13041665],"stretching":[4063233,4325377,5505025],"sprite":[131079,196616,262148,327684,393220,458756,524290,589831,655363,720902,786438,917509,1048578,1114119,1179653,1245186,1310730,1376270,1441796,1507331,1572868,1638402,1703938,1769486,1835011,1900550,1966085,2031618,2097155,2162691,2293762,2424837,2555909,2621442,2686977,2752516,2883586,3014657,3080196,3145733,3211268,3276807,3407878,3538946,3604482,3670022,3735556,3866628,3932169,3997698,4063279,4194306,4325412,4390916,4456451,4587524,4653060,4718603,4784131,4849668,4980742,5046276,5111814,5308420,5373958,5505025,5570564,5636099,5701636,5832708,5898258,5963782,6029315,6094853,6160392,6225923,6291460,6356996,6422535,6488068,6553603,6619138,6684673,6815747,6881297,6946823,7077895,7208968,7274497,7340038,7405571,7471110,7536644,7602180,7667718,7798788,7864322,7929859,8060931,8126467,8192005,8388610,8454147,8585220,8650756,8716292,8847363,8978435,9109506,9175046,9240579,9306113,9371652,9437187,9502723,9568257,9633805,9699332,9764866,9830404,9895940,10027050,10092548,10158083,10223621,10289153,10354692,10420228,10485763,10551297,10616837,10682371,10747979,10813442,10944516,11075589,11141126,11206689,11272194,11337730,11403270,11468807,11599878,11665411,11730951,11796486,11862026,11927559,11993091,12058631,12124168,12189698,12255236,12320775,12386307,12451842,12517380,12582919,12648456,12713987,12845059,12910594,12976131,13041834],"spriteatpictureboxpoint":[7208962,10747905,13041665],"step":[2424833,10747905,13041665],"stop":[4980737,7471105,8060929,9240577,10420225,10747906,11206658,13041668],"second":[12582914],"startframe":[1245186],"stored":[2686977,4063233,4325377],"setname":[1572866,4063233,4325377,8192001,10747905,11862017,13041665],"slowly":[9240577],"spriteeventhandler":[131074,458754,720898,917506,1179650,1900546,1966082,2555906,3276802,4980738,5373954,5701634,6881281,7471106,10223618,10616834,11075586,11141122,11599874,12124162],"stuff":[9568257],"scaled":[262145,1441793,10027009,10747905,13041666],"spritetoback":[3866626,4063233,4325377],"spaceship":[9240585],"search":[983041],"spritepausetype":[4063235,4325379,4587523,5177349,6881281,7340036,9895939,9961478,10944514],"sizes":[1703937,4063233,7405569],"shrinking":[1441793,1703937,4063234,4325377,5505025,7405569,10027009,13041665],"spritecomparisondelegate":[4063233,7405569,12582915],"spritesatimagepoint":[4063233,4325377,6553602],"spriteatpicturebox":[3211265,10747905,13041665],"send":[3866625,4063233,4325377,5177345,8716289,9371649,9961473,10420226,10747905,13041665],"setspritename":[10027009,11403265,13041665],"structures":[6881281],"speed":[2097153,4718595,6225921,6619139,7929858,8978435,10027009,10747911,12255234,12451842,12713985,13041675],"sent":[10878977],"sides":[9175041],"spriteimage":[1114114,2752514,3080194,5832706,5963778,6422530,7077890,7798786,8650754,10092546,12058626],"single":[1048577,1376258,3080193,5898241,6422529,6946817,10747907,10813441,12451841,13041668],"stick":[4456449,4718593,13041665],"spriteadjustedpoint":[262146,10747905,13041665],"starty":[3932162],"shallow":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"spritechangesanimationframes":[5701634,11206657,13041665],"set":[589825,655361,786434,1441793,1769475,1835009,1900545,2031617,3407873,4063235,4325378,4718593,5046273,5111809,5898241,6946818,7274497,7340033,7929857,8257537,8323073,8978433,9240577,9633794,9830403,10027011,10551297,10747913,11206657,11665409,11927553,12189698,12255233,12320769,12713985,12910593,13041679],"spritereachedend":[1769473,10747905,12320769,13041665],"sitting":[6946817,10027009,13041665],"spritereachedendpoint":[524289,786433,1769473,8454146,10027010,10747905,13041667],"soundplay":[65538,4063233,4325377],"shoot":[2097153,4718593,13041665],"spriteatendpoint":[917505,11206657,13041665],"substantial":[1703937,4063233,7405569],"spritehitspicturebox":[2555906,11206657,13041665],"spritepayload":[2097156,3342339,3604488,4521988,4718594,6881282,13041666],"setspritedirection":[4718593,7929858,10027009,10747905,12255233,12713985,13041667],"spritefromname":[4063233,4325377,11862018],"state":[12582913],"slow":[1703937,4063233,7405569],"spriteintersectsrectangle":[7602178,10747905,13041665],"safer":[10027009,12189697,13041665],"starts":[1376262,2752513,3080193,5832705,7798785,8650753,9240577,10092545,10747910,13041670],"sprites":[196609,262145,1835010,1966081,2031618,2097153,2162689,2293762,2883586,3014657,3670017,3801090,3866626,4063265,4194306,4259841,4325401,4718593,5046274,5177346,5242882,5439490,6356993,6553602,6684673,6881284,7864322,8716290,8847361,9109506,9175041,9306117,9371650,9502723,9568258,9764867,9961474,10027015,10551298,10747910,11141121,11206658,11403269,11534337,11730947,11796482,11927553,12386305,12582916,12910594,12976129,13041681],"spritesatpoint":[2883586,4063233,4325377],"sequence":[3997697,6881281,10027010,11468801,13041667],"stream":[65538],"spritecontroller":[65538,196610,1114115,1703938,1835010,2031620,2228226,2293762,2490372,2621442,2686978,2818050,2883586,2949122,3014658,3407874,3801090,3866626,3932162,4063247,4128770,4194306,4259842,4325383,5177346,5242882,5439490,5505026,5767170,5898245,5963779,6160386,6356994,6422531,6553602,6684674,6881284,7012354,7077891,7405571,7536642,7995394,8192002,8257538,8323074,8519682,8716290,8781826,8912898,9043971,9109506,9240580,9306115,9371650,9502723,9568263,9764866,9961475,10551302,10878978,11010050,11534338,11730947,11796482,11862018,12058627,12582914,12648450,12910594,13041670],"spritecanmoveonpicturebox":[6815746,10747905,13041665],"select":[1376262,2752513,3080193,5832705,7798785,8650753,10092545,10747910,13041670],"spritesbasedoffanything":[4063233,4325377,9764866],"spritearrivedatwaypoint":[786433,917506,1769473,10747905,11206657,13041666],"specific":[6225921,6881281,10747905,11206657,12124161,13041666],"size":[1376257,1703937,2228225,2752516,3538945,4063234,4325377,4653060,5898241,6291460,6881281,7405569,8585220,10027014,10158081,10747906,12058628,13041674],"string":[65538,1572867,3342337,3604481,3932164,4063237,4325381,4849666,4915201,7536641,8192004,9502723,10027009,10747905,11010050,11403267,11730947,11862019,11927553,13041666],"solid":[6946817,10027009,13041665],"spritebeingdestroyed":[5373954,11206657,13041665],"spritelist":[8126465,10747905,13041665],"start":[1245186,2424833,5832706,7077890,9240577,10747907,11993089,13041667],"scratch":[1245185,10747905,13041665],"spritesinimagerectangle":[4063233,4325377,9109506],"soundisfinished":[4063233,4325377,11010050],"sender":[1179650,2359298,4063234,4325378,8257537,8323073,9240577,9568257],"spritesthathavebeendrawn":[2293762,4063233,4325377],"spritesadpoint":[4063233,4325377,6553601],"small":[1835009,2949122,4063236,4325380,5767169,8519681,8781825,12910593],"store":[2097154,4718594,13041666],"straight":[786433,1769473,10747905,13041665],"speeding":[1703937,4063233,7405569],"structure":[3473409,6750209,6881282,7143425,7733249,10289154],"startx":[3932162],"system":[65538,262145,327682,393219,655361,786433,1048579,1114115,1179649,1245186,1572865,1638401,2162690,2359298,2424835,2621441,2752514,2818049,2883585,2949122,3080194,3211265,3604481,3735553,3932161,4063236,4128769,4259841,4325379,4653057,5505025,5767170,5832710,5963780,6029313,6225923,6422529,6553601,6619138,6815745,7012353,7077894,7208961,7602177,7798788,7929857,8192001,8519681,8650755,8781825,8912898,8978433,9043969,9109505,9240578,9437185,9502721,9568258,9633793,10092545,10420225,10551297,10813442,10878977,11010049,11272193,11665409,11730945,11862017,11927554,11993090,12058626,12320769,12451842,12910593,13041665],"starting":[5832705,9175041],"shown":[5963777],"space":[9240577],"sound":[65538,4063234,4325378,11010051],"shootingfieldform":[9240578,9568258,10551298],"spriteoriginname":[4849667,10027010,13041666],"spriteadjustmentratio":[2228227,3145732,3473411,6750210,6881281,7143427,7733250,10289155,10747905,13041665],"spritehitssprite":[11141122,11206657,13041665],"swing":[5701633,11206657,13041665],"spritetoadd":[11796482],"spritename":[5898242,9633794,10027009,11403266,11730946,13041667],"spritecanmoveonimage":[9437186,10747905,13041665],"spriteinitializes":[1900546,11206657,13041665],"setsize":[4653058,10747905,13041665],"stopped":[9240577,10944513],"storing":[3604481,6881281],"sends":[4063233,4325377,9961473],"stretched":[262145,3145729,3538945,7012353,8585217,10027011,10158081,10747906,13041669],"spritepayloads":[3604481],"struct":[10289153],"sendtofront":[10747905,12386306,13041665],"spritelibrary":[65541,131078,196615,262149,327685,393221,458758,524293,589829,655365,720902,786437,851973,917510,983041,1048581,1114118,1179654,1245189,1310726,1376258,1441797,1507333,1572869,1638405,1703941,1769474,1835010,1900550,1966086,2031618,2097157,2162693,2228229,2293765,2359301,2424837,2490370,2555910,2621445,2686981,2752517,2818053,2883589,2949122,3014661,3080197,3145733,3211270,3276806,3342338,3407878,3473410,3538949,3604486,3670023,3735557,3801093,3866630,3932165,3997701,4063238,4128773,4194309,4259845,4325378,4390917,4456453,4521989,4587526,4653061,4718594,4784133,4849669,4915202,4980742,5046277,5111810,5177350,5242885,5308421,5373958,5439493,5505029,5570565,5636101,5701638,5767173,5832709,5898242,5963782,6029317,6094853,6160391,6225925,6291461,6356998,6422534,6488069,6553605,6619141,6684677,6750213,6815749,6881287,6946821,7012357,7077894,7143426,7208966,7274501,7340038,7405570,7471110,7536642,7602181,7667714,7733253,7798789,7864322,7929861,7995397,8060933,8126469,8192006,8257542,8323078,8388613,8454149,8519685,8585221,8650757,8716294,8781829,8847365,8912901,8978437,9043973,9109509,9175046,9240581,9306114,9371654,9437189,9502725,9568261,9633798,9699333,9764869,9830405,9895942,9961478,10027010,10092549,10158085,10223622,10289157,10354693,10420229,10485765,10551301,10616838,10682373,10747906,10813445,10878981,10944517,11010053,11075590,11141126,11206658,11272197,11337733,11403269,11468805,11534338,11599878,11665413,11730949,11796486,11862021,11927558,11993093,12058630,12124166,12189701,12255237,12320773,12386309,12451845,12517381,12582917,12648454,12713989,12779525,12845061,12910597,12976133,13041670],"spritetofront":[4063233,4325377,6356994],"sit":[10944513],"sloppy":[4063234,4325378,10878978],"screen":[4063233,4325377,5505025],"spritearrivedatendpoint":[786433,1769474,10747906,11206657,12124162,12320769,13041667],"spritecount":[4063233,5242882,9306113],"serves":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"signals":[6881281,10944513],"steps":[2424833,10747905,13041665]} \ No newline at end of file +{"spritesbasedoff":[4653057,5439489,13959170],"setspritedirectionradians":[8650753,11206657,14286850,14614529,15728642],"sword":[6750209,14942209,15728641],"spriteatimagepoint":[5767170,11206657,15728641],"specifying":[1245185,2490369,2555907,3276801,5439491,7012353,8257537,9371649,11206658,12648449,12910593,13828097,15728643],"spritekeyeventhandler":[2883586,6881281,11272194,13238274],"sort":[262145,5439489,8323073,11206657,11796481,15728641,16449541],"spriteanimationcomplete":[524290,3276801,11206658,14745601,14942209,15728643],"setspritedirectiondegrees":[655362,4980737,8650753,10813442,10878977,11206659,14286849,14614529,15728644],"sure":[3276801,8126465,11206657,15728641],"spriteinfo":[917506,3932164,5242881,5963780,6881284,8912898,9437185,9830404,9961475,10354694,12582913,12845057,14876674,15400963,15925256],"spritecollisionmethod":[1310722,4390914,5767171,6881281,8847364,9502722,11206657,15728641],"spriteforwards":[4653057,5439489,14024706],"syntax":[65537,131073,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1638401,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2490369,2621441,2686977,2818050,2883585,2949121,3014657,3080193,3211265,3276801,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,4063233,4128769,4259841,4325377,4390913,4456449,4521985,4587521,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,6029313,6094849,6160385,6225921,6291457,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8388609,8454145,8519681,8585217,8650753,8716289,8847361,8912897,8978433,9043969,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10682369,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,15073281,15138817,15269889,15335425,15466497,15532033,15597569,15663105,15728642,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16384001,16449537],"solution":[6881281],"sets":[2752513,4653057,5439489,11206657,11796481,15728641,16384001],"sample":[6881281],"shift":[10878978,11206658,15728642],"stops":[3276803,11206658,15728642],"spritesize":[4915202,14680066],"shrunk":[589825,3866625,6160385,9175041,11206658,11862019,11927553,15728645],"specifiec":[8847361,11206657,15728641],"specified":[131073,327681,458753,589825,1245185,1703944,1966081,2228227,2686977,3801089,4128769,4521985,4653075,4915201,4980738,5046273,5242883,5439507,5701633,5767169,5898241,6225921,6422529,7012353,7274497,7340034,7405569,7536641,7667713,7995393,8060929,8126465,8257538,8388610,8585217,8847361,9109507,9568257,9633793,9699330,10027010,10420225,10616834,11206673,11468802,11534338,11862017,11993090,12124161,12517377,12713985,12845059,13041665,13172737,13369345,13828097,14024705,14090241,14221314,15073281,15532033,15728660,16318465],"smartduplicatesprite":[2228225,5832705,12845057],"stretch":[4653057,5308417,5439490,5636098,9371649,10813441,12648449,12910593],"setspritedirectiontopoint":[8650753,11206658,11796483,14614529,15728643],"stub":[4325377,6881281],"spriteexitspicturebox":[2621442,14942209,15728641],"specify":[720897,1703942,3276801,4521985,4915201,7274497,8060929,9568257,11206664,15532033,15728648,16449537],"someday":[6881281,9502721],"status":[3735553,4653057,5439489],"states":[5242883,9043969,9109507,9764865,14155777],"sendtoback":[11075586,11206657,15728641],"spriteeventargs":[1310722,1835012,3407875,6488066,6881283,8192003,9306114,11730945,13434882,14417924,14942209,15728641,16056327],"setting":[3211266,5439490,7864321,8323074,11862017,12910593,15728641],"stating":[1245186,1966081],"sensitive":[5242881,5832705,9109505,11599873],"spritebackwards":[4653057,5439489,12124162],"simply":[1966081,11206657,11862017,13697025,15663105,15728642],"shots":[3670017,14942209,15728641],"stretching":[4653057,5439489,7077889],"sprite":[196615,327684,458760,524292,589828,655363,720900,786439,851970,917505,983042,1048582,1114118,1179653,1245186,1441795,1507330,1572878,1638410,1703950,1769474,1835013,1900548,2031619,2162690,2228233,2293766,2424833,2490372,2555908,2621445,2686977,2752515,2818051,3014663,3080194,3211266,3276805,3342338,3538947,3670021,3735553,3801090,3866629,4063239,4128772,4259842,4325378,4390918,4456449,4521988,4587524,4653102,4718598,4915204,4980746,5111814,5177348,5242900,5373953,5439547,5505027,5570564,5636100,5701636,5767172,5832713,5898243,6094852,6160386,6225921,6422532,6488069,6553604,6619142,6684675,6750212,6881302,7012359,7077889,7143427,7274500,7340035,7405570,7471110,7536644,7602180,7667716,7733252,7798790,7864327,7995399,8060932,8126472,8192006,8257554,8323075,8388614,8454147,8519681,8585220,8650763,8847368,8912897,9043971,9109522,9175044,9306113,9371650,9437188,9502726,9568260,9633805,9699334,9764867,9830401,9961473,10027013,10158083,10223618,10289155,10485763,10616837,10747905,10813443,10878979,11010050,10944514,11075587,11141125,11206731,11337730,11403266,11468803,11534338,11599873,11730950,11796484,11862058,11927555,12058627,12124164,12189702,12255235,12320772,12386308,12451844,12582913,12648449,12779525,12845069,12910593,12976134,13107203,13172744,13303809,13434882,13500419,13565954,13697031,13762563,13828098,13893635,13959175,14024708,14090246,14155779,14221322,14286851,14352392,14548996,14614532,14680071,14745603,14811139,14876676,14942241,15073282,15138820,15269893,15335425,15400966,15466507,15532036,15663108,15728810,15794179,15859719,15925254,15990786,16056327,16121858,16187395,16252930,16384002,16449543],"serialize":[2228225,2949121,6815745,12845057],"spriteatpictureboxpoint":[8847362,11206657,15728641],"snapgrid":[2228226,11534338,12845058],"step":[2228225,3276801,11206657,11534337,12845057,15728641],"stop":[6619137,7471105,10158081,10813441,11206658,11796481,14942210,15728644],"second":[16449538],"startframe":[1769474],"stored":[2228225,3735553,4653057,5439489,5832705,12845057],"setname":[2490370,4653057,5439489,10027009,11206657,14221313,15728641],"slowly":[10813441],"spriteeventhandler":[196610,524290,1048578,1179650,1835010,2293762,2621442,3670018,4063234,4718594,6619138,6750210,6881281,7471106,11141122,11730946,12189698,12779522,14352386,15269890],"stuff":[12910593],"scaled":[589825,1900545,11206657,11862017,15728642],"spritetoback":[4128770,4653057,5439489],"sorry":[15007745,15204353],"saving":[851969,2228225,9961473,12582913,12845058],"spaceship":[10813449],"search":[262145,15204353],"spritepausetype":[4653059,5046277,5439491,6094851,6881281,8388612,12320771,13369350,14548994],"sizes":[3211265,5439489,8323073],"shrinking":[1900545,3211265,4653057,5439490,7077889,8323073,11862017,15728641],"spritecomparisondelegate":[5439489,8323073,16449539],"spritesatimagepoint":[4653057,5439489,7340034],"spriteatpicturebox":[5767169,11206657,15728641],"send":[4128769,4653057,5046273,5439489,11206657,11796482,12124161,13369345,14024705,15728641],"spritedefinition":[9437185],"setspritename":[11862017,12976129,15728641],"structures":[6881281],"speed":[1966081,2228225,2818049,7143425,7405571,8650755,10878978,11206663,11862017,12255235,12845057,13762561,14614530,15073282,15728651],"sent":[12517377],"sides":[9502721],"spriteimage":[3014658,4521986,4915202,7012354,7274498,7798786,7995394,8060930,9568258,14680066,15532034],"single":[1245185,1703938,4521985,7864321,7995393,8257537,11206659,13828097,15073281,15728644],"stick":[6684673,8650753,15728641],"spriteadjustedpoint":[589826,11206657,15728641],"saved":[851969,2228225,12845057],"starty":[4980738],"spritechangesanimationframes":[6750210,14942209,15728641],"set":[655361,786433,1114114,1572867,1900545,2293761,2555906,2752513,4653058,5111809,5177345,5439492,7864322,8192001,8257537,8388609,8650753,9306113,9371649,9633794,10813441,10878977,11206665,11272193,11862019,12255233,12451843,12648449,13238273,13762561,14286849,14614529,14942209,15728655,15859713,16056321,16252930,16384001],"spritereachedend":[1572865,11206657,15728641,15859713],"sitting":[7864321,11862017,15728641],"spritereachedendpoint":[983041,1114113,1572865,10485762,11206657,11862018,15728643],"soundplay":[393218,4653057,5439489],"shoot":[2818049,8650753,15728641],"spriteatendpoint":[1179649,14942209,15728641],"substantial":[3211265,5439489,8323073],"serialized":[2228225,6815745,11993089,12845057],"spritehitspicturebox":[3670018,14942209,15728641],"spritepayload":[2818052,3997699,4325384,6291460,6881282,8650754,15728642],"setspritedirection":[8650753,10878978,11206657,11862017,13762561,14614529,15728643],"spritefromname":[2228225,4653057,5439489,5832706,12845057,14221314],"stats":[4653057,5439489,15466497],"state":[16449537],"slow":[3211265,4653057,5439490,8323073,15466497],"spriteintersectsrectangle":[7536642,11206657,15728641],"setspritedatabase":[4653057,5439489,11337730],"safer":[11862017,15728641,16252929],"starts":[1703942,4521985,4915201,7274497,8060929,9568257,10813441,11206662,15532033,15728646],"sprites":[458753,589825,851969,1966081,2162690,2228230,2555908,2621441,2752514,2818049,3080195,3538945,3604481,3801090,4128770,4390913,4456449,4653085,4784130,5046274,5177346,5439527,5636102,5832705,6881287,6946818,7340034,7667713,8519681,8650753,8978434,9371651,9502721,10747909,10944515,11010050,11075585,11206662,11403266,11468803,11534337,11730945,11862023,12124162,12648450,12845064,12910594,12976133,13369346,13959171,14024706,14090242,14942210,15466498,15728657,15794177,15925249,15990786,16056321,16187393,16318465,16384002,16449540],"snap":[2228225,11534338,12845057],"spritesatpoint":[3801090,4653057,5439489],"setsnapgridsize":[2228225,11534338,12845057],"sequence":[4259841,6881281,11862018,13697025,15728643],"stream":[393218],"spritecontroller":[393218,458754,2162690,2555909,2752514,3014659,3080194,3145732,3211266,3342338,3473410,3604482,3735554,3801090,4128770,4456450,4653065,4784130,4980739,5046274,5111810,5308418,5439506,5636102,5832706,6029314,6356994,6881284,6946818,7012355,7077890,7208962,7340034,7667714,7798787,7929858,7995395,8126466,8257541,8323075,8519682,8978434,9371654,9895938,10027010,10551298,10616835,10682371,10747907,10813444,10944514,11272194,11337731,11403266,11468803,11665412,12124162,12517378,12648454,12713986,12910599,13041666,13172738,13238274,13369347,13959171,14024706,14090242,14221314,14680067,15466500,15597570,15728646,15990786,16318466,16384002,16449538],"spritecanmoveonpicturebox":[8454146,11206657,15728641],"select":[1703942,4521985,4915201,7274497,8060929,9568257,11206662,15532033,15728646],"spritesbasedoffanything":[4653057,5439489,10944514],"spritearrivedatwaypoint":[1114113,1179650,1572865,11206657,14942209,15728642],"spriteinfolist":[9961474,12582913,12845057],"specific":[6881281,7143425,11206657,14352385,14942209,15728642],"site":[15007745],"size":[1703937,2228228,3211265,3473409,4653057,4915204,5439490,6160385,6422532,6881281,7733252,8257537,8323073,9175044,9437185,11206658,11534343,11862022,11927553,12845060,14680068,14876674,15400962,15728650,15925250],"string":[393218,917506,1376258,1966083,2228228,2359297,2424835,2490371,2949124,4653060,4980740,5242881,5373954,5439492,5636100,5832706,6553602,6815748,9109505,10027012,10092546,10616833,11468803,11599875,11862017,11993091,12845061,12976131,13041666,13631490,13959171,14221315,15728641],"solid":[7864321,11862017,15728641],"spritebeingdestroyed":[4718594,14942209,15728641],"spritelist":[10289153,11206657,15728641],"spritenames":[2228226,5373955,12845058],"start":[1769474,3276801,5636097,7012354,7274498,10813441,11206659,14745601,15728643],"scratch":[1769473,11206657,15728641],"spritesinimagerectangle":[4653057,5439489,11403266],"soundisfinished":[4653057,5439489,13041666],"sender":[1835010,2883586,4653058,5439490,10813441,11272193,12910593,13238273],"spread":[6881281,12845057],"serialization":[2228227,2949122,5242882,6815745,6881284,8912898,12845059,15400962,15925252],"spritesthathavebeendrawn":[2162690,4653057,5439489],"spritesadpoint":[4653057,5439489,7340033],"summary":[4653057,5439489,15466497],"small":[2752513,4653060,5439492,6356994,7208961,10551297,15597569,16384001],"store":[2818050,5832705,6881281,8650754,12845057,15728642],"straight":[1114113,1572865,11206657,15728641],"spritedatabase":[851970,1376258,1966082,2228230,2359298,2424835,2555906,2949123,5242882,5373954,5439490,5636108,5832706,6815747,6881286,8912897,9371654,9961474,10092546,11337730,11534338,11993091,12582915,12845064,13631490,14483458,15400961,15925252],"simple":[2228225,2359297,11993089,12845057],"spriteentryform":[2228225,12845057,14483457],"speeding":[3211265,5439489,8323073],"structure":[4194305,6881282,8716289,8781825,9240577,13303810],"startx":[4980738],"system":[327682,393218,589825,655361,720899,1114113,1245187,1376257,1507329,1769474,1835009,1966083,2228226,2424834,2490369,2883586,3014659,3276803,3342337,3538946,3604481,3801089,4325377,4521986,4653059,4915202,4980737,5242881,5308417,5439492,5636097,5701633,5767169,5832705,5898241,6029313,6356994,6422529,6815745,7012358,7077889,7143427,7208962,7274502,7340033,7405570,7536641,7798788,7929857,7995393,8060931,8454145,8847361,9371649,9568260,9633793,10027009,10551297,10682369,10813442,10878977,11403265,11468801,11534338,11796481,11993090,12058625,12255233,12517377,12648449,12713986,12845059,12910594,13041665,13631489,13828098,13959169,14221313,14286849,14483457,14680066,14745602,15073282,15532033,15597569,15728641,15859713,15925249,16056322,16121857,16384001],"shown":[7798785],"starting":[5242881,7274497,9109505,9502721,13565953],"separate":[2228225,2359297,12845057],"space":[10813441,11534337],"sound":[393218,4653058,5439490,13041667],"shootingfieldform":[9371650,10813442,12648450,12910594],"spriteoriginname":[6553603,11862018,15728642],"seticon":[2228225,12845057,14483458],"spriteadjustmentratio":[3473411,3866628,4194307,6881281,8716290,8781827,9240578,11206657,13303811,15728641],"spritecontrollers":[2228225,4653057,4980737,5439489,5832705,10616833,12845057],"spritehitssprite":[11730946,14942209,15728641],"shares":[4653057,5439489,15466497],"swing":[6750209,14942209,15728641],"save":[851971,2228229,2949121,5242881,5636099,6815745,6881284,8912897,11993089,12845061,15400961,15925252],"serializing":[2228225,2359297,5242881,6881282,8912897,12845057,15400961,15925250],"spritetoadd":[14090242],"spritename":[917506,8257538,9633794,11862017,12976130,13959170,15400961,15728643,15925249],"spritecanmoveonimage":[11206657,12058626,15728641],"spriteinitializes":[2293762,14942209,15728641],"setsize":[6422530,11206657,15728641],"stopped":[10813441,14548993],"storing":[2555905,4325377,5439489,6881281,9371649],"sends":[4653057,5439489,13369345],"stretched":[589825,3866625,6160385,7929857,9175041,11206658,11862019,11927553,15728645],"specialfolder":[5636098],"static":[1376257,2359297,2949121,6815745,11993089,13631489],"spritepayloads":[4325377],"struct":[13303809],"sendtofront":[11206657,15728641,16187394],"simplest":[5242881,6881282,15925249],"strings":[5373953],"spritelibrary":[65541,131077,196614,262145,327685,393221,458759,524294,589829,655365,720901,786437,851973,917509,983045,1048582,1114117,1179654,1245189,1310725,1376261,1441797,1507333,1572866,1638406,1703938,1769477,1835014,1900549,1966085,2031621,2097157,2162693,2228226,2293766,2359301,2424837,2490373,2555906,2621446,2686981,2752514,2818053,2883589,2949125,3014662,3080197,3145730,3211269,3276805,3342341,3407874,3473413,3538949,3604485,3670022,3735557,3801093,3866629,3932165,3997698,4063238,4128774,4194306,4259845,4325382,4390919,4456453,4521989,4587525,4653058,4718598,4784133,4849666,4915205,4980741,5046278,5111814,5177349,5242886,5308421,5373957,5439494,5505029,5570565,5636101,5701637,5767174,5832710,5898245,5963778,6029317,6094854,6160389,6225925,6291461,6356994,6422533,6488069,6553605,6619142,6684677,6750214,6815749,6881287,6946821,7012358,7077893,7143429,7208965,7274501,7340037,7405573,7471110,7536645,7602181,7667718,7733253,7798790,7864325,7929861,7995398,8060933,8126471,8192002,8257538,8323074,8388614,8454149,8519685,8585221,8650754,8716293,8781826,8847366,8912901,8978437,9043973,9109506,9175045,9240581,9306117,9371654,9437189,9502726,9568261,9633798,9699330,9764869,9830405,9895941,9961477,10027014,10092549,10158085,10223621,10289157,10354694,10420229,10485765,10551301,10616834,10682373,10747906,10813445,10878981,10944517,11010050,11075589,11141126,11206658,11272198,11337734,11403269,11468805,11534341,11599877,11665414,11730950,11796485,11862018,11927557,11993093,12058629,12124166,12189702,12255237,12320774,12386309,12451845,12517381,12582914,12648453,12713989,12779526,12845062,12910597,12976133,13041669,13107205,13172742,13238278,13303813,13369350,13434885,13500421,13565957,13631493,13697029,13762565,13828101,13893637,13959173,14024710,14090246,14155781,14221317,14286853,14352390,14417925,14483461,14548997,14614533,14680070,14745605,14811141,14876677,14942210,15007745,15073285,15138821,15204353,15269894,15335429,15400962,15466502,15532037,15597573,15663109,15728646,15794181,15859717,15925254,15990789,16056326,16121861,16187397,16252933,16318466,16384005,16449541],"spritetofront":[4653057,5439489,7667714],"sit":[14548993],"sloppy":[4653058,5439490,12517378],"screen":[4653058,5439490,7077889,15466497],"spritearrivedatendpoint":[1114113,1572866,11206658,14352386,14942209,15728643,15859713],"startpoint":[5242881,9109505,13565954],"spritecount":[5439489,8978434,10747905],"signals":[6881281,14548993],"steps":[3276801,11206657,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_116.json b/SpriteLibrary/Doc/Help/fti/FTI_116.json index 70068df..3f79fc8 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_116.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_116.json @@ -1 +1 @@ -{"twice":[1835009,4063233,4325377,12910593],"tostring":[3342337,3473409,3604481,3932161,4063233,4325377,4915201,10289153,10747905,11927553,13041665],"takes":[1114113,2883585,4063238,4325382,5505025,5898243,5963777,6553601,6946817,7012353,10027011,10878978,11403266,12058625,13041670],"taken":[2686977,4063234,4325377,5439489,9306113],"types":[3604481,6881284,9175044],"tiny":[9830401,10747905,13041665],"try":[1703937,3342337,3604481,4063236,4325377,4915201,6881282,7405569,10747905,11927553,13041665],"terrible":[9633793],"timespan":[9240577],"tpayload":[3604482],"thumb":[10027009,11403265,13041665],"transparency":[9175041],"title":[983041],"tricky":[10027009,11468801,13041665],"targetsprite":[5111809,6094850,11927553],"traveling":[1966081,5308418,9830401,10747906,11206657,13041667],"timage":[12910594],"twoimage":[1835010,4063234,4325378,12910594],"transforms":[4063233,4325377,7012353],"tanksprite":[3604484],"top":[1376263,1769473,1835009,2031617,2490369,2752513,2949121,3080193,3342337,3473409,3604482,4063237,4325377,4718593,4915201,5046274,5111809,5636097,5832705,5898241,7143425,7405569,7536641,7667713,7798785,7864321,8650753,9175041,9306113,10027011,10092545,10289154,10747912,11206657,11534337,11927555,12582915,13041678],"timing":[10223617,10616833,11206658,13041666],"thought":[6881281,9175041],"two":[1835009,3670017,4063233,4325377,9175041,10747905,11141121,11206657,12582914,12910593,13041666],"toplay":[65538],"tell":[458753,786433,917505,1769475,1835011,3407873,4063236,4325380,5373953,8126465,8454145,10027011,10747908,11206661,11468802,12124162,12320770,12910595,13041676],"timertickmethod":[9568258],"turn":[786433,1769473,10747905,13041665],"tapping":[9240577],"trying":[1310722,1769473,2162690,5111809,9109505,10747905,11337729,11927553,13041665],"transparent":[6946817,7208961,7471105,10027009,10223617,10747905,11206659,11599873,13041669],"think":[2949122,4063235,4325379,5767169,8519681,8781825],"thing":[589825,2949122,4063236,4325380,5767169,8192001,8519681,8781825,10027009,13041665],"triggers":[1179649],"togoinfrontof":[6160386],"track":[327681,3735553,6029313,7667714,10747907,13041667],"tyounglightsys":[6881281],"triggered":[786434,1769474,2949122,4063237,4325381,5767169,8257537,8323073,8519681,8781825,10747906,13041666],"time":[589825,786433,917505,1769473,2097153,3407873,4063233,4259841,4325377,4718594,5701633,5832705,6946818,7798785,8912897,8978433,9240578,10027016,10682369,10747905,11206658,11403265,11468803,12255233,13041677],"target":[3670018,7602178],"tells":[524289,8454145,10027010,13041666],"true":[589825,786433,1703938,1769474,3211265,3407873,3932162,4063235,4259841,4325377,5111809,5767169,6815746,7208962,7274497,7340033,7405570,7602177,8454145,8781825,8912897,9240582,9437186,10027013,10747910,11010049,11468803,11927553,11993089,12320769,13041675],"togobehind":[196610],"tick":[4063234,4325378,9043971,9240577,9568257],"terms":[2621441,4063234,4325378,5505025],"tracks":[6881281,13041665],"totalmilliseconds":[9240577],"topic":[1],"timer":[2490369,4063233,9240579],"times":[1441793,2424833,10027011,10747905,11468802,13041668],"total":[12451841],"taking":[2424833,3145729,4063233,4325377,5505025,7012353,10747906,13041666],"tankpayload":[2097153,3604485,4718593,13041665],"tries":[9240577],"type":[65538,131073,196610,262146,327682,393219,458753,524289,589825,655361,720897,786433,851969,917505,1048579,1114116,1179650,1245186,1310721,1441793,1507329,1572865,1638402,1703937,1900545,1966081,2097153,2162691,2228225,2293761,2359298,2424835,2490369,2555905,2621442,2752514,2818050,2883586,3080194,3145729,3211267,3276801,3342338,3407873,3473411,3538945,3604482,3670018,3735553,3866625,3932162,3997697,4128770,4063235,4194305,4259841,4325379,4390913,4456449,4587521,4653057,4718593,4784129,4849665,4915202,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505026,5570561,5701633,5767170,5832710,5963781,6029313,6094849,6160386,6225923,6291457,6356993,6422530,6488065,6553602,6619138,6684673,6750209,6815746,6881281,6946817,7012354,7077895,7143425,7208963,7274497,7340035,7405569,7471105,7602178,7733249,7798788,7929857,7995393,8192002,8257537,8323073,8454145,8519681,8585217,8650755,8716289,8781825,8912898,8978434,9043969,9109506,9240577,9306113,9371649,9437186,9502722,9568258,9633794,9699329,9764865,9830401,9895937,9961474,10027009,10092545,10158081,10223617,10289155,10420225,10485761,10551297,10616833,10682369,10747907,10813442,10878978,10944513,11010050,11075585,11141121,11206657,11272194,11337729,11403265,11468801,11599873,11665409,11730946,11796481,11862018,11927554,11993090,12058627,12124161,12189697,12255233,12320769,12451843,12517377,12582913,12648450,12713985,12845057,12910593,12976129,13041667],"things":[327681,1835009,3735553,4063233,4325377,4718594,5570561,6029313,7667714,9240577,9699329,10420225,10747908,10944513,12910593,13041670],"told":[5373953,10027010,11206657,11468802,13041667]} \ No newline at end of file +{"twice":[2752513,4653057,5439489,16384001],"tostring":[2228225,3407873,3997697,4194305,4325377,4653057,4849665,4980737,5242881,5439489,5963777,11206657,12845057,13303809,15728641,15925249,16056321],"tools":[2555905,5439489,9371649],"takes":[2228225,3014657,3801089,4653062,5439494,6881281,7077889,7340033,7798785,7864321,7929857,8257539,11534337,11862019,12517378,12845058,12976130,14680065,15728646],"taken":[3735553,4653057,5439490,6946817,10747905],"types":[4325377,6881284,9502724],"tiny":[11206657,12451841,15728641],"try":[1966081,2228225,3211265,5439491,6881282,8323073,12845057,15007745,15204353],"terrible":[9633793],"timespan":[10813441],"tpayload":[4325378],"thumb":[11862017,12976129,15728641],"transparency":[9502721],"title":[262145],"tricky":[11862017,13697025,15728641],"targetsprite":[6488066,8192001,16056321],"traveling":[2621441,7602178,11206658,12451841,14942209,15728643],"timage":[16384002],"twoimage":[2752514,4653058,5439490,16384002],"transforms":[4653057,5439489,7929857],"tanksprite":[4325380],"top":[1572865,1703943,2228225,2555905,2752513,3145729,3407873,3997697,4194305,4325378,4521985,4653057,4849665,4915201,5177346,5242884,5439493,5505025,5963777,6356993,7274497,8060929,8192001,8257537,8323073,8650753,8781825,9109506,9568257,9502721,9699329,10616833,10747905,11010049,11206664,11862019,12582913,12845059,13303810,13565953,14942209,15204353,15400961,15532033,15728654,15925251,16056323,16318465,16449539],"timing":[11141121,12779521,14942210,15728642],"thought":[6881281,9502721],"two":[2752513,4390913,4653057,5439489,9502721,11206657,11730945,14942209,15728642,16384001,16449538],"toplay":[393218],"tell":[524289,851969,1114113,1179649,1572867,1966081,2228226,2752515,4653060,4718593,5111809,5439492,10289153,10485761,11206660,11862019,12845058,13697026,14352386,14876673,14942213,15400961,15728652,15859714,15925249,16384003],"timertickmethod":[12910594],"turn":[1114113,1572865,2949121,11206657,15728641],"tapping":[10813441],"trying":[1572865,1638402,2949122,3538946,4653057,5439489,6815745,8192001,11206657,11403265,11665409,13434881,15728641,16056321],"templates":[2228225,4653057,5439489,5636098,5832705,11337729,11665409,12845057],"toset":[14483458],"theresourcemanager":[2424834],"transparent":[7471105,7864321,8847361,11206657,11862017,12189697,12779521,14942211,15728645],"think":[4653059,5439491,6356994,7208961,10551297,15597569],"thing":[786433,1966081,2228225,4653060,5439492,6356994,7208961,10027009,10551297,11862017,12845057,15597569,15728641],"triggers":[1835009],"togoinfrontof":[8126466],"track":[327681,5701633,5898241,9699330,11206659,15728643],"tyounglightsys":[6881281],"tocopyfrom":[10354690],"triggered":[1114114,1572866,4653061,5439493,6356994,7208961,10551297,11206658,11272193,13238273,15597569,15728642],"typo":[15204353],"time":[786433,1114113,1179649,1572865,2228225,2555905,2818049,3604481,4653057,5111809,5439490,5832705,6750209,6881284,7274497,7864322,8650754,9371649,9568257,10813442,11206657,11862024,12255233,12713985,12845061,12976129,13697027,14614529,14811137,14942210,15728653],"target":[4390914,7536642],"tells":[983041,5242881,9109505,10485761,11862018,13107201,15728642],"true":[786433,1114113,1572866,3211266,3604481,4653057,4980738,5111809,5439491,5767169,7208961,7536641,8192001,8323074,8388609,8454146,8847362,9306113,10485761,10813446,11206662,11862021,12058626,12713985,13041665,13697027,14745601,15597569,15728651,15859713,16056321],"togobehind":[458754],"template":[2228225,3080193,4653058,4980737,5439490,5832706,10616833,12845057],"tick":[4653058,5439490,10682371,10813441,12910593],"terms":[3342337,4653058,5439490,7077889],"toserialize":[2949122],"tracks":[65537,5242881,6881281,9109505,15728641],"totalmilliseconds":[10813441],"topic":[1],"timer":[3145729,5439489,10813443],"times":[1900545,1966081,2228225,3276801,11206657,11862019,12845057,13697026,15728644],"todeserialize":[6815746],"total":[15073281],"taking":[3276801,3866625,4653057,5439489,7077889,7929857,11206658,15728642],"tankpayload":[2818049,4325381,8650753,15728641],"tries":[10813441],"type":[65537,131073,196609,327682,393218,458754,524289,589826,655361,720899,786433,917505,983041,1048577,1114113,1179649,1245187,1310721,1376261,1441793,1507330,1638401,1769474,1835010,1900545,1966083,2031617,2162689,2228228,2293761,2359300,2424834,2490369,2621441,2686977,2818049,2883586,2949124,3014660,3080193,3145729,3211265,3276803,3342338,3407873,3473409,3538947,3604481,3670017,3801090,3866625,3997697,4063233,4128769,4194305,4259841,4325377,4390914,4521986,4587521,4653058,4718593,4849665,4915202,4980738,5046273,5111809,5177345,5242881,5308418,5373953,5439490,5570561,5636097,5701633,5767171,5832707,5898241,5963777,6029314,6094849,6160385,6225921,6422529,6488065,6553601,6619137,6684673,6750209,6815749,6881281,6946817,7012359,7077890,7143427,7208962,7274502,7340034,7405570,7471105,7536642,7602177,7667713,7733249,7798789,7864321,7929858,7995394,8060931,8126466,8192001,8323073,8388611,8454146,8519681,8585217,8650753,8716289,8781825,8847363,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371650,9568260,9633794,9764865,9830401,9895937,9961473,10027010,10092545,10354689,10420225,10485761,10551297,10682369,10747905,10813441,10878977,10944513,11141121,11206658,11272193,11337729,11403266,11468802,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993093,12058626,12124161,12189697,12255234,12320769,12386305,12451841,12517378,12582913,12648449,12713986,12779521,12845060,12910594,12976129,13041666,13107201,13172738,13238273,13303809,13369346,13434881,13500417,13565953,13631494,13697025,13762561,13828098,13893633,13959170,14024705,14090241,14155777,14221314,14286849,14352385,14483457,14548993,14614529,14680067,14745602,14811137,14876673,14942209,15073283,15138817,15269889,15335425,15400961,15466497,15532033,15597569,15728642,15794177,15859713,15925249,15990785,16056321,16121858,16252929,16384001,16449537],"things":[327681,1966081,2228225,2752513,4653058,5439490,5570561,5701633,5898241,8650754,9699330,10813441,11206660,11796481,12386305,12845057,14548993,15466497,15728646,16384001],"told":[4718593,11862018,13697026,14942209,15728643]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_117.json b/SpriteLibrary/Doc/Help/fti/FTI_117.json index 34810b0..1a87278 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_117.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_117.json @@ -1 +1 @@ -{"unhidesprite":[5636098,10354689,10747906,13041666],"unless":[327681,393217,3735553,7667714,8454145,10027010,10747908,11468801,11665409,13041670],"unpause":[4063234,4325378,4587524,5177348,10747906,10944515,13041666],"usually":[524289,2490369,2686977,4063236,4325379,4784129,6946817,9240577,9830401,10027012,10747905,11403265,11796481,11862017,13041669],"user":[3604481,6881281],"using":[327683,1048577,1376257,1441793,2162689,2424833,2818049,3735555,4063233,4325377,4653057,4718595,5308417,5570561,5636097,6029313,6225921,6553601,6881282,7012353,7340033,7667718,7864322,7929858,8454145,9240577,9699329,10027012,10747923,11665409,12189697,12255233,12713985,12976129,13041690],"useful":[262145,1966081,2555905,6881281,9175041,10747905,11206658,13041667],"uses":[393217,2883585,3080193,4063234,4325378,6553601,9240577,10747905,13041665],"unpaused":[10944514],"used":[262146,458753,851970,1179649,1835009,2228225,3014657,3145730,3211265,4063235,4325379,4390913,5111811,6553601,6881282,7012353,7274497,9175041,9568257,10027010,10747907,11206657,11403265,11927555,13041670],"uncleaer":[12582913]} \ No newline at end of file +{"users":[2424833],"unhidesprite":[5505026,11206658,15663105,15728642],"url":[15204353],"update":[5963777,10354689,15925249],"unless":[327681,720897,1966081,2228225,5701633,9699330,10485761,11206660,11862018,12845057,13697025,14286849,15728646],"unlink":[4653058,5439490,11665410],"unlinkcontrollersforspritetemplatesharing":[4653057,5439489,11665410],"unique":[917505,15400961,15925249],"unpause":[4653058,5046276,5439490,6094852,11206658,14548995,15728642],"usually":[851969,983041,1966081,2031617,2228226,2424833,3145729,3735553,4653059,5439492,7864321,10813441,11206657,11862020,11993090,12451841,12845058,12976129,14090241,14221313,15728645],"user":[4325377,6881281],"using":[327683,1245185,1703937,1900545,1966081,2228227,3276801,3538945,4653058,5308417,5439490,5505025,5570561,5636097,5701635,5898241,6422529,6881283,7143425,7340033,7602177,7929857,8388609,8650755,9699334,10485761,10813441,10878978,11010050,11206675,11337729,11862020,11993089,12386305,12845060,13762561,14286849,14614529,15728666,15794177,16252929],"useful":[589825,2621441,3670017,6881281,9502721,11206657,14942210,15728643],"usesmartimages":[1966083,2228225,12845057],"uses":[720897,2228226,2555905,2949121,3801089,4521985,4653058,5242881,5439491,6815745,6881282,7340033,8912897,9371649,10813441,11206657,12845058,15400961,15728641,15925250],"unpaused":[14548994],"usualy":[1966081,2228225,12845057],"used":[524289,589826,1310722,1835009,2752513,3473409,3866626,4456449,4587521,4653059,5242882,5439491,5767169,6881285,7340033,7929857,8192003,9306113,9502721,11206659,11862018,12910593,12976129,14942209,15728646,15925249,16056323],"uncleaer":[16449537]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_118.json b/SpriteLibrary/Doc/Help/fti/FTI_118.json index b1db9ed..679b527 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_118.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_118.json @@ -1 +1 @@ -{"visible":[131073,3276801,3538945,4063234,4325377,5242881,6553601,8585217,9306113,10027011,10158081,11206658,13041669],"values":[1179649,2097153,4718593,6881281,9175041,13041665],"vertically":[1048577],"vanishes":[589825,3407873,4063233,4325377,10027009,13041665],"virtual":[2621441,4063233,4325377],"various":[2097154,4718594,6881281,9175041,13041666],"visiblewidth":[10027009,10158082,13041665],"vectors":[7929857,10747905,13041665],"visibleheight":[3538946,10027009,13041665],"value":[131073,262145,458753,524289,589825,720897,851969,917505,1048577,1441793,1507329,1638401,1703937,1900545,1966081,2097153,2162689,2228225,2293761,2555905,2621441,2818049,2883585,3145729,3211265,3276801,3538945,3932161,3997697,4128769,4194305,4390913,4456449,4784129,4849665,4980737,5046273,5242881,5308417,5373953,5439489,5505025,5570561,5701633,5767169,6094849,6291457,6488065,6553601,6684673,6750209,6815745,6946819,7012353,7208961,7274497,7340033,7471105,7602177,7733249,7995393,8454145,8519681,8585217,8781825,8978433,9109505,9175041,9240577,9437185,9502721,9699329,9764865,9830402,10027011,10158081,10223617,10485761,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11272193,11337729,11403265,11468802,11599873,11730945,11862017,12124161,12189697,12255233,12451841,12517377,12582913,12648449,12713985,12845057,12976129,13041668],"vector":[4718593,6881281,7929861,10747907,12255233,12517380,13041669],"verify":[589825,10027009,13041665],"variable":[10747905,11993089,13041665],"version":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1900545,1966081,2097153,2162689,2228225,2293761,2359297,2424833,2555905,2621441,2686977,2752513,2818049,2883585,3014657,3080193,3145729,3211265,3276801,3407873,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4063234,4194305,4259841,4390913,4456449,4521985,4587521,4653057,4784129,4849665,4980737,5046273,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684674,6750209,6815745,6946817,7012353,7077889,7208961,7274497,7340033,7471105,7602177,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10813441,10878977,10944513,11010049,11075585,11141121,11272193,11337729,11403265,11468801,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665],"valuetype":[3473411,10289155],"void":[65537,196609,327681,393217,655361,786433,1048577,1179649,1245185,1310721,1572865,1835009,2359297,2424833,2686977,2752513,3014657,3080193,3407873,3670017,3735553,3801089,3866625,3932161,4063233,4259841,4325377,4587521,4653057,5177345,5636097,5832705,6029313,6160385,6225921,6356993,6619137,7798785,7929857,8060929,8126465,8192001,8257537,8323073,8388609,8650753,8716289,8847361,8912897,9043969,9240577,9371649,9568257,9895937,9961473,10092545,10354689,10420225,10813441,11665409,11796481,11993089,12320769,12386305,12910594]} \ No newline at end of file +{"visible":[196609,2228225,2359297,4063233,4653057,5242882,5439490,6160385,6881284,7340033,8912898,8978433,9175041,10747905,11862019,11927553,12845057,14942210,15400962,15728645,15925252],"values":[65537,1835009,2818049,5242881,6881281,8650753,9109505,9502721,15728641],"vertically":[1245185,5242881,9109505,9437185,14155777],"vanishes":[786433,4653057,5111809,5439489,11862017,15728641],"virtual":[3342337,4653057,5439489],"various":[2818050,5636097,6881281,8650754,9502721,15728642],"visiblewidth":[11862017,11927554,15728641],"vectors":[10878977,11206657,15728641],"visibleheight":[6160386,11862017,15728641],"value":[65537,131073,196609,524289,589825,786433,917505,983041,1048577,1179649,1245185,1310721,1376257,1441793,1507329,1900545,1966081,2031617,2162689,2228229,2293761,2359298,2621441,2686977,2818049,2949123,3080193,3211265,3342337,3473409,3538945,3670017,3801089,3866625,4063233,4259841,4587521,4718593,4980737,5177345,5242885,5308417,5373953,5570561,5767169,5832705,6029313,6160385,6225921,6488065,6553601,6619137,6684673,6750209,6815747,6946817,7077889,7208961,7340033,7471105,7536641,7602177,7733249,7864323,7929857,8388609,8454145,8519681,8585217,8716289,8847361,8912897,8978433,9043970,9109509,9175041,9240577,9306113,9437185,9502721,9764866,9830401,9895937,9961473,10092545,10420225,10485761,10551297,10813441,10944513,11141121,11206657,11403265,11468801,11599873,11730945,11862019,11927553,11993091,12058625,12189697,12255233,12386305,12451842,12517377,12779521,12845061,12976129,13041665,13107202,13172737,13434881,13500417,13565954,13697026,13762561,13828097,13893633,13959169,14155778,14221313,14352385,14548993,14614529,14811137,14876673,15073281,15138817,15269889,15335425,15597569,15728644,15794177,15990785,16121857,16252929,16449537],"vector":[6881281,8650753,10878981,11206659,14614529,15138820,15728645],"variables":[2228226,12845058,13631490],"verify":[786433,11862017,15728641],"viewpercent":[14876674,15400961,15925249],"variable":[2949121,11206657,14745601,15728641],"version":[65537,131073,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1638401,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2490369,2621441,2686977,2818049,2883585,2949121,3014657,3080193,3211265,3276801,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,4063233,4128769,4259841,4325377,4390913,4456449,4521985,4587521,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439490,5505025,5570561,5636097,5701633,5767169,5832705,5898241,6029313,6094849,6160385,6225921,6291457,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8388609,8454145,8519682,8585217,8716289,8847361,8912897,8978433,9043969,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10682369,10747905,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,15073281,15138817,15269889,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16384001,16449537],"valuetype":[4194307,13303811],"void":[327681,393217,458753,655361,720897,851969,1114113,1245185,1638401,1769473,1835009,2490369,2752513,2883585,3276801,3604481,3735553,4128769,4390913,4456449,4521985,4653057,4784129,4915201,4980737,5046273,5111809,5439489,5505025,5636097,5701633,5898241,6094849,6422529,7143425,7274497,7405569,7667713,8060929,8126465,9568257,10027009,10158081,10223617,10289153,10354689,10682369,10813441,10878977,11075585,11272193,11337729,11534337,11665409,11796481,12124161,12320769,12713985,12910593,13238273,13369345,13631489,13828097,14024705,14090241,14286849,14483457,14745601,15466497,15532033,15663105,15859713,16187393,16384002]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_119.json b/SpriteLibrary/Doc/Help/fti/FTI_119.json index 3345348..f272b4e 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_119.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_119.json @@ -1 +1 @@ -{"whattosend":[196610,6160386],"width":[1114117,4063235,4325379,4653058,5505030,5832707,5898245,5963780,6881281,7077891,7798787,8650755,9175041,10027009,10158081,10289153,10747905,12058626,13041671],"ways":[1835009,4063233,4325377,12910593],"www":[6881281],"working":[9175041],"waypoints":[8060929,10747905,13041665],"windowsbase":[6881281],"warning":[393217,2162689,6946817,7864322,10027009,10747907,12976129,13041668],"whe":[3407873,4063233,4325377],"want":[131073,196609,327682,393218,589825,720897,1048577,1245186,1376270,1835009,1966081,2031617,2424834,2555905,2752514,3080194,3276801,3604481,3735554,4063237,4325380,4587521,4980737,5046274,5373953,5701633,5832706,6029313,6160385,6356993,6881281,6946817,7471105,7667716,7798786,8257537,8323073,8650754,9175041,9240579,9568257,9633793,9830401,9895937,10027012,10092546,10420225,10551297,10747927,10813441,10878977,11206666,11599873,11665409,11862017,11993089,12582913,12910593,13041701],"windows":[2359297,5767169,6881282,7929857,9240577,9568257,10551297],"whichframe":[6225922,12451842],"walking":[1376268,2424833,2752514,3080194,4718593,5832706,7798786,8650754,9699329,10092546,10747917,13041678],"wide":[5505025],"works":[4718594,5570561,6881281,9175041,9699329,10420225,10747905,13041667],"wish":[393217,10747905,12451841,13041665],"width_ratio":[7143425,7733250,10289153],"whichanimation":[1245186,2424834,6225922,6619138,8978434,11993090,12451842],"write":[2162689,7864322,10747906,12976129,13041666],"window":[2686977,4063233,4325377,6029313,6881281,10747905,13041665],"way":[327681,1572865,1835009,3735553,4063233,4325377,5898241,6029313,7667714,9633793,10420225,10747909,12910593,13041670],"work":[2490369,3145729,3276801,4063233,9240577,10747905,11206657,13041666]} \ No newline at end of file +{"whattosend":[458754,8126466],"writetoxmlstring":[2228226,2949122,6815745,12845058],"width":[3014661,4653059,5242883,5439491,6225923,6422530,6881281,7012355,7077894,7274499,7798788,8060931,8257541,9109507,9568259,9502721,11206657,11862017,11927553,13303809,13565953,14680066,15728647],"ways":[2752513,4653057,5439489,6881282,9437186,16384001],"www":[6881281],"wrapper":[2228225,5832705,12845057],"web":[15204353],"working":[9502721],"writetoxmlfile":[2228227,11993090,12845059,13631490],"waypoints":[10158081,11206657,15728641],"windowsbase":[6881281],"warning":[720897,3538945,7864321,11010050,11206659,11862017,15728644,15794177],"whe":[4653057,5111809,5439489],"want":[196609,327682,458753,720898,786433,851969,1048577,1245185,1703950,1769474,1966081,2228227,2555906,2621441,2752513,3276802,3670017,4063233,4325377,4521986,4653063,4718593,4915202,5177346,5242885,5439497,5636098,5701634,5832705,5898241,6094849,6619137,6750209,6881284,7274498,7471105,7667713,7864321,8060930,8126465,8912897,9109507,9371649,9568258,9502721,9633793,9699332,10813443,11206679,11272193,11599874,11665409,11796481,11862020,12189697,12320769,12451841,12517377,12648449,12845059,12910593,13238273,13565953,13631489,13828097,14221313,14286849,14745601,14876673,14942218,15400962,15466498,15532034,15728677,15925251,16384001,16449537],"windows":[2883585,6881282,7208961,9371649,10813441,10878977,12648449,12910593],"whichframe":[7143426,15073282],"walking":[1703948,3276801,4521986,4915202,7274498,8060930,8650753,9568258,11206669,12386305,15532034,15728654],"wide":[7077889],"works":[131073,2228225,2359297,4849665,5242881,5570561,5963777,6881281,8650754,9502721,9830401,11206657,11796481,12386305,12845057,15728643,15925249],"wish":[720897,11206657,15073281,15728641],"width_ratio":[8716290,8781825,13303809],"whichanimation":[1769474,3276802,7143426,7405570,12255234,14745602,15073282],"write":[3538945,11010050,11206658,13631490,15728642,15794177],"window":[2228226,3735553,4653060,5439492,5636099,5898241,6881281,11206657,11665411,12845058,15728641],"written":[2228226,12845058,13631491],"way":[327681,2228226,2490369,2752513,2949121,4653058,5439490,5701633,5898241,6815745,8257537,9633793,9699330,11206661,11796481,12845058,15466497,15728646,16384001],"writes":[2228225,12845057,13631489],"work":[3145729,3866625,4063233,5439489,10813441,11206657,14942209,15728642]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_120.json b/SpriteLibrary/Doc/Help/fti/FTI_120.json new file mode 100644 index 0000000..e12e3bd --- /dev/null +++ b/SpriteLibrary/Doc/Help/fti/FTI_120.json @@ -0,0 +1 @@ +{"xml":[1376258,2228235,2424833,2949126,5242882,5636099,6815749,6881284,8912898,11993089,12845067,13631489,15400962,15925252],"xmlresourcetoload":[11993090],"xmlignore":[2228225,12845057,13631489]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_122.json b/SpriteLibrary/Doc/Help/fti/FTI_122.json index 3cda34c..e36cc0b 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_122.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_122.json @@ -1 +1 @@ -{"zvalues":[12582913],"zvalue":[5046274,10027009,12582915,13041665]} \ No newline at end of file +{"zvalues":[16449537],"zvalue":[5177346,11862017,15728641,16449539]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_97.json b/SpriteLibrary/Doc/Help/fti/FTI_97.json index 9c92ac1..ea80738 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_97.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_97.json @@ -1 +1 @@ -{"allow":[4063233,7405569,12582913],"access":[2097153,4718593,13041665],"animaton":[5701633,11206657,13041665],"assembly":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703937,1900545,1966081,2097153,2162689,2228225,2293761,2359297,2424833,2555905,2621441,2686977,2752513,2818049,2883585,3014657,3080193,3145729,3211265,3276801,3407873,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4128769,4063233,4194305,4259841,4390913,4456449,4521985,4587521,4653057,4784129,4849665,4980737,5046273,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7208961,7274497,7340033,7471105,7602177,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10813441,10878977,10944513,11010049,11075585,11141121,11272193,11337729,11403265,11468801,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665],"area":[4063233,9568258,10551298],"adjustrectangle":[2818050,4063233,4325377],"accessible":[4063233,7405569,7995393],"animatejustafewtimes":[2424834,10747907,11993090,13041667],"actual":[2424833,3538945,4063233,4325377,7208961,10027010,10158081,10747905,11862017,11993089,13041667],"args":[2883585,4063233,4325377],"animating":[6946818,10027012,10747905,10944513,11468802,11993089,13041669],"adjust":[2818049,4128769,4063234,4325378,5111809,11337729,11927553],"allows":[1179650,3342337,3604481,4063233,4325377,4915201,6881282,10747905,11927553,13041665],"animateonce":[10027009,10747905,11468801,11993090,13041666],"attribute":[786433,1769473,10747905,13041665],"automatic":[10944513],"away":[4980737,7471105,11206658,13041666],"animate":[458753,1900545,9895937,10027011,10747905,11206658,11468803,13041670],"affects":[6225921,8585217,10027009,10747905,13041666],"automaticallymoves":[3932161,4718593,9240578,10027009,12255233,12713986,13041666],"addanimation":[1048579,1376265,2752515,3080195,4718594,5570561,5832707,7798787,8650755,9699329,10092547,10747912,10813443,13041674],"absoloute":[4063233,4325377,6553601],"armor":[2097154,3604482,4718594,13041666],"avoid":[4063233,6881281,9240577],"adjustment":[2228225,4063233,4325377,6881281,10289153],"animations":[1048577,1376264,1507329,2424833,2752513,3080193,4063233,5832705,5963777,6619137,7798785,8650753,10027009,10092545,10747913,10813441,13041674],"angleindegrees":[655362],"actually":[589825,1703937,1835010,4063235,4325378,7405569,10027009,10420226,10747906,12910594,13041667],"added":[6881281,9175041,11862017],"associating":[7077889],"aspects":[4587521,6881281,9895937,13041665],"angle":[1441793,10027009,11665409,13041665],"affect":[1835009,2162689,4063233,4325377,5111809,7864322,7929857,10747907,11337729,11927553,12910593,12976129,13041667],"articles":[6881281],"animationdone":[2424833,10027010,10747906,11468803,11993089,13041668],"animates":[5963777],"add":[1376268,2752514,3080194,3604481,4063236,4325380,5832706,6881283,7798786,8257537,8323073,8650754,9175041,10092546,10747916,10813441,11796483,13041676],"animation_index":[2162690],"angleinradians":[11665410],"animationindex":[10027009,12189698,13041665],"asking":[7208961,10747905,13041665],"according":[2818049,4063233,4325377],"animationframetoendon":[2424834,11993090],"animated":[6881282,13041665],"ask":[7340033,10747905,13041665],"adjustpoint":[4128770,4063233,4325377],"animation":[393222,458754,1048580,1114116,1245187,1376286,2162690,2424841,2752517,3080197,3997697,5701633,5832709,5898243,5963778,6225923,6422529,6619140,6881281,7077890,7798789,8650757,8978435,9240578,9895937,10027013,10092549,10747952,10813444,10944514,11206659,11468802,11993095,12058627,12189698,12451842,12976129,13041724],"appear":[12582913],"associated":[4390913,10027009,13041665],"addsprite":[3932161,4063233,4325377,11796482],"animationtocopy":[1048578,10813442],"animate_once":[10027009,11468801,13041665],"action":[10354689,10747905,13041665],"adjusts":[6619137,10747905,13041665],"appears":[196609,4063233,4325377],"allsprites":[4063233,4194306,4325377],"automatically":[1,655361,1769473,4456449,4718593,8388609,10027009,10420225,10747908,12320769,12713985,13041670],"adjusted":[2818049,4063233,4325377,7012353],"animationcount":[1507330,10027009,13041665],"arrived":[786433,1769473,10747905,13041665]} \ No newline at end of file +{"allow":[5439489,8323073,16449537],"access":[2818049,8650753,11993089,15728641],"animaton":[6750209,14942209,15728641],"assembly":[65537,131073,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1638401,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2490369,2621441,2686977,2818049,2883585,2949121,3014657,3080193,3211265,3276801,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,4063233,4128769,4259841,4325377,4390913,4456449,4521985,4587521,4718593,4784129,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,6029313,6094849,6160385,6225921,6291457,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8388609,8454145,8519681,8585217,8716289,8847361,8912897,8978433,9043969,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10682369,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,15073281,15138817,15269889,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16384001,16449537],"area":[5439489,9371650,12648450,12910594],"adjustrectangle":[4653057,5308418,5439489],"accessible":[5439489,5636097,8323073,9895937],"animatejustafewtimes":[3276802,11206659,14745602,15728643],"actual":[2359297,3276801,4653057,5439489,6160385,8847361,11206657,11862018,11927553,14221313,14745601,15728643],"args":[3801089,4653057,5439489],"animating":[7864322,11206657,11862020,13697026,14548993,14745601,15728645],"able":[5636097],"animationtype":[65538,6881281,9437186],"adjust":[4653058,5308417,5439490,6029313,8192001,13434881,16056321],"allows":[1835010,6881282],"animateonce":[11206657,11862017,13697025,14745602,15728642],"attribute":[1114113,1572865,2228225,11206657,12845057,13631489,15728641],"animspeed":[5242881,9109505,15335426],"automatic":[14548993],"away":[6619137,7471105,14942210,15728642],"affects":[7143425,9175041,11206657,11862017,15728642],"animate":[524289,2293761,11206657,11862019,12320769,13697027,14942210,15728646],"automaticallymoves":[4980737,8650753,10813442,11862017,13762562,14614529,15728642],"addanimation":[1245187,1703945,4521987,4915203,5570561,7274499,8060931,8650754,9568259,11206664,12386305,13828099,15532035,15728650],"absoloute":[4653057,5439489,7340033],"animationtouse":[5242881,9043970,9109505],"armor":[2818050,4325378,8650754,15728642],"allnamedsprites":[3080194,4653057,5439489],"avoid":[5439489,6881281,10813441],"adjustment":[3473409,4653057,5439489,6881281,13303809],"animations":[1245185,1441793,1703944,3276801,4521985,4915201,5439489,7274497,7405569,7798785,8060929,8912899,9568257,11206665,11862017,13828097,15400962,15532033,15728650,15925250],"angleindegrees":[655362],"actually":[786433,2752514,3211265,4653058,5439491,8323073,11206658,11796482,11862017,15728643,16384002],"added":[5636097,6881281,9502721,14221313],"associating":[7012353],"administrator":[15007745],"aspects":[6094849,6881281,12320769,15728641],"angle":[1900545,11862017,14286849,15728641],"affect":[2752513,3538945,4653057,5439489,8192001,10878977,11010050,11206659,13434881,15728643,15794177,16056321,16384001],"articles":[6881281],"animationdone":[3276801,11206658,11862018,13697027,14745601,15728644],"animates":[7798785],"add":[851970,1703948,2228226,4325377,4521986,4653061,4915202,5439493,5636097,6881283,7274498,8060930,9568258,9502721,11206668,11272193,11337729,12845058,13238273,13828097,14090243,15532034,15728652],"animation_index":[3538946],"angleinradians":[14286850],"animationindex":[11862017,15728641,16252930],"asking":[8847361,11206657,15728641],"according":[4653057,5308417,5439489],"animationframetoendon":[3276802,14745602],"animated":[6881282,15728641],"ask":[8388609,11206657,15728641],"adjustpoint":[4653057,5439489,6029314],"available":[15204353],"animation":[524290,720902,1245188,1703966,1769475,3014660,3276809,3538946,4259841,4521989,4915205,5242882,6750209,6881281,7012354,7143427,7274501,7405572,7798786,7995393,8060933,8257539,9043970,9109506,9437186,9568261,10813442,11206704,11862021,12255235,12320769,13697026,13828100,14548994,14680067,14745607,14942211,15073282,15532037,15728700,15794177,16252930],"appear":[4653058,5439490,15466498,16449537],"associated":[4587521,11862017,15728641],"address":[15204353],"addsprite":[4653057,4980737,5439489,14090242],"animationtocopy":[1245186,13828098],"animate_once":[11862017,13697025,15728641],"action":[11206657,15663105,15728641],"adjusts":[7405569,11206657,15728641],"appears":[458753,4653057,5439489],"accessed":[2424833,12845057],"animationinfo":[65539,131077,2097156,2686978,4849667,5242889,6225922,6881283,8912898,9043970,9109508,9764866,10420226,11599874,13107202,13565954,14155778,15335426],"allsprites":[4653057,5439489,15990786],"application":[917505,15400961,15925249],"automatically":[1,655361,1572865,2228225,5832705,6684673,8650753,10223617,11206660,11796481,11862017,12845057,13762561,15466497,15728646,15859713],"adjusted":[4653057,5308417,5439489,7929857],"animationcount":[1441794,11862017,15728641],"arrived":[1114113,1572865,11206657,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_98.json b/SpriteLibrary/Doc/Help/fti/FTI_98.json index 217d1f4..a89a7f7 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_98.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_98.json @@ -1 +1 @@ -{"button":[6881281],"box":[1966081,2228228,2555905,2621442,2883585,4063237,4325381,4390913,4456450,4718594,5505026,7012353,8388609,8585217,10027010,10747905,10878977,11206658,13041671],"booleans":[1048577,1376257,10747905,13041665],"best":[5636097,10027009,10747905,12189697,13041666],"browse":[6881282],"basic":[1179649,6881281,10027009,11403265,13041665],"border":[2555905,11206657,13041665],"board":[6815745,9437185,10747906,13041666],"baseimagelocation":[4784130,10027009,13041665],"based":[393217,2818049,2883586,3932161,4063244,4325388,5898241,6553605,8912897,9109505,9502721,9633793,10420225,10747905,11730947,12845057,13041666],"basically":[2621441,3604481,4063233,4325377],"bool":[524289,589825,1048578,1703937,1769473,3211265,4259841,4456449,5570561,5767169,6815745,7208961,7274497,7340033,7602177,8454145,8781825,8912897,9240580,9437185,9633793,9699329,10682369,10747905,11010049,11468801,12320769,12713985,13041665],"base":[4653057,4784129,6881281,10027009,10747905,13041666],"beware":[6225921,10747905,13041665],"begin":[1769473,7077889,9240577,10747905,12320769,13041665],"backgroundimagelayout":[4063233,9240577,9568257,10551297],"bitmap":[1835010,4063234,4325378,12910594],"bit":[1310721,1441793,1769473,9830401,10027010,10420225,10747907,11468801,13041669],"backgroundimage":[327681,1835009,3735553,4063238,4325378,5439490,6684674,7667714,9240577,9306115,9568257,10551297,10747906,10878977,12910593,13041666],"background":[327682,1835014,2031617,2883585,3014658,4063250,4325388,4653057,5439490,6553603,6684674,6881281,9109505,9240577,9306116,9437185,9568257,10289153,10420225,10551298,10747906,10878978,12845058,12910596,13041666],"boolean":[524291,589825,1048582,1376258,1703937,3211265,4063234,4259842,4325378,4456449,5570561,5767169,5898241,6815745,7208961,7274497,7340033,7602177,8454146,8781825,8912898,9437185,9633794,9699329,10027012,10682369,10747906,11010049,11468802,11534338,12713985,13041671],"better":[10420225,10747905,13041665]} \ No newline at end of file +{"button":[6881281],"box":[2621441,3342338,3473412,3670017,3801089,4587521,4653061,5439493,6684674,7077890,7929857,8650754,9175041,10223617,11206657,11862018,12517377,14942210,15204353,15728647],"booleans":[1245185,1703937,11206657,15728641],"best":[5505025,11206657,11862017,15728642,16252929],"browse":[6881282],"basic":[1835009,6881281,11862017,12976129,15728641],"border":[3670017,14942209,15728641],"board":[8454145,11206658,12058625,15728642],"baseimagelocation":[2031618,11862017,15728641],"brief":[4653057,5439489,11665409],"build":[851969,2228225,6881281,12845057,15925249],"built":[5242881,6881281],"based":[720897,3801090,4653068,4980737,5242882,5308417,5439500,7340037,8257537,9043969,9109506,9437186,9633793,11206657,11403265,11468801,11796481,12713985,13500417,13565953,13959171,15728642],"basically":[3342337,4325377,4653057,5439489],"bool":[786433,983041,1245186,1572865,1966081,3211265,3604481,5570561,5767169,6684673,7208961,7536641,8388609,8454145,8847361,9306113,9633793,9764865,10485761,10813444,11206657,12058625,12386305,12713985,13041665,13697025,13762561,14155777,14811137,15597569,15728641,15859713],"block":[2228225,11534337,12845057],"base":[2031617,6422529,6881281,11206657,11862017,15728642],"beware":[7143425,11206657,15728641],"begin":[1572865,5636097,7012353,10813441,11206657,15728641,15859713],"backgroundimagelayout":[5439489,5636098,9371649,10813441,12648449,12910593],"bitmap":[2752514,4653058,5439490,16384002],"bad":[1966081,2228225,4653058,5439490,12845057,15466498],"bit":[1572865,1638401,1900545,1966081,2228225,4653057,5439489,11206659,11796481,11862018,12451841,12845057,13697025,15466497,15728645],"backgroundimage":[327681,2752513,4653058,5439494,5636098,5701633,6946818,8519682,9371649,9699330,10747907,10813441,11206658,12517377,12648449,12910593,15728642,16384001],"background":[327682,2555906,2752518,3801089,4456450,4653068,5439507,5636098,6422529,6881281,6946818,7340035,8519682,9371650,10747908,10813441,11206658,11403265,11796481,12058625,12517378,12648450,12910593,13303809,13500418,15728642,16384004],"boolean":[786433,983043,1245190,1703938,1966081,3211265,3604482,4653058,5439490,5570561,5767169,6684673,7208961,7536641,8257537,8388609,8454145,8847361,9306113,9633794,9764865,10485762,11206658,11862020,12058625,12386305,12713986,13041665,13697026,13762561,14155777,14811137,15597569,15728647,16318466],"better":[11206657,11796481,15728641]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_99.json b/SpriteLibrary/Doc/Help/fti/FTI_99.json index 7d6b61a..8584a3e 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_99.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_99.json @@ -1 +1 @@ -{"clean":[4063233,6684673,9306113],"circle":[9175042],"changeanimationspeed":[6619138,10747905,13041665],"convertradianstodegrees":[1638402,10747905,13041665],"command":[4063235,4325379,5177345,8060929,9502721,10747905,11730945,13041665],"creates":[3342337,3604481,3932161,4063235,4325379,4915201,9502721,10747905,11730945,11927553,13041665],"clicks":[131074,3276801,4390913,10027009,11206659,13041668],"created":[1114113,1900545,4063233,5898242,10027009,11206657,11403265,12058625,13041668],"convertdegreestoradians":[10747905,11272194,13041665],"check":[65537,2949122,3211265,3670017,4063237,4325380,5701633,5767170,7602177,8781825,9175041,10747907,11010049,11206657,13041668],"changetickinterval":[4063233,4325377,9043970],"collisions":[851969,5111809,6881281,9175041,10944513,11927553],"completely":[3407873,4063234,4325377,6881281],"consecutive":[5898241,7077889,13041665],"count":[4063235,4325378,5242881,5832706,7077890,9306113,9502723],"controlling":[6881281],"cannotmoveoutsidebox":[3932161,4456450,4718593,13041665],"create":[1048577,1376258,2031618,4063236,4325377,5898242,7077889,9568257,9633793,10027009,10551297,10747906,10813441,11403265,11796481,13041669],"changing":[196609],"control":[9240577],"certain":[5701633,11206657,13041665],"com":[6881281],"code":[1835009,3473409,4063233,4325377,9240577,10289153,12910593],"calculated":[4718593,8978433,12255233,13041665],"corresponds":[2621441,10878977],"cancelmoveto":[8060930,10747905,13041665],"cached":[1703937,4063233,7405569],"comes":[5701633,11206657,13041665],"centerpoint":[10485761,10747906,12845057,13041666],"clicking":[7208961,10747905,13041665],"constructor":[1114113,2031617,4521985,5898241,5963777,6422529,7077889,9568257,9633793,10551297,12058625,12779521],"cleaning":[589825,10027009,13041665],"collisionmethod":[851971,5111810,11927554],"copies":[1835010,4063234,4325378,12910594],"checks":[9175041,10944513],"corner":[1376262,2752513,3080193,5636097,5832705,7798785,8650753,10092545,10747911,13041671],"call":[9240577],"cpu":[4718594,5570561,9699329,13041666],"coordinates":[262145,327682,2818049,2883586,3211265,3735554,3932161,4063237,4325381,4653057,6553602,7208961,7667716,8912898,10747910,10878977,11534337,13041670],"colisions":[6881281,13041665],"collection":[3342337,3604481,4063233,4325377,4915201,10747905,11927553,13041665],"contain":[7929857,9175041,10747905,13041665],"calls":[8388609,10747905,13041665],"configure":[4063233],"contains":[1179649,4063233,5439489,5505025,6881282,9306113,10289153,11141121,11206657,11927553,13041665],"classes":[6881281],"consideration":[1310721,1769473,3145729,4063233,4325377,5505025,7012353,10747906,13041666],"controller":[1114115,1835011,2031618,2686977,3014657,3407873,4063246,4325383,5242881,5963779,6422531,6488065,6881282,7077891,8192001,9240578,9306113,9568257,10027009,10551297,10944513,11796482,12058627,12910594,13041665],"calculate":[6881281,10289153],"collision":[3670017,5111809,6094849,6881281,9175041,10747905,11927553,13041665],"continues":[1441793,10027009,13041665],"considered":[8519681],"calling":[2686977,4063233,4325377],"calculates":[4063233,4325377,5505025],"conflict":[9240577],"complete":[2424833,10747905,13041665],"changeanimation":[1245186,1376262,2752513,3080193,5832705,7798785,8650753,9240578,10027009,10092545,10747911,12189697,13041672],"codeproject":[6881281],"controls":[4063233,6881281],"changed":[1835009,2686977,3014657,4063234,4325378],"changes":[1835009,4063233,4325377,5701633,11206657,12910593,13041665],"checkbeforemove":[5111810,7274497,11075586,11206657,11337729,11927554,13041665],"cancel":[5111810,7274499,8060929,10747905,11075585,11206657,11927554,13041666],"conforms":[4128769,4063233,4325377],"compareto":[12582913],"countspritesbasedoff":[4063233,4325377,9502722],"clockwise":[1441793,10027009,10813441,13041665],"changeframeanimationspeed":[6225922,10747905,13041665],"currently":[851969,1310721,1769473,4063233,4325377,5111809,5308417,6881281,8519682,9175041,10747906,11010050,11927553,13041666],"convert":[1638401,10747906,11272193,13041666],"clicktransparent":[131073,3276802,11206658,13041666],"case":[4063233],"completes":[10747905,11993089,13041665],"completed":[65537,4063233,4325377,10027010,11468802,13041666],"copy":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1441793,1507329,1572865,1638401,1703938,1835009,1900545,1966081,2097154,2162689,2228225,2293761,2359297,2424833,2555905,2621441,2686977,2752513,2818049,2883585,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3538945,3604485,3670017,3735553,3801089,3866625,3932162,3997697,4128769,4063238,4194305,4259841,4325378,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7208961,7274497,7340033,7405569,7471105,7602177,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240578,9371649,9437185,9502721,9568258,9633794,9699329,9764865,9830401,9895937,9961473,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551298,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11272193,11337729,11403265,11468801,11599873,11665409,11730945,11796481,11862017,11927554,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582914,12648449,12713985,12779521,12845057,12910594,12976129,13041667],"containing":[2228225],"complex":[1835009,4063233,4325377,12910593],"constraints":[11075585,11206657,13041665],"clone":[4063233,4325377,5898241,9633793,10027009,11403265,11862017,13041666],"cleanup":[3342337,3604481,4063233,4325377,4915201,5373954,10747905,11206658,11927553,13041667],"creating":[6881281],"converted":[11272193],"collide":[9175041],"comparison":[12582914],"clicked":[2883585,7208961,10747905,13041665],"corresponding":[1638401,4128769,4063233,4325377,6815745,9437185,10878978,11272193],"consider":[4718594,5570561,9699329,13041666],"compares":[6619137,10747905,12582913,13041665],"called":[2490369,4063233,9240577],"continue":[10944513],"collections":[786433],"class":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097155,2162689,2228225,2293761,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3538945,3604487,3670017,3735553,3801089,3866625,3932161,3997697,4063235,4128769,4194305,4259841,4325377,4390913,4456449,4521986,4587521,4653057,4718595,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6815745,6881283,6946817,7012353,7077889,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9240578,9306113,9371649,9437185,9502721,9568259,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10354689,10420225,10485761,10551299,10616833,10682369,10747905,10813441,10878977,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927555,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779522,12845057,12910593,12976129,13041668],"checking":[2424834,3670017,10747906,13041666],"checkforkeypress":[9240578,9568258],"current":[393217,2162690,2228225,3145729,3342340,3473409,3604484,3997697,4063236,4325380,4915204,7864321,10027009,10289153,10747911,10944513,11927556,12517378,12976131,13041672],"click":[131074,327682,2883585,3276802,3735554,4063233,4325377,6029313,6881284,7208961,7667716,10747910,11206659,13041673],"change":[196609,393218,1441793,1835009,3866625,4063240,4325384,6160385,6225921,6356993,6619138,8192002,8716289,9043969,9240578,9371649,10027011,10747906,11075585,11206657,11403265,12189697,12910593,13041670],"checkspritehitssprite":[3670018,10747905,13041665],"counter":[1441793,10027009,10813441,13041665],"calculating":[2228225,4063233,4325377],"constructors":[3604481,4063233,11927553,13041665]} \ No newline at end of file +{"cloning":[131073,4849665,5242881,5963777,9830401,15925249],"clean":[5439489,8519681,10747905],"circle":[9502722],"changeanimationspeed":[7405570,11206657,15728641],"convertradianstodegrees":[1507330,11206657,15728641],"command":[4653059,5046273,5439491,10158081,11206657,11468801,13959169,15728641],"copied":[4653057,5439489,11665409],"creates":[4653058,4980737,5439490,11468801,13959169],"clicks":[196610,4063233,4587521,11862017,14942211,15728644],"created":[2293761,3014657,5439489,5636097,8257538,11862017,12976129,14680065,14942209,15728644],"convertdegreestoradians":[11206657,15728641,16121858],"construction":[2555905,5439489,9371649],"check":[393217,4390913,4653060,5439493,5767169,6356994,6750209,7208962,7536641,9502721,11206659,13041665,14942209,15204353,15597569,15728644],"changetickinterval":[4653057,5439489,10682370],"collisions":[1310721,6881281,8192001,9502721,14548993,16056321],"completely":[2228225,2359297,4653057,5111809,5439490,6881281,12845057],"consecutive":[7012353,8257537,15728641],"caps":[5242881,9109505,11599873],"count":[4653058,5439491,7012354,7274498,8978433,10747905,11468803],"controlling":[6881281],"cannotmoveoutsidebox":[4980737,6684674,8650753,15728641],"create":[1245185,1703938,2228225,2555907,4653058,5242881,5373953,5439494,5636097,6881283,7012353,8257538,9371649,9437185,9633793,9961473,11206658,11862017,12582913,12648449,12845059,12910593,12976129,13828097,14090241,15466498,15728645],"copyfrom":[5963777,10354690,15925249],"changing":[458753,1966081,2228225,12845057],"control":[10813441],"certain":[6750209,14942209,15728641],"com":[6881281],"controllertouse":[5832706],"code":[2752513,4653057,5242881,5439489,6881282,8912897,10813441,15400961,15925250,16384001],"calculated":[8650753,12255233,14614529,15728641],"corresponds":[3342337,12517377],"cancelmoveto":[10158082,11206657,15728641],"cached":[3211265,5439489,8323073],"comes":[6750209,14942209,15728641],"centerpoint":[11206658,13500417,13893633,15728642],"clicking":[8847361,11206657,15728641],"constructor":[1376257,2097153,2228226,2424833,2555906,3014657,3932161,5439489,6291457,7012353,7798785,7995393,8257537,9371650,9633793,12648449,12845058,12910593,13631489,14417921,14680065],"cleaning":[786433,11862017,15728641],"collisionmethod":[1310723,8192002,16056322],"copies":[2752514,4653058,5439490,16384002],"closes":[4653057,5439489,11665409],"clonebyxmlserializing":[2228225,2359298,12845057],"checks":[9502721,14548993],"corner":[1703942,4521985,4915201,5242881,5505025,7274497,8060929,9109505,9568257,11206663,13565953,15532033,15728647],"call":[10813441],"cpu":[5570561,8650754,12386305,15728642],"coordinates":[327682,589825,3801090,4653061,4980737,5308417,5439493,5701634,5767169,6422529,7340034,8847361,9699332,11206662,12517377,12713986,15728646,16318465],"colisions":[6881281,15728641],"contain":[5242881,6881281,9502721,10878977,11206657,15204353,15728641],"calls":[10223617,11206657,15728641],"configure":[5439489],"contains":[1835009,5242881,5439489,6881282,6946817,7077889,9109505,10747905,11599873,11730945,13303809,14942209,15728641,16056321],"classes":[2228225,6881281,11993089,12845057,13631489],"computer":[2424833,12845057],"consideration":[1572865,1638401,3866625,4653057,5439489,7077889,7929857,11206658,15728642],"controller":[2555907,2752515,3014659,3735553,4456449,4653071,4980737,5111809,5439511,5636097,5832705,6881282,7012355,7798787,7995395,8585217,8978433,9371649,10027009,10616833,10747905,10813442,11665411,11862017,12648449,12910593,14090242,14548993,14680067,15466502,15728641,16384002],"calculate":[6881281,13303809],"copying":[5963777,10354689,15925249],"closing":[4653057,5439489,11665409],"collision":[4390913,6488065,6881281,8192001,9502721,11206657,15728641,16056321],"continues":[1900545,11862017,15728641],"considered":[10551297],"calling":[3735553,4653057,5439489],"calculates":[4653057,5439489,7077889],"conflict":[10813441],"controllertolinktothis":[15466498],"complete":[3276801,11206657,15728641],"changeanimation":[1703942,1769474,4521985,4915201,7274497,8060929,9568257,10813442,11206663,11862017,15532033,15728648,16252929],"controllers":[4653059,4980737,5439491,10616833,15466498],"codeproject":[6881281],"controls":[5439489,6881281],"changed":[2752513,3735553,4456449,4653058,5439490],"changes":[2752513,4653057,5439489,6750209,14942209,15728641,16384001],"checkbeforemove":[8192002,9306113,13434881,14942209,15269890,15728641,16056322],"cancel":[8192002,9306115,10158081,11206657,14942209,15269889,15728642,16056322],"contact":[15007745],"conforms":[4653057,5439489,6029313],"compareto":[16449537],"countspritesbasedoff":[4653057,5439489,11468802],"clockwise":[1900545,11862017,13828097,15728641],"changeframeanimationspeed":[7143426,11206657,15728641],"currently":[1310721,1572865,1638401,4653057,5439489,6881281,7602177,8192001,9502721,10551298,11206658,13041666,15728642,16056321],"convert":[1507329,11206658,15728642,16121857],"clicktransparent":[196609,4063234,14942210,15728642],"case":[5242881,5439489,5832705,9109505,11599873],"correct":[11993089],"completes":[11206657,14745601,15728641],"completed":[393217,4653057,5439489,11862018,13697026,15728642],"combine":[5636098],"copy":[65537,131073,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1638401,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2293761,2359297,2424833,2490369,2621441,2686977,2752513,2818050,2883585,2949121,3014657,3080193,3211266,3276801,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,4063233,4128769,4259841,4325380,4390913,4456449,4521985,4587521,4653059,4718593,4784129,4915201,4980738,5046273,5111809,5177345,5242885,5308417,5373953,5439495,5505025,5570561,5636099,5701633,5767169,5832705,5898241,6029313,6094849,6160385,6225921,6291457,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8847361,8912897,8978433,9043970,9109508,9175041,9240577,9306113,9371650,9437185,9502721,9568257,9633794,9764866,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10682369,10813442,10878977,10944513,11075585,11141121,11272193,11337729,11403265,11468801,11534337,11599873,11665410,11730945,11796481,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12648450,12713985,12779521,12845057,12910594,12976129,13041665,13107202,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155778,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,15073281,15138817,15269889,15335425,15466498,15532033,15597569,15663105,15728642,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16384002,16449538],"controllertounlink":[11665410],"containing":[3080193,3473409],"complex":[2752513,4653057,5439489,16384001],"constraints":[14942209,15269889,15728641],"clone":[131075,2228225,2359299,4653057,4849665,5242881,5439489,5963777,8257537,9633793,9830402,11862017,12845057,12976129,14221313,15728642,15925249],"convienent":[2228226,2949121,6815745,12845058],"cleanup":[4718594,14942210,15728642],"creating":[851969,2228226,5242881,5636097,6881282,11993089,12845058],"converted":[16121857],"collide":[9502721],"comparison":[16449538],"clicked":[3801089,8847361,11206657,15728641],"corresponding":[1507329,4653057,5439489,6029313,8454145,12058625,12517378,16121857],"consider":[5570561,8650754,12386305,15728642],"compares":[7405569,11206657,15728641,16449537],"called":[3145729,5439489,10813441],"continue":[851969,2228225,12845057,14548993],"collections":[1114113],"class":[65537,131073,196609,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097154,2162689,2228230,2293761,2359300,2424833,2490369,2555905,2621441,2686977,2752513,2818051,2949122,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932162,3997697,4063233,4128769,4259841,4325383,4390913,4456449,4521985,4587521,4718593,4653057,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242885,5308417,5373953,5439491,5505025,5570561,5636099,5701633,5767169,5832705,5898241,5963779,6029313,6094849,6160385,6225921,6291458,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815746,6881286,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650755,8847361,8912897,8978433,9043969,9109505,9175041,9306113,9371651,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354692,10420225,10485761,10551297,10616833,10682369,10747905,10813442,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993090,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648451,12713985,12779521,12845063,12910595,12976129,13041665,13107201,13172737,13238273,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417922,14483457,14614529,14680065,14745601,14811137,14876673,14942209,15073281,15138817,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728644,15794177,15859713,15925254,15990785,16056323,16121857,16187393,16252929,16318465,16384001,16449537],"checking":[3276802,4390913,11206658,15728642],"cache":[1966081,5832705],"checkforkeypress":[10813442,12910594],"current":[720897,3473409,3538946,3866625,4259841,5963777,10354689,11010049,11206659,11862017,14548993,15138818,15728644,15794179,15925249],"click":[196610,327682,3801089,4063234,4653057,5439489,5701634,5898241,6881284,8847361,9699332,11206662,14942211,15728649],"change":[458753,720898,1900545,1966081,2228226,2752513,4128769,4653064,5439496,5636097,7143425,7405570,7667713,8126465,10027010,10682369,10813442,11206658,11862019,12124161,12845058,12976129,14024705,14483457,14942209,15269889,15728646,16252929,16384001],"close":[5242881,9109505,15335425],"contained":[4653057,4980737,5439489,5636097,10616833],"checkspritehitssprite":[4390914,11206657,15728641],"counter":[1900545,11862017,13828097,15728641],"caches":[1966081,2228225,12845057],"calculating":[3473409,4653057,5439489],"constructors":[4325377,5242881,5439489,12845057,15728641,15925249,16056321]} \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/fti/FTI_Files.json b/SpriteLibrary/Doc/Help/fti/FTI_Files.json index 097182b..03db640 100644 --- a/SpriteLibrary/Doc/Help/fti/FTI_Files.json +++ b/SpriteLibrary/Doc/Help/fti/FTI_Files.json @@ -1 +1 @@ -["SpriteLibrary - Redirect\u0000index.html\u000018","SpriteController.SoundPlay Method\u0000html/08442d70-3a79-fa24-4f3e-eddc5c102938.htm\u000097","Sprite.Click Event\u0000html/01fdd72c-b202-8593-db2a-e1373358dd66.htm\u000095","SpriteController.PlaceSpriteBehind Method\u0000html/0b27d26e-53e1-c9bd-0b52-8fe4714c831a.htm\u000098","Sprite.SpriteAdjustedPoint Method\u0000html/0b9ae3b4-06a9-5ee6-9bc0-33377f8be55e.htm\u0000132","Sprite.PutBaseImageLocation Method (Double, Double)\u0000html/00fa147e-bf27-6b9f-3f44-77f8e6c1a9cc.htm\u0000150","Sprite.ReplaceImage Method\u0000html/0ce33e3f-7f15-3abb-69b9-6826b7d831d7.htm\u0000154","Sprite.SpriteAnimationComplete Event\u0000html/0e8b825f-f8df-9f14-41ec-f00778409dfb.htm\u000074","Sprite.MovingToPoint Property\u0000html/139d1443-5e11-02ed-7534-eb0f857804da.htm\u000094","Sprite.Destroying Property\u0000html/0f7e6cfa-e1e4-1b7a-152d-5b3281ac8bfe.htm\u0000144","Sprite.SetSpriteDirectionDegrees Method\u0000html/0f4e570a-2888-8819-176b-9dd070ca7db4.htm\u000095","Sprite.MouseEnter Event\u0000html/17255a69-f623-3a42-a7ce-db1eb348581a.htm\u000083","Sprite.MoveTo Method (List(Point))\u0000html/16df05cc-8770-7cbe-f754-ba9e386674ad.htm\u0000180","SpriteEventArgs.CollisionMethod Field\u0000html/18405dcf-237d-db66-cf64-0e08b0d16b41.htm\u000062","Sprite.SpriteArrivedAtWaypoint Event\u0000html/17ee5c77-8351-af30-dc43-9458d683a69e.htm\u000091","SpriteLibrary - Search\u0000search.html\u000010","Sprite.AddAnimation Method (Int32, Boolean, Boolean)\u0000html/1730e5a3-3e48-72f7-f641-b7a70e5c2563.htm\u0000181","Sprite Constructor (SpriteController, Image, Int32, Int32)\u0000html/184a1964-91ec-6f0d-b7cf-95b722599d69.htm\u0000152","Sprite.SpriteEventHandler Delegate\u0000html/1bab1e49-641a-5648-d034-4298d8158019.htm\u0000111","Sprite.ChangeAnimation Method\u0000html/25183ea9-6a42-63b0-8051-fd4b9c8dbfe7.htm\u000095","Sprite.MoveTo Method (Sprite)\u0000html/27051af5-8ad4-0b54-231d-456499ae5b51.htm\u0000123","Sprite.AddAnimation Method\u0000html/154fc8b0-0d6c-003e-be50-c94da6bc4597.htm\u0000716","Sprite.Rotation Property\u0000html/20db7ecc-35df-8911-2615-1f2b8777f03b.htm\u0000150","Sprite.AnimationCount Property\u0000html/23ac9f1e-8033-78a2-030b-b12d6496c3dd.htm\u000062","Sprite.SetName Method\u0000html/36d40ecf-484f-3b53-43e4-87ed9108cb76.htm\u000084","Sprite.ConvertRadiansToDegrees Method\u0000html/2695c170-24ea-95d2-7f85-34c3930416b5.htm\u000077","SpriteController.OptimizeForLargeSpriteImages Field\u0000html/34a7b0e2-8fce-a07e-fff0-5460ba02a4cf.htm\u0000131","Sprite.MoveTo Method\u0000html/1f2c365c-e65b-3894-2e47-41f07250bbc0.htm\u0000247","SpriteController.ReplaceOriginalImage Method\u0000html/2c9b874d-5097-98bf-908c-f6bac5d647d3.htm\u0000308","Sprite.SpriteInitializes Event\u0000html/2b1a75c9-0eb6-fb22-eeea-595ec3cc1bf8.htm\u000076","Sprite.SpriteExitsPictureBox Event\u0000html/37ae1b7e-72db-69cb-f1c6-26242c07e2b5.htm\u000076","SpriteController Constructor\u0000html/323c4f03-703d-0898-c73e-40eb5784c05f.htm\u000076","Sprite.payload Field\u0000html/3a7614d3-cfe9-ce52-55be-ca5324839e92.htm\u0000131","Sprite.GetImage Method (Int32, Int32)\u0000html/4067393e-d724-b01d-dc77-947440c6c444.htm\u0000130","SpriteController.ReturnAdjustmentRatio Method\u0000html/41ac663a-2019-6a14-5ffd-16dfc7472578.htm\u000092","SpriteController.SpritesThatHaveBeenDrawn Method\u0000html/2c4eb5db-5c4c-6fcd-716c-532c0e2c4f35.htm\u000078","SpriteKeyEventHandler Delegate\u0000html/38678a79-da77-9ef7-e3e1-78ff96f5bd7b.htm\u000073","Sprite.AnimateJustAFewTimes Method\u0000html/3bbc779a-f8e9-8c18-c3c3-89018dd77daf.htm\u0000205","SpriteController Events\u0000html/4141394a-0d7d-5cf8-6b01-0a4fb43159ab.htm\u000059","Sprite.SpriteHitsPictureBox Event\u0000html/3aabe50b-5222-99aa-4654-356baa30033a.htm\u000079","SpriteController.ReturnPictureBoxAdjustedHeight Method\u0000html/447d1a9a-0e17-9827-2a01-438434c1b879.htm\u0000105","SpriteController.ResetKeypressState Method\u0000html/48ff9be7-1395-25af-3585-3d32eba07309.htm\u000091","Sprite.AddAnimation Method (Image, Size)\u0000html/4a6fe677-5369-6c0a-1e61-81355aa238b1.htm\u0000170","SpriteController.AdjustRectangle Method\u0000html/4f100dc3-39b4-fea4-6d73-8ef39eea489c.htm\u000093","SpriteController.SpritesAtPoint Method\u0000html/3c18bbb7-e10c-1b96-754d-7dfc878e7cf4.htm\u0000146","SpriteController.IsKeyPressed Method\u0000html/50eae5e0-c59c-9d9c-d551-21dba8696ac9.htm\u0000141","SpriteController.ReplaceOriginalImage Method\u0000html/49befa66-d9d0-400c-1fc2-ac57f17433f1.htm\u000079","Sprite.AddAnimation Method (Image, Int32)\u0000html/5284b83c-61a7-aefe-4087-f7137551b783.htm\u0000179","Sprite.ReturnAdjustmentRatio Method\u0000html/56d803c5-e2ad-dd16-0592-b816f726498d.htm\u000085","Sprite.SpriteAtImagePoint Method\u0000html/509560bd-f402-7e7f-a461-46845061a5fc.htm\u0000138","Sprite.ClickTransparent Event\u0000html/51c9d545-e5c3-888d-d033-17085734aa1d.htm\u000096","SpritePayload Methods\u0000html/5a5c3a2b-a675-c626-ced3-c958acc9f93e.htm\u0000139","SpriteController.DestroySprite Method\u0000html/56b507fc-3071-20e9-63a7-b33484f3e687.htm\u0000112","SpriteAdjustmentRatio Methods\u0000html/57a9f458-c6c8-d106-aad4-b2547736909a.htm\u000093","Sprite.VisibleHeight Property\u0000html/5b5ccc3b-4e41-862f-7bba-7d55a45c6747.htm\u000077","SpritePayload Class\u0000html/4e310248-8e1a-76aa-edbc-a83f4ba9b425.htm\u0000346","Sprite.CheckSpriteHitsSprite Method\u0000html/5d507565-cf0d-de52-2253-b55396e3886a.htm\u0000103","Sprite.PutBaseImageLocation Method (Point)\u0000html/5b2d8b05-360b-44bc-2e7b-f1d4753cb0df.htm\u0000132","SpriteController.DestroyAllSprites Method\u0000html/63fd5f6f-f592-0dbd-6fd2-ff4b999f012d.htm\u000060","SpriteController.SpriteToBack Method\u0000html/5d32e0da-bbf2-10b5-ba20-fe5bdfec1963.htm\u000079","SpriteController.DuplicateSprite Method (String)\u0000html/60fe71db-5ea2-cf93-f216-79b15a6779db.htm\u0000215","Sprite.FrameIndex Property\u0000html/603ff402-efe2-bede-5c71-1a9583da0800.htm\u000088","SpriteController Class\u0000html/07a473e4-4716-e5b9-c7d2-c4748265fc58.htm\u00002275","SpriteController.AdjustPoint Method\u0000html/68ba53c6-5c0d-3dd4-b9bd-56852a3b98cd.htm\u000082","SpriteController.AllSprites Method\u0000html/662ea0d6-7a35-be51-5a25-288752509d24.htm\u000068","SpriteController.Invalidate Method (Boolean)\u0000html/451487c4-0cca-2c80-9b71-b116cbe00d6e.htm\u000091","SpriteController Methods\u0000html/2788d4d5-88bf-1154-dd17-8d4b99a79118.htm\u00001751","Sprite.PictureBoxLocation Property\u0000html/6273fa69-a784-9916-a8eb-5b16529fdf48.htm\u000077","Sprite.CannotMoveOutsideBox Field\u0000html/747bfb64-7646-38ee-09e3-65455ac597e5.htm\u000072","SpritePayload Constructor\u0000html/6acc0e43-8cb8-535c-6f39-8163bb21447a.htm\u000052","Sprite.UnPause Method\u0000html/6707f122-af81-e57d-d937-e4000242446f.htm\u000077","Sprite.SetSize Method\u0000html/7cf8acaf-92f1-652e-4c2a-bfd920bc0479.htm\u000095","Sprite Fields\u0000html/6d383ed6-ff9b-f1b0-a53d-54ea41795870.htm\u0000316","Sprite.BaseImageLocation Property\u0000html/29f62d1a-212b-273e-582e-670c1ea2856c.htm\u000074","Sprite.SpriteOriginName Property\u0000html/7d21be0e-d534-6d93-1476-3aa585a8fea3.htm\u000081","SpriteEventArgs Methods\u0000html/4716eb02-e702-b61a-126a-362af50ca6d5.htm\u0000139","Sprite.MouseLeave Event\u0000html/7a4959c4-936a-b924-d525-7becb693a55b.htm\u000085","Sprite.Zvalue Property\u0000html/6adf23fc-b0f8-5abf-bd39-7dc44f060e7c.htm\u0000120","SpriteEventArgs Fields\u0000html/817b64cb-8c4b-af50-69ba-6762e8ae51c5.htm\u0000153","SpriteController.UnPause Method\u0000html/675951bb-e09a-e9ec-95d2-c0efaf187d6d.htm\u000086","SpriteController.SpriteCount Property\u0000html/6e7ddbc9-4f71-533f-b99c-55a53ba4a843.htm\u000077","Sprite.GetSpriteRadans Method\u0000html/88cf999b-5b19-4cfc-adab-b0276f18431a.htm\u000073","Sprite.SpriteBeingDestroyed Event\u0000html/64d54496-389b-21a7-0387-25878b2bcc4c.htm\u000093","SpriteController.OriginalImage Property\u0000html/7d3a40d7-0ee8-6117-8d32-b236da97778f.htm\u000095","SpriteController.ReturnPictureBoxAdjustedWidth Method\u0000html/7c73b68e-f842-bfee-55d8-b36488fb35b7.htm\u0000128","Sprite.MirrorVertically Field\u0000html/679ff642-b87f-24d6-80c5-434c06c71523.htm\u0000103","Sprite.UnhideSprite Method\u0000html/6e92bfaf-2e6c-a3bc-e208-3f486f6b42fc.htm\u000082","Sprite.SpriteChangesAnimationFrames Event\u0000html/81ec308a-e52d-7e07-f9e0-50d0bf531a30.htm\u0000105","SpriteController.IsKeyPressed Method (Keys)\u0000html/7fc92c27-7895-2b2c-d4f1-ac682eec7af5.htm\u0000151","Sprite.AddAnimation Method (Point, Image, Int32, Int32, Int32, Int32)\u0000html/8ae70e13-ebdf-d78f-d7a4-69825f6b8c26.htm\u0000249","Sprite Constructor\u0000html/8a70b6b2-3e2d-3c6f-0d8c-18e6dea4368e.htm\u0000242","Sprite Constructor (SpriteController, Image, Int32, Int32, Int32)\u0000html/6541bf2d-e608-1bad-2e7f-1b0f2deb0c34.htm\u0000158","Sprite.PutPictureBoxLocation Method\u0000html/7cf36b8e-42dc-cc56-1e14-6f248286d92b.htm\u0000115","SpriteEventArgs.TargetSprite Field\u0000html/72a79555-fc4d-8b5b-1a9c-408fd55972e9.htm\u000078","SpriteController.PlaceSpriteInFrontOf Method\u0000html/8d47a519-d5f7-c7f6-4ccb-0d310cab2435.htm\u000095","Sprite.ChangeFrameAnimationSpeed Method\u0000html/859526c5-9283-3edb-386b-905cbaa406fd.htm\u0000110","Sprite.GetSize Property\u0000html/8b245db5-fbb6-18bc-d219-832668d1432a.htm\u000087","SpriteController.SpriteToFront Method\u0000html/80b0403d-da14-c176-9d01-080fc170a67d.htm\u000082","Sprite Constructor (SpriteController, Image)\u0000html/98f8bf30-d3ab-5f86-9fbf-9f76df20f2e6.htm\u000095","Sprite.ID Property\u0000html/8e41c462-a765-51e2-4c3b-de231acba259.htm\u000065","SpriteController.SpritesAtImagePoint Method\u0000html/90511f90-497b-fc61-6984-15d76101a6f1.htm\u0000181","Sprite.ChangeAnimationSpeed Method\u0000html/93aee3f0-fb9a-e628-9224-0128a91d363a.htm\u0000113","SpriteController.BackgroundImage Property\u0000html/9d9cf5a5-3349-bfae-7d39-41082644a49e.htm\u000092","SpriteAdjustmentRatio.height_ratio Field\u0000html/a8864de9-4275-a608-f5b0-26d4b313967d.htm\u000072","Sprite.SpriteCanMoveOnPictureBox Method\u0000html/995741fd-f6ea-f11e-ee46-c88de9307e8a.htm\u000095","SpriteLibrary Namespace\u0000html/6b7227c0-7a6a-6342-3b08-917c7de429cc.htm\u0000513","Sprite.Opacity Property\u0000html/90a2e7f3-348b-d10b-ee6b-9397ef5daa18.htm\u0000171","SpriteController.ReturnPictureBoxAdjustedPoint Method\u0000html/9469b7cf-55ee-5c2e-feb7-01c7e23a6350.htm\u0000119","Sprite Constructor (Point, SpriteController, Image, Int32, Int32, Int32, Int32)\u0000html/8e88c5f2-f5d0-02df-c7cb-9701313411af.htm\u0000202","SpriteAdjustmentRatio Fields\u0000html/9c6cb5e5-0054-eab6-66d9-e6e0c1e8c444.htm\u000074","Sprite.SpriteAtPictureBoxPoint Method\u0000html/9e0d8841-7f6a-63b2-c5fb-5ba6ffa85436.htm\u0000176","SpriteEventArgs.Cancel Field\u0000html/ad1a395a-bbd4-d507-aa4d-1419f9b7df08.htm\u000085","Sprite.IsPaused Method\u0000html/9474d6c2-30d9-a39b-3c10-b50286f93813.htm\u0000109","SpriteController Fields\u0000html/92b04460-74f1-c388-f3ac-ea510ffc4e06.htm\u0000138","Sprite.MouseLeaveTransparent Event\u0000html/8ff96e56-6289-4c11-f351-4dbfe58a44cf.htm\u000090","SpriteController.DuplicateSprite Method\u0000html/ae6c1c82-0519-4751-0b6d-f264c484e4cb.htm\u000057","Sprite.SpriteIntersectsRectangle Method\u0000html/96b717e2-d860-aa86-3760-d39620a2bb31.htm\u000091","Sprite.PutBaseImageLocation Method\u0000html/adaddf64-5e6e-447b-5d81-c38398216201.htm\u0000156","SpriteAdjustmentRatio.width_ratio Field\u0000html/92e90a8d-e5eb-daea-2804-b99254f25433.htm\u000072","Sprite.AddAnimation Method (Image, Int32, Int32, Int32)\u0000html/a50146be-5b11-1554-db6f-817ea76b9343.htm\u0000205","Sprite.GetImage Method\u0000html/b29c2176-174b-e620-0e33-9a22730ad05f.htm\u000074","Sprite.SetSpriteDirection Method\u0000html/aebe0cd6-1499-7da2-2f96-c86d84189b58.htm\u0000113","SpriteController.RandomNumberGenerator Field\u0000html/b9f05ef6-f80c-5676-1eca-d73833dca177.htm\u000067","Sprite.CancelMoveTo Method\u0000html/adc84477-1eb3-bb14-ee09-0525268c45f4.htm\u000065","Sprite.Destroy Method\u0000html/bc474319-2c51-e93f-07e2-9728d609c563.htm\u000072","SpriteController.NameSprite Method\u0000html/a5292253-7fbd-5dfa-819f-1d67d27580d6.htm\u0000102","SpriteController.RegisterKeyUpFunction Method\u0000html/b3e934e2-1ddf-35e3-0995-3b555539f33f.htm\u000093","SpriteController.RegisterKeyDownFunction Method\u0000html/af7fceb3-a35e-b016-3955-696b3a3c7a7e.htm\u000093","Sprite.RecalcPictureBoxLocation Method\u0000html/ba26c365-f8d2-0a86-b3b6-1cfab946b3da.htm\u000075","Sprite.SpriteReachedEndPoint Property\u0000html/ae4a57de-4763-c9cb-c9e3-c6e186296fd8.htm\u000095","SpriteController.KeysPressed Method\u0000html/bcb29da5-8d8d-fa11-90ea-3a0cc73a0df0.htm\u0000131","Sprite.GetVisibleSize Property\u0000html/af9edc83-1d26-349b-8105-6064a540e2c7.htm\u000086","Sprite.AddAnimation Method (Image, Int32, Int32)\u0000html/9d686d62-c22c-20ec-7455-b4adc8070b8c.htm\u0000185","SpriteController.SpriteForwards Method\u0000html/b5c75d58-f132-f3ff-217f-e69b252db748.htm\u000083","SpriteController.IsKeyPressed Method\u0000html/bf10cc41-d9e2-52c5-0415-1083f0f55489.htm\u0000126","Sprite.SendToBack Method\u0000html/c0d47063-6820-3464-ed46-94ffd2329683.htm\u000054","SpriteController.Invalidate Method (Rectangle, Boolean)\u0000html/c57680f5-fd0e-a4a6-05a0-3a42de94edb8.htm\u0000109","Sprite.GetAnimationSpeed Method\u0000html/d0e10a16-4614-56b2-3e21-ce841f26b3d8.htm\u0000104","SpriteController.ChangeTickInterval Method\u0000html/bf55ab7f-78c8-3879-b8f8-464dc203791e.htm\u0000100","SpriteController.SpritesInImageRectangle Method\u0000html/c2860c42-fc4c-78f8-7d32-195e74262434.htm\u0000107","SpriteCollisionMethod Enumeration\u0000html/b78d4878-d301-191f-9c53-4f41d3e937e6.htm\u0000185","SpriteController.DoTick Event\u0000html/ba843001-e657-41e8-7c66-c2473781ed40.htm\u0000589","SpriteController Properties\u0000html/c6c542de-2b1f-1086-b5b2-56b7e9a9525f.htm\u0000126","SpriteController.SpriteBackwards Method\u0000html/d516c33b-29ef-9613-62fb-b6717264a32b.htm\u000083","Sprite.SpriteCanMoveOnImage Method\u0000html/c2f3867b-b906-a526-c836-718da1546a78.htm\u000096","SpriteController.CountSpritesBasedOff Method\u0000html/dace8c3a-8d35-4ae7-ddf8-26e59dc161ae.htm\u0000123","SpriteController Constructor (PictureBox, EventHandler)\u0000html/d20e5816-faf3-723d-5f2d-ebff462012f1.htm\u0000217","Sprite Constructor (Sprite, Boolean)\u0000html/bacd1b59-34a9-eb30-29b3-4fdc704a7b60.htm\u0000164","Sprite.MirrorHorizontally Field\u0000html/c39b03eb-911a-b0dc-fd7b-276ee464f6c7.htm\u0000101","SpriteController.SpritesBasedOffAnything Method\u0000html/c7991a63-f63c-20d8-0605-fab6e9f13392.htm\u000079","Sprite.GetSpriteDegrees Method\u0000html/d5da80cc-4be3-3550-8bf9-5c460fbf2e15.htm\u0000152","Sprite.Pause Method\u0000html/db9f18b5-9947-5dfc-3174-39f4b1341b1c.htm\u0000104","SpriteController.Pause Method\u0000html/d329fe20-e750-bf52-a75b-f2383bf1d35a.htm\u0000104","Sprite Properties\u0000html/bcdb40c8-478a-043c-5db0-393001600029.htm\u00001065","Sprite.AddAnimation Method (Image)\u0000html/e45036ef-15fa-9fbc-ef24-5e48c8c8ad8d.htm\u0000153","Sprite.VisibleWidth Property\u0000html/cd53c0db-02b1-e505-0dce-a7d4d7710d5c.htm\u000077","Sprite.MouseHoverTransparent Event\u0000html/d7215876-6117-ce45-75a4-77dc00c386cd.htm\u000081","SpriteAdjustmentRatio Structure\u0000html/eae9601e-6da0-b304-9836-5e4b1e743f94.htm\u0000210","Sprite.HideSprite Method\u0000html/e57f527d-aee3-7c4e-fc43-7219b7961fe0.htm\u000074","Sprite.SetSpriteDirectionToPoint Method\u0000html/d416e051-269c-c343-aece-3682b87f3cbc.htm\u0000197","Sprite.GetSpritePictureboxCenter Method\u0000html/efb3089a-8900-83fe-ce65-f22e686d7477.htm\u000074","SpriteController Constructor (PictureBox)\u0000html/dd581cb5-2630-cc79-5fcb-24bfcb817e03.htm\u0000174","Sprite.MouseHover Event\u0000html/d8964a64-57ec-3b0c-94b5-247707cd34e8.htm\u000076","Sprite.HasBeenDrawn Property\u0000html/f374c8cd-af01-f03a-1d31-0b46e0d8745c.htm\u000081","Sprite Methods\u0000html/abfab841-a96c-b22d-7cd8-fec3aba92510.htm\u00002501","Sprite.AddAnimation Method (Int32, Int32)\u0000html/eb5261e9-43df-01a5-b974-25c2fd13309c.htm\u0000154","SpriteController.ReturnPointAdjustedForImage Method\u0000html/e58bfa3c-4722-7f3a-9610-0a0ce62bfe99.htm\u0000161","SpritePauseType Enumeration\u0000html/efc2cb08-5c2b-c758-477e-d5739183a1ba.htm\u0000151","SpriteController.SoundIsFinished Method\u0000html/df0fd1e8-eac8-4f10-7f09-baa6127f3752.htm\u000091","Sprite.CheckBeforeMove Event\u0000html/f4164c4a-55e1-87f7-95bd-7bae1d99326b.htm\u000079","Sprite.SpriteHitsSprite Event\u0000html/acb35a6f-c89a-3a7d-146d-b85ccf68d8aa.htm\u000073","Sprite Events\u0000html/bdcfa83c-c4a7-49f3-4d49-2f865014aee6.htm\u0000661","Sprite.ConvertDegreesToRadians Method\u0000html/fd3f0ed3-4608-2686-e248-8f2a1e6a2bac.htm\u000082","SpriteEventArgs.NewLocation Field\u0000html/e058b656-39e3-5a55-4437-ee869ecbf35e.htm\u000092","Sprite.SpriteName Property\u0000html/e753341a-7040-8dda-8f1e-681e926e9292.htm\u0000161","Sprite.AnimationDone Property\u0000html/f0db6147-f3aa-d599-6371-a89da047bbc5.htm\u0000231","SpriteController.Invalidate Method\u0000html/fd95464a-c61d-8ed2-a568-34b825efc047.htm\u000045","Sprite.MouseEnterTransparent Event\u0000html/acf8f1b8-170d-0fa9-1ac9-41a086d97046.htm\u000088","Sprite.SetSpriteDirectionRadians Method\u0000html/ec39133f-39d0-c9ef-e77b-e58ea8c9b2f6.htm\u000091","SpriteController.SpritesBasedOff Method\u0000html/e05efb85-3736-fa59-2720-a460b898048a.htm\u0000127","SpriteController.AddSprite Method\u0000html/f28be11d-b67a-765c-441a-d7da336ccf77.htm\u000098","SpriteController.SpriteFromName Method\u0000html/e8491570-1fda-7d8e-48b8-c15f26c41d01.htm\u0000148","SpriteEventArgs Class\u0000html/f42e1d9a-273c-861f-b7db-6244c9266d2c.htm\u0000341","Sprite.AnimateOnce Method\u0000html/ff84ba57-4738-8ff0-2356-095dfe1cc159.htm\u0000169","Sprite Constructor (SpriteController, Image, Size)\u0000html/ecbab3a8-aa92-2bb6-efc6-cf26d1df424a.htm\u0000136","Sprite.SpriteArrivedAtEndPoint Event\u0000html/e37ba69c-1cb3-693c-f4b1-8e37b12cbd23.htm\u000097","Sprite.AnimationIndex Property\u0000html/f55ba01a-50d3-248c-5c34-ba32355db223.htm\u000079","Sprite.MovementSpeed Field\u0000html/e88e79e3-3edc-69e5-1854-23968928c073.htm\u0000120","Sprite.MoveTo Method (Point)\u0000html/eefee0d8-fb59-4546-386a-53f40c545c43.htm\u0000138","Sprite.SendToFront Method\u0000html/ef420c55-64ea-5230-e9e5-d8c13f98f74a.htm\u000058","Sprite.GetFrameAnimationSpeed Method\u0000html/e38f911d-9d99-eac6-b9ea-bffd3d04678a.htm\u0000117","Sprite.GetSpriteVector Method\u0000html/e9953cab-b878-4169-fda6-d5addecb267b.htm\u000065","SpriteController.SpriteComparisonDelegate Field\u0000html/f640b978-f990-84a2-015a-40bf256fc37d.htm\u0000184","SpriteController.DuplicateSprite Method (Sprite)\u0000html/ef714268-ae13-47ad-c8a8-1b8bb39cfed9.htm\u000097","Sprite.AutomaticallyMoves Property\u0000html/f7da08ef-ca8d-fd84-5c60-7bd966be6374.htm\u000090","SpriteEventArgs Constructor\u0000html/fa691ac7-58fb-b5fc-0141-68300e3a7a89.htm\u000052","Sprite.GetSpriteBaseImageCenter Method\u0000html/ef8d63de-fe6f-104e-f66f-3fffcd4ff0eb.htm\u000077","SpriteController.ReplaceOriginalImage Method (Image)\u0000html/eac30137-8237-e01a-ee3d-e599d117c03e.htm\u0000326","Sprite.GetImage Method\u0000html/fcc3a02a-e676-c16e-32a4-4fc2c5b530d4.htm\u000089","Sprite Class\u0000html/66013d9b-4126-7d65-05bb-94eb9d134be6.htm\u00004798"] \ No newline at end of file +["SpriteLibrary - Redirect\u0000index.html\u000018","AnimationInfo.FieldsToUse Field\u0000html/08655f84-1974-8ec8-beb5-42d217096e54.htm\u000059","AnimationInfo.Clone Method\u0000html/001309a9-257f-0e4f-7e68-a411464fe583.htm\u000067","Sprite.Click Event\u0000html/01fdd72c-b202-8593-db2a-e1373358dd66.htm\u000095","SpriteLibrary - Search\u0000search.html\u000010","Sprite.PutBaseImageLocation Method (Double, Double)\u0000html/00fa147e-bf27-6b9f-3f44-77f8e6c1a9cc.htm\u0000150","SpriteController.SoundPlay Method\u0000html/08442d70-3a79-fa24-4f3e-eddc5c102938.htm\u000097","SpriteController.PlaceSpriteBehind Method\u0000html/0b27d26e-53e1-c9bd-0b52-8fe4714c831a.htm\u000098","Sprite.SpriteAnimationComplete Event\u0000html/0e8b825f-f8df-9f14-41ec-f00778409dfb.htm\u000074","Sprite.SpriteAdjustedPoint Method\u0000html/0b9ae3b4-06a9-5ee6-9bc0-33377f8be55e.htm\u0000132","Sprite.SetSpriteDirectionDegrees Method\u0000html/0f4e570a-2888-8819-176b-9dd070ca7db4.htm\u000095","Sprite.ReplaceImage Method\u0000html/0ce33e3f-7f15-3abb-69b9-6826b7d831d7.htm\u0000154","Sprite.Destroying Property\u0000html/0f7e6cfa-e1e4-1b7a-152d-5b3281ac8bfe.htm\u0000144","SpriteDatabase.Save Method\u0000html/10c1df07-a9b0-63b4-3503-33b0fdd334c3.htm\u0000131","SpriteInfo.SpriteName Field\u0000html/12e2fe0e-0922-3f46-f249-22e1afc051c0.htm\u000061","Sprite.MovingToPoint Property\u0000html/139d1443-5e11-02ed-7534-eb0f857804da.htm\u000094","Sprite.MouseEnter Event\u0000html/17255a69-f623-3a42-a7ce-db1eb348581a.htm\u000083","Sprite.MoveTo Method (List(Point))\u0000html/16df05cc-8770-7cbe-f754-ba9e386674ad.htm\u0000180","Sprite.SpriteArrivedAtWaypoint Event\u0000html/17ee5c77-8351-af30-dc43-9458d683a69e.htm\u000091","Sprite.AddAnimation Method (Int32, Boolean, Boolean)\u0000html/1730e5a3-3e48-72f7-f641-b7a70e5c2563.htm\u0000181","SpriteEventArgs.CollisionMethod Field\u0000html/18405dcf-237d-db66-cf64-0e08b0d16b41.htm\u000062","SpriteDatabase.ReadFromXmlFile(T) Method\u0000html/1962c085-27f4-4748-a63e-5148364328b4.htm\u0000125","Sprite.AnimationCount Property\u0000html/23ac9f1e-8033-78a2-030b-b12d6496c3dd.htm\u000062","Sprite.ConvertRadiansToDegrees Method\u0000html/2695c170-24ea-95d2-7f85-34c3930416b5.htm\u000077","Sprite.MoveTo Method\u0000html/1f2c365c-e65b-3894-2e47-41f07250bbc0.htm\u0000247","Sprite.MoveTo Method (Sprite)\u0000html/27051af5-8ad4-0b54-231d-456499ae5b51.htm\u0000123","Sprite.AddAnimation Method\u0000html/154fc8b0-0d6c-003e-be50-c94da6bc4597.htm\u0000716","Sprite.ChangeAnimation Method\u0000html/25183ea9-6a42-63b0-8051-fd4b9c8dbfe7.htm\u000095","Sprite.SpriteEventHandler Delegate\u0000html/1bab1e49-641a-5648-d034-4298d8158019.htm\u0000111","Sprite.Rotation Property\u0000html/20db7ecc-35df-8911-2615-1f2b8777f03b.htm\u0000150","SpriteDatabase.GetImageFromName Method\u0000html/26d6c521-4554-21ef-3a61-402e06a3ca01.htm\u0000225","Sprite.BaseImageLocation Property\u0000html/29f62d1a-212b-273e-582e-670c1ea2856c.htm\u000074","AnimationInfo Constructor\u0000html/30363308-2e3c-7e5e-8ede-d857b8568bcb.htm\u000052","SpriteController.SpritesThatHaveBeenDrawn Method\u0000html/2c4eb5db-5c4c-6fcd-716c-532c0e2c4f35.htm\u000078","SpriteDatabase Methods\u0000html/0ac330a3-1432-ae65-488e-e5948e7871bf.htm\u0000798","Sprite.SpriteInitializes Event\u0000html/2b1a75c9-0eb6-fb22-eeea-595ec3cc1bf8.htm\u000076","SpriteDatabase.CloneByXMLSerializing(T) Method\u0000html/337078d6-e10a-94ca-0251-13a9f58ded01.htm\u0000139","SpriteDatabase Constructor\u0000html/35fc4baf-ba04-de67-a7bd-fa6819a4e8fd.htm\u0000158","Sprite.SetName Method\u0000html/36d40ecf-484f-3b53-43e4-87ed9108cb76.htm\u000084","SpriteController Constructor\u0000html/323c4f03-703d-0898-c73e-40eb5784c05f.htm\u0000141","Sprite.SpriteExitsPictureBox Event\u0000html/37ae1b7e-72db-69cb-f1c6-26242c07e2b5.htm\u000076","AnimationInfo.Height Field\u0000html/3678c025-c483-0bae-039a-504360bbd11b.htm\u000060","SpriteController.ReplaceOriginalImage Method\u0000html/2c9b874d-5097-98bf-908c-f6bac5d647d3.htm\u0000308","Sprite.payload Field\u0000html/3a7614d3-cfe9-ce52-55be-ca5324839e92.htm\u0000131","SpriteKeyEventHandler Delegate\u0000html/38678a79-da77-9ef7-e3e1-78ff96f5bd7b.htm\u000073","SpriteDatabase.WriteToXMLString(T) Method\u0000html/387652c9-df19-4da9-fa94-2f1002c0902f.htm\u0000154","Sprite Constructor (SpriteController, Image, Int32, Int32)\u0000html/184a1964-91ec-6f0d-b7cf-95b722599d69.htm\u0000152","SpriteController.AllNamedSprites Method\u0000html/3f19b918-15c0-db8a-a75d-c37f0dab1f84.htm\u000081","SpriteController Events\u0000html/4141394a-0d7d-5cf8-6b01-0a4fb43159ab.htm\u000059","SpriteController.OptimizeForLargeSpriteImages Field\u0000html/34a7b0e2-8fce-a07e-fff0-5460ba02a4cf.htm\u0000131","Sprite.AnimateJustAFewTimes Method\u0000html/3bbc779a-f8e9-8c18-c3c3-89018dd77daf.htm\u0000205","SpriteController.ReturnPictureBoxAdjustedHeight Method\u0000html/447d1a9a-0e17-9827-2a01-438434c1b879.htm\u0000105","SpriteEventArgs Methods\u0000html/4716eb02-e702-b61a-126a-362af50ca6d5.htm\u000072","SpriteController.ReturnAdjustmentRatio Method\u0000html/41ac663a-2019-6a14-5ffd-16dfc7472578.htm\u000092","Sprite.GetImage Method (Int32, Int32)\u0000html/4067393e-d724-b01d-dc77-947440c6c444.htm\u0000130","SpriteController.Invalidate Method (Boolean)\u0000html/451487c4-0cca-2c80-9b71-b116cbe00d6e.htm\u000091","Sprite.SpriteHitsPictureBox Event\u0000html/3aabe50b-5222-99aa-4654-356baa30033a.htm\u000079","SpriteController.ResetKeypressState Method\u0000html/48ff9be7-1395-25af-3585-3d32eba07309.htm\u000091","SpriteController.SpritesAtPoint Method\u0000html/3c18bbb7-e10c-1b96-754d-7dfc878e7cf4.htm\u0000146","Sprite.ReturnAdjustmentRatio Method\u0000html/56d803c5-e2ad-dd16-0592-b816f726498d.htm\u000085","SpriteInfo Constructor\u0000html/5fe094d1-25cb-4659-c77c-ccf1c0450b7c.htm\u000052","SpritePayload Methods\u0000html/5a5c3a2b-a675-c626-ced3-c958acc9f93e.htm\u000072","Sprite.ClickTransparent Event\u0000html/51c9d545-e5c3-888d-d033-17085734aa1d.htm\u000096","SpriteController.SpriteToBack Method\u0000html/5d32e0da-bbf2-10b5-ba20-fe5bdfec1963.htm\u000079","SpriteAdjustmentRatio Methods\u0000html/57a9f458-c6c8-d106-aad4-b2547736909a.htm\u000056","Sprite.FrameIndex Property\u0000html/603ff402-efe2-bede-5c71-1a9583da0800.htm\u000088","SpritePayload Class\u0000html/4e310248-8e1a-76aa-edbc-a83f4ba9b425.htm\u0000279","Sprite.CheckSpriteHitsSprite Method\u0000html/5d507565-cf0d-de52-2253-b55396e3886a.htm\u0000103","SpriteController.ReplaceOriginalImage Method\u0000html/49befa66-d9d0-400c-1fc2-ac57f17433f1.htm\u000079","Sprite.AddAnimation Method (Image, Int32)\u0000html/5284b83c-61a7-aefe-4087-f7137551b783.htm\u0000179","Sprite.PictureBoxLocation Property\u0000html/6273fa69-a784-9916-a8eb-5b16529fdf48.htm\u000077","SpriteController Methods\u0000html/2788d4d5-88bf-1154-dd17-8d4b99a79118.htm\u00001978","Sprite.SpriteBeingDestroyed Event\u0000html/64d54496-389b-21a7-0387-25878b2bcc4c.htm\u000093","SpriteController.DestroyAllSprites Method\u0000html/63fd5f6f-f592-0dbd-6fd2-ff4b999f012d.htm\u000060","AnimationInfo Methods\u0000html/5418aaf4-85e6-5953-87b9-51daa312bc53.htm\u000083","Sprite.AddAnimation Method (Image, Size)\u0000html/4a6fe677-5369-6c0a-1e61-81355aa238b1.htm\u0000170","SpriteController.DuplicateSprite Method (String)\u0000html/60fe71db-5ea2-cf93-f216-79b15a6779db.htm\u0000254","SpriteController.UnPause Method\u0000html/675951bb-e09a-e9ec-95d2-c0efaf187d6d.htm\u000086","SpriteController.DestroySprite Method\u0000html/56b507fc-3071-20e9-63a7-b33484f3e687.htm\u0000112","Sprite.Zvalue Property\u0000html/6adf23fc-b0f8-5abf-bd39-7dc44f060e7c.htm\u0000120","AnimationInfo Class\u0000html/5aa6ad83-7060-97ba-0874-99e52486cd6c.htm\u0000590","SpriteController.AdjustRectangle Method\u0000html/4f100dc3-39b4-fea4-6d73-8ef39eea489c.htm\u000093","SpriteDatabase.SpriteNames Method\u0000html/62400d06-17d8-96c4-90b2-d8e8198daba5.htm\u000084","SpriteController Class\u0000html/07a473e4-4716-e5b9-c7d2-c4748265fc58.htm\u00002567","Sprite.UnhideSprite Method\u0000html/6e92bfaf-2e6c-a3bc-e208-3f486f6b42fc.htm\u000082","Sprite.MirrorVertically Field\u0000html/679ff642-b87f-24d6-80c5-434c06c71523.htm\u0000103","SpriteDatabase.OpenEditWindow Method\u0000html/66486a11-2831-a2ee-75d8-e86857d192ab.htm\u0000556","Sprite.PutBaseImageLocation Method (Point)\u0000html/5b2d8b05-360b-44bc-2e7b-f1d4753cb0df.htm\u0000132","Sprite.SpriteAtImagePoint Method\u0000html/509560bd-f402-7e7f-a461-46845061a5fc.htm\u0000138","SpriteDatabase.SpriteFromName Method\u0000html/74aa367b-553a-4521-6844-a23b91ef5d58.htm\u0000166","Sprite.PutPictureBoxLocation Method\u0000html/7cf36b8e-42dc-cc56-1e14-6f248286d92b.htm\u0000115","SpriteInfo Methods\u0000html/6fd31706-c5be-87f8-1b62-04ed7f7d9e90.htm\u0000102","SpriteController.AdjustPoint Method\u0000html/68ba53c6-5c0d-3dd4-b9bd-56852a3b98cd.htm\u000082","Sprite.UnPause Method\u0000html/6707f122-af81-e57d-d937-e4000242446f.htm\u000077","Sprite.VisibleHeight Property\u0000html/5b5ccc3b-4e41-862f-7bba-7d55a45c6747.htm\u000077","AnimationInfo.Width Field\u0000html/789e91eb-8488-d05d-7d74-303917ae1891.htm\u000060","SpritePayload Constructor\u0000html/6acc0e43-8cb8-535c-6f39-8163bb21447a.htm\u000052","SpriteController.IsKeyPressed Method\u0000html/50eae5e0-c59c-9d9c-d551-21dba8696ac9.htm\u0000141","Sprite.SetSize Method\u0000html/7cf8acaf-92f1-652e-4c2a-bfd920bc0479.htm\u000095","SpriteEventArgs.TargetSprite Field\u0000html/72a79555-fc4d-8b5b-1a9c-408fd55972e9.htm\u000078","Sprite.SpriteOriginName Property\u0000html/7d21be0e-d534-6d93-1476-3aa585a8fea3.htm\u000081","Sprite.MouseLeave Event\u0000html/7a4959c4-936a-b924-d525-7becb693a55b.htm\u000085","Sprite.CannotMoveOutsideBox Field\u0000html/747bfb64-7646-38ee-09e3-65455ac597e5.htm\u000072","Sprite.SpriteChangesAnimationFrames Event\u0000html/81ec308a-e52d-7e07-f9e0-50d0bf531a30.htm\u0000105","SpriteDatabase.ReadFromXmlString(T) Method\u0000html/7ee23002-2338-41cf-0c54-def8b272bb80.htm\u0000167","SpriteLibrary Namespace\u0000html/6b7227c0-7a6a-6342-3b08-917c7de429cc.htm\u0000851","SpriteController.OriginalImage Property\u0000html/7d3a40d7-0ee8-6117-8d32-b236da97778f.htm\u000095","Sprite Constructor (Point, SpriteController, Image, Int32, Int32, Int32, Int32)\u0000html/8e88c5f2-f5d0-02df-c7cb-9701313411af.htm\u0000202","SpriteController.ReturnPictureBoxAdjustedWidth Method\u0000html/7c73b68e-f842-bfee-55d8-b36488fb35b7.htm\u0000128","Sprite.ChangeFrameAnimationSpeed Method\u0000html/859526c5-9283-3edb-386b-905cbaa406fd.htm\u0000110","SpriteController.IsKeyPressed Method (Keys)\u0000html/7fc92c27-7895-2b2c-d4f1-ac682eec7af5.htm\u0000151","Sprite.AddAnimation Method (Point, Image, Int32, Int32, Int32, Int32)\u0000html/8ae70e13-ebdf-d78f-d7a4-69825f6b8c26.htm\u0000249","SpriteController.SpritesAtImagePoint Method\u0000html/90511f90-497b-fc61-6984-15d76101a6f1.htm\u0000181","Sprite.ChangeAnimationSpeed Method\u0000html/93aee3f0-fb9a-e628-9224-0128a91d363a.htm\u0000113","Sprite.MouseLeaveTransparent Event\u0000html/8ff96e56-6289-4c11-f351-4dbfe58a44cf.htm\u000090","Sprite.SpriteIntersectsRectangle Method\u0000html/96b717e2-d860-aa86-3760-d39620a2bb31.htm\u000091","Sprite.GetSpriteRadans Method\u0000html/88cf999b-5b19-4cfc-adab-b0276f18431a.htm\u000073","SpriteController.SpriteToFront Method\u0000html/80b0403d-da14-c176-9d01-080fc170a67d.htm\u000082","Sprite.GetSize Property\u0000html/8b245db5-fbb6-18bc-d219-832668d1432a.htm\u000087","Sprite Constructor (SpriteController, Image, Int32, Int32, Int32)\u0000html/6541bf2d-e608-1bad-2e7f-1b0f2deb0c34.htm\u0000158","Sprite.Opacity Property\u0000html/90a2e7f3-348b-d10b-ee6b-9397ef5daa18.htm\u0000171","SpriteController.ReturnPictureBoxAdjustedPoint Method\u0000html/9469b7cf-55ee-5c2e-feb7-01c7e23a6350.htm\u0000119","Sprite Constructor (SpriteController, Image)\u0000html/98f8bf30-d3ab-5f86-9fbf-9f76df20f2e6.htm\u000095","Sprite.AddAnimation Method (Image, Int32, Int32)\u0000html/9d686d62-c22c-20ec-7455-b4adc8070b8c.htm\u0000185","SpriteController.PlaceSpriteInFrontOf Method\u0000html/8d47a519-d5f7-c7f6-4ccb-0d310cab2435.htm\u000095","SpriteEventArgs Fields\u0000html/817b64cb-8c4b-af50-69ba-6762e8ae51c5.htm\u0000153","Sprite Constructor\u0000html/8a70b6b2-3e2d-3c6f-0d8c-18e6dea4368e.htm\u0000242","SpriteController Fields\u0000html/92b04460-74f1-c388-f3ac-ea510ffc4e06.htm\u0000138","Sprite.IsPaused Method\u0000html/9474d6c2-30d9-a39b-3c10-b50286f93813.htm\u0000109","Sprite.SpriteCanMoveOnPictureBox Method\u0000html/995741fd-f6ea-f11e-ee46-c88de9307e8a.htm\u000095","SpriteController.BackgroundImage Property\u0000html/9d9cf5a5-3349-bfae-7d39-41082644a49e.htm\u000092","Sprite.ID Property\u0000html/8e41c462-a765-51e2-4c3b-de231acba259.htm\u000065","Sprite Fields\u0000html/6d383ed6-ff9b-f1b0-a53d-54ea41795870.htm\u0000316","SpriteAdjustmentRatio.width_ratio Field\u0000html/92e90a8d-e5eb-daea-2804-b99254f25433.htm\u000072","SpriteAdjustmentRatio Fields\u0000html/9c6cb5e5-0054-eab6-66d9-e6e0c1e8c444.htm\u000074","Sprite.SpriteAtPictureBoxPoint Method\u0000html/9e0d8841-7f6a-63b2-c5fb-5ba6ffa85436.htm\u0000176","SpriteInfo.Animations Field\u0000html/a737620e-6604-1a1b-df59-3458c3402c9d.htm\u0000126","SpriteController.SpriteCount Property\u0000html/6e7ddbc9-4f71-533f-b99c-55a53ba4a843.htm\u000077","AnimationInfo.AnimationToUse Field\u0000html/ad0a5da6-126d-b31b-aa3d-dbbd7d5a2556.htm\u000081","AnimationInfo Fields\u0000html/a498d1a3-101d-fccb-21fd-29b42a994024.htm\u0000350","Sprite.GetVisibleSize Property\u0000html/af9edc83-1d26-349b-8105-6064a540e2c7.htm\u000086","SpriteAdjustmentRatio.height_ratio Field\u0000html/a8864de9-4275-a608-f5b0-26d4b313967d.htm\u000072","SpriteEventArgs.Cancel Field\u0000html/ad1a395a-bbd4-d507-aa4d-1419f9b7df08.htm\u000085","SpriteController Constructor (PictureBox, SpriteDatabase)\u0000html/9ed74ea6-9db4-d455-98b6-b2b75d8b1547.htm\u0000231","AnimationType Enumeration\u0000html/b0575fa3-d1f2-f3d5-aeff-bdb7b04e46b6.htm\u0000127","SpriteCollisionMethod Enumeration\u0000html/b78d4878-d301-191f-9c53-4f41d3e937e6.htm\u0000185","Sprite.AddAnimation Method (Image, Int32, Int32, Int32)\u0000html/a50146be-5b11-1554-db6f-817ea76b9343.htm\u0000205","Sprite Constructor (Sprite, Boolean)\u0000html/bacd1b59-34a9-eb30-29b3-4fdc704a7b60.htm\u0000164","Sprite.PutBaseImageLocation Method\u0000html/adaddf64-5e6e-447b-5d81-c38398216201.htm\u0000156","AnimationInfo.MirrorHorizontally Field\u0000html/a0bcddc2-1bb7-22e7-0b16-c000e5e19dcc.htm\u000073","SpriteInfo.Clone Method\u0000html/949b6b09-68f2-5775-7d24-28efd893a244.htm\u000068","SpriteController.RandomNumberGenerator Field\u0000html/b9f05ef6-f80c-5676-1eca-d73833dca177.htm\u000067","SpriteDatabase.SpriteInfoList Field\u0000html/b1290487-edeb-d980-43a0-03b3c4a82fdc.htm\u000095","SpriteController.NameSprite Method\u0000html/a5292253-7fbd-5dfa-819f-1d67d27580d6.htm\u0000102","SpriteDatabase.GetImageNames Method\u0000html/bbc5d326-0dc1-c076-d4dc-796ed4738814.htm\u000077","Sprite.CancelMoveTo Method\u0000html/adc84477-1eb3-bb14-ee09-0525268c45f4.htm\u000065","Sprite.RecalcPictureBoxLocation Method\u0000html/ba26c365-f8d2-0a86-b3b6-1cfab946b3da.htm\u000075","Sprite.Destroy Method\u0000html/bc474319-2c51-e93f-07e2-9728d609c563.htm\u000072","SpriteInfo.CopyFrom Method\u0000html/a6b3d508-3301-8e4a-0f2e-bed5f22f3e90.htm\u000076","AnimationInfo.NumFrames Field\u0000html/a395b730-e319-7999-9579-4eae9d045a21.htm\u000065","Sprite.SpriteReachedEndPoint Property\u0000html/ae4a57de-4763-c9cb-c9e3-c6e186296fd8.htm\u000095","SpriteController.KeysPressed Method\u0000html/bcb29da5-8d8d-fa11-90ea-3a0cc73a0df0.htm\u0000131","SpriteController.DuplicateSprite Method\u0000html/ae6c1c82-0519-4751-0b6d-f264c484e4cb.htm\u000096","SpriteController.ChangeTickInterval Method\u0000html/bf55ab7f-78c8-3879-b8f8-464dc203791e.htm\u0000100","SpriteController Properties\u0000html/c6c542de-2b1f-1086-b5b2-56b7e9a9525f.htm\u0000126","SpriteController.DoTick Event\u0000html/ba843001-e657-41e8-7c66-c2473781ed40.htm\u0000589","Sprite.SetSpriteDirection Method\u0000html/aebe0cd6-1499-7da2-2f96-c86d84189b58.htm\u0000113","SpriteController.SpritesBasedOffAnything Method\u0000html/c7991a63-f63c-20d8-0605-fab6e9f13392.htm\u000079","Sprite.GetImage Method\u0000html/b29c2176-174b-e620-0e33-9a22730ad05f.htm\u000074","Sprite.SendToBack Method\u0000html/c0d47063-6820-3464-ed46-94ffd2329683.htm\u000054","Sprite.MouseHover Event\u0000html/d8964a64-57ec-3b0c-94b5-247707cd34e8.htm\u000076","Sprite Methods\u0000html/abfab841-a96c-b22d-7cd8-fec3aba92510.htm\u00002434","SpriteController.RegisterKeyDownFunction Method\u0000html/af7fceb3-a35e-b016-3955-696b3a3c7a7e.htm\u000093","SpriteController.SetSpriteDatabase Method\u0000html/c92034cd-76bc-a0ff-aae9-459711ff56c1.htm\u000085","SpriteController.SpritesInImageRectangle Method\u0000html/c2860c42-fc4c-78f8-7d32-195e74262434.htm\u0000107","SpriteController.CountSpritesBasedOff Method\u0000html/dace8c3a-8d35-4ae7-ddf8-26e59dc161ae.htm\u0000123","SpriteDatabase.SetSnapGridSize Method\u0000html/ac60fbfe-2f25-8d24-b1a2-6cd83762f380.htm\u0000129","AnimationInfo.ImageName Field\u0000html/cb9942df-d69d-8615-5b88-45f903dfeaa3.htm\u0000132","SpriteController.UnlinkControllersForSpriteTemplateSharing Method\u0000html/c28d2cee-4d17-3330-fb5d-21cd2621d597.htm\u0000115","Sprite.SpriteHitsSprite Event\u0000html/acb35a6f-c89a-3a7d-146d-b85ccf68d8aa.htm\u000073","Sprite.SetSpriteDirectionToPoint Method\u0000html/d416e051-269c-c343-aece-3682b87f3cbc.htm\u0000197","Sprite Properties\u0000html/bcdb40c8-478a-043c-5db0-393001600029.htm\u00001065","Sprite.VisibleWidth Property\u0000html/cd53c0db-02b1-e505-0dce-a7d4d7710d5c.htm\u000077","SpriteDatabase.LoadObjectFromXmlFile(T) Method\u0000html/dad86143-a294-4bfb-c83e-49453b03de01.htm\u0000222","Sprite.SpriteCanMoveOnImage Method\u0000html/c2f3867b-b906-a526-c836-718da1546a78.htm\u000096","SpriteController.SpriteBackwards Method\u0000html/d516c33b-29ef-9613-62fb-b6717264a32b.htm\u000083","Sprite.MouseEnterTransparent Event\u0000html/acf8f1b8-170d-0fa9-1ac9-41a086d97046.htm\u000088","Sprite.GetAnimationSpeed Method\u0000html/d0e10a16-4614-56b2-3e21-ce841f26b3d8.htm\u0000104","Sprite.Pause Method\u0000html/db9f18b5-9947-5dfc-3174-39f4b1341b1c.htm\u0000104","Sprite.MirrorHorizontally Field\u0000html/c39b03eb-911a-b0dc-fd7b-276ee464f6c7.htm\u0000101","Sprite.GetSpriteDegrees Method\u0000html/d5da80cc-4be3-3550-8bf9-5c460fbf2e15.htm\u0000152","SpriteController.ReturnPointAdjustedForImage Method\u0000html/e58bfa3c-4722-7f3a-9610-0a0ce62bfe99.htm\u0000161","SpriteDatabase Fields\u0000html/eae2230d-9914-4c68-149a-45c83da90b44.htm\u000066","SpriteController Constructor (PictureBox)\u0000html/dd581cb5-2630-cc79-5fcb-24bfcb817e03.htm\u0000174","SpriteController.Invalidate Method (Rectangle, Boolean)\u0000html/c57680f5-fd0e-a4a6-05a0-3a42de94edb8.htm\u0000109","Sprite.MouseHoverTransparent Event\u0000html/d7215876-6117-ce45-75a4-77dc00c386cd.htm\u000081","SpriteDatabase Class\u0000html/b2b20aab-3fc0-1b0f-8fda-213dbc180690.htm\u00001018","SpriteController Constructor (PictureBox, EventHandler)\u0000html/d20e5816-faf3-723d-5f2d-ebff462012f1.htm\u0000217","Sprite.SpriteName Property\u0000html/e753341a-7040-8dda-8f1e-681e926e9292.htm\u0000161","SpriteController.SoundIsFinished Method\u0000html/df0fd1e8-eac8-4f10-7f09-baa6127f3752.htm\u000091","AnimationInfo.RotationDegrees Field\u0000html/c59aa31b-d1bf-4e1a-9db9-0e5d83f713df.htm\u000072","SpriteController.DuplicateSprite Method (Sprite)\u0000html/ef714268-ae13-47ad-c8a8-1b8bb39cfed9.htm\u000097","SpriteController.RegisterKeyUpFunction Method\u0000html/b3e934e2-1ddf-35e3-0995-3b555539f33f.htm\u000093","SpriteAdjustmentRatio Structure\u0000html/eae9601e-6da0-b304-9836-5e4b1e743f94.htm\u0000173","SpriteController.Pause Method\u0000html/d329fe20-e750-bf52-a75b-f2383bf1d35a.htm\u0000104","SpriteEventArgs.NewLocation Field\u0000html/e058b656-39e3-5a55-4437-ee869ecbf35e.htm\u000092","Sprite.GetSpriteBaseImageCenter Method\u0000html/ef8d63de-fe6f-104e-f66f-3fffcd4ff0eb.htm\u000077","AnimationInfo.StartPoint Field\u0000html/b520d8f5-2ec3-566c-c220-b6be46fd93d8.htm\u000087","SpriteDatabase.WriteToXmlFile(T) Method\u0000html/e8336b9d-8af9-22bf-8934-d6a343349847.htm\u0000173","Sprite.AnimationDone Property\u0000html/f0db6147-f3aa-d599-6371-a89da047bbc5.htm\u0000231","Sprite.AutomaticallyMoves Property\u0000html/f7da08ef-ca8d-fd84-5c60-7bd966be6374.htm\u000090","Sprite.AddAnimation Method (Int32, Int32)\u0000html/eb5261e9-43df-01a5-b974-25c2fd13309c.htm\u0000154","Sprite.GetSpritePictureboxCenter Method\u0000html/efb3089a-8900-83fe-ce65-f22e686d7477.htm\u000074","SpriteController.SpritesBasedOff Method\u0000html/e05efb85-3736-fa59-2720-a460b898048a.htm\u0000127","SpriteController.SpriteForwards Method\u0000html/b5c75d58-f132-f3ff-217f-e69b252db748.htm\u000083","SpriteController.AddSprite Method\u0000html/f28be11d-b67a-765c-441a-d7da336ccf77.htm\u000098","AnimationInfo.MirrorVertically Field\u0000html/f823f804-6f46-349e-e5e0-ba9d06aff2f8.htm\u000073","SpriteController.SpriteFromName Method\u0000html/e8491570-1fda-7d8e-48b8-c15f26c41d01.htm\u0000148","Sprite.SetSpriteDirectionRadians Method\u0000html/ec39133f-39d0-c9ef-e77b-e58ea8c9b2f6.htm\u000091","Sprite.SpriteArrivedAtEndPoint Event\u0000html/e37ba69c-1cb3-693c-f4b1-8e37b12cbd23.htm\u000097","SpriteEventArgs Constructor\u0000html/fa691ac7-58fb-b5fc-0141-68300e3a7a89.htm\u000052","SpriteDatabase.SetIcon Method\u0000html/f333050a-7353-3dd6-922c-52bb94ce2f0e.htm\u000065","SpritePauseType Enumeration\u0000html/efc2cb08-5c2b-c758-477e-d5739183a1ba.htm\u0000151","Sprite.MovementSpeed Field\u0000html/e88e79e3-3edc-69e5-1854-23968928c073.htm\u0000120","Sprite Constructor (SpriteController, Image, Size)\u0000html/ecbab3a8-aa92-2bb6-efc6-cf26d1df424a.htm\u0000136","Sprite.AnimateOnce Method\u0000html/ff84ba57-4738-8ff0-2356-095dfe1cc159.htm\u0000169","Sprite.HasBeenDrawn Property\u0000html/f374c8cd-af01-f03a-1d31-0b46e0d8745c.htm\u000081","SpriteInfo.ViewPercent Field\u0000html/fb5d39a1-88e9-1efd-064c-d209a98e8644.htm\u0000104","Sprite Events\u0000html/bdcfa83c-c4a7-49f3-4d49-2f865014aee6.htm\u0000661","General Error\u0000html/GeneralError.htm\u000031","Sprite.GetFrameAnimationSpeed Method\u0000html/e38f911d-9d99-eac6-b9ea-bffd3d04678a.htm\u0000117","Sprite.GetSpriteVector Method\u0000html/e9953cab-b878-4169-fda6-d5addecb267b.htm\u000065","Page Not Found\u0000html/PageNotFound.htm\u000065","Sprite.CheckBeforeMove Event\u0000html/f4164c4a-55e1-87f7-95bd-7bae1d99326b.htm\u000079","AnimationInfo.AnimSpeed Field\u0000html/bddcb7c5-ab50-1911-171b-d4d6109ab889.htm\u000081","SpriteInfo Fields\u0000html/fb676f66-0439-9787-e91c-371c56d66cce.htm\u0000168","SpriteController.LinkControllersForSpriteTemplateSharing Method\u0000html/ed73e5df-d940-2512-1be5-b59f7deadc57.htm\u0000234","Sprite.AddAnimation Method (Image)\u0000html/e45036ef-15fa-9fbc-ef24-5e48c8c8ad8d.htm\u0000153","SpriteController.IsKeyPressed Method\u0000html/bf10cc41-d9e2-52c5-0415-1083f0f55489.htm\u0000126","Sprite.HideSprite Method\u0000html/e57f527d-aee3-7c4e-fc43-7219b7961fe0.htm\u000074","Sprite Class\u0000html/66013d9b-4126-7d65-05bb-94eb9d134be6.htm\u00004731","Sprite.GetImage Method\u0000html/fcc3a02a-e676-c16e-32a4-4fc2c5b530d4.htm\u000089","Sprite.MoveTo Method (Point)\u0000html/eefee0d8-fb59-4546-386a-53f40c545c43.htm\u0000138","SpriteInfo Class\u0000html/ea3329cc-ea39-b02b-025e-fc9ac7e40cd8.htm\u0000401","SpriteController.AllSprites Method\u0000html/662ea0d6-7a35-be51-5a25-288752509d24.htm\u000068","SpriteEventArgs Class\u0000html/f42e1d9a-273c-861f-b7db-6244c9266d2c.htm\u0000274","Sprite.ConvertDegreesToRadians Method\u0000html/fd3f0ed3-4608-2686-e248-8f2a1e6a2bac.htm\u000082","Sprite.SendToFront Method\u0000html/ef420c55-64ea-5230-e9e5-d8c13f98f74a.htm\u000058","Sprite.AnimationIndex Property\u0000html/f55ba01a-50d3-248c-5c34-ba32355db223.htm\u000079","SpriteController.Invalidate Method\u0000html/fd95464a-c61d-8ed2-a568-34b825efc047.htm\u000045","SpriteController.ReplaceOriginalImage Method (Image)\u0000html/eac30137-8237-e01a-ee3d-e599d117c03e.htm\u0000326","SpriteController.SpriteComparisonDelegate Field\u0000html/f640b978-f990-84a2-015a-40bf256fc37d.htm\u0000184"] \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/001309a9-257f-0e4f-7e68-a411464fe583.htm b/SpriteLibrary/Doc/Help/html/001309a9-257f-0e4f-7e68-a411464fe583.htm new file mode 100644 index 0000000..62d51f7 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/001309a9-257f-0e4f-7e68-a411464fe583.htm @@ -0,0 +1,7 @@ +AnimationInfo.Clone Method

AnimationInfoClone Method

+ A generic cloning method that works when everything is public +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public AnimationInfo Clone()

Return Value

Type: AnimationInfo
A clone of the specified AnimationInfo
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/00fa147e-bf27-6b9f-3f44-77f8e6c1a9cc.htm b/SpriteLibrary/Doc/Help/html/00fa147e-bf27-6b9f-3f44-77f8e6c1a9cc.htm index 7785f77..205ba40 100644 --- a/SpriteLibrary/Doc/Help/html/00fa147e-bf27-6b9f-3f44-77f8e6c1a9cc.htm +++ b/SpriteLibrary/Doc/Help/html/00fa147e-bf27-6b9f-3f44-77f8e6c1a9cc.htm @@ -1,4 +1,4 @@ -Sprite.PutBaseImageLocation Method (Double, Double)
SpritePutBaseImageLocation Method (Double, Double)
+Sprite.PutBaseImageLocation Method (Double, Double)

SpritePutBaseImageLocation Method (Double, Double)

Put the Sprite at a specified location, using the dimentions of the BackgroundImage. Unless you are using coordinates you have gotten from a mouse-click, this is how you want to place a Sprite somewhere. It is the easiest way to track things. But, if you are diff --git a/SpriteLibrary/Doc/Help/html/01fdd72c-b202-8593-db2a-e1373358dd66.htm b/SpriteLibrary/Doc/Help/html/01fdd72c-b202-8593-db2a-e1373358dd66.htm index 744ad40..9538ef2 100644 --- a/SpriteLibrary/Doc/Help/html/01fdd72c-b202-8593-db2a-e1373358dd66.htm +++ b/SpriteLibrary/Doc/Help/html/01fdd72c-b202-8593-db2a-e1373358dd66.htm @@ -1,4 +1,4 @@ -Sprite.Click Event
SpriteClick Event
+Sprite.Click Event

SpriteClick Event

This event happens when someone clicks on the sprite (on the rectangle in which the sprite is). If you want the event to fire off only when someone clicks on the visible part of the sprite, use ClickTransparent instead. diff --git a/SpriteLibrary/Doc/Help/html/07a473e4-4716-e5b9-c7d2-c4748265fc58.htm b/SpriteLibrary/Doc/Help/html/07a473e4-4716-e5b9-c7d2-c4748265fc58.htm index d0b757d..3c38062 100644 --- a/SpriteLibrary/Doc/Help/html/07a473e4-4716-e5b9-c7d2-c4748265fc58.htm +++ b/SpriteLibrary/Doc/Help/html/07a473e4-4716-e5b9-c7d2-c4748265fc58.htm @@ -1,4 +1,4 @@ -SpriteController Class
SpriteController Class
+SpriteController Class

SpriteController Class

A sprite controller is the main heart of the sprite class. Each SpriteController manages one picturebox. If at all possible, try to keep each game in one picturebox, and try to avoid making and destroying new forms with SpriteController/pictureboxes in them. It is hard to destroy them completely. @@ -12,6 +12,11 @@ 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. +
Public methodCode exampleSpriteController(PictureBox, SpriteDatabase)
+ 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 SpriteDatabase, which + loads sprite definitions at construction time, and has tools for making and storing sprites.
Public methodCode exampleSpriteController(PictureBox, EventHandler)
Create a sprite controller, specifying the picturebox on which the sprites will be displayed. @@ -37,6 +42,8 @@ Adjust an image point so that it conforms to the picturebox.
Public methodAdjustRectangle
Adjust a rectangle that is based on the image, according to the stretch of the picturebox +
Public methodAllNamedSprites
+ Get a list of all your named sprites. These should just be your template sprites.
Public methodAllSprites
Return a list of all sprites
Public methodChangeTickInterval
@@ -53,10 +60,14 @@ the time you destroy it until it vanishes. Whe you destroy a sprite, it will erase itself and remove itself from the controller. After it is destroyed, it is completely gone.
Public methodCode exampleDuplicateSprite(String)
- Find a sprite that has been named with the specified name. Then duplicate that sprite + Find a sprite that has been named with the specified name. Then duplicate that sprite. If you have + SpriteControllers which are linked (see + + SpriteController.LinkControllersForSpriteTemplateSharing for how to do this), if the Sprite template is + not contained in this controller, it is looked up in any linked controllers.
Public methodDuplicateSprite(Sprite)
Make a duplicate of the specified sprite. The duplicate does not yet have a location. -
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)Public methodInvalidate(Boolean)
+
Public methodEquals (Inherited from Object.)Protected methodFinalize (Inherited from Object.)Public methodGetHashCode (Inherited from Object.)Public methodGetType (Inherited from Object.)Public methodInvalidate(Boolean)
Invalidate the entire image on which the sprites are drawn
Public methodInvalidate(Rectangle, Boolean)
Invalidate a rectangle that is specified in image coordinates @@ -75,7 +86,15 @@ key-pressed system. If the form loses focus, and someone releases a key, the key-up is never triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have lost focus. -
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)Public methodNameSprite
+
Public methodLinkControllersForSpriteTemplateSharing
+ Link up a sprite controller so that it shares sprites with this other sprite controller. If one sprite controller + does not have the named sprite, it will query any linked controllers for that named sprite and copy it to the + controller that did not have it. This means you only need to create a sprite once, and you can use it on multiple + sprite controllers. In many games, you will want to have a sprite appear on different PictureBoxes, and this is + a way to do that. For example, you may want to have a bad-guy running around on the screen, but also have his sprite + appear in a bad-guy summary, along with his stats, on the side. Loading sprites can be slow, so this makes things a bit + faster by only needing to load them once. +
Protected methodMemberwiseClone (Inherited from Object.)Public methodNameSprite
Find the specified Sprite in the controller and change its name to the specified string. You can do the same thing with Sprite.SetName(Name)
Public methodPause
Pause everything. It loops through all the sprites in the SpriteController and sends the specified @@ -107,7 +126,7 @@ things up, so what we do is duplicate the image twice, and tell the sprite controller to use one of the copies and then set the background to be the other one of the two copies.Finally, we tell the picturebox to invalidate itself.That does everything that is needed. -
C#
 void ReplaceBackground(Image NewBackground)
+             
C#
 void ReplaceBackground(Image NewBackground)
 {
     if (MyController == null) return;
     if (NewBackground == null) return;
@@ -118,7 +137,7 @@
     Image TwoImage = new Bitmap(NewBackground);
     pb_map.BackgroundImage = TwoImage;
     pb_map.Invalidate();
-}
Public methodResetKeypressState
+}
Public methodResetKeypressState
Reset the keypress status. Sometimes the sprite controller misses a key being released (usually because a window has taken priority, or something has changed). Calling this function will reset the stored memory of whether a key has been pressed. @@ -139,6 +158,9 @@ This takes a point, the location on a picturebox, and returns the corresponding point on the BackgroundImage. Picturebox locations are "sloppy"; the background image locations are very precise. Since this takes a "sloppy" number and returns a precise number, it does some rounding to figure out where the specified location is. +
Public methodSetSpriteDatabase
+ If you do not instantiate your SpriteController with a database, you can add one after instantiation + using this function.
Public methodSoundIsFinished
Check to see if the specified sound has finished playing
Public methodSoundPlay
@@ -178,7 +200,11 @@ Change the display order of the specified sprite so it goes behind all other sprites.
Public methodSpriteToFront
Change the display order of the specified sprite so it goes in front of all other sprites. -
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)Public methodUnPause
+
Public methodToString (Inherited from Object.)Public methodUnlinkControllersForSpriteTemplateSharing
+ Unlink a previously linked controller. If you have linked a controller from a different window and are trying to + kill off the controller in a window you are closing, you want to unlink them as the window closes. We take a brief + moment to copy over any templates that have not yet been copied over. +
Public methodUnPause
un-Pause everything. This will send the specified SpritePauseType unpause command to all sprites.
Top
Events
diff --git a/SpriteLibrary/Doc/Help/html/08442d70-3a79-fa24-4f3e-eddc5c102938.htm b/SpriteLibrary/Doc/Help/html/08442d70-3a79-fa24-4f3e-eddc5c102938.htm index 5a8d4ca..9eb823a 100644 --- a/SpriteLibrary/Doc/Help/html/08442d70-3a79-fa24-4f3e-eddc5c102938.htm +++ b/SpriteLibrary/Doc/Help/html/08442d70-3a79-fa24-4f3e-eddc5c102938.htm @@ -1,4 +1,4 @@ -SpriteController.SoundPlay Method
SpriteControllerSoundPlay Method
+SpriteController.SoundPlay Method

SpriteControllerSoundPlay Method

Play a sound that we can check to see if it has completed.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/08655f84-1974-8ec8-beb5-42d217096e54.htm b/SpriteLibrary/Doc/Help/html/08655f84-1974-8ec8-beb5-42d217096e54.htm new file mode 100644 index 0000000..98b544a --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/08655f84-1974-8ec8-beb5-42d217096e54.htm @@ -0,0 +1,7 @@ +AnimationInfo.FieldsToUse Field

AnimationInfoFieldsToUse Field

+ The FieldsToUse tracks which of the values in AnimationInfo are important +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public AnimationType FieldsToUse

Field Value

Type: AnimationType
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/0ac330a3-1432-ae65-488e-e5948e7871bf.htm b/SpriteLibrary/Doc/Help/html/0ac330a3-1432-ae65-488e-e5948e7871bf.htm new file mode 100644 index 0000000..ba53683 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/0ac330a3-1432-ae65-488e-e5948e7871bf.htm @@ -0,0 +1,58 @@ +SpriteDatabase Methods

SpriteDatabase Methods

The SpriteDatabase type exposes the following members.

Methods
+   + NameDescription
Public methodStatic memberCloneByXMLSerializingT
+ This is an inefficient, but simple function to clone a class. It works by serializing an item + to a string, and then deserializing it into a class. The end result is that any value which is + publically visible is duplicated, but it is a completely separate class from the original. +
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetImageFromName
+ This function returns an image from the Properties.Resources. If we tell it to UseSmartImages, then + it caches the image in memory. This makes it a little faster to return. If you have a lot of sprites + to load, using this system can speed up things a fair bit. But, try to remember not to change the + image that this returns unless you duplicate it first. Otherwise you will end up changing the image + for all the other times you reference it. This is usualy a bad thing. +
Public methodGetImageNames
+ Return a list of the image names in the Properties.Resources +
Public methodGetType (Inherited from Object.)
Public methodStatic memberLoadObjectFromXmlFileT
+ Load in an XML serialized item from the specified ResourceManager. You will usually make one of these by + creating an object and using WriteToXmlFileT(String, T) SpriteDatabase.WriteToXmlFile to + save it to a file on your desktop. Then you can drag and drop that file into your project and then use this + LoadObjectFromXmlFile function. +
Protected methodMemberwiseClone (Inherited from Object.)
Public methodCode exampleOpenEditWindow
+ Open a Sprite Edit Window. This window does not let you draw a sprite. What it does is to help + you define your sprites and makes the process of using Sprites in your program a lot easier. +
Public methodStatic memberReadFromXmlFileT
+ Reads an object instance from an XML file. +

Object type must have a parameterless constructor.

Public methodStatic memberReadFromXmlStringT
+ This is a generic function which the SpriteDatabase uses. It does XML Deserialization of most anything, + and generates an XML String. XML Serialization will take any public value of a public class and + make an XML entry for it. It is a very convienent way to save and retrieve data. You can "Serialize" the value + with the WriteToXMLString function. +
Public methodSave
+ Tell the database to save the sprite definitions. Use this while you are creating your game. + When you are done, you will usually want to take your sprite definition file and add it to the + resources of your game. The resources cannot be saved to, so you cannot continue to add new sprites + once you are loading and saving them from a resources file. But, the resources file is included with + the program when you build it. +
Public methodSetIcon
+ Change the Icon for the SpriteEntryForm +
Public methodSetSnapGridSize
+ 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 + specified in the snap-grid. It takes a "Size" specified by System.Drawing.Size. +
Public methodSpriteFromName
+ 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. +
Public methodSpriteNames
+ Return a list of the SpriteNames that this Database knows how to create. +
Public methodToString (Inherited from Object.)
Public methodStatic memberWriteToXmlFileT
+ Writes the given object instance to an XML file. + Only Public properties and variables will be written to the file. These can be any type though, even other classes. + If there are public properties/variables that you do not want written to the file, decorate them with the [XmlIgnore] attribute. + Object type must have a parameterless constructor. +
Public methodStatic memberWriteToXMLStringT
+ This is a generic function which the SpriteDatabase uses. It does XML Serialization of most anything, + and generates an XML String. XML Serialization will take any public value of a public class and + make an XML entry for it. It is a very convienent way to save data. You can "Deserialize" the value + with the ReadFromXMLString function. +
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/0b27d26e-53e1-c9bd-0b52-8fe4714c831a.htm b/SpriteLibrary/Doc/Help/html/0b27d26e-53e1-c9bd-0b52-8fe4714c831a.htm index 1edadc6..18aa83b 100644 --- a/SpriteLibrary/Doc/Help/html/0b27d26e-53e1-c9bd-0b52-8fe4714c831a.htm +++ b/SpriteLibrary/Doc/Help/html/0b27d26e-53e1-c9bd-0b52-8fe4714c831a.htm @@ -1,4 +1,4 @@ -SpriteController.PlaceSpriteBehind Method
SpriteControllerPlaceSpriteBehind Method
+SpriteController.PlaceSpriteBehind Method

SpriteControllerPlaceSpriteBehind Method

Change the display order of the sprites such that the specified sprite appears behind the other sprite.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/0b9ae3b4-06a9-5ee6-9bc0-33377f8be55e.htm b/SpriteLibrary/Doc/Help/html/0b9ae3b4-06a9-5ee6-9bc0-33377f8be55e.htm index aae76fa..384f1f9 100644 --- a/SpriteLibrary/Doc/Help/html/0b9ae3b4-06a9-5ee6-9bc0-33377f8be55e.htm +++ b/SpriteLibrary/Doc/Help/html/0b9ae3b4-06a9-5ee6-9bc0-33377f8be55e.htm @@ -1,4 +1,4 @@ -Sprite.SpriteAdjustedPoint Method
SpriteSpriteAdjustedPoint Method
+Sprite.SpriteAdjustedPoint Method

SpriteSpriteAdjustedPoint Method

Because sprites are scaled (shrunk or stretched), this function finds the point within the sprite that is specified by the location. this function is used by a number of internal processes, but may be useful to you. But probably not. diff --git a/SpriteLibrary/Doc/Help/html/0ce33e3f-7f15-3abb-69b9-6826b7d831d7.htm b/SpriteLibrary/Doc/Help/html/0ce33e3f-7f15-3abb-69b9-6826b7d831d7.htm index 1a2def5..b749d76 100644 --- a/SpriteLibrary/Doc/Help/html/0ce33e3f-7f15-3abb-69b9-6826b7d831d7.htm +++ b/SpriteLibrary/Doc/Help/html/0ce33e3f-7f15-3abb-69b9-6826b7d831d7.htm @@ -1,4 +1,4 @@ -Sprite.ReplaceImage Method
SpriteReplaceImage Method
+Sprite.ReplaceImage Method

SpriteReplaceImage Method

Replace a sprite image. It will replace the current frame unless you specify both an animation and the frame within the animation you wish to replace. Warning: This replaces the image_frame for every sprite that uses that is based off the same image. diff --git a/SpriteLibrary/Doc/Help/html/0e8b825f-f8df-9f14-41ec-f00778409dfb.htm b/SpriteLibrary/Doc/Help/html/0e8b825f-f8df-9f14-41ec-f00778409dfb.htm index c1caada..58e96cb 100644 --- a/SpriteLibrary/Doc/Help/html/0e8b825f-f8df-9f14-41ec-f00778409dfb.htm +++ b/SpriteLibrary/Doc/Help/html/0e8b825f-f8df-9f14-41ec-f00778409dfb.htm @@ -1,4 +1,4 @@ -Sprite.SpriteAnimationComplete Event
SpriteSpriteAnimationComplete Event
+Sprite.SpriteAnimationComplete Event

SpriteSpriteAnimationComplete Event

Only used when you tell an animation to animate once. At the end of the animation, this function fires off.

diff --git a/SpriteLibrary/Doc/Help/html/0f4e570a-2888-8819-176b-9dd070ca7db4.htm b/SpriteLibrary/Doc/Help/html/0f4e570a-2888-8819-176b-9dd070ca7db4.htm index 0a8ec61..dcee1ae 100644 --- a/SpriteLibrary/Doc/Help/html/0f4e570a-2888-8819-176b-9dd070ca7db4.htm +++ b/SpriteLibrary/Doc/Help/html/0f4e570a-2888-8819-176b-9dd070ca7db4.htm @@ -1,4 +1,4 @@ -Sprite.SetSpriteDirectionDegrees Method
SpriteSetSpriteDirectionDegrees Method
+Sprite.SetSpriteDirectionDegrees Method

SpriteSetSpriteDirectionDegrees Method

Given a "degree" (from 0 to 360, set the direction that the sprite moves automatically. 0 is right, 90 is up, 180 is left and 270 is down. diff --git a/SpriteLibrary/Doc/Help/html/0f7e6cfa-e1e4-1b7a-152d-5b3281ac8bfe.htm b/SpriteLibrary/Doc/Help/html/0f7e6cfa-e1e4-1b7a-152d-5b3281ac8bfe.htm index 8b6e510..33d1754 100644 --- a/SpriteLibrary/Doc/Help/html/0f7e6cfa-e1e4-1b7a-152d-5b3281ac8bfe.htm +++ b/SpriteLibrary/Doc/Help/html/0f7e6cfa-e1e4-1b7a-152d-5b3281ac8bfe.htm @@ -1,4 +1,4 @@ -Sprite.Destroying Property
SpriteDestroying Property
+Sprite.Destroying Property

SpriteDestroying Property

If the Sprite is in the middle of being Destroyed, this is set to true. When a Sprite is Destroyed, it needs to erase itself and do some house-cleaning before it actually vanishes. During this time, you may not want to use it. It is always a good thing to verify a Sprite diff --git a/SpriteLibrary/Doc/Help/html/10c1df07-a9b0-63b4-3503-33b0fdd334c3.htm b/SpriteLibrary/Doc/Help/html/10c1df07-a9b0-63b4-3503-33b0fdd334c3.htm new file mode 100644 index 0000000..2434fe0 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/10c1df07-a9b0-63b4-3503-33b0fdd334c3.htm @@ -0,0 +1,11 @@ +SpriteDatabase.Save Method

SpriteDatabaseSave Method

+ Tell the database to save the sprite definitions. Use this while you are creating your game. + When you are done, you will usually want to take your sprite definition file and add it to the + resources of your game. The resources cannot be saved to, so you cannot continue to add new sprites + once you are loading and saving them from a resources file. But, the resources file is included with + the program when you build it. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public void Save()
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/12e2fe0e-0922-3f46-f249-22e1afc051c0.htm b/SpriteLibrary/Doc/Help/html/12e2fe0e-0922-3f46-f249-22e1afc051c0.htm new file mode 100644 index 0000000..afa3edd --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/12e2fe0e-0922-3f46-f249-22e1afc051c0.htm @@ -0,0 +1,7 @@ +SpriteInfo.SpriteName Field

SpriteInfoSpriteName Field

+ The name of the sprite. It should be unique within your application +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public string SpriteName

Field Value

Type: String
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/139d1443-5e11-02ed-7534-eb0f857804da.htm b/SpriteLibrary/Doc/Help/html/139d1443-5e11-02ed-7534-eb0f857804da.htm index 110d3af..ad3a33b 100644 --- a/SpriteLibrary/Doc/Help/html/139d1443-5e11-02ed-7534-eb0f857804da.htm +++ b/SpriteLibrary/Doc/Help/html/139d1443-5e11-02ed-7534-eb0f857804da.htm @@ -1,4 +1,4 @@ -Sprite.MovingToPoint Property
SpriteMovingToPoint Property
+Sprite.MovingToPoint Property

SpriteMovingToPoint Property

Tells us if we are in the process of doing a MoveTo operation. This boolean should be the opposite of SpriteReachedEndpoint, but that boolean is poorly named. This is usually the easier one to use. diff --git a/SpriteLibrary/Doc/Help/html/154fc8b0-0d6c-003e-be50-c94da6bc4597.htm b/SpriteLibrary/Doc/Help/html/154fc8b0-0d6c-003e-be50-c94da6bc4597.htm index aa7cfbb..29d2da0 100644 --- a/SpriteLibrary/Doc/Help/html/154fc8b0-0d6c-003e-be50-c94da6bc4597.htm +++ b/SpriteLibrary/Doc/Help/html/154fc8b0-0d6c-003e-be50-c94da6bc4597.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method
SpriteAddAnimation Method
Overload List
+Sprite.AddAnimation Method

SpriteAddAnimation Method

Overload List
  NameDescription
Public methodAddAnimation(Image)
Add another animation to an existing Sprite. After you add animations, you can use diff --git a/SpriteLibrary/Doc/Help/html/16df05cc-8770-7cbe-f754-ba9e386674ad.htm b/SpriteLibrary/Doc/Help/html/16df05cc-8770-7cbe-f754-ba9e386674ad.htm index cd7b53a..7e7bd93 100644 --- a/SpriteLibrary/Doc/Help/html/16df05cc-8770-7cbe-f754-ba9e386674ad.htm +++ b/SpriteLibrary/Doc/Help/html/16df05cc-8770-7cbe-f754-ba9e386674ad.htm @@ -1,4 +1,4 @@ -Sprite.MoveTo Method (List(Point))
SpriteMoveTo Method (ListPoint)
+Sprite.MoveTo Method (List(Point))

SpriteMoveTo Method (ListPoint)

Tell the sprite to move towards each point in turn. The sprite will move in a straight line until the first point. From there it moves to the next point, until it has reached the last point. Every time it reaches a point, the SpriteArrivedAtWaypoint event is triggered. When it reaches the final point in the list, the SpriteArrivedAtEndPoint diff --git a/SpriteLibrary/Doc/Help/html/17255a69-f623-3a42-a7ce-db1eb348581a.htm b/SpriteLibrary/Doc/Help/html/17255a69-f623-3a42-a7ce-db1eb348581a.htm index badf0cb..3983d39 100644 --- a/SpriteLibrary/Doc/Help/html/17255a69-f623-3a42-a7ce-db1eb348581a.htm +++ b/SpriteLibrary/Doc/Help/html/17255a69-f623-3a42-a7ce-db1eb348581a.htm @@ -1,4 +1,4 @@ -Sprite.MouseEnter Event
SpriteMouseEnter Event
+Sprite.MouseEnter Event

SpriteMouseEnter Event

When the mouse moves over the sprite. Use this for a menu, when you want the menu item to glow when the mouse is over the menu item sprite.

diff --git a/SpriteLibrary/Doc/Help/html/1730e5a3-3e48-72f7-f641-b7a70e5c2563.htm b/SpriteLibrary/Doc/Help/html/1730e5a3-3e48-72f7-f641-b7a70e5c2563.htm index 6790456..63099d7 100644 --- a/SpriteLibrary/Doc/Help/html/1730e5a3-3e48-72f7-f641-b7a70e5c2563.htm +++ b/SpriteLibrary/Doc/Help/html/1730e5a3-3e48-72f7-f641-b7a70e5c2563.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Int32, Boolean, Boolean)
SpriteAddAnimation Method (Int32, Boolean, Boolean)
+Sprite.AddAnimation Method (Int32, Boolean, Boolean)

SpriteAddAnimation Method (Int32, Boolean, Boolean)

Duplicate an animation, except rotated by the specified number of degrees. For example, if you have a single animation (0), and you want to rotate it by 90 degrees, it will create animation 1 with that rotation to it. In the long haul, generating a few rotated animations is less memory intensive than diff --git a/SpriteLibrary/Doc/Help/html/17ee5c77-8351-af30-dc43-9458d683a69e.htm b/SpriteLibrary/Doc/Help/html/17ee5c77-8351-af30-dc43-9458d683a69e.htm index ede3fb9..ed09e21 100644 --- a/SpriteLibrary/Doc/Help/html/17ee5c77-8351-af30-dc43-9458d683a69e.htm +++ b/SpriteLibrary/Doc/Help/html/17ee5c77-8351-af30-dc43-9458d683a69e.htm @@ -1,4 +1,4 @@ -Sprite.SpriteArrivedAtWaypoint Event
SpriteSpriteArrivedAtWaypoint Event
+Sprite.SpriteArrivedAtWaypoint Event

SpriteSpriteArrivedAtWaypoint Event

When you tell a sprite to MoveTo(list of points), this fires off every time it gets to one of the points. When it gets to the final point, only the SpriteAtEndPoint event fires off.

diff --git a/SpriteLibrary/Doc/Help/html/18405dcf-237d-db66-cf64-0e08b0d16b41.htm b/SpriteLibrary/Doc/Help/html/18405dcf-237d-db66-cf64-0e08b0d16b41.htm index 0c2445d..9f45037 100644 --- a/SpriteLibrary/Doc/Help/html/18405dcf-237d-db66-cf64-0e08b0d16b41.htm +++ b/SpriteLibrary/Doc/Help/html/18405dcf-237d-db66-cf64-0e08b0d16b41.htm @@ -1,4 +1,4 @@ -SpriteEventArgs.CollisionMethod Field
SpriteEventArgsCollisionMethod Field
+SpriteEventArgs.CollisionMethod Field

SpriteEventArgsCollisionMethod Field

The CollisionMethod used in the event. Currently, only rectangle collisions are used

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/184a1964-91ec-6f0d-b7cf-95b722599d69.htm b/SpriteLibrary/Doc/Help/html/184a1964-91ec-6f0d-b7cf-95b722599d69.htm index 2c5a71e..5a66a19 100644 --- a/SpriteLibrary/Doc/Help/html/184a1964-91ec-6f0d-b7cf-95b722599d69.htm +++ b/SpriteLibrary/Doc/Help/html/184a1964-91ec-6f0d-b7cf-95b722599d69.htm @@ -1,4 +1,4 @@ -Sprite Constructor (SpriteController, Image, Int32, Int32)
Sprite Constructor (SpriteController, Image, Int32, Int32)
+Sprite Constructor (SpriteController, Image, Int32, Int32)

Sprite Constructor (SpriteController, Image, Int32, Int32)

Generate a new sprite. It takes the image and the width and height. If there are multiple images of that width and height in the image, an animation is created.

diff --git a/SpriteLibrary/Doc/Help/html/1962c085-27f4-4748-a63e-5148364328b4.htm b/SpriteLibrary/Doc/Help/html/1962c085-27f4-4748-a63e-5148364328b4.htm new file mode 100644 index 0000000..324f8a9 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/1962c085-27f4-4748-a63e-5148364328b4.htm @@ -0,0 +1,11 @@ +SpriteDatabase.ReadFromXmlFile(T) Method

SpriteDatabaseReadFromXmlFileT Method

+ Reads an object instance from an XML file. +

Object type must have a parameterless constructor.

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public static T ReadFromXmlFile<T>(
+	string filePath
+)
+where T : new()
+

Parameters

filePath
Type: SystemString
The file path to read the object instance from.

Type Parameters

T
The type of object to read from the file.

Return Value

Type: T
Returns a new instance of the object read from the XML file.
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/1bab1e49-641a-5648-d034-4298d8158019.htm b/SpriteLibrary/Doc/Help/html/1bab1e49-641a-5648-d034-4298d8158019.htm index a5c4720..54ab435 100644 --- a/SpriteLibrary/Doc/Help/html/1bab1e49-641a-5648-d034-4298d8158019.htm +++ b/SpriteLibrary/Doc/Help/html/1bab1e49-641a-5648-d034-4298d8158019.htm @@ -1,4 +1,4 @@ -Sprite.SpriteEventHandler Delegate
SpriteSpriteEventHandler Delegate
+Sprite.SpriteEventHandler Delegate

SpriteSpriteEventHandler Delegate

A delegate that has a SpriteEventArgs instead of EventArgs. Used for most of the Sprite events. This allows us to pass more information from sprite events than a basic EventArgs allows for diff --git a/SpriteLibrary/Doc/Help/html/1f2c365c-e65b-3894-2e47-41f07250bbc0.htm b/SpriteLibrary/Doc/Help/html/1f2c365c-e65b-3894-2e47-41f07250bbc0.htm index b810836..76b6bd1 100644 --- a/SpriteLibrary/Doc/Help/html/1f2c365c-e65b-3894-2e47-41f07250bbc0.htm +++ b/SpriteLibrary/Doc/Help/html/1f2c365c-e65b-3894-2e47-41f07250bbc0.htm @@ -1,4 +1,4 @@ -Sprite.MoveTo Method
SpriteMoveTo Method
Overload List
+Sprite.MoveTo Method

SpriteMoveTo Method

Overload List
  NameDescription
Public methodMoveTo(ListPoint)
Tell the sprite to move towards each point in turn. The sprite will move in a straight line until the first point. diff --git a/SpriteLibrary/Doc/Help/html/20db7ecc-35df-8911-2615-1f2b8777f03b.htm b/SpriteLibrary/Doc/Help/html/20db7ecc-35df-8911-2615-1f2b8777f03b.htm index ba7e690..ea8a28b 100644 --- a/SpriteLibrary/Doc/Help/html/20db7ecc-35df-8911-2615-1f2b8777f03b.htm +++ b/SpriteLibrary/Doc/Help/html/20db7ecc-35df-8911-2615-1f2b8777f03b.htm @@ -1,4 +1,4 @@ -Sprite.Rotation Property
SpriteRotation Property
+Sprite.Rotation Property

SpriteRotation Property

Change the rotation of the sprite, using degrees. 0 degrees is to the right. 90 is up. 180 left, 270 down. But, if your sprite was drawn facing up, then rotating it 90 degrees will have it pointing left. The angle goes counter-clockwise. The image will be scaled diff --git a/SpriteLibrary/Doc/Help/html/23ac9f1e-8033-78a2-030b-b12d6496c3dd.htm b/SpriteLibrary/Doc/Help/html/23ac9f1e-8033-78a2-030b-b12d6496c3dd.htm index e59286b..3cc5819 100644 --- a/SpriteLibrary/Doc/Help/html/23ac9f1e-8033-78a2-030b-b12d6496c3dd.htm +++ b/SpriteLibrary/Doc/Help/html/23ac9f1e-8033-78a2-030b-b12d6496c3dd.htm @@ -1,4 +1,4 @@ -Sprite.AnimationCount Property
SpriteAnimationCount Property
+Sprite.AnimationCount Property

SpriteAnimationCount Property

The number of animations this sprite has

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/25183ea9-6a42-63b0-8051-fd4b9c8dbfe7.htm b/SpriteLibrary/Doc/Help/html/25183ea9-6a42-63b0-8051-fd4b9c8dbfe7.htm index c1f16e1..094014e 100644 --- a/SpriteLibrary/Doc/Help/html/25183ea9-6a42-63b0-8051-fd4b9c8dbfe7.htm +++ b/SpriteLibrary/Doc/Help/html/25183ea9-6a42-63b0-8051-fd4b9c8dbfe7.htm @@ -1,4 +1,4 @@ -Sprite.ChangeAnimation Method
SpriteChangeAnimation Method
+Sprite.ChangeAnimation Method

SpriteChangeAnimation Method

Start a new animation index from scratch

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/2695c170-24ea-95d2-7f85-34c3930416b5.htm b/SpriteLibrary/Doc/Help/html/2695c170-24ea-95d2-7f85-34c3930416b5.htm index 91f10a3..7e12823 100644 --- a/SpriteLibrary/Doc/Help/html/2695c170-24ea-95d2-7f85-34c3930416b5.htm +++ b/SpriteLibrary/Doc/Help/html/2695c170-24ea-95d2-7f85-34c3930416b5.htm @@ -1,4 +1,4 @@ -Sprite.ConvertRadiansToDegrees Method
SpriteConvertRadiansToDegrees Method
+Sprite.ConvertRadiansToDegrees Method

SpriteConvertRadiansToDegrees Method

Convert a number from radians to degrees.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/26d6c521-4554-21ef-3a61-402e06a3ca01.htm b/SpriteLibrary/Doc/Help/html/26d6c521-4554-21ef-3a61-402e06a3ca01.htm new file mode 100644 index 0000000..7ab909a --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/26d6c521-4554-21ef-3a61-402e06a3ca01.htm @@ -0,0 +1,17 @@ +SpriteDatabase.GetImageFromName Method

SpriteDatabaseGetImageFromName Method

+ This function returns an image from the Properties.Resources. If we tell it to UseSmartImages, then + it caches the image in memory. This makes it a little faster to return. If you have a lot of sprites + to load, using this system can speed up things a fair bit. But, try to remember not to change the + image that this returns unless you duplicate it first. Otherwise you will end up changing the image + for all the other times you reference it. This is usualy a bad thing. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public Image GetImageFromName(
+	string Name,
+	bool UseSmartImages
+)

Parameters

Name
Type: SystemString
The string name of the image. If your image is usually named + Properties.Resources.mySpriteImage, you will want to have "mySpriteImage" as the Name passed + to GetImageFromName
UseSmartImages
Type: SystemBoolean
A parameter stating whether we should cache the image in memory + or simply retrieve it from the resource manager.

Return Value

Type: Image
The resource image with the specified name
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/27051af5-8ad4-0b54-231d-456499ae5b51.htm b/SpriteLibrary/Doc/Help/html/27051af5-8ad4-0b54-231d-456499ae5b51.htm index c99e684..afb199e 100644 --- a/SpriteLibrary/Doc/Help/html/27051af5-8ad4-0b54-231d-456499ae5b51.htm +++ b/SpriteLibrary/Doc/Help/html/27051af5-8ad4-0b54-231d-456499ae5b51.htm @@ -1,4 +1,4 @@ -Sprite.MoveTo Method (Sprite)
SpriteMoveTo Method (Sprite)
+Sprite.MoveTo Method (Sprite)

SpriteMoveTo Method (Sprite)

Move to where the destination sprite currently is at. This is a dumb move. It does not take into consideration the movement direction of the destination sprite. So the moving sprite does need to be moving a bit faster than the sprite you are trying to hit for it to do so. diff --git a/SpriteLibrary/Doc/Help/html/2788d4d5-88bf-1154-dd17-8d4b99a79118.htm b/SpriteLibrary/Doc/Help/html/2788d4d5-88bf-1154-dd17-8d4b99a79118.htm index 1050f6d..1b4f768 100644 --- a/SpriteLibrary/Doc/Help/html/2788d4d5-88bf-1154-dd17-8d4b99a79118.htm +++ b/SpriteLibrary/Doc/Help/html/2788d4d5-88bf-1154-dd17-8d4b99a79118.htm @@ -1,4 +1,4 @@ -SpriteController Methods
SpriteController Methods

The SpriteController type exposes the following members.

Methods
+SpriteController Methods

SpriteController Methods

The SpriteController type exposes the following members.

Methods
  NameDescription
Public methodAddSprite
Add the specified sprite to the list of sprites we know about. You usually do not need to do this. @@ -7,6 +7,8 @@ Adjust an image point so that it conforms to the picturebox.
Public methodAdjustRectangle
Adjust a rectangle that is based on the image, according to the stretch of the picturebox +
Public methodAllNamedSprites
+ Get a list of all your named sprites. These should just be your template sprites.
Public methodAllSprites
Return a list of all sprites
Public methodChangeTickInterval
@@ -23,10 +25,14 @@ the time you destroy it until it vanishes. Whe you destroy a sprite, it will erase itself and remove itself from the controller. After it is destroyed, it is completely gone.
Public methodCode exampleDuplicateSprite(String)
- Find a sprite that has been named with the specified name. Then duplicate that sprite + Find a sprite that has been named with the specified name. Then duplicate that sprite. If you have + SpriteControllers which are linked (see + + SpriteController.LinkControllersForSpriteTemplateSharing for how to do this), if the Sprite template is + not contained in this controller, it is looked up in any linked controllers.
Public methodDuplicateSprite(Sprite)
Make a duplicate of the specified sprite. The duplicate does not yet have a location. -
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodInvalidate(Boolean)
+
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Public methodInvalidate(Boolean)
Invalidate the entire image on which the sprites are drawn
Public methodInvalidate(Rectangle, Boolean)
Invalidate a rectangle that is specified in image coordinates @@ -45,7 +51,15 @@ key-pressed system. If the form loses focus, and someone releases a key, the key-up is never triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have lost focus. -
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodNameSprite
+
Public methodLinkControllersForSpriteTemplateSharing
+ Link up a sprite controller so that it shares sprites with this other sprite controller. If one sprite controller + does not have the named sprite, it will query any linked controllers for that named sprite and copy it to the + controller that did not have it. This means you only need to create a sprite once, and you can use it on multiple + sprite controllers. In many games, you will want to have a sprite appear on different PictureBoxes, and this is + a way to do that. For example, you may want to have a bad-guy running around on the screen, but also have his sprite + appear in a bad-guy summary, along with his stats, on the side. Loading sprites can be slow, so this makes things a bit + faster by only needing to load them once. +
Protected methodMemberwiseClone (Inherited from Object.)
Public methodNameSprite
Find the specified Sprite in the controller and change its name to the specified string. You can do the same thing with Sprite.SetName(Name)
Public methodPause
Pause everything. It loops through all the sprites in the SpriteController and sends the specified @@ -77,7 +91,7 @@ things up, so what we do is duplicate the image twice, and tell the sprite controller to use one of the copies and then set the background to be the other one of the two copies.Finally, we tell the picturebox to invalidate itself.That does everything that is needed. -
C#
 void ReplaceBackground(Image NewBackground)
+             
C#
 void ReplaceBackground(Image NewBackground)
 {
     if (MyController == null) return;
     if (NewBackground == null) return;
@@ -88,7 +102,7 @@
     Image TwoImage = new Bitmap(NewBackground);
     pb_map.BackgroundImage = TwoImage;
     pb_map.Invalidate();
-}
Public methodResetKeypressState
+}
Public methodResetKeypressState
Reset the keypress status. Sometimes the sprite controller misses a key being released (usually because a window has taken priority, or something has changed). Calling this function will reset the stored memory of whether a key has been pressed. @@ -109,6 +123,9 @@ This takes a point, the location on a picturebox, and returns the corresponding point on the BackgroundImage. Picturebox locations are "sloppy"; the background image locations are very precise. Since this takes a "sloppy" number and returns a precise number, it does some rounding to figure out where the specified location is. +
Public methodSetSpriteDatabase
+ If you do not instantiate your SpriteController with a database, you can add one after instantiation + using this function.
Public methodSoundIsFinished
Check to see if the specified sound has finished playing
Public methodSoundPlay
@@ -148,7 +165,11 @@ Change the display order of the specified sprite so it goes behind all other sprites.
Public methodSpriteToFront
Change the display order of the specified sprite so it goes in front of all other sprites. -
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodUnPause
+
Public methodToString (Inherited from Object.)
Public methodUnlinkControllersForSpriteTemplateSharing
+ Unlink a previously linked controller. If you have linked a controller from a different window and are trying to + kill off the controller in a window you are closing, you want to unlink them as the window closes. We take a brief + moment to copy over any templates that have not yet been copied over. +
Public methodUnPause
un-Pause everything. This will send the specified SpritePauseType unpause command to all sprites.
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/29f62d1a-212b-273e-582e-670c1ea2856c.htm b/SpriteLibrary/Doc/Help/html/29f62d1a-212b-273e-582e-670c1ea2856c.htm index 1a228a5..05256d6 100644 --- a/SpriteLibrary/Doc/Help/html/29f62d1a-212b-273e-582e-670c1ea2856c.htm +++ b/SpriteLibrary/Doc/Help/html/29f62d1a-212b-273e-582e-670c1ea2856c.htm @@ -1,4 +1,4 @@ -Sprite.BaseImageLocation Property
SpriteBaseImageLocation Property
+Sprite.BaseImageLocation Property

SpriteBaseImageLocation Property

The sprite location as found on the base image. This is usually the easiest location to use.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/2b1a75c9-0eb6-fb22-eeea-595ec3cc1bf8.htm b/SpriteLibrary/Doc/Help/html/2b1a75c9-0eb6-fb22-eeea-595ec3cc1bf8.htm index e18ba14..1ccc3ae 100644 --- a/SpriteLibrary/Doc/Help/html/2b1a75c9-0eb6-fb22-eeea-595ec3cc1bf8.htm +++ b/SpriteLibrary/Doc/Help/html/2b1a75c9-0eb6-fb22-eeea-595ec3cc1bf8.htm @@ -1,4 +1,4 @@ -Sprite.SpriteInitializes Event
SpriteSpriteInitializes Event
+Sprite.SpriteInitializes Event

SpriteSpriteInitializes Event

This event happens right after the sprite is created. Use this to immediately set a sprite to animate once or something like that.

diff --git a/SpriteLibrary/Doc/Help/html/2c4eb5db-5c4c-6fcd-716c-532c0e2c4f35.htm b/SpriteLibrary/Doc/Help/html/2c4eb5db-5c4c-6fcd-716c-532c0e2c4f35.htm index 18de29c..208aa29 100644 --- a/SpriteLibrary/Doc/Help/html/2c4eb5db-5c4c-6fcd-716c-532c0e2c4f35.htm +++ b/SpriteLibrary/Doc/Help/html/2c4eb5db-5c4c-6fcd-716c-532c0e2c4f35.htm @@ -1,4 +1,4 @@ -SpriteController.SpritesThatHaveBeenDrawn Method
SpriteControllerSpritesThatHaveBeenDrawn Method
+SpriteController.SpritesThatHaveBeenDrawn Method

SpriteControllerSpritesThatHaveBeenDrawn Method

Return a list of all sprites which have been drawn on the image

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/2c9b874d-5097-98bf-908c-f6bac5d647d3.htm b/SpriteLibrary/Doc/Help/html/2c9b874d-5097-98bf-908c-f6bac5d647d3.htm index a48fc92..2b20f44 100644 --- a/SpriteLibrary/Doc/Help/html/2c9b874d-5097-98bf-908c-f6bac5d647d3.htm +++ b/SpriteLibrary/Doc/Help/html/2c9b874d-5097-98bf-908c-f6bac5d647d3.htm @@ -1,4 +1,4 @@ -SpriteController.ReplaceOriginalImage Method
SpriteControllerReplaceOriginalImage Method
Overload List
+SpriteController.ReplaceOriginalImage Method

SpriteControllerReplaceOriginalImage Method

Overload List
  NameDescription
Public methodReplaceOriginalImage
Notify the sprite controller that you have changed the background image on the diff --git a/SpriteLibrary/Doc/Help/html/30363308-2e3c-7e5e-8ede-d857b8568bcb.htm b/SpriteLibrary/Doc/Help/html/30363308-2e3c-7e5e-8ede-d857b8568bcb.htm new file mode 100644 index 0000000..f2fb2d7 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/30363308-2e3c-7e5e-8ede-d857b8568bcb.htm @@ -0,0 +1,5 @@ +AnimationInfo Constructor

AnimationInfo Constructor

Initializes a new instance of the AnimationInfo class

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public AnimationInfo()
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/323c4f03-703d-0898-c73e-40eb5784c05f.htm b/SpriteLibrary/Doc/Help/html/323c4f03-703d-0898-c73e-40eb5784c05f.htm index 85576f2..87a04e4 100644 --- a/SpriteLibrary/Doc/Help/html/323c4f03-703d-0898-c73e-40eb5784c05f.htm +++ b/SpriteLibrary/Doc/Help/html/323c4f03-703d-0898-c73e-40eb5784c05f.htm @@ -1,9 +1,14 @@ -SpriteController Constructor
SpriteController Constructor
Overload List
+SpriteController Constructor

SpriteController Constructor

Overload List
  NameDescription
Public methodCode exampleSpriteController(PictureBox)
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. +
Public methodCode exampleSpriteController(PictureBox, SpriteDatabase)
+ 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 SpriteDatabase, which + loads sprite definitions at construction time, and has tools for making and storing sprites.
Public methodCode exampleSpriteController(PictureBox, EventHandler)
Create a sprite controller, specifying the picturebox on which the sprites will be displayed. diff --git a/SpriteLibrary/Doc/Help/html/337078d6-e10a-94ca-0251-13a9f58ded01.htm b/SpriteLibrary/Doc/Help/html/337078d6-e10a-94ca-0251-13a9f58ded01.htm new file mode 100644 index 0000000..f34f1fd --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/337078d6-e10a-94ca-0251-13a9f58ded01.htm @@ -0,0 +1,12 @@ +SpriteDatabase.CloneByXMLSerializing(T) Method

SpriteDatabaseCloneByXMLSerializingT Method

+ This is an inefficient, but simple function to clone a class. It works by serializing an item + to a string, and then deserializing it into a class. The end result is that any value which is + publically visible is duplicated, but it is a completely separate class from the original. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public static T CloneByXMLSerializing<T>(
+	T ObjectToClone
+)
+

Parameters

ObjectToClone
Type: T
The actual object to clone

Type Parameters

T
The type of the item to clone

Return Value

Type: T
A duplicate of the original
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/34a7b0e2-8fce-a07e-fff0-5460ba02a4cf.htm b/SpriteLibrary/Doc/Help/html/34a7b0e2-8fce-a07e-fff0-5460ba02a4cf.htm index 1182115..072f872 100644 --- a/SpriteLibrary/Doc/Help/html/34a7b0e2-8fce-a07e-fff0-5460ba02a4cf.htm +++ b/SpriteLibrary/Doc/Help/html/34a7b0e2-8fce-a07e-fff0-5460ba02a4cf.htm @@ -1,4 +1,4 @@ -SpriteController.OptimizeForLargeSpriteImages Field
SpriteControllerOptimizeForLargeSpriteImages Field
+SpriteController.OptimizeForLargeSpriteImages Field

SpriteControllerOptimizeForLargeSpriteImages Field

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 image at that size. If you use the same sprite, but with different sizes, setting this to "True" may actually slow diff --git a/SpriteLibrary/Doc/Help/html/35fc4baf-ba04-de67-a7bd-fa6819a4e8fd.htm b/SpriteLibrary/Doc/Help/html/35fc4baf-ba04-de67-a7bd-fa6819a4e8fd.htm new file mode 100644 index 0000000..625cb7f --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/35fc4baf-ba04-de67-a7bd-fa6819a4e8fd.htm @@ -0,0 +1,14 @@ +SpriteDatabase Constructor

SpriteDatabase Constructor

+ The sprite database instantiation function. The filename can either be a file on the computer or it + can be the string name of a resource (the filename without the extension. If your file is accessed + by Properties.Resources.MySprites, the "filename" would be "MySprites") +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public SpriteDatabase(
+	ResourceManager theResourceManager,
+	string filename
+)

Parameters

theResourceManager
Type: System.ResourcesResourceManager
The ResourceManager for your project. Usually + Properties.Resources.ResourceManager
filename
Type: SystemString
Either a path and file (like: @"c:\users\me\Desktop\myfile.xml") or + the name of a resource (like: "myfile")
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/3678c025-c483-0bae-039a-504360bbd11b.htm b/SpriteLibrary/Doc/Help/html/3678c025-c483-0bae-039a-504360bbd11b.htm new file mode 100644 index 0000000..2d92895 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/3678c025-c483-0bae-039a-504360bbd11b.htm @@ -0,0 +1,7 @@ +AnimationInfo.Height Field

AnimationInfoHeight Field

+ The height of the sprite to pull from the specified image. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public int Height

Field Value

Type: Int32
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/36d40ecf-484f-3b53-43e4-87ed9108cb76.htm b/SpriteLibrary/Doc/Help/html/36d40ecf-484f-3b53-43e4-87ed9108cb76.htm index 2cc7416..94bd5db 100644 --- a/SpriteLibrary/Doc/Help/html/36d40ecf-484f-3b53-43e4-87ed9108cb76.htm +++ b/SpriteLibrary/Doc/Help/html/36d40ecf-484f-3b53-43e4-87ed9108cb76.htm @@ -1,4 +1,4 @@ -Sprite.SetName Method
SpriteSetName Method
+Sprite.SetName Method

SpriteSetName Method

Give this sprite a name. This way we can make a duplicate of it by specifying the name

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/37ae1b7e-72db-69cb-f1c6-26242c07e2b5.htm b/SpriteLibrary/Doc/Help/html/37ae1b7e-72db-69cb-f1c6-26242c07e2b5.htm index b7a5b33..24eb4ae 100644 --- a/SpriteLibrary/Doc/Help/html/37ae1b7e-72db-69cb-f1c6-26242c07e2b5.htm +++ b/SpriteLibrary/Doc/Help/html/37ae1b7e-72db-69cb-f1c6-26242c07e2b5.htm @@ -1,4 +1,4 @@ -Sprite.SpriteExitsPictureBox Event
SpriteSpriteExitsPictureBox Event
+Sprite.SpriteExitsPictureBox Event

SpriteSpriteExitsPictureBox Event

This happens when the sprite has exited the picture box. Useful when you want to keep sprites from traveling on forever after exiting.

diff --git a/SpriteLibrary/Doc/Help/html/38678a79-da77-9ef7-e3e1-78ff96f5bd7b.htm b/SpriteLibrary/Doc/Help/html/38678a79-da77-9ef7-e3e1-78ff96f5bd7b.htm index 5643f32..b866933 100644 --- a/SpriteLibrary/Doc/Help/html/38678a79-da77-9ef7-e3e1-78ff96f5bd7b.htm +++ b/SpriteLibrary/Doc/Help/html/38678a79-da77-9ef7-e3e1-78ff96f5bd7b.htm @@ -1,4 +1,4 @@ -SpriteKeyEventHandler Delegate
SpriteKeyEventHandler Delegate
+SpriteKeyEventHandler Delegate

SpriteKeyEventHandler Delegate

This is a delegate for a keypress event.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/387652c9-df19-4da9-fa94-2f1002c0902f.htm b/SpriteLibrary/Doc/Help/html/387652c9-df19-4da9-fa94-2f1002c0902f.htm new file mode 100644 index 0000000..e716ca6 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/387652c9-df19-4da9-fa94-2f1002c0902f.htm @@ -0,0 +1,13 @@ +SpriteDatabase.WriteToXMLString(T) Method

SpriteDatabaseWriteToXMLStringT Method

+ This is a generic function which the SpriteDatabase uses. It does XML Serialization of most anything, + and generates an XML String. XML Serialization will take any public value of a public class and + make an XML entry for it. It is a very convienent way to save data. You can "Deserialize" the value + with the ReadFromXMLString function. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public static string WriteToXMLString<T>(
+	T toSerialize
+)
+

Parameters

toSerialize
Type: T
the variable you are trying to turn into XML

Type Parameters

T
The type of the item that you are trying to serialize

Return Value

Type: String
An XML string
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/3a7614d3-cfe9-ce52-55be-ca5324839e92.htm b/SpriteLibrary/Doc/Help/html/3a7614d3-cfe9-ce52-55be-ca5324839e92.htm index b1d6039..44cc358 100644 --- a/SpriteLibrary/Doc/Help/html/3a7614d3-cfe9-ce52-55be-ca5324839e92.htm +++ b/SpriteLibrary/Doc/Help/html/3a7614d3-cfe9-ce52-55be-ca5324839e92.htm @@ -1,4 +1,4 @@ -Sprite.payload Field
Spritepayload Field
+Sprite.payload Field

Spritepayload Field

A Sprite can hold a payload. Use this to store extra information about the various Sprites. Health, Armor, Shoot time, etc. But, to store information in the payload, you need to make a new class of SpritePayload. The syntax for doing so is: diff --git a/SpriteLibrary/Doc/Help/html/3aabe50b-5222-99aa-4654-356baa30033a.htm b/SpriteLibrary/Doc/Help/html/3aabe50b-5222-99aa-4654-356baa30033a.htm index 6b68ebb..d2813d2 100644 --- a/SpriteLibrary/Doc/Help/html/3aabe50b-5222-99aa-4654-356baa30033a.htm +++ b/SpriteLibrary/Doc/Help/html/3aabe50b-5222-99aa-4654-356baa30033a.htm @@ -1,4 +1,4 @@ -Sprite.SpriteHitsPictureBox Event
SpriteSpriteHitsPictureBox Event
+Sprite.SpriteHitsPictureBox Event

SpriteSpriteHitsPictureBox Event

This happens when the sprite hits the border of the picture-box. Useful for when you want to have shots explode when they hit the side.

diff --git a/SpriteLibrary/Doc/Help/html/3bbc779a-f8e9-8c18-c3c3-89018dd77daf.htm b/SpriteLibrary/Doc/Help/html/3bbc779a-f8e9-8c18-c3c3-89018dd77daf.htm index 9d21e5b..4fa0658 100644 --- a/SpriteLibrary/Doc/Help/html/3bbc779a-f8e9-8c18-c3c3-89018dd77daf.htm +++ b/SpriteLibrary/Doc/Help/html/3bbc779a-f8e9-8c18-c3c3-89018dd77daf.htm @@ -1,4 +1,4 @@ -Sprite.AnimateJustAFewTimes Method
SpriteAnimateJustAFewTimes Method
+Sprite.AnimateJustAFewTimes Method

SpriteAnimateJustAFewTimes Method

Start a new animation. It will complete the animation the number of times you specify. For example, if your sprite is walking, and one animation is one step, specifying 4 here will result in your sprite taking 4 steps and then the animation stops. You will want diff --git a/SpriteLibrary/Doc/Help/html/3c18bbb7-e10c-1b96-754d-7dfc878e7cf4.htm b/SpriteLibrary/Doc/Help/html/3c18bbb7-e10c-1b96-754d-7dfc878e7cf4.htm index 828ac8c..55371b3 100644 --- a/SpriteLibrary/Doc/Help/html/3c18bbb7-e10c-1b96-754d-7dfc878e7cf4.htm +++ b/SpriteLibrary/Doc/Help/html/3c18bbb7-e10c-1b96-754d-7dfc878e7cf4.htm @@ -1,4 +1,4 @@ -SpriteController.SpritesAtPoint Method
SpriteControllerSpritesAtPoint Method
+SpriteController.SpritesAtPoint Method

SpriteControllerSpritesAtPoint Method

This takes a point, as given by the mouse-click args, and returns the sprites at that point. Different functions use different coordinates, whether based off the background image, or based off the picturebox. This one uses the picturebox coordinates. So you can use this directly from a MouseDown or MouseUp function. diff --git a/SpriteLibrary/Doc/Help/html/3f19b918-15c0-db8a-a75d-c37f0dab1f84.htm b/SpriteLibrary/Doc/Help/html/3f19b918-15c0-db8a-a75d-c37f0dab1f84.htm new file mode 100644 index 0000000..cb0fc90 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/3f19b918-15c0-db8a-a75d-c37f0dab1f84.htm @@ -0,0 +1,7 @@ +SpriteController.AllNamedSprites Method

SpriteControllerAllNamedSprites Method

+ Get a list of all your named sprites. These should just be your template sprites. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public List<Sprite> AllNamedSprites()

Return Value

Type: ListSprite
A list containing all the named sprites
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/4067393e-d724-b01d-dc77-947440c6c444.htm b/SpriteLibrary/Doc/Help/html/4067393e-d724-b01d-dc77-947440c6c444.htm index c5cc909..aa38dd5 100644 --- a/SpriteLibrary/Doc/Help/html/4067393e-d724-b01d-dc77-947440c6c444.htm +++ b/SpriteLibrary/Doc/Help/html/4067393e-d724-b01d-dc77-947440c6c444.htm @@ -1,4 +1,4 @@ -Sprite.GetImage Method (Int32, Int32)
SpriteGetImage Method (Int32, Int32)
+Sprite.GetImage Method (Int32, Int32)

SpriteGetImage Method (Int32, Int32)

return the frame for the given index. Warning: If you write to this image, it will affect all sprites using this frame.

diff --git a/SpriteLibrary/Doc/Help/html/4141394a-0d7d-5cf8-6b01-0a4fb43159ab.htm b/SpriteLibrary/Doc/Help/html/4141394a-0d7d-5cf8-6b01-0a4fb43159ab.htm index 0f3245d..d9066ec 100644 --- a/SpriteLibrary/Doc/Help/html/4141394a-0d7d-5cf8-6b01-0a4fb43159ab.htm +++ b/SpriteLibrary/Doc/Help/html/4141394a-0d7d-5cf8-6b01-0a4fb43159ab.htm @@ -1,4 +1,4 @@ -SpriteController Events
SpriteController Events

The SpriteController type exposes the following members.

Events
+SpriteController Events

SpriteController Events

The SpriteController type exposes the following members.

Events
  NameDescription
Public eventCode exampleDoTick
The function called by the timer every 10 millisecods This is usually where you will do the majority of the work. diff --git a/SpriteLibrary/Doc/Help/html/41ac663a-2019-6a14-5ffd-16dfc7472578.htm b/SpriteLibrary/Doc/Help/html/41ac663a-2019-6a14-5ffd-16dfc7472578.htm index 16a5807..4aa9215 100644 --- a/SpriteLibrary/Doc/Help/html/41ac663a-2019-6a14-5ffd-16dfc7472578.htm +++ b/SpriteLibrary/Doc/Help/html/41ac663a-2019-6a14-5ffd-16dfc7472578.htm @@ -1,4 +1,4 @@ -SpriteController.ReturnAdjustmentRatio Method
SpriteControllerReturnAdjustmentRatio Method
+SpriteController.ReturnAdjustmentRatio Method

SpriteControllerReturnAdjustmentRatio Method

Return an adjustment ratio. This is the image-size to picture-box ratio. It is used for calculating precise pixels or picture-box locations.

diff --git a/SpriteLibrary/Doc/Help/html/447d1a9a-0e17-9827-2a01-438434c1b879.htm b/SpriteLibrary/Doc/Help/html/447d1a9a-0e17-9827-2a01-438434c1b879.htm index 75d2068..a3ed53e 100644 --- a/SpriteLibrary/Doc/Help/html/447d1a9a-0e17-9827-2a01-438434c1b879.htm +++ b/SpriteLibrary/Doc/Help/html/447d1a9a-0e17-9827-2a01-438434c1b879.htm @@ -1,4 +1,4 @@ -SpriteController.ReturnPictureBoxAdjustedHeight Method
SpriteControllerReturnPictureBoxAdjustedHeight Method
+SpriteController.ReturnPictureBoxAdjustedHeight Method

SpriteControllerReturnPictureBoxAdjustedHeight Method

Return the height of an object in picture-box terms. It is basically the virtual height of the sprite or other item.

diff --git a/SpriteLibrary/Doc/Help/html/451487c4-0cca-2c80-9b71-b116cbe00d6e.htm b/SpriteLibrary/Doc/Help/html/451487c4-0cca-2c80-9b71-b116cbe00d6e.htm index 7d5ba66..b717ad4 100644 --- a/SpriteLibrary/Doc/Help/html/451487c4-0cca-2c80-9b71-b116cbe00d6e.htm +++ b/SpriteLibrary/Doc/Help/html/451487c4-0cca-2c80-9b71-b116cbe00d6e.htm @@ -1,4 +1,4 @@ -SpriteController.Invalidate Method (Boolean)
SpriteControllerInvalidate Method (Boolean)
+SpriteController.Invalidate Method (Boolean)

SpriteControllerInvalidate Method (Boolean)

Invalidate the entire image on which the sprites are drawn

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/4716eb02-e702-b61a-126a-362af50ca6d5.htm b/SpriteLibrary/Doc/Help/html/4716eb02-e702-b61a-126a-362af50ca6d5.htm index b97cd0d..184a232 100644 --- a/SpriteLibrary/Doc/Help/html/4716eb02-e702-b61a-126a-362af50ca6d5.htm +++ b/SpriteLibrary/Doc/Help/html/4716eb02-e702-b61a-126a-362af50ca6d5.htm @@ -1,3 +1,3 @@ -SpriteEventArgs Methods
SpriteEventArgs Methods

The SpriteEventArgs type exposes the following members.

Methods
+SpriteEventArgs Methods

SpriteEventArgs Methods

The SpriteEventArgs type exposes the following members.

Methods
  - NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
See Also
\ No newline at end of file +
NameDescription
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/48ff9be7-1395-25af-3585-3d32eba07309.htm b/SpriteLibrary/Doc/Help/html/48ff9be7-1395-25af-3585-3d32eba07309.htm index c3cff7c..bd22af1 100644 --- a/SpriteLibrary/Doc/Help/html/48ff9be7-1395-25af-3585-3d32eba07309.htm +++ b/SpriteLibrary/Doc/Help/html/48ff9be7-1395-25af-3585-3d32eba07309.htm @@ -1,4 +1,4 @@ -SpriteController.ResetKeypressState Method
SpriteControllerResetKeypressState Method
+SpriteController.ResetKeypressState Method

SpriteControllerResetKeypressState Method

Reset the keypress status. Sometimes the sprite controller misses a key being released (usually because a window has taken priority, or something has changed). Calling this function will reset the stored memory of whether a key has been pressed. diff --git a/SpriteLibrary/Doc/Help/html/49befa66-d9d0-400c-1fc2-ac57f17433f1.htm b/SpriteLibrary/Doc/Help/html/49befa66-d9d0-400c-1fc2-ac57f17433f1.htm index 4a9fa10..89a227f 100644 --- a/SpriteLibrary/Doc/Help/html/49befa66-d9d0-400c-1fc2-ac57f17433f1.htm +++ b/SpriteLibrary/Doc/Help/html/49befa66-d9d0-400c-1fc2-ac57f17433f1.htm @@ -1,4 +1,4 @@ -SpriteController.ReplaceOriginalImage Method
SpriteControllerReplaceOriginalImage Method
+SpriteController.ReplaceOriginalImage Method

SpriteControllerReplaceOriginalImage Method

Notify the sprite controller that you have changed the background image on the PictureBox. Whatever background is on the picturebox is now used to draw all the sprites on.

diff --git a/SpriteLibrary/Doc/Help/html/4a6fe677-5369-6c0a-1e61-81355aa238b1.htm b/SpriteLibrary/Doc/Help/html/4a6fe677-5369-6c0a-1e61-81355aa238b1.htm index d408ef5..e5770d5 100644 --- a/SpriteLibrary/Doc/Help/html/4a6fe677-5369-6c0a-1e61-81355aa238b1.htm +++ b/SpriteLibrary/Doc/Help/html/4a6fe677-5369-6c0a-1e61-81355aa238b1.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Image, Size)
SpriteAddAnimation Method (Image, Size)
+Sprite.AddAnimation Method (Image, Size)

SpriteAddAnimation Method (Image, Size)

Add another animation to an existing Sprite. After you add animations, you can use ChangeAnimation to select which animation you want the specified sprite to show. For example, you may want to have Animation 0 be a guy walking left, and animation 1 is diff --git a/SpriteLibrary/Doc/Help/html/4e310248-8e1a-76aa-edbc-a83f4ba9b425.htm b/SpriteLibrary/Doc/Help/html/4e310248-8e1a-76aa-edbc-a83f4ba9b425.htm index a75e2ae..6ec6cf6 100644 --- a/SpriteLibrary/Doc/Help/html/4e310248-8e1a-76aa-edbc-a83f4ba9b425.htm +++ b/SpriteLibrary/Doc/Help/html/4e310248-8e1a-76aa-edbc-a83f4ba9b425.htm @@ -1,4 +1,4 @@ -SpritePayload Class
SpritePayload Class
+SpritePayload Class

SpritePayload Class

The SpritePayload is a stub of a class, for storing user-defined data and functions along with a sprite.
Inheritance Hierarchy
SystemObject
  SpriteLibrarySpritePayload

Namespace: @@ -8,7 +8,7 @@  
NameDescription
Public methodSpritePayload
Initializes a new instance of the SpritePayload class
Top
Methods
  - NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Examples
+
NameDescription
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
Examples
Basically, you want to "override" this class. You do this by making your own class that looks something like:
C#
public class TankPayload : SpritePayload 
diff --git a/SpriteLibrary/Doc/Help/html/4f100dc3-39b4-fea4-6d73-8ef39eea489c.htm b/SpriteLibrary/Doc/Help/html/4f100dc3-39b4-fea4-6d73-8ef39eea489c.htm
index 4bbc34c..12d44ea 100644
--- a/SpriteLibrary/Doc/Help/html/4f100dc3-39b4-fea4-6d73-8ef39eea489c.htm
+++ b/SpriteLibrary/Doc/Help/html/4f100dc3-39b4-fea4-6d73-8ef39eea489c.htm
@@ -1,4 +1,4 @@
-SpriteController.AdjustRectangle Method 
SpriteControllerAdjustRectangle Method
+SpriteController.AdjustRectangle Method

SpriteControllerAdjustRectangle Method

Adjust a rectangle that is based on the image, according to the stretch of the picturebox

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/509560bd-f402-7e7f-a461-46845061a5fc.htm b/SpriteLibrary/Doc/Help/html/509560bd-f402-7e7f-a461-46845061a5fc.htm index 1381110..9dc70a2 100644 --- a/SpriteLibrary/Doc/Help/html/509560bd-f402-7e7f-a461-46845061a5fc.htm +++ b/SpriteLibrary/Doc/Help/html/509560bd-f402-7e7f-a461-46845061a5fc.htm @@ -1,4 +1,4 @@ -Sprite.SpriteAtImagePoint Method
SpriteSpriteAtImagePoint Method
+Sprite.SpriteAtImagePoint Method

SpriteSpriteAtImagePoint Method

Check to see if the sprite exists at the point specified. The point given is in coordinates used by the image (not the PictureBox, use SpriteAtPictureBox for that)

diff --git a/SpriteLibrary/Doc/Help/html/50eae5e0-c59c-9d9c-d551-21dba8696ac9.htm b/SpriteLibrary/Doc/Help/html/50eae5e0-c59c-9d9c-d551-21dba8696ac9.htm index 9b699c0..a4c7b45 100644 --- a/SpriteLibrary/Doc/Help/html/50eae5e0-c59c-9d9c-d551-21dba8696ac9.htm +++ b/SpriteLibrary/Doc/Help/html/50eae5e0-c59c-9d9c-d551-21dba8696ac9.htm @@ -1,4 +1,4 @@ -SpriteController.IsKeyPressed Method
SpriteControllerIsKeyPressed Method
Overload List
+SpriteController.IsKeyPressed Method

SpriteControllerIsKeyPressed Method

Overload List
  NameDescription
Public methodIsKeyPressed
Check to see if any keys are pressed. There is a small glitch with the diff --git a/SpriteLibrary/Doc/Help/html/51c9d545-e5c3-888d-d033-17085734aa1d.htm b/SpriteLibrary/Doc/Help/html/51c9d545-e5c3-888d-d033-17085734aa1d.htm index f5bfdcc..d8ddb72 100644 --- a/SpriteLibrary/Doc/Help/html/51c9d545-e5c3-888d-d033-17085734aa1d.htm +++ b/SpriteLibrary/Doc/Help/html/51c9d545-e5c3-888d-d033-17085734aa1d.htm @@ -1,4 +1,4 @@ -Sprite.ClickTransparent Event
SpriteClickTransparent Event
+Sprite.ClickTransparent Event

SpriteClickTransparent Event

This event happens when someone clicks on the sprite (on the sprite image itself). If the sprite is sometimes hidden, but you want the click to work even if it is not visible at that instant, use Click instead. diff --git a/SpriteLibrary/Doc/Help/html/5284b83c-61a7-aefe-4087-f7137551b783.htm b/SpriteLibrary/Doc/Help/html/5284b83c-61a7-aefe-4087-f7137551b783.htm index 9cdde69..98e65b0 100644 --- a/SpriteLibrary/Doc/Help/html/5284b83c-61a7-aefe-4087-f7137551b783.htm +++ b/SpriteLibrary/Doc/Help/html/5284b83c-61a7-aefe-4087-f7137551b783.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Image, Int32)
SpriteAddAnimation Method (Image, Int32)
+Sprite.AddAnimation Method (Image, Int32)

SpriteAddAnimation Method (Image, Int32)

Add another animation to an existing Sprite. After you add animations, you can use ChangeAnimation to select which animation you want the specified sprite to show. For example, you may want to have Animation 0 be a guy walking left, and animation 1 is diff --git a/SpriteLibrary/Doc/Help/html/5418aaf4-85e6-5953-87b9-51daa312bc53.htm b/SpriteLibrary/Doc/Help/html/5418aaf4-85e6-5953-87b9-51daa312bc53.htm new file mode 100644 index 0000000..8a4b67b --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/5418aaf4-85e6-5953-87b9-51daa312bc53.htm @@ -0,0 +1,5 @@ +AnimationInfo Methods

AnimationInfo Methods

The AnimationInfo type exposes the following members.

Methods
+   + NameDescription
Public methodClone
+ A generic cloning method that works when everything is public +
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/56b507fc-3071-20e9-63a7-b33484f3e687.htm b/SpriteLibrary/Doc/Help/html/56b507fc-3071-20e9-63a7-b33484f3e687.htm index 1879a3c..ef6b0cd 100644 --- a/SpriteLibrary/Doc/Help/html/56b507fc-3071-20e9-63a7-b33484f3e687.htm +++ b/SpriteLibrary/Doc/Help/html/56b507fc-3071-20e9-63a7-b33484f3e687.htm @@ -1,4 +1,4 @@ -SpriteController.DestroySprite Method
SpriteControllerDestroySprite Method
+SpriteController.DestroySprite Method

SpriteControllerDestroySprite Method

Tell a sprite to destroy itself. The sprite will have Destroying property set to true from the time you destroy it until it vanishes. Whe you destroy a sprite, it will erase itself and remove itself from the controller. After it is destroyed, it is completely gone. diff --git a/SpriteLibrary/Doc/Help/html/56d803c5-e2ad-dd16-0592-b816f726498d.htm b/SpriteLibrary/Doc/Help/html/56d803c5-e2ad-dd16-0592-b816f726498d.htm index 57e7b10..e071fbb 100644 --- a/SpriteLibrary/Doc/Help/html/56d803c5-e2ad-dd16-0592-b816f726498d.htm +++ b/SpriteLibrary/Doc/Help/html/56d803c5-e2ad-dd16-0592-b816f726498d.htm @@ -1,4 +1,4 @@ -Sprite.ReturnAdjustmentRatio Method
SpriteReturnAdjustmentRatio Method
+Sprite.ReturnAdjustmentRatio Method

SpriteReturnAdjustmentRatio Method

Taking into consideration how the sprite is stretched or shrunk, it returns a SpriteAdjustmentRatio that can be used to work with the sprite itself. diff --git a/SpriteLibrary/Doc/Help/html/57a9f458-c6c8-d106-aad4-b2547736909a.htm b/SpriteLibrary/Doc/Help/html/57a9f458-c6c8-d106-aad4-b2547736909a.htm index 888cb55..2d0ce34 100644 --- a/SpriteLibrary/Doc/Help/html/57a9f458-c6c8-d106-aad4-b2547736909a.htm +++ b/SpriteLibrary/Doc/Help/html/57a9f458-c6c8-d106-aad4-b2547736909a.htm @@ -1,3 +1,3 @@ -SpriteAdjustmentRatio Methods
SpriteAdjustmentRatio Methods

The SpriteAdjustmentRatio type exposes the following members.

Methods
+SpriteAdjustmentRatio Methods

SpriteAdjustmentRatio Methods

The SpriteAdjustmentRatio type exposes the following members.

Methods
  - NameDescription
Public methodEquals
Indicates whether this instance and a specified object are equal.
(Inherited from ValueType.)
Public methodGetHashCode
Returns the hash code for this instance.
(Inherited from ValueType.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodToString
Returns the fully qualified type name of this instance.
(Inherited from ValueType.)
Top
See Also
\ No newline at end of file +
NameDescription
Public methodEquals (Inherited from ValueType.)
Public methodGetHashCode (Inherited from ValueType.)
Public methodGetType (Inherited from Object.)
Public methodToString (Inherited from ValueType.)
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/5a5c3a2b-a675-c626-ced3-c958acc9f93e.htm b/SpriteLibrary/Doc/Help/html/5a5c3a2b-a675-c626-ced3-c958acc9f93e.htm index 4e78b99..b08ce37 100644 --- a/SpriteLibrary/Doc/Help/html/5a5c3a2b-a675-c626-ced3-c958acc9f93e.htm +++ b/SpriteLibrary/Doc/Help/html/5a5c3a2b-a675-c626-ced3-c958acc9f93e.htm @@ -1,3 +1,3 @@ -SpritePayload Methods
SpritePayload Methods

The SpritePayload type exposes the following members.

Methods
+SpritePayload Methods

SpritePayload Methods

The SpritePayload type exposes the following members.

Methods
  - NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
See Also
\ No newline at end of file +
NameDescription
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/5aa6ad83-7060-97ba-0874-99e52486cd6c.htm b/SpriteLibrary/Doc/Help/html/5aa6ad83-7060-97ba-0874-99e52486cd6c.htm new file mode 100644 index 0000000..eddf55a --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/5aa6ad83-7060-97ba-0874-99e52486cd6c.htm @@ -0,0 +1,55 @@ +AnimationInfo Class

AnimationInfo Class

+ An AnimationInfo class is used by the SpriteInfo class to + contain the instructions for creating a sprite through the dictionary. Most people will not want + to manually use these. It is simplest to use the + SpriteDatabase.OpenEditWindow function and use the built-in sprite editor. That editor will create a file + that can be used in the database without your needing to know about the AnimationInfo. + Again, you do not want to use these within + your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + serializing to be "public", which makes them visible. +
Inheritance Hierarchy
SystemObject
  SpriteLibraryAnimationInfo

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public class AnimationInfo

The AnimationInfo type exposes the following members.

Constructors
+   + NameDescription
Public methodAnimationInfo
Initializes a new instance of the AnimationInfo class
Top
Methods
+   + NameDescription
Public methodClone
+ A generic cloning method that works when everything is public +
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
Fields
+   + NameDescription
Public fieldAnimationToUse
+ If the sprite is either a mirror sprite, or a rotated sprite, it must be based off of + a pre-existing animation. This value states which animation we copy. +
Public fieldAnimSpeed
+ The delay in milliseconds in-between frames of the sprite. This number is not exact, but is pretty + close to what happens. Never use a number less than 20. +
Public fieldFieldsToUse
+ The FieldsToUse tracks which of the values in AnimationInfo are important +
Public fieldHeight
+ The height of the sprite to pull from the specified image. +
Public fieldImageName
+ This is the image name which contains the sprite. This image should be in the Properties.Resources + of your project. The name you want to give is case-sensitive, and should be the exact name as + listed in Properties.Resources. For example, if your image name were Properties.Resources.Runner + you would want to use the string "Runner" Note the caps are identical, and we have removed the + "Properties.Resources. from the front. +
Public fieldMirrorHorizontally
+ If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + the sprite is mirrored Horizontally. +
Public fieldMirrorVertically
+ If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + the sprite is mirrored Vertically. +
Public fieldNumFrames
+ The number of frames to pull, one following the other, from the specified image. +
Public fieldRotationDegrees
+ If the sprite is a rotated copy of a pre-existing sprite, this value tells how many degrees to + rotate the sprite. +
Public fieldStartPoint
+ If the sprite is based off of an image, this value is the starting point of the top-left corner + of the sprite on the image. You will also want to include a Width and Height. +
Public fieldWidth
+ The width of the sprite to pull from the specified image. +
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/5b2d8b05-360b-44bc-2e7b-f1d4753cb0df.htm b/SpriteLibrary/Doc/Help/html/5b2d8b05-360b-44bc-2e7b-f1d4753cb0df.htm index 227d601..82a9e72 100644 --- a/SpriteLibrary/Doc/Help/html/5b2d8b05-360b-44bc-2e7b-f1d4753cb0df.htm +++ b/SpriteLibrary/Doc/Help/html/5b2d8b05-360b-44bc-2e7b-f1d4753cb0df.htm @@ -1,4 +1,4 @@ -Sprite.PutBaseImageLocation Method (Point)
SpritePutBaseImageLocation Method (Point)
+Sprite.PutBaseImageLocation Method (Point)

SpritePutBaseImageLocation Method (Point)

Put the Sprite at a specified location, using the dimentions of the BackgroundImage. Unless you are using coordinates you have gotten from a mouse-click, this is how you want to place a Sprite somewhere. It is the easiest way to track things. But, if you are diff --git a/SpriteLibrary/Doc/Help/html/5b5ccc3b-4e41-862f-7bba-7d55a45c6747.htm b/SpriteLibrary/Doc/Help/html/5b5ccc3b-4e41-862f-7bba-7d55a45c6747.htm index a6154b8..44d61f2 100644 --- a/SpriteLibrary/Doc/Help/html/5b5ccc3b-4e41-862f-7bba-7d55a45c6747.htm +++ b/SpriteLibrary/Doc/Help/html/5b5ccc3b-4e41-862f-7bba-7d55a45c6747.htm @@ -1,4 +1,4 @@ -Sprite.VisibleHeight Property
SpriteVisibleHeight Property
+Sprite.VisibleHeight Property

SpriteVisibleHeight Property

The visible Height as seen in the PictureBox. It may be stretched, or shrunk from the actual image size.

diff --git a/SpriteLibrary/Doc/Help/html/5d32e0da-bbf2-10b5-ba20-fe5bdfec1963.htm b/SpriteLibrary/Doc/Help/html/5d32e0da-bbf2-10b5-ba20-fe5bdfec1963.htm index 7e993c0..ad0b774 100644 --- a/SpriteLibrary/Doc/Help/html/5d32e0da-bbf2-10b5-ba20-fe5bdfec1963.htm +++ b/SpriteLibrary/Doc/Help/html/5d32e0da-bbf2-10b5-ba20-fe5bdfec1963.htm @@ -1,4 +1,4 @@ -SpriteController.SpriteToBack Method
SpriteControllerSpriteToBack Method
+SpriteController.SpriteToBack Method

SpriteControllerSpriteToBack Method

Change the display order of the specified sprite so it goes behind all other sprites.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/5d507565-cf0d-de52-2253-b55396e3886a.htm b/SpriteLibrary/Doc/Help/html/5d507565-cf0d-de52-2253-b55396e3886a.htm index 861599b..ca3f03d 100644 --- a/SpriteLibrary/Doc/Help/html/5d507565-cf0d-de52-2253-b55396e3886a.htm +++ b/SpriteLibrary/Doc/Help/html/5d507565-cf0d-de52-2253-b55396e3886a.htm @@ -1,4 +1,4 @@ -Sprite.CheckSpriteHitsSprite Method
SpriteCheckSpriteHitsSprite Method
+Sprite.CheckSpriteHitsSprite Method

SpriteCheckSpriteHitsSprite Method

Check to see if two sprites hit each-other. The sprite collision methods are not all programmed in.

diff --git a/SpriteLibrary/Doc/Help/html/5fe094d1-25cb-4659-c77c-ccf1c0450b7c.htm b/SpriteLibrary/Doc/Help/html/5fe094d1-25cb-4659-c77c-ccf1c0450b7c.htm new file mode 100644 index 0000000..5327fe9 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/5fe094d1-25cb-4659-c77c-ccf1c0450b7c.htm @@ -0,0 +1,5 @@ +SpriteInfo Constructor

SpriteInfo Constructor

Initializes a new instance of the SpriteInfo class

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public SpriteInfo()
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/603ff402-efe2-bede-5c71-1a9583da0800.htm b/SpriteLibrary/Doc/Help/html/603ff402-efe2-bede-5c71-1a9583da0800.htm index c76390b..a6af6ec 100644 --- a/SpriteLibrary/Doc/Help/html/603ff402-efe2-bede-5c71-1a9583da0800.htm +++ b/SpriteLibrary/Doc/Help/html/603ff402-efe2-bede-5c71-1a9583da0800.htm @@ -1,4 +1,4 @@ -Sprite.FrameIndex Property
SpriteFrameIndex Property
+Sprite.FrameIndex Property

SpriteFrameIndex Property

This is the frame of the current animation sequence. You can use this if you need to figure out what frame index to resume something at, or something like that.

diff --git a/SpriteLibrary/Doc/Help/html/60fe71db-5ea2-cf93-f216-79b15a6779db.htm b/SpriteLibrary/Doc/Help/html/60fe71db-5ea2-cf93-f216-79b15a6779db.htm index 952672f..f059d1c 100644 --- a/SpriteLibrary/Doc/Help/html/60fe71db-5ea2-cf93-f216-79b15a6779db.htm +++ b/SpriteLibrary/Doc/Help/html/60fe71db-5ea2-cf93-f216-79b15a6779db.htm @@ -1,5 +1,9 @@ -SpriteController.DuplicateSprite Method (String)
SpriteControllerDuplicateSprite Method (String)
- Find a sprite that has been named with the specified name. Then duplicate that sprite +SpriteController.DuplicateSprite Method (String)

SpriteControllerDuplicateSprite Method (String)

+ Find a sprite that has been named with the specified name. Then duplicate that sprite. If you have + SpriteControllers which are linked (see + + SpriteController.LinkControllersForSpriteTemplateSharing for how to do this), if the Sprite template is + not contained in this controller, it is looked up in any linked controllers.

Namespace:  SpriteLibrary
diff --git a/SpriteLibrary/Doc/Help/html/62400d06-17d8-96c4-90b2-d8e8198daba5.htm b/SpriteLibrary/Doc/Help/html/62400d06-17d8-96c4-90b2-d8e8198daba5.htm new file mode 100644 index 0000000..4123805 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/62400d06-17d8-96c4-90b2-d8e8198daba5.htm @@ -0,0 +1,7 @@ +SpriteDatabase.SpriteNames Method

SpriteDatabaseSpriteNames Method

+ Return a list of the SpriteNames that this Database knows how to create. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public List<string> SpriteNames()

Return Value

Type: ListString
A list of strings, each one is the name of a sprite
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/6273fa69-a784-9916-a8eb-5b16529fdf48.htm b/SpriteLibrary/Doc/Help/html/6273fa69-a784-9916-a8eb-5b16529fdf48.htm index 884a71a..e814b40 100644 --- a/SpriteLibrary/Doc/Help/html/6273fa69-a784-9916-a8eb-5b16529fdf48.htm +++ b/SpriteLibrary/Doc/Help/html/6273fa69-a784-9916-a8eb-5b16529fdf48.htm @@ -1,4 +1,4 @@ -Sprite.PictureBoxLocation Property
SpritePictureBoxLocation Property
+Sprite.PictureBoxLocation Property

SpritePictureBoxLocation Property

The sprite location as found on the picture-box that this sprite is associated with. Used when dealing with mouse-clicks

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/63fd5f6f-f592-0dbd-6fd2-ff4b999f012d.htm b/SpriteLibrary/Doc/Help/html/63fd5f6f-f592-0dbd-6fd2-ff4b999f012d.htm index 8d498b5..c20bc1c 100644 --- a/SpriteLibrary/Doc/Help/html/63fd5f6f-f592-0dbd-6fd2-ff4b999f012d.htm +++ b/SpriteLibrary/Doc/Help/html/63fd5f6f-f592-0dbd-6fd2-ff4b999f012d.htm @@ -1,4 +1,4 @@ -SpriteController.DestroyAllSprites Method
SpriteControllerDestroyAllSprites Method
+SpriteController.DestroyAllSprites Method

SpriteControllerDestroyAllSprites Method

Remove all sprites (even named sprites that have not yet been displayed)

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/64d54496-389b-21a7-0387-25878b2bcc4c.htm b/SpriteLibrary/Doc/Help/html/64d54496-389b-21a7-0387-25878b2bcc4c.htm index 2b3c8bc..e2bba5a 100644 --- a/SpriteLibrary/Doc/Help/html/64d54496-389b-21a7-0387-25878b2bcc4c.htm +++ b/SpriteLibrary/Doc/Help/html/64d54496-389b-21a7-0387-25878b2bcc4c.htm @@ -1,4 +1,4 @@ -Sprite.SpriteBeingDestroyed Event
SpriteSpriteBeingDestroyed Event
+Sprite.SpriteBeingDestroyed Event

SpriteSpriteBeingDestroyed Event

The Sprite has just been told to be destroyed. You might want to do some cleanup. If you need to destroy some payload data, or tell something to cleanup after the sprite this is where to do that. diff --git a/SpriteLibrary/Doc/Help/html/6541bf2d-e608-1bad-2e7f-1b0f2deb0c34.htm b/SpriteLibrary/Doc/Help/html/6541bf2d-e608-1bad-2e7f-1b0f2deb0c34.htm index 1327b2d..3821451 100644 --- a/SpriteLibrary/Doc/Help/html/6541bf2d-e608-1bad-2e7f-1b0f2deb0c34.htm +++ b/SpriteLibrary/Doc/Help/html/6541bf2d-e608-1bad-2e7f-1b0f2deb0c34.htm @@ -1,4 +1,4 @@ -Sprite Constructor (SpriteController, Image, Int32, Int32, Int32)
Sprite Constructor (SpriteController, Image, Int32, Int32, Int32)
+Sprite Constructor (SpriteController, Image, Int32, Int32, Int32)

Sprite Constructor (SpriteController, Image, Int32, Int32, Int32)

Generate a new sprite. It takes a width, height, and the duration in Milliseconds for each frame

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/66013d9b-4126-7d65-05bb-94eb9d134be6.htm b/SpriteLibrary/Doc/Help/html/66013d9b-4126-7d65-05bb-94eb9d134be6.htm index 05dcbd3..32e5891 100644 --- a/SpriteLibrary/Doc/Help/html/66013d9b-4126-7d65-05bb-94eb9d134be6.htm +++ b/SpriteLibrary/Doc/Help/html/66013d9b-4126-7d65-05bb-94eb9d134be6.htm @@ -1,4 +1,4 @@ -Sprite Class
Sprite Class
+Sprite Class

Sprite Class

A Sprite is an animated image that has a size, position, rotation, and possible vector It tracks where in the animation sequence it is, can report colisions, etc. This SpriteController draws, moves, and deals with most graphical aspects of the sprites for you. @@ -187,11 +187,11 @@
Public methodDestroy
Tell the sprite to kill itself. It will erase itself and then be removed from the spritelist. Then it will be gone forever. -
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetAnimationSpeed
+
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetAnimationSpeed
Return the animation speed of this particualar animation of the sprite.
Public methodGetFrameAnimationSpeed
Get the animation speed of a single frame. -
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetImage
+
Public methodGetHashCode (Inherited from Object.)
Public methodGetImage
return the current image frame. Warning: If you write to this image, it will affect all sprites using this frame.
Public methodGetImage(Int32, Int32)
@@ -211,12 +211,12 @@ Returns the direction the sprite is currently traveling, using Radians.
Public methodGetSpriteVector
Return the current vector that the sprite is moving along -
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodHideSprite
+
Public methodGetType (Inherited from Object.)
Public methodHideSprite
Remove the sprite from the field. This does not destroy the sprite. It simply removes it from action. Use UnhideSprite to show it again.
Public methodIsPaused
Ask if the sprite is paused using the specified sprite type (default is PauseAll) -
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodMoveTo(ListPoint)
+
Protected methodMemberwiseClone (Inherited from Object.)
Public methodMoveTo(ListPoint)
Tell the sprite to move towards each point in turn. The sprite will move in a straight line until the first point. From there it moves to the next point, until it has reached the last point. Every time it reaches a point, the SpriteArrivedAtWaypoint event is triggered. When it reaches the final point in the list, the SpriteArrivedAtEndPoint @@ -307,7 +307,7 @@ Return true if the sprite can go to this point and still be on the drawing-board.
Public methodSpriteIntersectsRectangle
Check to see if the specified rectangle overlaps with the sprite. -
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodUnhideSprite
+
Public methodToString (Inherited from Object.)
Public methodUnhideSprite
Make the sprite reappear. If you have not positioned it yet, it will show up at the top corner. It is best to only use this when you have hidden it using HideSprite
Public methodUnPause
diff --git a/SpriteLibrary/Doc/Help/html/662ea0d6-7a35-be51-5a25-288752509d24.htm b/SpriteLibrary/Doc/Help/html/662ea0d6-7a35-be51-5a25-288752509d24.htm index dffbf8e..df5d5c7 100644 --- a/SpriteLibrary/Doc/Help/html/662ea0d6-7a35-be51-5a25-288752509d24.htm +++ b/SpriteLibrary/Doc/Help/html/662ea0d6-7a35-be51-5a25-288752509d24.htm @@ -1,4 +1,4 @@ -SpriteController.AllSprites Method
SpriteControllerAllSprites Method
+SpriteController.AllSprites Method

SpriteControllerAllSprites Method

Return a list of all sprites

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/66486a11-2831-a2ee-75d8-e86857d192ab.htm b/SpriteLibrary/Doc/Help/html/66486a11-2831-a2ee-75d8-e86857d192ab.htm new file mode 100644 index 0000000..e7f9991 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/66486a11-2831-a2ee-75d8-e86857d192ab.htm @@ -0,0 +1,66 @@ +SpriteDatabase.OpenEditWindow Method

SpriteDatabaseOpenEditWindow Method

+ Open a Sprite Edit Window. This window does not let you draw a sprite. What it does is to help + you define your sprites and makes the process of using Sprites in your program a lot easier. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public void OpenEditWindow(
+	int FirstItemIndex = -1
+)

Parameters

FirstItemIndex (Optional)
Type: SystemInt32
Examples
+ This is an example of how to use a SpriteDatabase. + When you begin developing your project, you want to start by creating a SpriteDatabase and pointing + it to a file, and then opening up an EditorWindow. +
C#
public partial class MyGameForm : Form
+{
+    SpriteController mySpriteController = null;
+    SpriteDatabase mySpriteDatabase = null;
+
+    public MyGameForm()
+    {
+        InitializeComponent();
+        MainDrawingArea.BackgroundImage = Properties.Resources.Background;
+        MainDrawingArea.BackgroundImageLayout = ImageLayout.Stretch;
+
+        string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
+        string MyFile = Path.Combine(Desktop, "myFile.xml");
+        mySpriteDatabase = new SpriteDatabase(Properties.Resources.ResourceManager, MyFile);
+
+        mySpriteController = new SpriteController(MainDrawingArea, mySpriteDatabase);
+
+        mySpriteDatabase.OpenEditWindow();
+        mySpriteDatabase.Save();
+    }
+}
+ The Editor Window will let you find the sprites that are contained in the various images you have + as resources in your program, and it will save a file with those sprite templates. Any SpriteController + that you have instantiated with a Sprite Database (see SpriteController(PictureBox, SpriteDatabase)) + will now be able to create named sprites from the templates defined in the database. After the first use, the + named sprites will be accessible from within that controller just like any other named sprites. + + After you have created your SpriteDatabase file, you will want to add your file to your program resources. + Then, you will change the SpriteDatabase to use the resource instead of a file. If we named the file + "MySpriteDatabase.xml", and it got added to your resources with the name "MySpriteDatabase", you would + pass "MySpriteDatabase" to the database instantiation. +
C#
public partial class MyGameForm : Form
+{
+    SpriteController mySpriteController = null;
+    SpriteDatabase mySpriteDatabase = null;
+
+    public MyGameForm()
+    {
+        InitializeComponent();
+        MainDrawingArea.BackgroundImage = Properties.Resources.Background;
+        MainDrawingArea.BackgroundImageLayout = ImageLayout.Stretch;
+
+        //string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
+        //string MyFile = Path.Combine(Desktop, "myFile.xml");
+        //mySpriteDatabase = new SpriteDatabase(Properties.Resources.ResourceManager, MyFile);
+        mySpriteDatabase = new SpriteDatabase(Properties.Resources.ResourceManager, "MySpriteDatabase");
+
+        mySpriteController = new SpriteController(MainDrawingArea, mySpriteDatabase);
+
+        //mySpriteDatabase.OpenEditWindow();
+        //mySpriteDatabase.Save();
+    }
+}
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/6707f122-af81-e57d-d937-e4000242446f.htm b/SpriteLibrary/Doc/Help/html/6707f122-af81-e57d-d937-e4000242446f.htm index d9c9619..693c471 100644 --- a/SpriteLibrary/Doc/Help/html/6707f122-af81-e57d-d937-e4000242446f.htm +++ b/SpriteLibrary/Doc/Help/html/6707f122-af81-e57d-d937-e4000242446f.htm @@ -1,4 +1,4 @@ -Sprite.UnPause Method
SpriteUnPause Method
+Sprite.UnPause Method

SpriteUnPause Method

unpause the sprite.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/675951bb-e09a-e9ec-95d2-c0efaf187d6d.htm b/SpriteLibrary/Doc/Help/html/675951bb-e09a-e9ec-95d2-c0efaf187d6d.htm index 1211b81..4ae7d3d 100644 --- a/SpriteLibrary/Doc/Help/html/675951bb-e09a-e9ec-95d2-c0efaf187d6d.htm +++ b/SpriteLibrary/Doc/Help/html/675951bb-e09a-e9ec-95d2-c0efaf187d6d.htm @@ -1,4 +1,4 @@ -SpriteController.UnPause Method
SpriteControllerUnPause Method
+SpriteController.UnPause Method

SpriteControllerUnPause Method

un-Pause everything. This will send the specified SpritePauseType unpause command to all sprites.

diff --git a/SpriteLibrary/Doc/Help/html/679ff642-b87f-24d6-80c5-434c06c71523.htm b/SpriteLibrary/Doc/Help/html/679ff642-b87f-24d6-80c5-434c06c71523.htm index c5cfc86..cca45ae 100644 --- a/SpriteLibrary/Doc/Help/html/679ff642-b87f-24d6-80c5-434c06c71523.htm +++ b/SpriteLibrary/Doc/Help/html/679ff642-b87f-24d6-80c5-434c06c71523.htm @@ -1,4 +1,4 @@ -Sprite.MirrorVertically Field
SpriteMirrorVertically Field
+Sprite.MirrorVertically Field

SpriteMirrorVertically Field

Flip the image when it gets printed. If your sprite looks like it is facing up, doing this will make it look like it faces down. This works great for many things. But, if your program is gobbling memory or CPU, you may need to diff --git a/SpriteLibrary/Doc/Help/html/68ba53c6-5c0d-3dd4-b9bd-56852a3b98cd.htm b/SpriteLibrary/Doc/Help/html/68ba53c6-5c0d-3dd4-b9bd-56852a3b98cd.htm index c632568..6b154f7 100644 --- a/SpriteLibrary/Doc/Help/html/68ba53c6-5c0d-3dd4-b9bd-56852a3b98cd.htm +++ b/SpriteLibrary/Doc/Help/html/68ba53c6-5c0d-3dd4-b9bd-56852a3b98cd.htm @@ -1,4 +1,4 @@ -SpriteController.AdjustPoint Method
SpriteControllerAdjustPoint Method
+SpriteController.AdjustPoint Method

SpriteControllerAdjustPoint Method

Adjust an image point so that it conforms to the picturebox.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/6acc0e43-8cb8-535c-6f39-8163bb21447a.htm b/SpriteLibrary/Doc/Help/html/6acc0e43-8cb8-535c-6f39-8163bb21447a.htm index 93092d2..b2bd58c 100644 --- a/SpriteLibrary/Doc/Help/html/6acc0e43-8cb8-535c-6f39-8163bb21447a.htm +++ b/SpriteLibrary/Doc/Help/html/6acc0e43-8cb8-535c-6f39-8163bb21447a.htm @@ -1,4 +1,4 @@ -SpritePayload Constructor
SpritePayload Constructor
Initializes a new instance of the SpritePayload class

+SpritePayload Constructor

SpritePayload Constructor

Initializes a new instance of the SpritePayload class

Namespace:  SpriteLibrary
Assembly: diff --git a/SpriteLibrary/Doc/Help/html/6adf23fc-b0f8-5abf-bd39-7dc44f060e7c.htm b/SpriteLibrary/Doc/Help/html/6adf23fc-b0f8-5abf-bd39-7dc44f060e7c.htm index 68e3484..6286634 100644 --- a/SpriteLibrary/Doc/Help/html/6adf23fc-b0f8-5abf-bd39-7dc44f060e7c.htm +++ b/SpriteLibrary/Doc/Help/html/6adf23fc-b0f8-5abf-bd39-7dc44f060e7c.htm @@ -1,4 +1,4 @@ -Sprite.Zvalue Property
SpriteZvalue Property
+Sprite.Zvalue Property

SpriteZvalue Property

A number from 0 to 100. Default = 50. Higher numbers print on top of lower numbers. If you want a sprite to always be drawn on top of other sprites, give it a number higher than 50. If you want a sprite to go under other sprites, make its number lower than 50. diff --git a/SpriteLibrary/Doc/Help/html/6b7227c0-7a6a-6342-3b08-917c7de429cc.htm b/SpriteLibrary/Doc/Help/html/6b7227c0-7a6a-6342-3b08-917c7de429cc.htm index 82bfa4a..be000ab 100644 --- a/SpriteLibrary/Doc/Help/html/6b7227c0-7a6a-6342-3b08-917c7de429cc.htm +++ b/SpriteLibrary/Doc/Help/html/6b7227c0-7a6a-6342-3b08-917c7de429cc.htm @@ -1,4 +1,4 @@ -SpriteLibrary Namespace
SpriteLibrary Namespace
+SpriteLibrary Namespace

SpriteLibrary Namespace

SpriteLibrary is a .net graphical library for creating and controlling sprites on a PictureBox. A sprite is an animated image that can be moved around on a @@ -15,7 +15,17 @@ and http://tyounglightsys.ddns.info/SpriteLibrary
Classes
  - ClassDescription
Public classSprite
+
ClassDescription
Public classAnimationInfo
+ An AnimationInfo class is used by the SpriteInfo class to + contain the instructions for creating a sprite through the dictionary. Most people will not want + to manually use these. It is simplest to use the + SpriteDatabase.OpenEditWindow function and use the built-in sprite editor. That editor will create a file + that can be used in the database without your needing to know about the AnimationInfo. + Again, you do not want to use these within + your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + serializing to be "public", which makes them visible. +
Public classSprite
A Sprite is an animated image that has a size, position, rotation, and possible vector It tracks where in the animation sequence it is, can report colisions, etc. This SpriteController draws, moves, and deals with most graphical aspects of the sprites for you. @@ -23,9 +33,22 @@ A sprite controller is the main heart of the sprite class. Each SpriteController manages one picturebox. If at all possible, try to keep each game in one picturebox, and try to avoid making and destroying new forms with SpriteController/pictureboxes in them. It is hard to destroy them completely. +
Public classSpriteDatabase
+ Store Sprite information in a database. You can preload your database with sprite definitions, and then + create the sprites as needed. This can drastically reduce the initial load time of a game or something. + Though, what it really does is spread out the load time. It still takes the same amount of time to + load all the sprites, it just loads them on-demand. Using a dictionary often hides any load time issues.
Public classSpriteEventArgs
An EventArgs that contains information about Sprites. Most of the Sprite events use this SpriteEventArgs. +
Public classSpriteInfo
+ A class which is used by the SpriteDatabase to build + Sprites. You should not need to use this in your programming. It is simplest to use the Load/Save features + of the SpriteDatabase, which will load and save the SpriteInfo. + Again, you do not want to use these within + your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + serializing to be "public", which makes them visible.
Public classCode exampleSpritePayload
The SpritePayload is a stub of a class, for storing user-defined data and functions along with a sprite.
Structures
@@ -43,7 +66,9 @@ This is a delegate for a keypress event.
Enumerations
  - EnumerationDescription
Public enumerationSpriteCollisionMethod
+
EnumerationDescription
Public enumerationAnimationType
+ The SpriteInfo only recognizes a few ways to create a sprite. Here are the different ways. +
Public enumerationSpriteCollisionMethod
The various types of collisions a sprite can have. Currently only rectangle works. The other types were added when I thought the different types of collision types were needed. Someday we may add these if we find they are useful, or if someone else decides they want to help program the SpriteLibrary. These values are primarily used in Sprite Events diff --git a/SpriteLibrary/Doc/Help/html/6d383ed6-ff9b-f1b0-a53d-54ea41795870.htm b/SpriteLibrary/Doc/Help/html/6d383ed6-ff9b-f1b0-a53d-54ea41795870.htm index ec4ba6f..d0c2c42 100644 --- a/SpriteLibrary/Doc/Help/html/6d383ed6-ff9b-f1b0-a53d-54ea41795870.htm +++ b/SpriteLibrary/Doc/Help/html/6d383ed6-ff9b-f1b0-a53d-54ea41795870.htm @@ -1,4 +1,4 @@ -Sprite Fields
Sprite Fields

The Sprite type exposes the following members.

Fields
+Sprite Fields

Sprite Fields

The Sprite type exposes the following members.

Fields
  NameDescription
Public fieldCannotMoveOutsideBox
Determine if the sprite will automatically move outside the box. If not, it will hit the side of the box and stick diff --git a/SpriteLibrary/Doc/Help/html/6e7ddbc9-4f71-533f-b99c-55a53ba4a843.htm b/SpriteLibrary/Doc/Help/html/6e7ddbc9-4f71-533f-b99c-55a53ba4a843.htm index 3dd19c4..c0a5ee4 100644 --- a/SpriteLibrary/Doc/Help/html/6e7ddbc9-4f71-533f-b99c-55a53ba4a843.htm +++ b/SpriteLibrary/Doc/Help/html/6e7ddbc9-4f71-533f-b99c-55a53ba4a843.htm @@ -1,4 +1,4 @@ -SpriteController.SpriteCount Property
SpriteControllerSpriteCount Property
+SpriteController.SpriteCount Property

SpriteControllerSpriteCount Property

The count of all the sprites the controller knows about. This includes named sprites, which may not be visible.

diff --git a/SpriteLibrary/Doc/Help/html/6e92bfaf-2e6c-a3bc-e208-3f486f6b42fc.htm b/SpriteLibrary/Doc/Help/html/6e92bfaf-2e6c-a3bc-e208-3f486f6b42fc.htm index 226d29c..432025a 100644 --- a/SpriteLibrary/Doc/Help/html/6e92bfaf-2e6c-a3bc-e208-3f486f6b42fc.htm +++ b/SpriteLibrary/Doc/Help/html/6e92bfaf-2e6c-a3bc-e208-3f486f6b42fc.htm @@ -1,4 +1,4 @@ -Sprite.UnhideSprite Method
SpriteUnhideSprite Method
+Sprite.UnhideSprite Method

SpriteUnhideSprite Method

Make the sprite reappear. If you have not positioned it yet, it will show up at the top corner. It is best to only use this when you have hidden it using HideSprite

diff --git a/SpriteLibrary/Doc/Help/html/6fd31706-c5be-87f8-1b62-04ed7f7d9e90.htm b/SpriteLibrary/Doc/Help/html/6fd31706-c5be-87f8-1b62-04ed7f7d9e90.htm new file mode 100644 index 0000000..770af1a --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/6fd31706-c5be-87f8-1b62-04ed7f7d9e90.htm @@ -0,0 +1,7 @@ +SpriteInfo Methods

SpriteInfo Methods

The SpriteInfo type exposes the following members.

Methods
+   + NameDescription
Public methodClone
+ A generic cloning method that works when everything is public +
Public methodCopyFrom
+ Update the current SpriteInfo class such that it is identical to the class you are copying from. +
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/72a79555-fc4d-8b5b-1a9c-408fd55972e9.htm b/SpriteLibrary/Doc/Help/html/72a79555-fc4d-8b5b-1a9c-408fd55972e9.htm index 77bdc4f..68dad7f 100644 --- a/SpriteLibrary/Doc/Help/html/72a79555-fc4d-8b5b-1a9c-408fd55972e9.htm +++ b/SpriteLibrary/Doc/Help/html/72a79555-fc4d-8b5b-1a9c-408fd55972e9.htm @@ -1,4 +1,4 @@ -SpriteEventArgs.TargetSprite Field
SpriteEventArgsTargetSprite Field
+SpriteEventArgs.TargetSprite Field

SpriteEventArgsTargetSprite Field

If another Sprite is involved in the event (Collision), than that Sprite is included here. It will be null if no other Sprite is involved.

diff --git a/SpriteLibrary/Doc/Help/html/747bfb64-7646-38ee-09e3-65455ac597e5.htm b/SpriteLibrary/Doc/Help/html/747bfb64-7646-38ee-09e3-65455ac597e5.htm index 5840c08..052d689 100644 --- a/SpriteLibrary/Doc/Help/html/747bfb64-7646-38ee-09e3-65455ac597e5.htm +++ b/SpriteLibrary/Doc/Help/html/747bfb64-7646-38ee-09e3-65455ac597e5.htm @@ -1,4 +1,4 @@ -Sprite.CannotMoveOutsideBox Field
SpriteCannotMoveOutsideBox Field
+Sprite.CannotMoveOutsideBox Field

SpriteCannotMoveOutsideBox Field

Determine if the sprite will automatically move outside the box. If not, it will hit the side of the box and stick

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/74aa367b-553a-4521-6844-a23b91ef5d58.htm b/SpriteLibrary/Doc/Help/html/74aa367b-553a-4521-6844-a23b91ef5d58.htm new file mode 100644 index 0000000..21a4aa2 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/74aa367b-553a-4521-6844-a23b91ef5d58.htm @@ -0,0 +1,12 @@ +SpriteDatabase.SpriteFromName Method

SpriteDatabaseSpriteFromName Method

+ 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. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public Sprite SpriteFromName(
+	string Name,
+	SpriteController ControllerToUse
+)

Parameters

Name
Type: SystemString
The name of the sprite to load. Names are case-sensitive.
ControllerToUse
Type: SpriteLibrarySpriteController
The sprite controller that will store the sprite in its cache

Return Value

Type: Sprite
A new, named sprite, or null if no such template is found.
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/789e91eb-8488-d05d-7d74-303917ae1891.htm b/SpriteLibrary/Doc/Help/html/789e91eb-8488-d05d-7d74-303917ae1891.htm new file mode 100644 index 0000000..450b685 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/789e91eb-8488-d05d-7d74-303917ae1891.htm @@ -0,0 +1,7 @@ +AnimationInfo.Width Field

AnimationInfoWidth Field

+ The width of the sprite to pull from the specified image. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public int Width

Field Value

Type: Int32
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/7a4959c4-936a-b924-d525-7becb693a55b.htm b/SpriteLibrary/Doc/Help/html/7a4959c4-936a-b924-d525-7becb693a55b.htm index 5951a81..bab359b 100644 --- a/SpriteLibrary/Doc/Help/html/7a4959c4-936a-b924-d525-7becb693a55b.htm +++ b/SpriteLibrary/Doc/Help/html/7a4959c4-936a-b924-d525-7becb693a55b.htm @@ -1,4 +1,4 @@ -Sprite.MouseLeave Event
SpriteMouseLeave Event
+Sprite.MouseLeave Event

SpriteMouseLeave Event

When the mouse moves off the sprite. Use this for a menu, when you want the menu item to stop glowing when the mouse moves away from the menu item sprite.

diff --git a/SpriteLibrary/Doc/Help/html/7c73b68e-f842-bfee-55d8-b36488fb35b7.htm b/SpriteLibrary/Doc/Help/html/7c73b68e-f842-bfee-55d8-b36488fb35b7.htm index 3cc576c..67961f3 100644 --- a/SpriteLibrary/Doc/Help/html/7c73b68e-f842-bfee-55d8-b36488fb35b7.htm +++ b/SpriteLibrary/Doc/Help/html/7c73b68e-f842-bfee-55d8-b36488fb35b7.htm @@ -1,4 +1,4 @@ -SpriteController.ReturnPictureBoxAdjustedWidth Method
SpriteControllerReturnPictureBoxAdjustedWidth Method
+SpriteController.ReturnPictureBoxAdjustedWidth Method

SpriteControllerReturnPictureBoxAdjustedWidth Method

Return the width of an object in picture-box terms. It takes the width of a sprite or other item that is being displayed on the screen, and calculates the width as displayed in the picture-box (taking into consideration stretching or shrinking) diff --git a/SpriteLibrary/Doc/Help/html/7cf36b8e-42dc-cc56-1e14-6f248286d92b.htm b/SpriteLibrary/Doc/Help/html/7cf36b8e-42dc-cc56-1e14-6f248286d92b.htm index 41cbc42..e28694d 100644 --- a/SpriteLibrary/Doc/Help/html/7cf36b8e-42dc-cc56-1e14-6f248286d92b.htm +++ b/SpriteLibrary/Doc/Help/html/7cf36b8e-42dc-cc56-1e14-6f248286d92b.htm @@ -1,4 +1,4 @@ -Sprite.PutPictureBoxLocation Method
SpritePutPictureBoxLocation Method
+Sprite.PutPictureBoxLocation Method

SpritePutPictureBoxLocation Method

Put the Sprite at a specified location, using the dimentions of the PictureBox. You want to use this if you got your X/Y position from a mouse-click. Otherwise, this is the harder way to track things, particularly if your window can resize. Use diff --git a/SpriteLibrary/Doc/Help/html/7cf8acaf-92f1-652e-4c2a-bfd920bc0479.htm b/SpriteLibrary/Doc/Help/html/7cf8acaf-92f1-652e-4c2a-bfd920bc0479.htm index d0f4fbf..3b999f1 100644 --- a/SpriteLibrary/Doc/Help/html/7cf8acaf-92f1-652e-4c2a-bfd920bc0479.htm +++ b/SpriteLibrary/Doc/Help/html/7cf8acaf-92f1-652e-4c2a-bfd920bc0479.htm @@ -1,4 +1,4 @@ -Sprite.SetSize Method
SpriteSetSize Method
+Sprite.SetSize Method

SpriteSetSize Method

Resize the sprite using the base image coordinates. The width and height specified are relative to the size of the background image, not the picturebox.

diff --git a/SpriteLibrary/Doc/Help/html/7d21be0e-d534-6d93-1476-3aa585a8fea3.htm b/SpriteLibrary/Doc/Help/html/7d21be0e-d534-6d93-1476-3aa585a8fea3.htm index dc5e73a..640cc1d 100644 --- a/SpriteLibrary/Doc/Help/html/7d21be0e-d534-6d93-1476-3aa585a8fea3.htm +++ b/SpriteLibrary/Doc/Help/html/7d21be0e-d534-6d93-1476-3aa585a8fea3.htm @@ -1,4 +1,4 @@ -Sprite.SpriteOriginName Property
SpriteSpriteOriginName Property
+Sprite.SpriteOriginName Property

SpriteSpriteOriginName Property

Return the name of the sprite that this was duplicated from. A duplicated sprite will have no name, but will have a SpriteOriginName.

diff --git a/SpriteLibrary/Doc/Help/html/7d3a40d7-0ee8-6117-8d32-b236da97778f.htm b/SpriteLibrary/Doc/Help/html/7d3a40d7-0ee8-6117-8d32-b236da97778f.htm index 481f1e4..4c0564a 100644 --- a/SpriteLibrary/Doc/Help/html/7d3a40d7-0ee8-6117-8d32-b236da97778f.htm +++ b/SpriteLibrary/Doc/Help/html/7d3a40d7-0ee8-6117-8d32-b236da97778f.htm @@ -1,4 +1,4 @@ -SpriteController.OriginalImage Property
SpriteControllerOriginalImage Property
+SpriteController.OriginalImage Property

SpriteControllerOriginalImage Property

The Image from which the background is taken when we erase sprites. The BackgroundImage is the image that contains images of the sprites as well as the background image. Use ReplaceOriginalImage to replace this and the BackgroundImage. diff --git a/SpriteLibrary/Doc/Help/html/7ee23002-2338-41cf-0c54-def8b272bb80.htm b/SpriteLibrary/Doc/Help/html/7ee23002-2338-41cf-0c54-def8b272bb80.htm new file mode 100644 index 0000000..383e8c9 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/7ee23002-2338-41cf-0c54-def8b272bb80.htm @@ -0,0 +1,14 @@ +SpriteDatabase.ReadFromXmlString(T) Method

SpriteDatabaseReadFromXmlStringT Method

+ This is a generic function which the SpriteDatabase uses. It does XML Deserialization of most anything, + and generates an XML String. XML Serialization will take any public value of a public class and + make an XML entry for it. It is a very convienent way to save and retrieve data. You can "Serialize" the value + with the WriteToXMLString function. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public static T ReadFromXmlString<T>(
+	string toDeserialize
+)
+where T : new()
+

Parameters

toDeserialize
Type: SystemString
an XML string, of something you serialized previously

Type Parameters

T
The type of the item that you are trying to deserialize

Return Value

Type: T
An object of type T
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/7fc92c27-7895-2b2c-d4f1-ac682eec7af5.htm b/SpriteLibrary/Doc/Help/html/7fc92c27-7895-2b2c-d4f1-ac682eec7af5.htm index 0c32aaa..0ae89ce 100644 --- a/SpriteLibrary/Doc/Help/html/7fc92c27-7895-2b2c-d4f1-ac682eec7af5.htm +++ b/SpriteLibrary/Doc/Help/html/7fc92c27-7895-2b2c-d4f1-ac682eec7af5.htm @@ -1,4 +1,4 @@ -SpriteController.IsKeyPressed Method (Keys)
SpriteControllerIsKeyPressed Method (Keys)
+SpriteController.IsKeyPressed Method (Keys)

SpriteControllerIsKeyPressed Method (Keys)

Check to see if the given key is pressed. There is a small glitch with the key-pressed system. If the form loses focus, and someone releases a key, the key-up is never triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have diff --git a/SpriteLibrary/Doc/Help/html/80b0403d-da14-c176-9d01-080fc170a67d.htm b/SpriteLibrary/Doc/Help/html/80b0403d-da14-c176-9d01-080fc170a67d.htm index 69249a7..aff2417 100644 --- a/SpriteLibrary/Doc/Help/html/80b0403d-da14-c176-9d01-080fc170a67d.htm +++ b/SpriteLibrary/Doc/Help/html/80b0403d-da14-c176-9d01-080fc170a67d.htm @@ -1,4 +1,4 @@ -SpriteController.SpriteToFront Method
SpriteControllerSpriteToFront Method
+SpriteController.SpriteToFront Method

SpriteControllerSpriteToFront Method

Change the display order of the specified sprite so it goes in front of all other sprites.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/817b64cb-8c4b-af50-69ba-6762e8ae51c5.htm b/SpriteLibrary/Doc/Help/html/817b64cb-8c4b-af50-69ba-6762e8ae51c5.htm index b59fdfe..c6bdd5f 100644 --- a/SpriteLibrary/Doc/Help/html/817b64cb-8c4b-af50-69ba-6762e8ae51c5.htm +++ b/SpriteLibrary/Doc/Help/html/817b64cb-8c4b-af50-69ba-6762e8ae51c5.htm @@ -1,4 +1,4 @@ -SpriteEventArgs Fields
SpriteEventArgs Fields

The SpriteEventArgs type exposes the following members.

Fields
+SpriteEventArgs Fields

SpriteEventArgs Fields

The SpriteEventArgs type exposes the following members.

Fields
  NameDescription
Public fieldCancel
Used primarily in the CheckBeforeMove event. If you set cancel to true, then the move fails. diff --git a/SpriteLibrary/Doc/Help/html/81ec308a-e52d-7e07-f9e0-50d0bf531a30.htm b/SpriteLibrary/Doc/Help/html/81ec308a-e52d-7e07-f9e0-50d0bf531a30.htm index b5545e5..2fdb4b1 100644 --- a/SpriteLibrary/Doc/Help/html/81ec308a-e52d-7e07-f9e0-50d0bf531a30.htm +++ b/SpriteLibrary/Doc/Help/html/81ec308a-e52d-7e07-f9e0-50d0bf531a30.htm @@ -1,4 +1,4 @@ -Sprite.SpriteChangesAnimationFrames Event
SpriteSpriteChangesAnimationFrames Event
+Sprite.SpriteChangesAnimationFrames Event

SpriteSpriteChangesAnimationFrames Event

When the frame of an animation changes. If you want to have something happen every time the foot of your monster comes down, when the swing of your sword is at certain points, etc. Check to see that the Animaton and FrameIndex are what you expect them to be. diff --git a/SpriteLibrary/Doc/Help/html/859526c5-9283-3edb-386b-905cbaa406fd.htm b/SpriteLibrary/Doc/Help/html/859526c5-9283-3edb-386b-905cbaa406fd.htm index e7cd632..adb8b69 100644 --- a/SpriteLibrary/Doc/Help/html/859526c5-9283-3edb-386b-905cbaa406fd.htm +++ b/SpriteLibrary/Doc/Help/html/859526c5-9283-3edb-386b-905cbaa406fd.htm @@ -1,4 +1,4 @@ -Sprite.ChangeFrameAnimationSpeed Method
SpriteChangeFrameAnimationSpeed Method
+Sprite.ChangeFrameAnimationSpeed Method

SpriteChangeFrameAnimationSpeed Method

Change the animation speed of a specific frame. Beware. This affects every sprite using this frame

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/88cf999b-5b19-4cfc-adab-b0276f18431a.htm b/SpriteLibrary/Doc/Help/html/88cf999b-5b19-4cfc-adab-b0276f18431a.htm index 85defce..e02505c 100644 --- a/SpriteLibrary/Doc/Help/html/88cf999b-5b19-4cfc-adab-b0276f18431a.htm +++ b/SpriteLibrary/Doc/Help/html/88cf999b-5b19-4cfc-adab-b0276f18431a.htm @@ -1,4 +1,4 @@ -Sprite.GetSpriteRadans Method
SpriteGetSpriteRadans Method
+Sprite.GetSpriteRadans Method

SpriteGetSpriteRadans Method

Returns the direction the sprite is currently traveling, using Radians.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/8a70b6b2-3e2d-3c6f-0d8c-18e6dea4368e.htm b/SpriteLibrary/Doc/Help/html/8a70b6b2-3e2d-3c6f-0d8c-18e6dea4368e.htm index 566615a..f2d740b 100644 --- a/SpriteLibrary/Doc/Help/html/8a70b6b2-3e2d-3c6f-0d8c-18e6dea4368e.htm +++ b/SpriteLibrary/Doc/Help/html/8a70b6b2-3e2d-3c6f-0d8c-18e6dea4368e.htm @@ -1,4 +1,4 @@ -Sprite Constructor
Sprite Constructor
Overload List
+Sprite Constructor

Sprite Constructor

Overload List
  NameDescription
Public methodSprite(Sprite, Boolean)
Create a Sprite that is based off of the specified sprite. Clone the Sprite except that diff --git a/SpriteLibrary/Doc/Help/html/8ae70e13-ebdf-d78f-d7a4-69825f6b8c26.htm b/SpriteLibrary/Doc/Help/html/8ae70e13-ebdf-d78f-d7a4-69825f6b8c26.htm index c9fceef..31a2e87 100644 --- a/SpriteLibrary/Doc/Help/html/8ae70e13-ebdf-d78f-d7a4-69825f6b8c26.htm +++ b/SpriteLibrary/Doc/Help/html/8ae70e13-ebdf-d78f-d7a4-69825f6b8c26.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Point, Image, Int32, Int32, Int32, Int32)
SpriteAddAnimation Method (Point, Image, Int32, Int32, Int32, Int32)
+Sprite.AddAnimation Method (Point, Image, Int32, Int32, Int32, Int32)

SpriteAddAnimation Method (Point, Image, Int32, Int32, Int32, Int32)

Add another animation to an existing Sprite. After you add animations, you can use ChangeAnimation to select which animation you want the specified sprite to show. For example, you may want to have Animation 0 be a guy walking left, and animation 1 is diff --git a/SpriteLibrary/Doc/Help/html/8b245db5-fbb6-18bc-d219-832668d1432a.htm b/SpriteLibrary/Doc/Help/html/8b245db5-fbb6-18bc-d219-832668d1432a.htm index bd85cae..9548740 100644 --- a/SpriteLibrary/Doc/Help/html/8b245db5-fbb6-18bc-d219-832668d1432a.htm +++ b/SpriteLibrary/Doc/Help/html/8b245db5-fbb6-18bc-d219-832668d1432a.htm @@ -1,4 +1,4 @@ -Sprite.GetSize Property
SpriteGetSize Property
+Sprite.GetSize Property

SpriteGetSize Property

Return the size of the sprite in reference to the image on which it is drawn. To get the size of the Sprite in relation to the PictureBox, use GetVisibleSize

diff --git a/SpriteLibrary/Doc/Help/html/8d47a519-d5f7-c7f6-4ccb-0d310cab2435.htm b/SpriteLibrary/Doc/Help/html/8d47a519-d5f7-c7f6-4ccb-0d310cab2435.htm index 3cbe0a3..68603f8 100644 --- a/SpriteLibrary/Doc/Help/html/8d47a519-d5f7-c7f6-4ccb-0d310cab2435.htm +++ b/SpriteLibrary/Doc/Help/html/8d47a519-d5f7-c7f6-4ccb-0d310cab2435.htm @@ -1,4 +1,4 @@ -SpriteController.PlaceSpriteInFrontOf Method
SpriteControllerPlaceSpriteInFrontOf Method
+SpriteController.PlaceSpriteInFrontOf Method

SpriteControllerPlaceSpriteInFrontOf Method

Make the sprite go in front of the specified sprite.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/8e41c462-a765-51e2-4c3b-de231acba259.htm b/SpriteLibrary/Doc/Help/html/8e41c462-a765-51e2-4c3b-de231acba259.htm index 26139d5..f209f95 100644 --- a/SpriteLibrary/Doc/Help/html/8e41c462-a765-51e2-4c3b-de231acba259.htm +++ b/SpriteLibrary/Doc/Help/html/8e41c462-a765-51e2-4c3b-de231acba259.htm @@ -1,4 +1,4 @@ -Sprite.ID Property
SpriteID Property
+Sprite.ID Property

SpriteID Property

The Sprite ID as specified by the sprite controller.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/8e88c5f2-f5d0-02df-c7cb-9701313411af.htm b/SpriteLibrary/Doc/Help/html/8e88c5f2-f5d0-02df-c7cb-9701313411af.htm index 2fa77e2..2865cd2 100644 --- a/SpriteLibrary/Doc/Help/html/8e88c5f2-f5d0-02df-c7cb-9701313411af.htm +++ b/SpriteLibrary/Doc/Help/html/8e88c5f2-f5d0-02df-c7cb-9701313411af.htm @@ -1,4 +1,4 @@ -Sprite Constructor (Point, SpriteController, Image, Int32, Int32, Int32, Int32)
Sprite Constructor (Point, SpriteController, Image, Int32, Int32, Int32, Int32)
+Sprite Constructor (Point, SpriteController, Image, Int32, Int32, Int32, Int32)

Sprite Constructor (Point, SpriteController, Image, Int32, Int32, Int32, Int32)

Create a Sprite from an animation image, specifying the number of consecutive frames to grab.

diff --git a/SpriteLibrary/Doc/Help/html/8ff96e56-6289-4c11-f351-4dbfe58a44cf.htm b/SpriteLibrary/Doc/Help/html/8ff96e56-6289-4c11-f351-4dbfe58a44cf.htm index 8d5d665..9bd9411 100644 --- a/SpriteLibrary/Doc/Help/html/8ff96e56-6289-4c11-f351-4dbfe58a44cf.htm +++ b/SpriteLibrary/Doc/Help/html/8ff96e56-6289-4c11-f351-4dbfe58a44cf.htm @@ -1,4 +1,4 @@ -Sprite.MouseLeaveTransparent Event
SpriteMouseLeaveTransparent Event
+Sprite.MouseLeaveTransparent Event

SpriteMouseLeaveTransparent Event

When the mouse moves off the non-transparent portion of the sprite. Use this for a menu, when you want the menu item to stop glowing when the mouse moves away from the menu item sprite. diff --git a/SpriteLibrary/Doc/Help/html/90511f90-497b-fc61-6984-15d76101a6f1.htm b/SpriteLibrary/Doc/Help/html/90511f90-497b-fc61-6984-15d76101a6f1.htm index 9ae63e7..68a4ff4 100644 --- a/SpriteLibrary/Doc/Help/html/90511f90-497b-fc61-6984-15d76101a6f1.htm +++ b/SpriteLibrary/Doc/Help/html/90511f90-497b-fc61-6984-15d76101a6f1.htm @@ -1,4 +1,4 @@ -SpriteController.SpritesAtImagePoint Method
SpriteControllerSpritesAtImagePoint Method
+SpriteController.SpritesAtImagePoint Method

SpriteControllerSpritesAtImagePoint Method

This takes a point, as as specified on the image, and returns the sprites at that point. Different functions use different coordinates, whether based off the background image, or based off the picturebox. This one uses the background image coordinates. Use SpritesAdPoint() if you are doing something based off diff --git a/SpriteLibrary/Doc/Help/html/90a2e7f3-348b-d10b-ee6b-9397ef5daa18.htm b/SpriteLibrary/Doc/Help/html/90a2e7f3-348b-d10b-ee6b-9397ef5daa18.htm index 36b48ce..c092297 100644 --- a/SpriteLibrary/Doc/Help/html/90a2e7f3-348b-d10b-ee6b-9397ef5daa18.htm +++ b/SpriteLibrary/Doc/Help/html/90a2e7f3-348b-d10b-ee6b-9397ef5daa18.htm @@ -1,4 +1,4 @@ -Sprite.Opacity Property
SpriteOpacity Property
+Sprite.Opacity Property

SpriteOpacity Property

Set the opacity of the sprite. The value should be between 0 and 1. 1 is solid, 0 is transparent. Sometimes you want to drag a sprite around the map, or show a sprite that "could be there." Setting the sprite opacity is usually how you do that. One warning, however. The opacity value takes effect the diff --git a/SpriteLibrary/Doc/Help/html/92b04460-74f1-c388-f3ac-ea510ffc4e06.htm b/SpriteLibrary/Doc/Help/html/92b04460-74f1-c388-f3ac-ea510ffc4e06.htm index 6c1a29d..a239bac 100644 --- a/SpriteLibrary/Doc/Help/html/92b04460-74f1-c388-f3ac-ea510ffc4e06.htm +++ b/SpriteLibrary/Doc/Help/html/92b04460-74f1-c388-f3ac-ea510ffc4e06.htm @@ -1,4 +1,4 @@ -SpriteController Fields
SpriteController Fields

The SpriteController type exposes the following members.

Fields
+SpriteController Fields

SpriteController Fields

The SpriteController type exposes the following members.

Fields
  NameDescription
Public fieldOptimizeForLargeSpriteImages
If your sprite images need substantial growing or shrinking when displayed, you can try setting this to "true" diff --git a/SpriteLibrary/Doc/Help/html/92e90a8d-e5eb-daea-2804-b99254f25433.htm b/SpriteLibrary/Doc/Help/html/92e90a8d-e5eb-daea-2804-b99254f25433.htm index e3bd99c..a376164 100644 --- a/SpriteLibrary/Doc/Help/html/92e90a8d-e5eb-daea-2804-b99254f25433.htm +++ b/SpriteLibrary/Doc/Help/html/92e90a8d-e5eb-daea-2804-b99254f25433.htm @@ -1,4 +1,4 @@ -SpriteAdjustmentRatio.width_ratio Field
SpriteAdjustmentRatiowidth_ratio Field
+SpriteAdjustmentRatio.width_ratio Field

SpriteAdjustmentRatiowidth_ratio Field

Divide a picturebox ratio by this to get the image location. Multiply an image location by this to get the picturebox location.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/93aee3f0-fb9a-e628-9224-0128a91d363a.htm b/SpriteLibrary/Doc/Help/html/93aee3f0-fb9a-e628-9224-0128a91d363a.htm index 268365b..3e072b7 100644 --- a/SpriteLibrary/Doc/Help/html/93aee3f0-fb9a-e628-9224-0128a91d363a.htm +++ b/SpriteLibrary/Doc/Help/html/93aee3f0-fb9a-e628-9224-0128a91d363a.htm @@ -1,4 +1,4 @@ -Sprite.ChangeAnimationSpeed Method
SpriteChangeAnimationSpeed Method
+Sprite.ChangeAnimationSpeed Method

SpriteChangeAnimationSpeed Method

Change the animation speed of a particular animation. This looks at the first frame and compares that frame to the speed specified. It adjusts all the animations by the same percentage. diff --git a/SpriteLibrary/Doc/Help/html/9469b7cf-55ee-5c2e-feb7-01c7e23a6350.htm b/SpriteLibrary/Doc/Help/html/9469b7cf-55ee-5c2e-feb7-01c7e23a6350.htm index 3b2ab3e..dce22c2 100644 --- a/SpriteLibrary/Doc/Help/html/9469b7cf-55ee-5c2e-feb7-01c7e23a6350.htm +++ b/SpriteLibrary/Doc/Help/html/9469b7cf-55ee-5c2e-feb7-01c7e23a6350.htm @@ -1,4 +1,4 @@ -SpriteController.ReturnPictureBoxAdjustedPoint Method
SpriteControllerReturnPictureBoxAdjustedPoint Method
+SpriteController.ReturnPictureBoxAdjustedPoint Method

SpriteControllerReturnPictureBoxAdjustedPoint Method

This does the reverse of an adjusted point. It takes a point on the image and transforms it to one on the PictureBox

diff --git a/SpriteLibrary/Doc/Help/html/9474d6c2-30d9-a39b-3c10-b50286f93813.htm b/SpriteLibrary/Doc/Help/html/9474d6c2-30d9-a39b-3c10-b50286f93813.htm index 9415da8..0a9f573 100644 --- a/SpriteLibrary/Doc/Help/html/9474d6c2-30d9-a39b-3c10-b50286f93813.htm +++ b/SpriteLibrary/Doc/Help/html/9474d6c2-30d9-a39b-3c10-b50286f93813.htm @@ -1,4 +1,4 @@ -Sprite.IsPaused Method
SpriteIsPaused Method
+Sprite.IsPaused Method

SpriteIsPaused Method

Ask if the sprite is paused using the specified sprite type (default is PauseAll)

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/949b6b09-68f2-5775-7d24-28efd893a244.htm b/SpriteLibrary/Doc/Help/html/949b6b09-68f2-5775-7d24-28efd893a244.htm new file mode 100644 index 0000000..e2452b9 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/949b6b09-68f2-5775-7d24-28efd893a244.htm @@ -0,0 +1,7 @@ +SpriteInfo.Clone Method

SpriteInfoClone Method

+ A generic cloning method that works when everything is public +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public SpriteInfo Clone()

Return Value

Type: SpriteInfo
A duplicate of the sprite info.
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/96b717e2-d860-aa86-3760-d39620a2bb31.htm b/SpriteLibrary/Doc/Help/html/96b717e2-d860-aa86-3760-d39620a2bb31.htm index c85b791..b88f522 100644 --- a/SpriteLibrary/Doc/Help/html/96b717e2-d860-aa86-3760-d39620a2bb31.htm +++ b/SpriteLibrary/Doc/Help/html/96b717e2-d860-aa86-3760-d39620a2bb31.htm @@ -1,4 +1,4 @@ -Sprite.SpriteIntersectsRectangle Method
SpriteSpriteIntersectsRectangle Method
+Sprite.SpriteIntersectsRectangle Method

SpriteSpriteIntersectsRectangle Method

Check to see if the specified rectangle overlaps with the sprite.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/98f8bf30-d3ab-5f86-9fbf-9f76df20f2e6.htm b/SpriteLibrary/Doc/Help/html/98f8bf30-d3ab-5f86-9fbf-9f76df20f2e6.htm index ca7fc7f..649bce6 100644 --- a/SpriteLibrary/Doc/Help/html/98f8bf30-d3ab-5f86-9fbf-9f76df20f2e6.htm +++ b/SpriteLibrary/Doc/Help/html/98f8bf30-d3ab-5f86-9fbf-9f76df20f2e6.htm @@ -1,4 +1,4 @@ -Sprite Constructor (SpriteController, Image)
Sprite Constructor (SpriteController, Image)
+Sprite Constructor (SpriteController, Image)

Sprite Constructor (SpriteController, Image)

Generate a new single-frame sprite from the specified image.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/995741fd-f6ea-f11e-ee46-c88de9307e8a.htm b/SpriteLibrary/Doc/Help/html/995741fd-f6ea-f11e-ee46-c88de9307e8a.htm index bf89061..c7fe0e1 100644 --- a/SpriteLibrary/Doc/Help/html/995741fd-f6ea-f11e-ee46-c88de9307e8a.htm +++ b/SpriteLibrary/Doc/Help/html/995741fd-f6ea-f11e-ee46-c88de9307e8a.htm @@ -1,4 +1,4 @@ -Sprite.SpriteCanMoveOnPictureBox Method
SpriteSpriteCanMoveOnPictureBox Method
+Sprite.SpriteCanMoveOnPictureBox Method

SpriteSpriteCanMoveOnPictureBox Method

Return true if the sprite can go to this point and still be on the drawing-board.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/9c6cb5e5-0054-eab6-66d9-e6e0c1e8c444.htm b/SpriteLibrary/Doc/Help/html/9c6cb5e5-0054-eab6-66d9-e6e0c1e8c444.htm index cd2798e..7e4e330 100644 --- a/SpriteLibrary/Doc/Help/html/9c6cb5e5-0054-eab6-66d9-e6e0c1e8c444.htm +++ b/SpriteLibrary/Doc/Help/html/9c6cb5e5-0054-eab6-66d9-e6e0c1e8c444.htm @@ -1,4 +1,4 @@ -SpriteAdjustmentRatio Fields
SpriteAdjustmentRatio Fields

The SpriteAdjustmentRatio type exposes the following members.

Fields
+SpriteAdjustmentRatio Fields

SpriteAdjustmentRatio Fields

The SpriteAdjustmentRatio type exposes the following members.

Fields
  NameDescription
Public fieldheight_ratio
Divide a picturebox ratio by this to get the image location. Multiply an image location by this to get the picturebox location. diff --git a/SpriteLibrary/Doc/Help/html/9d686d62-c22c-20ec-7455-b4adc8070b8c.htm b/SpriteLibrary/Doc/Help/html/9d686d62-c22c-20ec-7455-b4adc8070b8c.htm index 8074a30..480d4aa 100644 --- a/SpriteLibrary/Doc/Help/html/9d686d62-c22c-20ec-7455-b4adc8070b8c.htm +++ b/SpriteLibrary/Doc/Help/html/9d686d62-c22c-20ec-7455-b4adc8070b8c.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Image, Int32, Int32)
SpriteAddAnimation Method (Image, Int32, Int32)
+Sprite.AddAnimation Method (Image, Int32, Int32)

SpriteAddAnimation Method (Image, Int32, Int32)

Add another animation to an existing Sprite. After you add animations, you can use ChangeAnimation to select which animation you want the specified sprite to show. For example, you may want to have Animation 0 be a guy walking left, and animation 1 is diff --git a/SpriteLibrary/Doc/Help/html/9d9cf5a5-3349-bfae-7d39-41082644a49e.htm b/SpriteLibrary/Doc/Help/html/9d9cf5a5-3349-bfae-7d39-41082644a49e.htm index d8829ca..c16a9b5 100644 --- a/SpriteLibrary/Doc/Help/html/9d9cf5a5-3349-bfae-7d39-41082644a49e.htm +++ b/SpriteLibrary/Doc/Help/html/9d9cf5a5-3349-bfae-7d39-41082644a49e.htm @@ -1,4 +1,4 @@ -SpriteController.BackgroundImage Property
SpriteControllerBackgroundImage Property
+SpriteController.BackgroundImage Property

SpriteControllerBackgroundImage Property

The Background Image on which the sprites are drawn. This image ends up having sprite parts on it. The OriginalImage is the version that is clean. Use ReplaceOriginalImage to replace the background Image. diff --git a/SpriteLibrary/Doc/Help/html/9e0d8841-7f6a-63b2-c5fb-5ba6ffa85436.htm b/SpriteLibrary/Doc/Help/html/9e0d8841-7f6a-63b2-c5fb-5ba6ffa85436.htm index 6b809f1..1268a63 100644 --- a/SpriteLibrary/Doc/Help/html/9e0d8841-7f6a-63b2-c5fb-5ba6ffa85436.htm +++ b/SpriteLibrary/Doc/Help/html/9e0d8841-7f6a-63b2-c5fb-5ba6ffa85436.htm @@ -1,4 +1,4 @@ -Sprite.SpriteAtPictureBoxPoint Method
SpriteSpriteAtPictureBoxPoint Method
+Sprite.SpriteAtPictureBoxPoint Method

SpriteSpriteAtPictureBoxPoint Method

Return true or false, asking if the specifiec sprite is at the point on the picturebox. You can use this with a mouse-click to see if you are clicking on a sprite. Use the SpriteCollisionMethod "transparent" to see if you have clicked on an actual pixel of the diff --git a/SpriteLibrary/Doc/Help/html/9ed74ea6-9db4-d455-98b6-b2b75d8b1547.htm b/SpriteLibrary/Doc/Help/html/9ed74ea6-9db4-d455-98b6-b2b75d8b1547.htm new file mode 100644 index 0000000..685df58 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/9ed74ea6-9db4-d455-98b6-b2b75d8b1547.htm @@ -0,0 +1,26 @@ +SpriteController Constructor (PictureBox, SpriteDatabase)

SpriteController Constructor (PictureBox, SpriteDatabase)

+ 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 SpriteDatabase, which + loads sprite definitions at construction time, and has tools for making and storing sprites. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public SpriteController(
+	PictureBox Area,
+	SpriteDatabase DatabaseToUse
+)

Parameters

Area
Type: System.Windows.FormsPictureBox
The PictureBox. + that the sprites will be drawn in
DatabaseToUse
Type: SpriteLibrarySpriteDatabase
A SpriteDatabase to use
Examples
+ This is an example of a Form class that defines a SpriteController. The MainDrawingArea is a + PictureBox.
C#
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);
+    }
+}
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/GeneralError.htm b/SpriteLibrary/Doc/Help/html/GeneralError.htm new file mode 100644 index 0000000..5dae0b3 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/GeneralError.htm @@ -0,0 +1,29 @@ + + + + + + + + + General Error + + + + + + + + + + +
+

We're sorry, a general error has occurred.

+

Please try to load the page again. If the error persists, please contact the site administrator.

+
+ + + diff --git a/SpriteLibrary/Doc/Help/html/PageNotFound.htm b/SpriteLibrary/Doc/Help/html/PageNotFound.htm new file mode 100644 index 0000000..a856837 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/PageNotFound.htm @@ -0,0 +1,31 @@ + + + + + + + + + Page Not Found + + + + + + + + + + +
+

We're sorry, the page you requested cannot be found.

+

The URL might be misspelled or the page you are looking for is no longer available. If you entered +the web address, check that it doesn't contain a typo. You can use the search box at the top of the page to +try and locate the page.

+
+ + + diff --git a/SpriteLibrary/Doc/Help/html/a0bcddc2-1bb7-22e7-0b16-c000e5e19dcc.htm b/SpriteLibrary/Doc/Help/html/a0bcddc2-1bb7-22e7-0b16-c000e5e19dcc.htm new file mode 100644 index 0000000..fe9946e --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/a0bcddc2-1bb7-22e7-0b16-c000e5e19dcc.htm @@ -0,0 +1,8 @@ +AnimationInfo.MirrorHorizontally Field

AnimationInfoMirrorHorizontally Field

+ If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + the sprite is mirrored Horizontally. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public bool MirrorHorizontally

Field Value

Type: Boolean
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/a395b730-e319-7999-9579-4eae9d045a21.htm b/SpriteLibrary/Doc/Help/html/a395b730-e319-7999-9579-4eae9d045a21.htm new file mode 100644 index 0000000..830f2a1 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/a395b730-e319-7999-9579-4eae9d045a21.htm @@ -0,0 +1,7 @@ +AnimationInfo.NumFrames Field

AnimationInfoNumFrames Field

+ The number of frames to pull, one following the other, from the specified image. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public int NumFrames

Field Value

Type: Int32
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/a498d1a3-101d-fccb-21fd-29b42a994024.htm b/SpriteLibrary/Doc/Help/html/a498d1a3-101d-fccb-21fd-29b42a994024.htm new file mode 100644 index 0000000..9709093 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/a498d1a3-101d-fccb-21fd-29b42a994024.htm @@ -0,0 +1,35 @@ +AnimationInfo Fields

AnimationInfo Fields

The AnimationInfo type exposes the following members.

Fields
+   + NameDescription
Public fieldAnimationToUse
+ If the sprite is either a mirror sprite, or a rotated sprite, it must be based off of + a pre-existing animation. This value states which animation we copy. +
Public fieldAnimSpeed
+ The delay in milliseconds in-between frames of the sprite. This number is not exact, but is pretty + close to what happens. Never use a number less than 20. +
Public fieldFieldsToUse
+ The FieldsToUse tracks which of the values in AnimationInfo are important +
Public fieldHeight
+ The height of the sprite to pull from the specified image. +
Public fieldImageName
+ This is the image name which contains the sprite. This image should be in the Properties.Resources + of your project. The name you want to give is case-sensitive, and should be the exact name as + listed in Properties.Resources. For example, if your image name were Properties.Resources.Runner + you would want to use the string "Runner" Note the caps are identical, and we have removed the + "Properties.Resources. from the front. +
Public fieldMirrorHorizontally
+ If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + the sprite is mirrored Horizontally. +
Public fieldMirrorVertically
+ If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + the sprite is mirrored Vertically. +
Public fieldNumFrames
+ The number of frames to pull, one following the other, from the specified image. +
Public fieldRotationDegrees
+ If the sprite is a rotated copy of a pre-existing sprite, this value tells how many degrees to + rotate the sprite. +
Public fieldStartPoint
+ If the sprite is based off of an image, this value is the starting point of the top-left corner + of the sprite on the image. You will also want to include a Width and Height. +
Public fieldWidth
+ The width of the sprite to pull from the specified image. +
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/a50146be-5b11-1554-db6f-817ea76b9343.htm b/SpriteLibrary/Doc/Help/html/a50146be-5b11-1554-db6f-817ea76b9343.htm index 65578ee..f6ff155 100644 --- a/SpriteLibrary/Doc/Help/html/a50146be-5b11-1554-db6f-817ea76b9343.htm +++ b/SpriteLibrary/Doc/Help/html/a50146be-5b11-1554-db6f-817ea76b9343.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Image, Int32, Int32, Int32)
SpriteAddAnimation Method (Image, Int32, Int32, Int32)
+Sprite.AddAnimation Method (Image, Int32, Int32, Int32)

SpriteAddAnimation Method (Image, Int32, Int32, Int32)

Add another animation to an existing Sprite. After you add animations, you can use ChangeAnimation to select which animation you want the specified sprite to show. For example, you may want to have Animation 0 be a guy walking left, and animation 1 is diff --git a/SpriteLibrary/Doc/Help/html/a5292253-7fbd-5dfa-819f-1d67d27580d6.htm b/SpriteLibrary/Doc/Help/html/a5292253-7fbd-5dfa-819f-1d67d27580d6.htm index 6355d22..78a2043 100644 --- a/SpriteLibrary/Doc/Help/html/a5292253-7fbd-5dfa-819f-1d67d27580d6.htm +++ b/SpriteLibrary/Doc/Help/html/a5292253-7fbd-5dfa-819f-1d67d27580d6.htm @@ -1,4 +1,4 @@ -SpriteController.NameSprite Method
SpriteControllerNameSprite Method
+SpriteController.NameSprite Method

SpriteControllerNameSprite Method

Find the specified Sprite in the controller and change its name to the specified string. You can do the same thing with Sprite.SetName(Name)

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/a6b3d508-3301-8e4a-0f2e-bed5f22f3e90.htm b/SpriteLibrary/Doc/Help/html/a6b3d508-3301-8e4a-0f2e-bed5f22f3e90.htm new file mode 100644 index 0000000..8384f6f --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/a6b3d508-3301-8e4a-0f2e-bed5f22f3e90.htm @@ -0,0 +1,9 @@ +SpriteInfo.CopyFrom Method

SpriteInfoCopyFrom Method

+ Update the current SpriteInfo class such that it is identical to the class you are copying from. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public void CopyFrom(
+	SpriteInfo toCopyFrom
+)

Parameters

toCopyFrom
Type: SpriteLibrarySpriteInfo
A spriteInfo class
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/a737620e-6604-1a1b-df59-3458c3402c9d.htm b/SpriteLibrary/Doc/Help/html/a737620e-6604-1a1b-df59-3458c3402c9d.htm new file mode 100644 index 0000000..32594ab --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/a737620e-6604-1a1b-df59-3458c3402c9d.htm @@ -0,0 +1,10 @@ +SpriteInfo.Animations Field

SpriteInfoAnimations Field

+ This is the list of animations that make up the sprite. Again, you do not want to use these within + your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + serializing to be "public", which makes them visible. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public List<AnimationInfo> Animations

Field Value

Type: ListAnimationInfo
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/a8864de9-4275-a608-f5b0-26d4b313967d.htm b/SpriteLibrary/Doc/Help/html/a8864de9-4275-a608-f5b0-26d4b313967d.htm index 89f046b..de017cb 100644 --- a/SpriteLibrary/Doc/Help/html/a8864de9-4275-a608-f5b0-26d4b313967d.htm +++ b/SpriteLibrary/Doc/Help/html/a8864de9-4275-a608-f5b0-26d4b313967d.htm @@ -1,4 +1,4 @@ -SpriteAdjustmentRatio.height_ratio Field
SpriteAdjustmentRatioheight_ratio Field
+SpriteAdjustmentRatio.height_ratio Field

SpriteAdjustmentRatioheight_ratio Field

Divide a picturebox ratio by this to get the image location. Multiply an image location by this to get the picturebox location.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/abfab841-a96c-b22d-7cd8-fec3aba92510.htm b/SpriteLibrary/Doc/Help/html/abfab841-a96c-b22d-7cd8-fec3aba92510.htm index b6b1b3c..e99c1f3 100644 --- a/SpriteLibrary/Doc/Help/html/abfab841-a96c-b22d-7cd8-fec3aba92510.htm +++ b/SpriteLibrary/Doc/Help/html/abfab841-a96c-b22d-7cd8-fec3aba92510.htm @@ -1,4 +1,4 @@ -Sprite Methods
Sprite Methods

The Sprite type exposes the following members.

Methods
+Sprite Methods

Sprite Methods

The Sprite type exposes the following members.

Methods
  NameDescription
Public methodAddAnimation(Image)
Add another animation to an existing Sprite. After you add animations, you can use @@ -77,11 +77,11 @@
Public methodDestroy
Tell the sprite to kill itself. It will erase itself and then be removed from the spritelist. Then it will be gone forever. -
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetAnimationSpeed
+
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetAnimationSpeed
Return the animation speed of this particualar animation of the sprite.
Public methodGetFrameAnimationSpeed
Get the animation speed of a single frame. -
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetImage
+
Public methodGetHashCode (Inherited from Object.)
Public methodGetImage
return the current image frame. Warning: If you write to this image, it will affect all sprites using this frame.
Public methodGetImage(Int32, Int32)
@@ -101,12 +101,12 @@ Returns the direction the sprite is currently traveling, using Radians.
Public methodGetSpriteVector
Return the current vector that the sprite is moving along -
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodHideSprite
+
Public methodGetType (Inherited from Object.)
Public methodHideSprite
Remove the sprite from the field. This does not destroy the sprite. It simply removes it from action. Use UnhideSprite to show it again.
Public methodIsPaused
Ask if the sprite is paused using the specified sprite type (default is PauseAll) -
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodMoveTo(ListPoint)
+
Protected methodMemberwiseClone (Inherited from Object.)
Public methodMoveTo(ListPoint)
Tell the sprite to move towards each point in turn. The sprite will move in a straight line until the first point. From there it moves to the next point, until it has reached the last point. Every time it reaches a point, the SpriteArrivedAtWaypoint event is triggered. When it reaches the final point in the list, the SpriteArrivedAtEndPoint @@ -197,7 +197,7 @@ Return true if the sprite can go to this point and still be on the drawing-board.
Public methodSpriteIntersectsRectangle
Check to see if the specified rectangle overlaps with the sprite. -
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodUnhideSprite
+
Public methodToString (Inherited from Object.)
Public methodUnhideSprite
Make the sprite reappear. If you have not positioned it yet, it will show up at the top corner. It is best to only use this when you have hidden it using HideSprite
Public methodUnPause
diff --git a/SpriteLibrary/Doc/Help/html/ac60fbfe-2f25-8d24-b1a2-6cd83762f380.htm b/SpriteLibrary/Doc/Help/html/ac60fbfe-2f25-8d24-b1a2-6cd83762f380.htm new file mode 100644 index 0000000..7d39410 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/ac60fbfe-2f25-8d24-b1a2-6cd83762f380.htm @@ -0,0 +1,11 @@ +SpriteDatabase.SetSnapGridSize Method

SpriteDatabaseSetSnapGridSize Method

+ 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 + specified in the snap-grid. It takes a "Size" specified by System.Drawing.Size. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public void SetSnapGridSize(
+	Size GridSize
+)

Parameters

GridSize
Type: System.DrawingSize
The size of the grid space to snap to when dragging
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/acb35a6f-c89a-3a7d-146d-b85ccf68d8aa.htm b/SpriteLibrary/Doc/Help/html/acb35a6f-c89a-3a7d-146d-b85ccf68d8aa.htm index a05ce55..6256995 100644 --- a/SpriteLibrary/Doc/Help/html/acb35a6f-c89a-3a7d-146d-b85ccf68d8aa.htm +++ b/SpriteLibrary/Doc/Help/html/acb35a6f-c89a-3a7d-146d-b85ccf68d8aa.htm @@ -1,4 +1,4 @@ -Sprite.SpriteHitsSprite Event
SpriteSpriteHitsSprite Event
+Sprite.SpriteHitsSprite Event

SpriteSpriteHitsSprite Event

This happens when two sprites hit each-other. The SpriteEventArgs that is returned contains the sprite that this sprite hits.

diff --git a/SpriteLibrary/Doc/Help/html/acf8f1b8-170d-0fa9-1ac9-41a086d97046.htm b/SpriteLibrary/Doc/Help/html/acf8f1b8-170d-0fa9-1ac9-41a086d97046.htm index e5d0ccd..9f92538 100644 --- a/SpriteLibrary/Doc/Help/html/acf8f1b8-170d-0fa9-1ac9-41a086d97046.htm +++ b/SpriteLibrary/Doc/Help/html/acf8f1b8-170d-0fa9-1ac9-41a086d97046.htm @@ -1,4 +1,4 @@ -Sprite.MouseEnterTransparent Event
SpriteMouseEnterTransparent Event
+Sprite.MouseEnterTransparent Event

SpriteMouseEnterTransparent Event

When the mouse moves over a non-transparent portoin of the sprite. Use this for a menu, when you want the menu item to glow when the mouse is over the menu item sprite.

diff --git a/SpriteLibrary/Doc/Help/html/ad0a5da6-126d-b31b-aa3d-dbbd7d5a2556.htm b/SpriteLibrary/Doc/Help/html/ad0a5da6-126d-b31b-aa3d-dbbd7d5a2556.htm new file mode 100644 index 0000000..cbf3665 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/ad0a5da6-126d-b31b-aa3d-dbbd7d5a2556.htm @@ -0,0 +1,8 @@ +AnimationInfo.AnimationToUse Field

AnimationInfoAnimationToUse Field

+ If the sprite is either a mirror sprite, or a rotated sprite, it must be based off of + a pre-existing animation. This value states which animation we copy. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public int AnimationToUse

Field Value

Type: Int32
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/ad1a395a-bbd4-d507-aa4d-1419f9b7df08.htm b/SpriteLibrary/Doc/Help/html/ad1a395a-bbd4-d507-aa4d-1419f9b7df08.htm index 65d120f..27b2305 100644 --- a/SpriteLibrary/Doc/Help/html/ad1a395a-bbd4-d507-aa4d-1419f9b7df08.htm +++ b/SpriteLibrary/Doc/Help/html/ad1a395a-bbd4-d507-aa4d-1419f9b7df08.htm @@ -1,4 +1,4 @@ -SpriteEventArgs.Cancel Field
SpriteEventArgsCancel Field
+SpriteEventArgs.Cancel Field

SpriteEventArgsCancel Field

Used primarily in the CheckBeforeMove event. If you set cancel to true, then the move fails. You can use this to keep a Sprite from going places where it ought not to go.

diff --git a/SpriteLibrary/Doc/Help/html/adaddf64-5e6e-447b-5d81-c38398216201.htm b/SpriteLibrary/Doc/Help/html/adaddf64-5e6e-447b-5d81-c38398216201.htm index ee1e86d..f3775ba 100644 --- a/SpriteLibrary/Doc/Help/html/adaddf64-5e6e-447b-5d81-c38398216201.htm +++ b/SpriteLibrary/Doc/Help/html/adaddf64-5e6e-447b-5d81-c38398216201.htm @@ -1,4 +1,4 @@ -Sprite.PutBaseImageLocation Method
SpritePutBaseImageLocation Method
Overload List
+Sprite.PutBaseImageLocation Method

SpritePutBaseImageLocation Method

Overload List
  NameDescription
Public methodPutBaseImageLocation(Point)
Put the Sprite at a specified location, using the dimentions of the BackgroundImage. diff --git a/SpriteLibrary/Doc/Help/html/adc84477-1eb3-bb14-ee09-0525268c45f4.htm b/SpriteLibrary/Doc/Help/html/adc84477-1eb3-bb14-ee09-0525268c45f4.htm index 71af82a..331fafd 100644 --- a/SpriteLibrary/Doc/Help/html/adc84477-1eb3-bb14-ee09-0525268c45f4.htm +++ b/SpriteLibrary/Doc/Help/html/adc84477-1eb3-bb14-ee09-0525268c45f4.htm @@ -1,4 +1,4 @@ -Sprite.CancelMoveTo Method
SpriteCancelMoveTo Method
+Sprite.CancelMoveTo Method

SpriteCancelMoveTo Method

Cancel a MoveTo command. The sprite will stop moving, and all the waypoints will be removed.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/ae4a57de-4763-c9cb-c9e3-c6e186296fd8.htm b/SpriteLibrary/Doc/Help/html/ae4a57de-4763-c9cb-c9e3-c6e186296fd8.htm index e4a9259..dbe9685 100644 --- a/SpriteLibrary/Doc/Help/html/ae4a57de-4763-c9cb-c9e3-c6e186296fd8.htm +++ b/SpriteLibrary/Doc/Help/html/ae4a57de-4763-c9cb-c9e3-c6e186296fd8.htm @@ -1,4 +1,4 @@ -Sprite.SpriteReachedEndPoint Property
SpriteSpriteReachedEndPoint Property
+Sprite.SpriteReachedEndPoint Property

SpriteSpriteReachedEndPoint Property

This is true unless we are using MoveTo(point) or MoveTo(list of points) to tell the sprite to move from one place to the next. This boolean tells us if it has finished or not.

diff --git a/SpriteLibrary/Doc/Help/html/ae6c1c82-0519-4751-0b6d-f264c484e4cb.htm b/SpriteLibrary/Doc/Help/html/ae6c1c82-0519-4751-0b6d-f264c484e4cb.htm index efee2f5..5feeded 100644 --- a/SpriteLibrary/Doc/Help/html/ae6c1c82-0519-4751-0b6d-f264c484e4cb.htm +++ b/SpriteLibrary/Doc/Help/html/ae6c1c82-0519-4751-0b6d-f264c484e4cb.htm @@ -1,7 +1,11 @@ -SpriteController.DuplicateSprite Method
SpriteControllerDuplicateSprite Method
Overload List
+SpriteController.DuplicateSprite Method

SpriteControllerDuplicateSprite Method

Overload List
  NameDescription
Public methodCode exampleDuplicateSprite(String)
- Find a sprite that has been named with the specified name. Then duplicate that sprite + Find a sprite that has been named with the specified name. Then duplicate that sprite. If you have + SpriteControllers which are linked (see + + SpriteController.LinkControllersForSpriteTemplateSharing for how to do this), if the Sprite template is + not contained in this controller, it is looked up in any linked controllers.
Public methodDuplicateSprite(Sprite)
Make a duplicate of the specified sprite. The duplicate does not yet have a location.
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/aebe0cd6-1499-7da2-2f96-c86d84189b58.htm b/SpriteLibrary/Doc/Help/html/aebe0cd6-1499-7da2-2f96-c86d84189b58.htm index 0444a39..21c113e 100644 --- a/SpriteLibrary/Doc/Help/html/aebe0cd6-1499-7da2-2f96-c86d84189b58.htm +++ b/SpriteLibrary/Doc/Help/html/aebe0cd6-1499-7da2-2f96-c86d84189b58.htm @@ -1,4 +1,4 @@ -Sprite.SetSpriteDirection Method
SpriteSetSpriteDirection Method
+Sprite.SetSpriteDirection Method

SpriteSetSpriteDirection Method

Set the sprite direction using a vector. The vector may contain a speed as well as the movement delta (amount of x shift, and amount of y shift.) If so, this function may also affect the movement speed diff --git a/SpriteLibrary/Doc/Help/html/af7fceb3-a35e-b016-3955-696b3a3c7a7e.htm b/SpriteLibrary/Doc/Help/html/af7fceb3-a35e-b016-3955-696b3a3c7a7e.htm index 6815c26..42ea51f 100644 --- a/SpriteLibrary/Doc/Help/html/af7fceb3-a35e-b016-3955-696b3a3c7a7e.htm +++ b/SpriteLibrary/Doc/Help/html/af7fceb3-a35e-b016-3955-696b3a3c7a7e.htm @@ -1,4 +1,4 @@ -SpriteController.RegisterKeyDownFunction Method
SpriteControllerRegisterKeyDownFunction Method
+SpriteController.RegisterKeyDownFunction Method

SpriteControllerRegisterKeyDownFunction Method

If you want to have a KeyDown function that is triggered by a keypress function, add the event here. The event should have the parameters (object sender, KeyEventArgs e)

diff --git a/SpriteLibrary/Doc/Help/html/af9edc83-1d26-349b-8105-6064a540e2c7.htm b/SpriteLibrary/Doc/Help/html/af9edc83-1d26-349b-8105-6064a540e2c7.htm index 3e09b35..d2d85d6 100644 --- a/SpriteLibrary/Doc/Help/html/af9edc83-1d26-349b-8105-6064a540e2c7.htm +++ b/SpriteLibrary/Doc/Help/html/af9edc83-1d26-349b-8105-6064a540e2c7.htm @@ -1,4 +1,4 @@ -Sprite.GetVisibleSize Property
SpriteGetVisibleSize Property
+Sprite.GetVisibleSize Property

SpriteGetVisibleSize Property

Return the relative size of the Sprite in relation to the PictureBox. If the box has been stretched or shrunk, that affects the visible size of the sprite.

diff --git a/SpriteLibrary/Doc/Help/html/b0575fa3-d1f2-f3d5-aeff-bdb7b04e46b6.htm b/SpriteLibrary/Doc/Help/html/b0575fa3-d1f2-f3d5-aeff-bdb7b04e46b6.htm new file mode 100644 index 0000000..4685209 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/b0575fa3-d1f2-f3d5-aeff-bdb7b04e46b6.htm @@ -0,0 +1,15 @@ +AnimationType Enumeration

AnimationType Enumeration

+ The SpriteInfo only recognizes a few ways to create a sprite. Here are the different ways. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public enum AnimationType
Members
+   + Member nameValueDescription
SpriteDefinition0 + A Sprite definition knows an image, an X and Y, a size, and a few other items. +
Rotation1 + A rotated sprite is based off a pre-existing animation, but it is rotated by some degrees. +
Mirror2 + A mirrored sprite is based off a pre-existing animation, but is mirrored vertically or horizontally. +
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/b1290487-edeb-d980-43a0-03b3c4a82fdc.htm b/SpriteLibrary/Doc/Help/html/b1290487-edeb-d980-43a0-03b3c4a82fdc.htm new file mode 100644 index 0000000..79a4b66 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/b1290487-edeb-d980-43a0-03b3c4a82fdc.htm @@ -0,0 +1,9 @@ +SpriteDatabase.SpriteInfoList Field

SpriteDatabaseSpriteInfoList Field

+ This is the list of SpriteInfo records that the database knows about. You can create your own list, + modify this list, or whatever. The database has some reasonable functions for loading and saving a + sprite database. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public List<SpriteInfo> SpriteInfoList

Field Value

Type: ListSpriteInfo
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/b29c2176-174b-e620-0e33-9a22730ad05f.htm b/SpriteLibrary/Doc/Help/html/b29c2176-174b-e620-0e33-9a22730ad05f.htm index 9d4991e..eb8775d 100644 --- a/SpriteLibrary/Doc/Help/html/b29c2176-174b-e620-0e33-9a22730ad05f.htm +++ b/SpriteLibrary/Doc/Help/html/b29c2176-174b-e620-0e33-9a22730ad05f.htm @@ -1,4 +1,4 @@ -Sprite.GetImage Method
SpriteGetImage Method
Overload List
+Sprite.GetImage Method

SpriteGetImage Method

Overload List
  NameDescription
Public methodGetImage
return the current image frame. Warning: If you write to this image, it will diff --git a/SpriteLibrary/Doc/Help/html/b2b20aab-3fc0-1b0f-8fda-213dbc180690.htm b/SpriteLibrary/Doc/Help/html/b2b20aab-3fc0-1b0f-8fda-213dbc180690.htm new file mode 100644 index 0000000..097be46 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/b2b20aab-3fc0-1b0f-8fda-213dbc180690.htm @@ -0,0 +1,79 @@ +SpriteDatabase Class

SpriteDatabase Class

+ Store Sprite information in a database. You can preload your database with sprite definitions, and then + create the sprites as needed. This can drastically reduce the initial load time of a game or something. + Though, what it really does is spread out the load time. It still takes the same amount of time to + load all the sprites, it just loads them on-demand. Using a dictionary often hides any load time issues. +
Inheritance Hierarchy
SystemObject
  SpriteLibrarySpriteDatabase

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public class SpriteDatabase

The SpriteDatabase type exposes the following members.

Constructors
+   + NameDescription
Public methodSpriteDatabase
+ The sprite database instantiation function. The filename can either be a file on the computer or it + can be the string name of a resource (the filename without the extension. If your file is accessed + by Properties.Resources.MySprites, the "filename" would be "MySprites") +
Top
Methods
+   + NameDescription
Public methodStatic memberCloneByXMLSerializingT
+ This is an inefficient, but simple function to clone a class. It works by serializing an item + to a string, and then deserializing it into a class. The end result is that any value which is + publically visible is duplicated, but it is a completely separate class from the original. +
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetImageFromName
+ This function returns an image from the Properties.Resources. If we tell it to UseSmartImages, then + it caches the image in memory. This makes it a little faster to return. If you have a lot of sprites + to load, using this system can speed up things a fair bit. But, try to remember not to change the + image that this returns unless you duplicate it first. Otherwise you will end up changing the image + for all the other times you reference it. This is usualy a bad thing. +
Public methodGetImageNames
+ Return a list of the image names in the Properties.Resources +
Public methodGetType (Inherited from Object.)
Public methodStatic memberLoadObjectFromXmlFileT
+ Load in an XML serialized item from the specified ResourceManager. You will usually make one of these by + creating an object and using WriteToXmlFileT(String, T) SpriteDatabase.WriteToXmlFile to + save it to a file on your desktop. Then you can drag and drop that file into your project and then use this + LoadObjectFromXmlFile function. +
Protected methodMemberwiseClone (Inherited from Object.)
Public methodCode exampleOpenEditWindow
+ Open a Sprite Edit Window. This window does not let you draw a sprite. What it does is to help + you define your sprites and makes the process of using Sprites in your program a lot easier. +
Public methodStatic memberReadFromXmlFileT
+ Reads an object instance from an XML file. +

Object type must have a parameterless constructor.

Public methodStatic memberReadFromXmlStringT
+ This is a generic function which the SpriteDatabase uses. It does XML Deserialization of most anything, + and generates an XML String. XML Serialization will take any public value of a public class and + make an XML entry for it. It is a very convienent way to save and retrieve data. You can "Serialize" the value + with the WriteToXMLString function. +
Public methodSave
+ Tell the database to save the sprite definitions. Use this while you are creating your game. + When you are done, you will usually want to take your sprite definition file and add it to the + resources of your game. The resources cannot be saved to, so you cannot continue to add new sprites + once you are loading and saving them from a resources file. But, the resources file is included with + the program when you build it. +
Public methodSetIcon
+ Change the Icon for the SpriteEntryForm +
Public methodSetSnapGridSize
+ 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 + specified in the snap-grid. It takes a "Size" specified by System.Drawing.Size. +
Public methodSpriteFromName
+ 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. +
Public methodSpriteNames
+ Return a list of the SpriteNames that this Database knows how to create. +
Public methodToString (Inherited from Object.)
Public methodStatic memberWriteToXmlFileT
+ Writes the given object instance to an XML file. + Only Public properties and variables will be written to the file. These can be any type though, even other classes. + If there are public properties/variables that you do not want written to the file, decorate them with the [XmlIgnore] attribute. + Object type must have a parameterless constructor. +
Public methodStatic memberWriteToXMLStringT
+ This is a generic function which the SpriteDatabase uses. It does XML Serialization of most anything, + and generates an XML String. XML Serialization will take any public value of a public class and + make an XML entry for it. It is a very convienent way to save data. You can "Deserialize" the value + with the ReadFromXMLString function. +
Top
Fields
+   + NameDescription
Public fieldSpriteInfoList
+ This is the list of SpriteInfo records that the database knows about. You can create your own list, + modify this list, or whatever. The database has some reasonable functions for loading and saving a + sprite database. +
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/b3e934e2-1ddf-35e3-0995-3b555539f33f.htm b/SpriteLibrary/Doc/Help/html/b3e934e2-1ddf-35e3-0995-3b555539f33f.htm index b57014d..ff57c53 100644 --- a/SpriteLibrary/Doc/Help/html/b3e934e2-1ddf-35e3-0995-3b555539f33f.htm +++ b/SpriteLibrary/Doc/Help/html/b3e934e2-1ddf-35e3-0995-3b555539f33f.htm @@ -1,4 +1,4 @@ -SpriteController.RegisterKeyUpFunction Method
SpriteControllerRegisterKeyUpFunction Method
+SpriteController.RegisterKeyUpFunction Method

SpriteControllerRegisterKeyUpFunction Method

If you want to have a KeyUp function that is triggered by a keypress function, add the event here. The event should have the parameters (object sender, KeyEventArgs e)

diff --git a/SpriteLibrary/Doc/Help/html/b520d8f5-2ec3-566c-c220-b6be46fd93d8.htm b/SpriteLibrary/Doc/Help/html/b520d8f5-2ec3-566c-c220-b6be46fd93d8.htm new file mode 100644 index 0000000..6942494 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/b520d8f5-2ec3-566c-c220-b6be46fd93d8.htm @@ -0,0 +1,8 @@ +AnimationInfo.StartPoint Field

AnimationInfoStartPoint Field

+ If the sprite is based off of an image, this value is the starting point of the top-left corner + of the sprite on the image. You will also want to include a Width and Height. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public Point StartPoint

Field Value

Type: Point
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/b5c75d58-f132-f3ff-217f-e69b252db748.htm b/SpriteLibrary/Doc/Help/html/b5c75d58-f132-f3ff-217f-e69b252db748.htm index 23faae0..6ff6877 100644 --- a/SpriteLibrary/Doc/Help/html/b5c75d58-f132-f3ff-217f-e69b252db748.htm +++ b/SpriteLibrary/Doc/Help/html/b5c75d58-f132-f3ff-217f-e69b252db748.htm @@ -1,4 +1,4 @@ -SpriteController.SpriteForwards Method
SpriteControllerSpriteForwards Method
+SpriteController.SpriteForwards Method

SpriteControllerSpriteForwards Method

Change the display order of the specified sprite so it is more likely to go in front of other sprites

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/b78d4878-d301-191f-9c53-4f41d3e937e6.htm b/SpriteLibrary/Doc/Help/html/b78d4878-d301-191f-9c53-4f41d3e937e6.htm index 3366f63..0583f24 100644 --- a/SpriteLibrary/Doc/Help/html/b78d4878-d301-191f-9c53-4f41d3e937e6.htm +++ b/SpriteLibrary/Doc/Help/html/b78d4878-d301-191f-9c53-4f41d3e937e6.htm @@ -1,4 +1,4 @@ -SpriteCollisionMethod Enumeration
SpriteCollisionMethod Enumeration
+SpriteCollisionMethod Enumeration

SpriteCollisionMethod Enumeration

The various types of collisions a sprite can have. Currently only rectangle works. The other types were added when I thought the different types of collision types were needed. Someday we may add these if we find they are useful, or if someone else decides they want to help program the SpriteLibrary. These values are primarily used in Sprite Events diff --git a/SpriteLibrary/Doc/Help/html/b9f05ef6-f80c-5676-1eca-d73833dca177.htm b/SpriteLibrary/Doc/Help/html/b9f05ef6-f80c-5676-1eca-d73833dca177.htm index 4fbc213..bc0b4f0 100644 --- a/SpriteLibrary/Doc/Help/html/b9f05ef6-f80c-5676-1eca-d73833dca177.htm +++ b/SpriteLibrary/Doc/Help/html/b9f05ef6-f80c-5676-1eca-d73833dca177.htm @@ -1,4 +1,4 @@ -SpriteController.RandomNumberGenerator Field
SpriteControllerRandomNumberGenerator Field
+SpriteController.RandomNumberGenerator Field

SpriteControllerRandomNumberGenerator Field

Since everything needs a random number generator, we make one that should be accessible throughout your program.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/ba26c365-f8d2-0a86-b3b6-1cfab946b3da.htm b/SpriteLibrary/Doc/Help/html/ba26c365-f8d2-0a86-b3b6-1cfab946b3da.htm index 652e5a9..a675e8d 100644 --- a/SpriteLibrary/Doc/Help/html/ba26c365-f8d2-0a86-b3b6-1cfab946b3da.htm +++ b/SpriteLibrary/Doc/Help/html/ba26c365-f8d2-0a86-b3b6-1cfab946b3da.htm @@ -1,4 +1,4 @@ -Sprite.RecalcPictureBoxLocation Method
SpriteRecalcPictureBoxLocation Method
+Sprite.RecalcPictureBoxLocation Method

SpriteRecalcPictureBoxLocation Method

Done when the box resizes. We need to recompute the picturebox location. The resize function automatically calls this. You should never need to do so.

diff --git a/SpriteLibrary/Doc/Help/html/ba843001-e657-41e8-7c66-c2473781ed40.htm b/SpriteLibrary/Doc/Help/html/ba843001-e657-41e8-7c66-c2473781ed40.htm index c8801f7..b99bf85 100644 --- a/SpriteLibrary/Doc/Help/html/ba843001-e657-41e8-7c66-c2473781ed40.htm +++ b/SpriteLibrary/Doc/Help/html/ba843001-e657-41e8-7c66-c2473781ed40.htm @@ -1,4 +1,4 @@ -SpriteController.DoTick Event
SpriteControllerDoTick Event
+SpriteController.DoTick Event

SpriteControllerDoTick Event

The function called by the timer every 10 millisecods This is usually where you will do the majority of the work. You can define this manually, or when you instantiate the SpriteController

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/bacd1b59-34a9-eb30-29b3-4fdc704a7b60.htm b/SpriteLibrary/Doc/Help/html/bacd1b59-34a9-eb30-29b3-4fdc704a7b60.htm index 59d93fc..46c3f55 100644 --- a/SpriteLibrary/Doc/Help/html/bacd1b59-34a9-eb30-29b3-4fdc704a7b60.htm +++ b/SpriteLibrary/Doc/Help/html/bacd1b59-34a9-eb30-29b3-4fdc704a7b60.htm @@ -1,4 +1,4 @@ -Sprite Constructor (Sprite, Boolean)
Sprite Constructor (Sprite, Boolean)
+Sprite Constructor (Sprite, Boolean)

Sprite Constructor (Sprite, Boolean)

Create a Sprite that is based off of the specified sprite. Clone the Sprite except that we set SpriteName = "" and OrigSpriteName = the OldSprite.SpriteName. That way we know that the sprite was duplicated from the original, and we can still distinguish the original from diff --git a/SpriteLibrary/Doc/Help/html/bbc5d326-0dc1-c076-d4dc-796ed4738814.htm b/SpriteLibrary/Doc/Help/html/bbc5d326-0dc1-c076-d4dc-796ed4738814.htm new file mode 100644 index 0000000..cfb942b --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/bbc5d326-0dc1-c076-d4dc-796ed4738814.htm @@ -0,0 +1,7 @@ +SpriteDatabase.GetImageNames Method

SpriteDatabaseGetImageNames Method

+ Return a list of the image names in the Properties.Resources +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public List<string> GetImageNames()

Return Value

Type: ListString
A list of image names in the Properties.Resources
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/bc474319-2c51-e93f-07e2-9728d609c563.htm b/SpriteLibrary/Doc/Help/html/bc474319-2c51-e93f-07e2-9728d609c563.htm index 47b1974..746be5e 100644 --- a/SpriteLibrary/Doc/Help/html/bc474319-2c51-e93f-07e2-9728d609c563.htm +++ b/SpriteLibrary/Doc/Help/html/bc474319-2c51-e93f-07e2-9728d609c563.htm @@ -1,4 +1,4 @@ -Sprite.Destroy Method
SpriteDestroy Method
+Sprite.Destroy Method

SpriteDestroy Method

Tell the sprite to kill itself. It will erase itself and then be removed from the spritelist. Then it will be gone forever.

diff --git a/SpriteLibrary/Doc/Help/html/bcb29da5-8d8d-fa11-90ea-3a0cc73a0df0.htm b/SpriteLibrary/Doc/Help/html/bcb29da5-8d8d-fa11-90ea-3a0cc73a0df0.htm index 83027a2..565f7c7 100644 --- a/SpriteLibrary/Doc/Help/html/bcb29da5-8d8d-fa11-90ea-3a0cc73a0df0.htm +++ b/SpriteLibrary/Doc/Help/html/bcb29da5-8d8d-fa11-90ea-3a0cc73a0df0.htm @@ -1,4 +1,4 @@ -SpriteController.KeysPressed Method
SpriteControllerKeysPressed Method
+SpriteController.KeysPressed Method

SpriteControllerKeysPressed Method

Return a list of all the keys that are currently pressed. There is a small glitch with the key-pressed system. If the form loses focus, and someone releases a key, the key-up is never triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have diff --git a/SpriteLibrary/Doc/Help/html/bcdb40c8-478a-043c-5db0-393001600029.htm b/SpriteLibrary/Doc/Help/html/bcdb40c8-478a-043c-5db0-393001600029.htm index 5127d0a..fa087bb 100644 --- a/SpriteLibrary/Doc/Help/html/bcdb40c8-478a-043c-5db0-393001600029.htm +++ b/SpriteLibrary/Doc/Help/html/bcdb40c8-478a-043c-5db0-393001600029.htm @@ -1,4 +1,4 @@ -Sprite Properties
Sprite Properties

The Sprite type exposes the following members.

Properties
+Sprite Properties

Sprite Properties

The Sprite type exposes the following members.

Properties
  NameDescription
Public propertyAnimationCount
The number of animations this sprite has diff --git a/SpriteLibrary/Doc/Help/html/bdcfa83c-c4a7-49f3-4d49-2f865014aee6.htm b/SpriteLibrary/Doc/Help/html/bdcfa83c-c4a7-49f3-4d49-2f865014aee6.htm index e874733..58ca2ce 100644 --- a/SpriteLibrary/Doc/Help/html/bdcfa83c-c4a7-49f3-4d49-2f865014aee6.htm +++ b/SpriteLibrary/Doc/Help/html/bdcfa83c-c4a7-49f3-4d49-2f865014aee6.htm @@ -1,4 +1,4 @@ -Sprite Events
Sprite Events

The Sprite type exposes the following members.

Events
+Sprite Events

Sprite Events

The Sprite type exposes the following members.

Events
  NameDescription
Public eventCheckBeforeMove
This event fires off before a sprite is drawn. Use it if you have constraints. You diff --git a/SpriteLibrary/Doc/Help/html/bddcb7c5-ab50-1911-171b-d4d6109ab889.htm b/SpriteLibrary/Doc/Help/html/bddcb7c5-ab50-1911-171b-d4d6109ab889.htm new file mode 100644 index 0000000..afbd165 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/bddcb7c5-ab50-1911-171b-d4d6109ab889.htm @@ -0,0 +1,8 @@ +AnimationInfo.AnimSpeed Field

AnimationInfoAnimSpeed Field

+ The delay in milliseconds in-between frames of the sprite. This number is not exact, but is pretty + close to what happens. Never use a number less than 20. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public int AnimSpeed

Field Value

Type: Int32
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/bf10cc41-d9e2-52c5-0415-1083f0f55489.htm b/SpriteLibrary/Doc/Help/html/bf10cc41-d9e2-52c5-0415-1083f0f55489.htm index 98f8883..935f8d7 100644 --- a/SpriteLibrary/Doc/Help/html/bf10cc41-d9e2-52c5-0415-1083f0f55489.htm +++ b/SpriteLibrary/Doc/Help/html/bf10cc41-d9e2-52c5-0415-1083f0f55489.htm @@ -1,4 +1,4 @@ -SpriteController.IsKeyPressed Method
SpriteControllerIsKeyPressed Method
+SpriteController.IsKeyPressed Method

SpriteControllerIsKeyPressed Method

Check to see if any keys are pressed. There is a small glitch with the key-pressed system. If the form loses focus, and someone releases a key, the key-up is never triggered. It is a good thing to ResetKeypressState() occasionally if you think your form may have diff --git a/SpriteLibrary/Doc/Help/html/bf55ab7f-78c8-3879-b8f8-464dc203791e.htm b/SpriteLibrary/Doc/Help/html/bf55ab7f-78c8-3879-b8f8-464dc203791e.htm index b54c4c7..21d8269 100644 --- a/SpriteLibrary/Doc/Help/html/bf55ab7f-78c8-3879-b8f8-464dc203791e.htm +++ b/SpriteLibrary/Doc/Help/html/bf55ab7f-78c8-3879-b8f8-464dc203791e.htm @@ -1,4 +1,4 @@ -SpriteController.ChangeTickInterval Method
SpriteControllerChangeTickInterval Method
+SpriteController.ChangeTickInterval Method

SpriteControllerChangeTickInterval Method

Change the Tick Interval. By default, the spritecontroller does a tick every 10ms, which is very fast. Some people may prefer it to happen less regularly. Must be > 5, and less than 1001

diff --git a/SpriteLibrary/Doc/Help/html/c0d47063-6820-3464-ed46-94ffd2329683.htm b/SpriteLibrary/Doc/Help/html/c0d47063-6820-3464-ed46-94ffd2329683.htm index a9baaa4..9f25132 100644 --- a/SpriteLibrary/Doc/Help/html/c0d47063-6820-3464-ed46-94ffd2329683.htm +++ b/SpriteLibrary/Doc/Help/html/c0d47063-6820-3464-ed46-94ffd2329683.htm @@ -1,4 +1,4 @@ -Sprite.SendToBack Method
SpriteSendToBack Method
+Sprite.SendToBack Method

SpriteSendToBack Method

Make the sprite go behind all other sprites

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/c2860c42-fc4c-78f8-7d32-195e74262434.htm b/SpriteLibrary/Doc/Help/html/c2860c42-fc4c-78f8-7d32-195e74262434.htm index 803cc06..5a63c80 100644 --- a/SpriteLibrary/Doc/Help/html/c2860c42-fc4c-78f8-7d32-195e74262434.htm +++ b/SpriteLibrary/Doc/Help/html/c2860c42-fc4c-78f8-7d32-195e74262434.htm @@ -1,4 +1,4 @@ -SpriteController.SpritesInImageRectangle Method
SpriteControllerSpritesInImageRectangle Method
+SpriteController.SpritesInImageRectangle Method

SpriteControllerSpritesInImageRectangle Method

Return a list of all the sprites that intersect with the given background-image-based rectangle

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/c28d2cee-4d17-3330-fb5d-21cd2621d597.htm b/SpriteLibrary/Doc/Help/html/c28d2cee-4d17-3330-fb5d-21cd2621d597.htm new file mode 100644 index 0000000..0e21c41 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/c28d2cee-4d17-3330-fb5d-21cd2621d597.htm @@ -0,0 +1,11 @@ +SpriteController.UnlinkControllersForSpriteTemplateSharing Method

SpriteControllerUnlinkControllersForSpriteTemplateSharing Method

+ Unlink a previously linked controller. If you have linked a controller from a different window and are trying to + kill off the controller in a window you are closing, you want to unlink them as the window closes. We take a brief + moment to copy over any templates that have not yet been copied over. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public void UnlinkControllersForSpriteTemplateSharing(
+	SpriteController ControllerToUnlink
+)

Parameters

ControllerToUnlink
Type: SpriteLibrarySpriteController
The
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/c2f3867b-b906-a526-c836-718da1546a78.htm b/SpriteLibrary/Doc/Help/html/c2f3867b-b906-a526-c836-718da1546a78.htm index 7904ee6..6f0a912 100644 --- a/SpriteLibrary/Doc/Help/html/c2f3867b-b906-a526-c836-718da1546a78.htm +++ b/SpriteLibrary/Doc/Help/html/c2f3867b-b906-a526-c836-718da1546a78.htm @@ -1,4 +1,4 @@ -Sprite.SpriteCanMoveOnImage Method
SpriteSpriteCanMoveOnImage Method
+Sprite.SpriteCanMoveOnImage Method

SpriteSpriteCanMoveOnImage Method

Return true if the sprite can go to this point and still be on the drawing-board.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/c39b03eb-911a-b0dc-fd7b-276ee464f6c7.htm b/SpriteLibrary/Doc/Help/html/c39b03eb-911a-b0dc-fd7b-276ee464f6c7.htm index 235e041..6a1139c 100644 --- a/SpriteLibrary/Doc/Help/html/c39b03eb-911a-b0dc-fd7b-276ee464f6c7.htm +++ b/SpriteLibrary/Doc/Help/html/c39b03eb-911a-b0dc-fd7b-276ee464f6c7.htm @@ -1,4 +1,4 @@ -Sprite.MirrorHorizontally Field
SpriteMirrorHorizontally Field
+Sprite.MirrorHorizontally Field

SpriteMirrorHorizontally Field

Flip the image when it gets printed. If your sprite is walking left, flipping it will make it look like it is going right. This works great for many things. But, if your program is gobbling memory or CPU, you may need to diff --git a/SpriteLibrary/Doc/Help/html/c57680f5-fd0e-a4a6-05a0-3a42de94edb8.htm b/SpriteLibrary/Doc/Help/html/c57680f5-fd0e-a4a6-05a0-3a42de94edb8.htm index 781dc1a..ca0eca7 100644 --- a/SpriteLibrary/Doc/Help/html/c57680f5-fd0e-a4a6-05a0-3a42de94edb8.htm +++ b/SpriteLibrary/Doc/Help/html/c57680f5-fd0e-a4a6-05a0-3a42de94edb8.htm @@ -1,4 +1,4 @@ -SpriteController.Invalidate Method (Rectangle, Boolean)
SpriteControllerInvalidate Method (Rectangle, Boolean)
+SpriteController.Invalidate Method (Rectangle, Boolean)

SpriteControllerInvalidate Method (Rectangle, Boolean)

Invalidate a rectangle that is specified in image coordinates

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/c59aa31b-d1bf-4e1a-9db9-0e5d83f713df.htm b/SpriteLibrary/Doc/Help/html/c59aa31b-d1bf-4e1a-9db9-0e5d83f713df.htm new file mode 100644 index 0000000..f7ce0ce --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/c59aa31b-d1bf-4e1a-9db9-0e5d83f713df.htm @@ -0,0 +1,8 @@ +AnimationInfo.RotationDegrees Field

AnimationInfoRotationDegrees Field

+ If the sprite is a rotated copy of a pre-existing sprite, this value tells how many degrees to + rotate the sprite. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public int RotationDegrees

Field Value

Type: Int32
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/c6c542de-2b1f-1086-b5b2-56b7e9a9525f.htm b/SpriteLibrary/Doc/Help/html/c6c542de-2b1f-1086-b5b2-56b7e9a9525f.htm index 90fe782..55614f7 100644 --- a/SpriteLibrary/Doc/Help/html/c6c542de-2b1f-1086-b5b2-56b7e9a9525f.htm +++ b/SpriteLibrary/Doc/Help/html/c6c542de-2b1f-1086-b5b2-56b7e9a9525f.htm @@ -1,4 +1,4 @@ -SpriteController Properties
SpriteController Properties

The SpriteController type exposes the following members.

Properties
+SpriteController Properties

SpriteController Properties

The SpriteController type exposes the following members.

Properties
  NameDescription
Public propertyBackgroundImage
The Background Image on which the sprites are drawn. This image ends up having diff --git a/SpriteLibrary/Doc/Help/html/c7991a63-f63c-20d8-0605-fab6e9f13392.htm b/SpriteLibrary/Doc/Help/html/c7991a63-f63c-20d8-0605-fab6e9f13392.htm index 615a71d..5a8ed77 100644 --- a/SpriteLibrary/Doc/Help/html/c7991a63-f63c-20d8-0605-fab6e9f13392.htm +++ b/SpriteLibrary/Doc/Help/html/c7991a63-f63c-20d8-0605-fab6e9f13392.htm @@ -1,4 +1,4 @@ -SpriteController.SpritesBasedOffAnything Method
SpriteControllerSpritesBasedOffAnything Method
+SpriteController.SpritesBasedOffAnything Method

SpriteControllerSpritesBasedOffAnything Method

Return a list of all sprites which are not master sprites (which are duplicates of something)

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/c92034cd-76bc-a0ff-aae9-459711ff56c1.htm b/SpriteLibrary/Doc/Help/html/c92034cd-76bc-a0ff-aae9-459711ff56c1.htm new file mode 100644 index 0000000..48bf540 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/c92034cd-76bc-a0ff-aae9-459711ff56c1.htm @@ -0,0 +1,10 @@ +SpriteController.SetSpriteDatabase Method

SpriteControllerSetSpriteDatabase Method

+ If you do not instantiate your SpriteController with a database, you can add one after instantiation + using this function. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public void SetSpriteDatabase(
+	SpriteDatabase DatabaseToUse
+)

Parameters

DatabaseToUse
Type: SpriteLibrarySpriteDatabase
The sprite database to pull sprite templates from.
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/cb9942df-d69d-8615-5b88-45f903dfeaa3.htm b/SpriteLibrary/Doc/Help/html/cb9942df-d69d-8615-5b88-45f903dfeaa3.htm new file mode 100644 index 0000000..c606f47 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/cb9942df-d69d-8615-5b88-45f903dfeaa3.htm @@ -0,0 +1,11 @@ +AnimationInfo.ImageName Field

AnimationInfoImageName Field

+ This is the image name which contains the sprite. This image should be in the Properties.Resources + of your project. The name you want to give is case-sensitive, and should be the exact name as + listed in Properties.Resources. For example, if your image name were Properties.Resources.Runner + you would want to use the string "Runner" Note the caps are identical, and we have removed the + "Properties.Resources. from the front. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public string ImageName

Field Value

Type: String
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/cd53c0db-02b1-e505-0dce-a7d4d7710d5c.htm b/SpriteLibrary/Doc/Help/html/cd53c0db-02b1-e505-0dce-a7d4d7710d5c.htm index 0dc2eaf..6ebd200 100644 --- a/SpriteLibrary/Doc/Help/html/cd53c0db-02b1-e505-0dce-a7d4d7710d5c.htm +++ b/SpriteLibrary/Doc/Help/html/cd53c0db-02b1-e505-0dce-a7d4d7710d5c.htm @@ -1,4 +1,4 @@ -Sprite.VisibleWidth Property
SpriteVisibleWidth Property
+Sprite.VisibleWidth Property

SpriteVisibleWidth Property

The visible width as seen in the PictureBox. The Sprite may be stretched or shrunk from the actual image size.

diff --git a/SpriteLibrary/Doc/Help/html/d0e10a16-4614-56b2-3e21-ce841f26b3d8.htm b/SpriteLibrary/Doc/Help/html/d0e10a16-4614-56b2-3e21-ce841f26b3d8.htm index 9accf30..b794e73 100644 --- a/SpriteLibrary/Doc/Help/html/d0e10a16-4614-56b2-3e21-ce841f26b3d8.htm +++ b/SpriteLibrary/Doc/Help/html/d0e10a16-4614-56b2-3e21-ce841f26b3d8.htm @@ -1,4 +1,4 @@ -Sprite.GetAnimationSpeed Method
SpriteGetAnimationSpeed Method
+Sprite.GetAnimationSpeed Method

SpriteGetAnimationSpeed Method

Return the animation speed of this particualar animation of the sprite.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/d20e5816-faf3-723d-5f2d-ebff462012f1.htm b/SpriteLibrary/Doc/Help/html/d20e5816-faf3-723d-5f2d-ebff462012f1.htm index 7e752d4..0a3023c 100644 --- a/SpriteLibrary/Doc/Help/html/d20e5816-faf3-723d-5f2d-ebff462012f1.htm +++ b/SpriteLibrary/Doc/Help/html/d20e5816-faf3-723d-5f2d-ebff462012f1.htm @@ -1,4 +1,4 @@ -SpriteController Constructor (PictureBox, EventHandler)
SpriteController Constructor (PictureBox, EventHandler)
+SpriteController Constructor (PictureBox, EventHandler)

SpriteController Constructor (PictureBox, EventHandler)

Create a sprite controller, specifying the picturebox on which the sprites will be displayed.

diff --git a/SpriteLibrary/Doc/Help/html/d329fe20-e750-bf52-a75b-f2383bf1d35a.htm b/SpriteLibrary/Doc/Help/html/d329fe20-e750-bf52-a75b-f2383bf1d35a.htm index c2679fe..1f15cee 100644 --- a/SpriteLibrary/Doc/Help/html/d329fe20-e750-bf52-a75b-f2383bf1d35a.htm +++ b/SpriteLibrary/Doc/Help/html/d329fe20-e750-bf52-a75b-f2383bf1d35a.htm @@ -1,4 +1,4 @@ -SpriteController.Pause Method
SpriteControllerPause Method
+SpriteController.Pause Method

SpriteControllerPause Method

Pause everything. It loops through all the sprites in the SpriteController and sends the specified SpritePauseType to each one. Look at the documentation for SpritePauseType to determine which pause type to use. diff --git a/SpriteLibrary/Doc/Help/html/d416e051-269c-c343-aece-3682b87f3cbc.htm b/SpriteLibrary/Doc/Help/html/d416e051-269c-c343-aece-3682b87f3cbc.htm index a20c341..5645e28 100644 --- a/SpriteLibrary/Doc/Help/html/d416e051-269c-c343-aece-3682b87f3cbc.htm +++ b/SpriteLibrary/Doc/Help/html/d416e051-269c-c343-aece-3682b87f3cbc.htm @@ -1,4 +1,4 @@ -Sprite.SetSpriteDirectionToPoint Method
SpriteSetSpriteDirectionToPoint Method
+Sprite.SetSpriteDirectionToPoint Method

SpriteSetSpriteDirectionToPoint Method

Sets the Sprite Moving towards a given point. You are responsible to do something with it once it gets there. If you want it to automatically stop upon reaching it, use MoveTo instead. Actually, the MoveTo function works a lot better than this one. Because of integer rounding and a few other things, this function is a little diff --git a/SpriteLibrary/Doc/Help/html/d516c33b-29ef-9613-62fb-b6717264a32b.htm b/SpriteLibrary/Doc/Help/html/d516c33b-29ef-9613-62fb-b6717264a32b.htm index aa062b4..63e4277 100644 --- a/SpriteLibrary/Doc/Help/html/d516c33b-29ef-9613-62fb-b6717264a32b.htm +++ b/SpriteLibrary/Doc/Help/html/d516c33b-29ef-9613-62fb-b6717264a32b.htm @@ -1,4 +1,4 @@ -SpriteController.SpriteBackwards Method
SpriteControllerSpriteBackwards Method
+SpriteController.SpriteBackwards Method

SpriteControllerSpriteBackwards Method

Change the display order of the specified sprite so it is more likely to go behind all other sprites.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/d5da80cc-4be3-3550-8bf9-5c460fbf2e15.htm b/SpriteLibrary/Doc/Help/html/d5da80cc-4be3-3550-8bf9-5c460fbf2e15.htm index 8a14b22..effa2e3 100644 --- a/SpriteLibrary/Doc/Help/html/d5da80cc-4be3-3550-8bf9-5c460fbf2e15.htm +++ b/SpriteLibrary/Doc/Help/html/d5da80cc-4be3-3550-8bf9-5c460fbf2e15.htm @@ -1,4 +1,4 @@ -Sprite.GetSpriteDegrees Method
SpriteGetSpriteDegrees Method
+Sprite.GetSpriteDegrees Method

SpriteGetSpriteDegrees Method

Get the direction that the sprite is traveling in in degrees. You may want to use Math.Round on the results. The value returned is usually just a tiny bit off from what you set it with. For example, if you set the sprite movement direction diff --git a/SpriteLibrary/Doc/Help/html/d7215876-6117-ce45-75a4-77dc00c386cd.htm b/SpriteLibrary/Doc/Help/html/d7215876-6117-ce45-75a4-77dc00c386cd.htm index 8339256..2fe0db6 100644 --- a/SpriteLibrary/Doc/Help/html/d7215876-6117-ce45-75a4-77dc00c386cd.htm +++ b/SpriteLibrary/Doc/Help/html/d7215876-6117-ce45-75a4-77dc00c386cd.htm @@ -1,4 +1,4 @@ -Sprite.MouseHoverTransparent Event
SpriteMouseHoverTransparent Event
+Sprite.MouseHoverTransparent Event

SpriteMouseHoverTransparent Event

This event happens when the mouse moves over a non-transparent portion of the sprite, and then pauses. We use the hover timing from the parent form.

diff --git a/SpriteLibrary/Doc/Help/html/d8964a64-57ec-3b0c-94b5-247707cd34e8.htm b/SpriteLibrary/Doc/Help/html/d8964a64-57ec-3b0c-94b5-247707cd34e8.htm index cab31e9..271cf36 100644 --- a/SpriteLibrary/Doc/Help/html/d8964a64-57ec-3b0c-94b5-247707cd34e8.htm +++ b/SpriteLibrary/Doc/Help/html/d8964a64-57ec-3b0c-94b5-247707cd34e8.htm @@ -1,4 +1,4 @@ -Sprite.MouseHover Event
SpriteMouseHover Event
+Sprite.MouseHover Event

SpriteMouseHover Event

This event happens when the mouse moves over the sprite, and then pauses. We use the hover timing from the parent form.

diff --git a/SpriteLibrary/Doc/Help/html/dace8c3a-8d35-4ae7-ddf8-26e59dc161ae.htm b/SpriteLibrary/Doc/Help/html/dace8c3a-8d35-4ae7-ddf8-26e59dc161ae.htm index 99685e8..02f4a84 100644 --- a/SpriteLibrary/Doc/Help/html/dace8c3a-8d35-4ae7-ddf8-26e59dc161ae.htm +++ b/SpriteLibrary/Doc/Help/html/dace8c3a-8d35-4ae7-ddf8-26e59dc161ae.htm @@ -1,4 +1,4 @@ -SpriteController.CountSpritesBasedOff Method
SpriteControllerCountSpritesBasedOff Method
+SpriteController.CountSpritesBasedOff Method

SpriteControllerCountSpritesBasedOff Method

Count the number of sprites that were duplicated from the sprite with the specified name. When you use a SpriteController.DuplicateSprite(string) command, it creates a new sprite that is based off the named sprite. This function will count those duplicated sprites. diff --git a/SpriteLibrary/Doc/Help/html/dad86143-a294-4bfb-c83e-49453b03de01.htm b/SpriteLibrary/Doc/Help/html/dad86143-a294-4bfb-c83e-49453b03de01.htm new file mode 100644 index 0000000..288df8b --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/dad86143-a294-4bfb-c83e-49453b03de01.htm @@ -0,0 +1,16 @@ +SpriteDatabase.LoadObjectFromXmlFile(T) Method

SpriteDatabaseLoadObjectFromXmlFileT Method

+ Load in an XML serialized item from the specified ResourceManager. You will usually make one of these by + creating an object and using WriteToXmlFileT(String, T) SpriteDatabase.WriteToXmlFile to + save it to a file on your desktop. Then you can drag and drop that file into your project and then use this + LoadObjectFromXmlFile function. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public static T LoadObjectFromXmlFile<T>(
+	string XMLResourceToLoad,
+	ResourceManager MyManager
+)
+where T : new()
+

Parameters

XMLResourceToLoad
Type: SystemString
The resource item to load. If you would access it like: properties.resources.myFile, + the correct value to put here would be "myFile"
MyManager
Type: System.ResourcesResourceManager
The resource manager. Usually Properties.Resources.ResourceManager

Type Parameters

T
The type of object to load. It could be something as simple as an int, a class, or a list of classes.

Return Value

Type: T
An object of the value you specified. Or null if it fails.
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/db9f18b5-9947-5dfc-3174-39f4b1341b1c.htm b/SpriteLibrary/Doc/Help/html/db9f18b5-9947-5dfc-3174-39f4b1341b1c.htm index ff02c8a..d927af6 100644 --- a/SpriteLibrary/Doc/Help/html/db9f18b5-9947-5dfc-3174-39f4b1341b1c.htm +++ b/SpriteLibrary/Doc/Help/html/db9f18b5-9947-5dfc-3174-39f4b1341b1c.htm @@ -1,4 +1,4 @@ -Sprite.Pause Method
SpritePause Method
+Sprite.Pause Method

SpritePause Method

Pause the sprite. We can pause just the animation (and still let it move), pause movement (and let it animate), or pause everything.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/dd581cb5-2630-cc79-5fcb-24bfcb817e03.htm b/SpriteLibrary/Doc/Help/html/dd581cb5-2630-cc79-5fcb-24bfcb817e03.htm index dd24499..d1ab4ad 100644 --- a/SpriteLibrary/Doc/Help/html/dd581cb5-2630-cc79-5fcb-24bfcb817e03.htm +++ b/SpriteLibrary/Doc/Help/html/dd581cb5-2630-cc79-5fcb-24bfcb817e03.htm @@ -1,4 +1,4 @@ -SpriteController Constructor (PictureBox)
SpriteController Constructor (PictureBox)
+SpriteController Constructor (PictureBox)

SpriteController Constructor (PictureBox)

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. diff --git a/SpriteLibrary/Doc/Help/html/df0fd1e8-eac8-4f10-7f09-baa6127f3752.htm b/SpriteLibrary/Doc/Help/html/df0fd1e8-eac8-4f10-7f09-baa6127f3752.htm index 7b0a7fd..b91a3b2 100644 --- a/SpriteLibrary/Doc/Help/html/df0fd1e8-eac8-4f10-7f09-baa6127f3752.htm +++ b/SpriteLibrary/Doc/Help/html/df0fd1e8-eac8-4f10-7f09-baa6127f3752.htm @@ -1,4 +1,4 @@ -SpriteController.SoundIsFinished Method
SpriteControllerSoundIsFinished Method
+SpriteController.SoundIsFinished Method

SpriteControllerSoundIsFinished Method

Check to see if the specified sound has finished playing

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/e058b656-39e3-5a55-4437-ee869ecbf35e.htm b/SpriteLibrary/Doc/Help/html/e058b656-39e3-5a55-4437-ee869ecbf35e.htm index 01a21e1..63a9f37 100644 --- a/SpriteLibrary/Doc/Help/html/e058b656-39e3-5a55-4437-ee869ecbf35e.htm +++ b/SpriteLibrary/Doc/Help/html/e058b656-39e3-5a55-4437-ee869ecbf35e.htm @@ -1,4 +1,4 @@ -SpriteEventArgs.NewLocation Field
SpriteEventArgsNewLocation Field
+SpriteEventArgs.NewLocation Field

SpriteEventArgsNewLocation Field

For the CheckBeforeMove event, newlocation will be the location the sprite is trying to move to. You can adjust the point (move it left, right, up, down) and it will affect the placement of the sprite. diff --git a/SpriteLibrary/Doc/Help/html/e05efb85-3736-fa59-2720-a460b898048a.htm b/SpriteLibrary/Doc/Help/html/e05efb85-3736-fa59-2720-a460b898048a.htm index 3ba2e45..017e7a0 100644 --- a/SpriteLibrary/Doc/Help/html/e05efb85-3736-fa59-2720-a460b898048a.htm +++ b/SpriteLibrary/Doc/Help/html/e05efb85-3736-fa59-2720-a460b898048a.htm @@ -1,4 +1,4 @@ -SpriteController.SpritesBasedOff Method
SpriteControllerSpritesBasedOff Method
+SpriteController.SpritesBasedOff Method

SpriteControllerSpritesBasedOff Method

Return all sprites that were based off a particular sprite name. When you use a SpriteController.DuplicateSprite(string) diff --git a/SpriteLibrary/Doc/Help/html/e37ba69c-1cb3-693c-f4b1-8e37b12cbd23.htm b/SpriteLibrary/Doc/Help/html/e37ba69c-1cb3-693c-f4b1-8e37b12cbd23.htm index 301dd0e..0624e37 100644 --- a/SpriteLibrary/Doc/Help/html/e37ba69c-1cb3-693c-f4b1-8e37b12cbd23.htm +++ b/SpriteLibrary/Doc/Help/html/e37ba69c-1cb3-693c-f4b1-8e37b12cbd23.htm @@ -1,4 +1,4 @@ -Sprite.SpriteArrivedAtEndPoint Event
SpriteSpriteArrivedAtEndPoint Event
+Sprite.SpriteArrivedAtEndPoint Event

SpriteSpriteArrivedAtEndPoint Event

An event for when you tell a Sprite to MoveTo(Point) a specific point, or, when you tell the Sprite to MoveTo(list of points). When the Sprite has reached the final destination, the Sprite fires off this event. diff --git a/SpriteLibrary/Doc/Help/html/e38f911d-9d99-eac6-b9ea-bffd3d04678a.htm b/SpriteLibrary/Doc/Help/html/e38f911d-9d99-eac6-b9ea-bffd3d04678a.htm index af87dad..f7692d4 100644 --- a/SpriteLibrary/Doc/Help/html/e38f911d-9d99-eac6-b9ea-bffd3d04678a.htm +++ b/SpriteLibrary/Doc/Help/html/e38f911d-9d99-eac6-b9ea-bffd3d04678a.htm @@ -1,4 +1,4 @@ -Sprite.GetFrameAnimationSpeed Method
SpriteGetFrameAnimationSpeed Method
+Sprite.GetFrameAnimationSpeed Method

SpriteGetFrameAnimationSpeed Method

Get the animation speed of a single frame.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/e45036ef-15fa-9fbc-ef24-5e48c8c8ad8d.htm b/SpriteLibrary/Doc/Help/html/e45036ef-15fa-9fbc-ef24-5e48c8c8ad8d.htm index c92a510..2106464 100644 --- a/SpriteLibrary/Doc/Help/html/e45036ef-15fa-9fbc-ef24-5e48c8c8ad8d.htm +++ b/SpriteLibrary/Doc/Help/html/e45036ef-15fa-9fbc-ef24-5e48c8c8ad8d.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Image)
SpriteAddAnimation Method (Image)
+Sprite.AddAnimation Method (Image)

SpriteAddAnimation Method (Image)

Add another animation to an existing Sprite. After you add animations, you can use ChangeAnimation to select which animation you want the specified sprite to show. For example, you may want to have Animation 0 be a guy walking left, and animation 1 is diff --git a/SpriteLibrary/Doc/Help/html/e57f527d-aee3-7c4e-fc43-7219b7961fe0.htm b/SpriteLibrary/Doc/Help/html/e57f527d-aee3-7c4e-fc43-7219b7961fe0.htm index 21ac7b7..c306cd2 100644 --- a/SpriteLibrary/Doc/Help/html/e57f527d-aee3-7c4e-fc43-7219b7961fe0.htm +++ b/SpriteLibrary/Doc/Help/html/e57f527d-aee3-7c4e-fc43-7219b7961fe0.htm @@ -1,4 +1,4 @@ -Sprite.HideSprite Method
SpriteHideSprite Method
+Sprite.HideSprite Method

SpriteHideSprite Method

Remove the sprite from the field. This does not destroy the sprite. It simply removes it from action. Use UnhideSprite to show it again.

diff --git a/SpriteLibrary/Doc/Help/html/e58bfa3c-4722-7f3a-9610-0a0ce62bfe99.htm b/SpriteLibrary/Doc/Help/html/e58bfa3c-4722-7f3a-9610-0a0ce62bfe99.htm index ec01e26..4d98f98 100644 --- a/SpriteLibrary/Doc/Help/html/e58bfa3c-4722-7f3a-9610-0a0ce62bfe99.htm +++ b/SpriteLibrary/Doc/Help/html/e58bfa3c-4722-7f3a-9610-0a0ce62bfe99.htm @@ -1,4 +1,4 @@ -SpriteController.ReturnPointAdjustedForImage Method
SpriteControllerReturnPointAdjustedForImage Method
+SpriteController.ReturnPointAdjustedForImage Method

SpriteControllerReturnPointAdjustedForImage Method

This takes a point, the location on a picturebox, and returns the corresponding point on the BackgroundImage. Picturebox locations are "sloppy"; the background image locations are very precise. Since this takes a "sloppy" number and returns a precise number, it does some rounding to figure out where the specified location is. diff --git a/SpriteLibrary/Doc/Help/html/e753341a-7040-8dda-8f1e-681e926e9292.htm b/SpriteLibrary/Doc/Help/html/e753341a-7040-8dda-8f1e-681e926e9292.htm index 4fc0e9e..9a12e64 100644 --- a/SpriteLibrary/Doc/Help/html/e753341a-7040-8dda-8f1e-681e926e9292.htm +++ b/SpriteLibrary/Doc/Help/html/e753341a-7040-8dda-8f1e-681e926e9292.htm @@ -1,4 +1,4 @@ -Sprite.SpriteName Property
SpriteSpriteName Property
+Sprite.SpriteName Property

SpriteSpriteName Property

The name of the sprite. Use SetSpriteName(Name) to change this name. Most Named sprites are used to define what a sprite is. Once you have created a named sprite, you usually use DuplicateSprite(String) to clone the sprite for use. The basic rule of thumb is diff --git a/SpriteLibrary/Doc/Help/html/e8336b9d-8af9-22bf-8934-d6a343349847.htm b/SpriteLibrary/Doc/Help/html/e8336b9d-8af9-22bf-8934-d6a343349847.htm new file mode 100644 index 0000000..de38380 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/e8336b9d-8af9-22bf-8934-d6a343349847.htm @@ -0,0 +1,15 @@ +SpriteDatabase.WriteToXmlFile(T) Method

SpriteDatabaseWriteToXmlFileT Method

+ Writes the given object instance to an XML file. + Only Public properties and variables will be written to the file. These can be any type though, even other classes. + If there are public properties/variables that you do not want written to the file, decorate them with the [XmlIgnore] attribute. + Object type must have a parameterless constructor. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public static void WriteToXmlFile<T>(
+	string filePath,
+	T objectToWrite
+)
+where T : new()
+

Parameters

filePath
Type: SystemString
The file path to write the object instance to.
objectToWrite
Type: T
The object instance to write to the file.

Type Parameters

T
The type of object being written to the file.
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/e8491570-1fda-7d8e-48b8-c15f26c41d01.htm b/SpriteLibrary/Doc/Help/html/e8491570-1fda-7d8e-48b8-c15f26c41d01.htm index d139892..cac8a05 100644 --- a/SpriteLibrary/Doc/Help/html/e8491570-1fda-7d8e-48b8-c15f26c41d01.htm +++ b/SpriteLibrary/Doc/Help/html/e8491570-1fda-7d8e-48b8-c15f26c41d01.htm @@ -1,4 +1,4 @@ -SpriteController.SpriteFromName Method
SpriteControllerSpriteFromName Method
+SpriteController.SpriteFromName Method

SpriteControllerSpriteFromName Method

Find a sprite that has a specified name. This returns the actual sprite with that name. You usually want to use DuplicateSprite(Name) to clone the sprite and get one you can destroy. If you destroy a named sprite without duplicating it, you may end up losing diff --git a/SpriteLibrary/Doc/Help/html/e88e79e3-3edc-69e5-1854-23968928c073.htm b/SpriteLibrary/Doc/Help/html/e88e79e3-3edc-69e5-1854-23968928c073.htm index 916532a..bafe66d 100644 --- a/SpriteLibrary/Doc/Help/html/e88e79e3-3edc-69e5-1854-23968928c073.htm +++ b/SpriteLibrary/Doc/Help/html/e88e79e3-3edc-69e5-1854-23968928c073.htm @@ -1,4 +1,4 @@ -Sprite.MovementSpeed Field
SpriteMovementSpeed Field
+Sprite.MovementSpeed Field

SpriteMovementSpeed Field

The movement speed of the sprite. To make a Sprite move, you need to set the MovementSpeed, the direction (using SetSpriteDirection(Vector), diff --git a/SpriteLibrary/Doc/Help/html/e9953cab-b878-4169-fda6-d5addecb267b.htm b/SpriteLibrary/Doc/Help/html/e9953cab-b878-4169-fda6-d5addecb267b.htm index 24bee92..96e1233 100644 --- a/SpriteLibrary/Doc/Help/html/e9953cab-b878-4169-fda6-d5addecb267b.htm +++ b/SpriteLibrary/Doc/Help/html/e9953cab-b878-4169-fda6-d5addecb267b.htm @@ -1,4 +1,4 @@ -Sprite.GetSpriteVector Method
SpriteGetSpriteVector Method
+Sprite.GetSpriteVector Method

SpriteGetSpriteVector Method

Return the current vector that the sprite is moving along

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/ea3329cc-ea39-b02b-025e-fc9ac7e40cd8.htm b/SpriteLibrary/Doc/Help/html/ea3329cc-ea39-b02b-025e-fc9ac7e40cd8.htm new file mode 100644 index 0000000..f713012 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/ea3329cc-ea39-b02b-025e-fc9ac7e40cd8.htm @@ -0,0 +1,34 @@ +SpriteInfo Class

SpriteInfo Class

+ A class which is used by the SpriteDatabase to build + Sprites. You should not need to use this in your programming. It is simplest to use the Load/Save features + of the SpriteDatabase, which will load and save the SpriteInfo. + Again, you do not want to use these within + your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + serializing to be "public", which makes them visible. +
Inheritance Hierarchy
SystemObject
  SpriteLibrarySpriteInfo

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public class SpriteInfo

The SpriteInfo type exposes the following members.

Constructors
+   + NameDescription
Public methodSpriteInfo
Initializes a new instance of the SpriteInfo class
Top
Methods
+   + NameDescription
Public methodClone
+ A generic cloning method that works when everything is public +
Public methodCopyFrom
+ Update the current SpriteInfo class such that it is identical to the class you are copying from. +
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
Fields
+   + NameDescription
Public fieldAnimations
+ This is the list of animations that make up the sprite. Again, you do not want to use these within + your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + serializing to be "public", which makes them visible. +
Public fieldSpriteName
+ The name of the sprite. It should be unique within your application +
Public fieldViewPercent
+ The percentage size when the sprite is normally displayed. For example: If the image you drew your + sprite on has your sprite drawn on a 200x200 grid, but you want your sprite to normally be 100x100, + you would tell it to be 50 (50 percent of the original size). +
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/eac30137-8237-e01a-ee3d-e599d117c03e.htm b/SpriteLibrary/Doc/Help/html/eac30137-8237-e01a-ee3d-e599d117c03e.htm index 4672127..06088ad 100644 --- a/SpriteLibrary/Doc/Help/html/eac30137-8237-e01a-ee3d-e599d117c03e.htm +++ b/SpriteLibrary/Doc/Help/html/eac30137-8237-e01a-ee3d-e599d117c03e.htm @@ -1,4 +1,4 @@ -SpriteController.ReplaceOriginalImage Method (Image)
SpriteControllerReplaceOriginalImage Method (Image)
+SpriteController.ReplaceOriginalImage Method (Image)

SpriteControllerReplaceOriginalImage Method (Image)

Replace the image on which the sprites are drawn. Use this when you move to a new playing field, or want to have a different background
Examples
diff --git a/SpriteLibrary/Doc/Help/html/eae2230d-9914-4c68-149a-45c83da90b44.htm b/SpriteLibrary/Doc/Help/html/eae2230d-9914-4c68-149a-45c83da90b44.htm new file mode 100644 index 0000000..4d99269 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/eae2230d-9914-4c68-149a-45c83da90b44.htm @@ -0,0 +1,7 @@ +SpriteDatabase Fields

SpriteDatabase Fields

The SpriteDatabase type exposes the following members.

Fields
+   + NameDescription
Public fieldSpriteInfoList
+ This is the list of SpriteInfo records that the database knows about. You can create your own list, + modify this list, or whatever. The database has some reasonable functions for loading and saving a + sprite database. +
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/eae9601e-6da0-b304-9836-5e4b1e743f94.htm b/SpriteLibrary/Doc/Help/html/eae9601e-6da0-b304-9836-5e4b1e743f94.htm index 8df525e..42b9a86 100644 --- a/SpriteLibrary/Doc/Help/html/eae9601e-6da0-b304-9836-5e4b1e743f94.htm +++ b/SpriteLibrary/Doc/Help/html/eae9601e-6da0-b304-9836-5e4b1e743f94.htm @@ -1,4 +1,4 @@ -SpriteAdjustmentRatio Structure
SpriteAdjustmentRatio Structure
+SpriteAdjustmentRatio Structure

SpriteAdjustmentRatio Structure

A structure that contains the width and height adjustment ratio. Use this if you need to manually calculate positions between the PictureBox that the sprite is in, and the Background Image itself.

@@ -7,7 +7,7 @@ Assembly:  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public struct SpriteAdjustmentRatio

The SpriteAdjustmentRatio type exposes the following members.

Methods
  - NameDescription
Public methodEquals
Indicates whether this instance and a specified object are equal.
(Inherited from ValueType.)
Public methodGetHashCode
Returns the hash code for this instance.
(Inherited from ValueType.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodToString
Returns the fully qualified type name of this instance.
(Inherited from ValueType.)
Top
Fields
+ NameDescription
Public methodEquals (Inherited from ValueType.)
Public methodGetHashCode (Inherited from ValueType.)
Public methodGetType (Inherited from Object.)
Public methodToString (Inherited from ValueType.)
Top
Fields
  NameDescription
Public fieldheight_ratio
Divide a picturebox ratio by this to get the image location. Multiply an image location by this to get the picturebox location. diff --git a/SpriteLibrary/Doc/Help/html/eb5261e9-43df-01a5-b974-25c2fd13309c.htm b/SpriteLibrary/Doc/Help/html/eb5261e9-43df-01a5-b974-25c2fd13309c.htm index 71afaae..71650fa 100644 --- a/SpriteLibrary/Doc/Help/html/eb5261e9-43df-01a5-b974-25c2fd13309c.htm +++ b/SpriteLibrary/Doc/Help/html/eb5261e9-43df-01a5-b974-25c2fd13309c.htm @@ -1,4 +1,4 @@ -Sprite.AddAnimation Method (Int32, Int32)
SpriteAddAnimation Method (Int32, Int32)
+Sprite.AddAnimation Method (Int32, Int32)

SpriteAddAnimation Method (Int32, Int32)

Duplicate an animation, except rotated by the specified number of degrees. For example, if you have a single animation (0), and you want to rotate it by 90 degrees, it will create animation 1 with that rotation to it. In the long haul, generating a few rotated animations is less memory intensive than diff --git a/SpriteLibrary/Doc/Help/html/ec39133f-39d0-c9ef-e77b-e58ea8c9b2f6.htm b/SpriteLibrary/Doc/Help/html/ec39133f-39d0-c9ef-e77b-e58ea8c9b2f6.htm index 2f7219d..a84aaee 100644 --- a/SpriteLibrary/Doc/Help/html/ec39133f-39d0-c9ef-e77b-e58ea8c9b2f6.htm +++ b/SpriteLibrary/Doc/Help/html/ec39133f-39d0-c9ef-e77b-e58ea8c9b2f6.htm @@ -1,4 +1,4 @@ -Sprite.SetSpriteDirectionRadians Method
SpriteSetSpriteDirectionRadians Method
+Sprite.SetSpriteDirectionRadians Method

SpriteSetSpriteDirectionRadians Method

Set the sprite direction using Radians. Most people do not want to use this. Use SetSpriteDirectionDegrees instead unless you like math and know what you are doing with Radians. diff --git a/SpriteLibrary/Doc/Help/html/ecbab3a8-aa92-2bb6-efc6-cf26d1df424a.htm b/SpriteLibrary/Doc/Help/html/ecbab3a8-aa92-2bb6-efc6-cf26d1df424a.htm index 84221f6..d70db3b 100644 --- a/SpriteLibrary/Doc/Help/html/ecbab3a8-aa92-2bb6-efc6-cf26d1df424a.htm +++ b/SpriteLibrary/Doc/Help/html/ecbab3a8-aa92-2bb6-efc6-cf26d1df424a.htm @@ -1,4 +1,4 @@ -Sprite Constructor (SpriteController, Image, Size)
Sprite Constructor (SpriteController, Image, Size)
+Sprite Constructor (SpriteController, Image, Size)

Sprite Constructor (SpriteController, Image, Size)

Generate a new sprite. It takes the image and the width and height. If there are multiple images of that width and height in the image, an animation is created.

diff --git a/SpriteLibrary/Doc/Help/html/ed73e5df-d940-2512-1be5-b59f7deadc57.htm b/SpriteLibrary/Doc/Help/html/ed73e5df-d940-2512-1be5-b59f7deadc57.htm new file mode 100644 index 0000000..b7b4989 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/ed73e5df-d940-2512-1be5-b59f7deadc57.htm @@ -0,0 +1,16 @@ +SpriteController.LinkControllersForSpriteTemplateSharing Method

SpriteControllerLinkControllersForSpriteTemplateSharing Method

+ Link up a sprite controller so that it shares sprites with this other sprite controller. If one sprite controller + does not have the named sprite, it will query any linked controllers for that named sprite and copy it to the + controller that did not have it. This means you only need to create a sprite once, and you can use it on multiple + sprite controllers. In many games, you will want to have a sprite appear on different PictureBoxes, and this is + a way to do that. For example, you may want to have a bad-guy running around on the screen, but also have his sprite + appear in a bad-guy summary, along with his stats, on the side. Loading sprites can be slow, so this makes things a bit + faster by only needing to load them once. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public void LinkControllersForSpriteTemplateSharing(
+	SpriteController ControllerToLinkToThis
+)

Parameters

ControllerToLinkToThis
Type: SpriteLibrarySpriteController
The sprite-controller to link. You only need to link it one direction, + the sprite controller will automatically create a bi-directional link
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/eefee0d8-fb59-4546-386a-53f40c545c43.htm b/SpriteLibrary/Doc/Help/html/eefee0d8-fb59-4546-386a-53f40c545c43.htm index f4f42a3..7f1513f 100644 --- a/SpriteLibrary/Doc/Help/html/eefee0d8-fb59-4546-386a-53f40c545c43.htm +++ b/SpriteLibrary/Doc/Help/html/eefee0d8-fb59-4546-386a-53f40c545c43.htm @@ -1,4 +1,4 @@ -Sprite.MoveTo Method (Point)
SpriteMoveTo Method (Point)
+Sprite.MoveTo Method (Point)

SpriteMoveTo Method (Point)

Tell the Sprite to move towards a destination. You need to give the sprite a MovementSpeed and tell the sprite that it can automatically move. But the sprite will begin a journey towards that point at the MovementSpeed you have set. When it gets to the point, the SpriteArrivedAtEndPoint event diff --git a/SpriteLibrary/Doc/Help/html/ef420c55-64ea-5230-e9e5-d8c13f98f74a.htm b/SpriteLibrary/Doc/Help/html/ef420c55-64ea-5230-e9e5-d8c13f98f74a.htm index 0b4ae9f..e9e4fce 100644 --- a/SpriteLibrary/Doc/Help/html/ef420c55-64ea-5230-e9e5-d8c13f98f74a.htm +++ b/SpriteLibrary/Doc/Help/html/ef420c55-64ea-5230-e9e5-d8c13f98f74a.htm @@ -1,4 +1,4 @@ -Sprite.SendToFront Method
SpriteSendToFront Method
+Sprite.SendToFront Method

SpriteSendToFront Method

Make the sprite show up in front of all other sprites.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/ef714268-ae13-47ad-c8a8-1b8bb39cfed9.htm b/SpriteLibrary/Doc/Help/html/ef714268-ae13-47ad-c8a8-1b8bb39cfed9.htm index 1c7841a..bd80da2 100644 --- a/SpriteLibrary/Doc/Help/html/ef714268-ae13-47ad-c8a8-1b8bb39cfed9.htm +++ b/SpriteLibrary/Doc/Help/html/ef714268-ae13-47ad-c8a8-1b8bb39cfed9.htm @@ -1,4 +1,4 @@ -SpriteController.DuplicateSprite Method (Sprite)
SpriteControllerDuplicateSprite Method (Sprite)
+SpriteController.DuplicateSprite Method (Sprite)

SpriteControllerDuplicateSprite Method (Sprite)

Make a duplicate of the specified sprite. The duplicate does not yet have a location.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/ef8d63de-fe6f-104e-f66f-3fffcd4ff0eb.htm b/SpriteLibrary/Doc/Help/html/ef8d63de-fe6f-104e-f66f-3fffcd4ff0eb.htm index 9d90e38..f1d4cc6 100644 --- a/SpriteLibrary/Doc/Help/html/ef8d63de-fe6f-104e-f66f-3fffcd4ff0eb.htm +++ b/SpriteLibrary/Doc/Help/html/ef8d63de-fe6f-104e-f66f-3fffcd4ff0eb.htm @@ -1,4 +1,4 @@ -Sprite.GetSpriteBaseImageCenter Method
SpriteGetSpriteBaseImageCenter Method
+Sprite.GetSpriteBaseImageCenter Method

SpriteGetSpriteBaseImageCenter Method

Return the centerpoint of the sprite, as found on the background image

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/efb3089a-8900-83fe-ce65-f22e686d7477.htm b/SpriteLibrary/Doc/Help/html/efb3089a-8900-83fe-ce65-f22e686d7477.htm index 34d8b85..e413017 100644 --- a/SpriteLibrary/Doc/Help/html/efb3089a-8900-83fe-ce65-f22e686d7477.htm +++ b/SpriteLibrary/Doc/Help/html/efb3089a-8900-83fe-ce65-f22e686d7477.htm @@ -1,4 +1,4 @@ -Sprite.GetSpritePictureboxCenter Method
SpriteGetSpritePictureboxCenter Method
+Sprite.GetSpritePictureboxCenter Method

SpriteGetSpritePictureboxCenter Method

Return the centerpoint of the sprite, as found on the picturebox

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/efc2cb08-5c2b-c758-477e-d5739183a1ba.htm b/SpriteLibrary/Doc/Help/html/efc2cb08-5c2b-c758-477e-d5739183a1ba.htm index 0d98f44..4500dcd 100644 --- a/SpriteLibrary/Doc/Help/html/efc2cb08-5c2b-c758-477e-d5739183a1ba.htm +++ b/SpriteLibrary/Doc/Help/html/efc2cb08-5c2b-c758-477e-d5739183a1ba.htm @@ -1,4 +1,4 @@ -SpritePauseType Enumeration
SpritePauseType Enumeration
+SpritePauseType Enumeration

SpritePauseType Enumeration

The type of pause signals you can give a sprite or the sprite controller

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/f0db6147-f3aa-d599-6371-a89da047bbc5.htm b/SpriteLibrary/Doc/Help/html/f0db6147-f3aa-d599-6371-a89da047bbc5.htm index ff93181..601aec9 100644 --- a/SpriteLibrary/Doc/Help/html/f0db6147-f3aa-d599-6371-a89da047bbc5.htm +++ b/SpriteLibrary/Doc/Help/html/f0db6147-f3aa-d599-6371-a89da047bbc5.htm @@ -1,4 +1,4 @@ -Sprite.AnimationDone Property
SpriteAnimationDone Property
+Sprite.AnimationDone Property

SpriteAnimationDone Property

Report whether or not the animation has been completed. When you tell a Sprite to AnimateOnce, this will report "false" until the animation sequence has been finished. At that time, the value will be "True." The tricky bit is that this is a boolean. If you have not told a sprite to diff --git a/SpriteLibrary/Doc/Help/html/f28be11d-b67a-765c-441a-d7da336ccf77.htm b/SpriteLibrary/Doc/Help/html/f28be11d-b67a-765c-441a-d7da336ccf77.htm index e0e340c..4108672 100644 --- a/SpriteLibrary/Doc/Help/html/f28be11d-b67a-765c-441a-d7da336ccf77.htm +++ b/SpriteLibrary/Doc/Help/html/f28be11d-b67a-765c-441a-d7da336ccf77.htm @@ -1,4 +1,4 @@ -SpriteController.AddSprite Method
SpriteControllerAddSprite Method
+SpriteController.AddSprite Method

SpriteControllerAddSprite Method

Add the specified sprite to the list of sprites we know about. You usually do not need to do this. Sprites add themselves to the controller when you create a new sprite.

diff --git a/SpriteLibrary/Doc/Help/html/f333050a-7353-3dd6-922c-52bb94ce2f0e.htm b/SpriteLibrary/Doc/Help/html/f333050a-7353-3dd6-922c-52bb94ce2f0e.htm new file mode 100644 index 0000000..97459d3 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/f333050a-7353-3dd6-922c-52bb94ce2f0e.htm @@ -0,0 +1,9 @@ +SpriteDatabase.SetIcon Method \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/f374c8cd-af01-f03a-1d31-0b46e0d8745c.htm b/SpriteLibrary/Doc/Help/html/f374c8cd-af01-f03a-1d31-0b46e0d8745c.htm index a935752..e086aa1 100644 --- a/SpriteLibrary/Doc/Help/html/f374c8cd-af01-f03a-1d31-0b46e0d8745c.htm +++ b/SpriteLibrary/Doc/Help/html/f374c8cd-af01-f03a-1d31-0b46e0d8745c.htm @@ -1,4 +1,4 @@ -Sprite.HasBeenDrawn Property
SpriteHasBeenDrawn Property
+Sprite.HasBeenDrawn Property

SpriteHasBeenDrawn Property

Report whether or not this Sprite has been drawn. If it has, then it needs to be erased at some point in time.

diff --git a/SpriteLibrary/Doc/Help/html/f4164c4a-55e1-87f7-95bd-7bae1d99326b.htm b/SpriteLibrary/Doc/Help/html/f4164c4a-55e1-87f7-95bd-7bae1d99326b.htm index 746842c..66eed04 100644 --- a/SpriteLibrary/Doc/Help/html/f4164c4a-55e1-87f7-95bd-7bae1d99326b.htm +++ b/SpriteLibrary/Doc/Help/html/f4164c4a-55e1-87f7-95bd-7bae1d99326b.htm @@ -1,4 +1,4 @@ -Sprite.CheckBeforeMove Event
SpriteCheckBeforeMove Event
+Sprite.CheckBeforeMove Event

SpriteCheckBeforeMove Event

This event fires off before a sprite is drawn. Use it if you have constraints. You can change the location or cancel the move entirely.

diff --git a/SpriteLibrary/Doc/Help/html/f42e1d9a-273c-861f-b7db-6244c9266d2c.htm b/SpriteLibrary/Doc/Help/html/f42e1d9a-273c-861f-b7db-6244c9266d2c.htm index d2eb731..c45e7fb 100644 --- a/SpriteLibrary/Doc/Help/html/f42e1d9a-273c-861f-b7db-6244c9266d2c.htm +++ b/SpriteLibrary/Doc/Help/html/f42e1d9a-273c-861f-b7db-6244c9266d2c.htm @@ -1,4 +1,4 @@ -SpriteEventArgs Class
SpriteEventArgs Class
+SpriteEventArgs Class

SpriteEventArgs Class

An EventArgs that contains information about Sprites. Most of the Sprite events use this SpriteEventArgs.
Inheritance Hierarchy

@@ -9,7 +9,7 @@  
NameDescription
Public methodSpriteEventArgs
Initializes a new instance of the SpriteEventArgs class
Top
Methods
  - NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Fields
+ NameDescription
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodToString (Inherited from Object.)
Top
Fields
  NameDescription
Public fieldCancel
Used primarily in the CheckBeforeMove event. If you set cancel to true, then the move fails. diff --git a/SpriteLibrary/Doc/Help/html/f55ba01a-50d3-248c-5c34-ba32355db223.htm b/SpriteLibrary/Doc/Help/html/f55ba01a-50d3-248c-5c34-ba32355db223.htm index 7652086..e181580 100644 --- a/SpriteLibrary/Doc/Help/html/f55ba01a-50d3-248c-5c34-ba32355db223.htm +++ b/SpriteLibrary/Doc/Help/html/f55ba01a-50d3-248c-5c34-ba32355db223.htm @@ -1,4 +1,4 @@ -Sprite.AnimationIndex Property
SpriteAnimationIndex Property
+Sprite.AnimationIndex Property

SpriteAnimationIndex Property

Get or set the animation nimber. It is best to change the animation using ChangeAnimation. It is safer.

diff --git a/SpriteLibrary/Doc/Help/html/f640b978-f990-84a2-015a-40bf256fc37d.htm b/SpriteLibrary/Doc/Help/html/f640b978-f990-84a2-015a-40bf256fc37d.htm index e94a3af..7ac16de 100644 --- a/SpriteLibrary/Doc/Help/html/f640b978-f990-84a2-015a-40bf256fc37d.htm +++ b/SpriteLibrary/Doc/Help/html/f640b978-f990-84a2-015a-40bf256fc37d.htm @@ -1,4 +1,4 @@ -SpriteController.SpriteComparisonDelegate Field
SpriteControllerSpriteComparisonDelegate Field
+SpriteController.SpriteComparisonDelegate Field

SpriteControllerSpriteComparisonDelegate Field

Allow the sprite sort-method to be overridden.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/f7da08ef-ca8d-fd84-5c60-7bd966be6374.htm b/SpriteLibrary/Doc/Help/html/f7da08ef-ca8d-fd84-5c60-7bd966be6374.htm index 0e789fd..a022221 100644 --- a/SpriteLibrary/Doc/Help/html/f7da08ef-ca8d-fd84-5c60-7bd966be6374.htm +++ b/SpriteLibrary/Doc/Help/html/f7da08ef-ca8d-fd84-5c60-7bd966be6374.htm @@ -1,4 +1,4 @@ -Sprite.AutomaticallyMoves Property
SpriteAutomaticallyMoves Property
+Sprite.AutomaticallyMoves Property

SpriteAutomaticallyMoves Property

Determine if the sprite automatically moves (you need to give it a direction [using one of the SetSpriteDirection functions] and speed [MovementSpeed = X] also)

diff --git a/SpriteLibrary/Doc/Help/html/f823f804-6f46-349e-e5e0-ba9d06aff2f8.htm b/SpriteLibrary/Doc/Help/html/f823f804-6f46-349e-e5e0-ba9d06aff2f8.htm new file mode 100644 index 0000000..6ec6cde --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/f823f804-6f46-349e-e5e0-ba9d06aff2f8.htm @@ -0,0 +1,8 @@ +AnimationInfo.MirrorVertically Field

AnimationInfoMirrorVertically Field

+ If the sprite is a mirrored copy of a pre-existing sprite, this value states whether or not + the sprite is mirrored Vertically. +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public bool MirrorVertically

Field Value

Type: Boolean
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/fa691ac7-58fb-b5fc-0141-68300e3a7a89.htm b/SpriteLibrary/Doc/Help/html/fa691ac7-58fb-b5fc-0141-68300e3a7a89.htm index 3d67ada..57e2c73 100644 --- a/SpriteLibrary/Doc/Help/html/fa691ac7-58fb-b5fc-0141-68300e3a7a89.htm +++ b/SpriteLibrary/Doc/Help/html/fa691ac7-58fb-b5fc-0141-68300e3a7a89.htm @@ -1,4 +1,4 @@ -SpriteEventArgs Constructor
SpriteEventArgs Constructor
Initializes a new instance of the SpriteEventArgs class

+SpriteEventArgs Constructor

SpriteEventArgs Constructor

Initializes a new instance of the SpriteEventArgs class

Namespace:  SpriteLibrary
Assembly: diff --git a/SpriteLibrary/Doc/Help/html/fb5d39a1-88e9-1efd-064c-d209a98e8644.htm b/SpriteLibrary/Doc/Help/html/fb5d39a1-88e9-1efd-064c-d209a98e8644.htm new file mode 100644 index 0000000..0cdd282 --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/fb5d39a1-88e9-1efd-064c-d209a98e8644.htm @@ -0,0 +1,9 @@ +SpriteInfo.ViewPercent Field

SpriteInfoViewPercent Field

+ The percentage size when the sprite is normally displayed. For example: If the image you drew your + sprite on has your sprite drawn on a 200x200 grid, but you want your sprite to normally be 100x100, + you would tell it to be 50 (50 percent of the original size). +

+ Namespace: +  SpriteLibrary
+ Assembly: +  SpriteLibrary (in SpriteLibrary.dll) Version: 1.0.0.5 (1.0.0.5)
Syntax
C#
public int ViewPercent

Field Value

Type: Int32
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/fb676f66-0439-9787-e91c-371c56d66cce.htm b/SpriteLibrary/Doc/Help/html/fb676f66-0439-9787-e91c-371c56d66cce.htm new file mode 100644 index 0000000..5f6e9af --- /dev/null +++ b/SpriteLibrary/Doc/Help/html/fb676f66-0439-9787-e91c-371c56d66cce.htm @@ -0,0 +1,14 @@ +SpriteInfo Fields

SpriteInfo Fields

The SpriteInfo type exposes the following members.

Fields
+   + NameDescription
Public fieldAnimations
+ This is the list of animations that make up the sprite. Again, you do not want to use these within + your program. Let the SpriteDatabase use this. The reason these are visible to the program is because + This code uses "XML Serialization" to load and save. XML Serialization requires the items you are + serializing to be "public", which makes them visible. +
Public fieldSpriteName
+ The name of the sprite. It should be unique within your application +
Public fieldViewPercent
+ The percentage size when the sprite is normally displayed. For example: If the image you drew your + sprite on has your sprite drawn on a 200x200 grid, but you want your sprite to normally be 100x100, + you would tell it to be 50 (50 percent of the original size). +
Top
See Also
\ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/html/fcc3a02a-e676-c16e-32a4-4fc2c5b530d4.htm b/SpriteLibrary/Doc/Help/html/fcc3a02a-e676-c16e-32a4-4fc2c5b530d4.htm index bc6fc6e..875eebf 100644 --- a/SpriteLibrary/Doc/Help/html/fcc3a02a-e676-c16e-32a4-4fc2c5b530d4.htm +++ b/SpriteLibrary/Doc/Help/html/fcc3a02a-e676-c16e-32a4-4fc2c5b530d4.htm @@ -1,4 +1,4 @@ -Sprite.GetImage Method
SpriteGetImage Method
+Sprite.GetImage Method

SpriteGetImage Method

return the current image frame. Warning: If you write to this image, it will affect all sprites using this frame.

diff --git a/SpriteLibrary/Doc/Help/html/fd3f0ed3-4608-2686-e248-8f2a1e6a2bac.htm b/SpriteLibrary/Doc/Help/html/fd3f0ed3-4608-2686-e248-8f2a1e6a2bac.htm index eab4327..474a408 100644 --- a/SpriteLibrary/Doc/Help/html/fd3f0ed3-4608-2686-e248-8f2a1e6a2bac.htm +++ b/SpriteLibrary/Doc/Help/html/fd3f0ed3-4608-2686-e248-8f2a1e6a2bac.htm @@ -1,4 +1,4 @@ -Sprite.ConvertDegreesToRadians Method
SpriteConvertDegreesToRadians Method
+Sprite.ConvertDegreesToRadians Method

SpriteConvertDegreesToRadians Method

Convert a number from degrees to radians.

Namespace: diff --git a/SpriteLibrary/Doc/Help/html/fd95464a-c61d-8ed2-a568-34b825efc047.htm b/SpriteLibrary/Doc/Help/html/fd95464a-c61d-8ed2-a568-34b825efc047.htm index d4843f2..90b76b6 100644 --- a/SpriteLibrary/Doc/Help/html/fd95464a-c61d-8ed2-a568-34b825efc047.htm +++ b/SpriteLibrary/Doc/Help/html/fd95464a-c61d-8ed2-a568-34b825efc047.htm @@ -1,4 +1,4 @@ -SpriteController.Invalidate Method
SpriteControllerInvalidate Method
Overload List
+SpriteController.Invalidate Method

SpriteControllerInvalidate Method

Overload List
  NameDescription
Public methodInvalidate(Boolean)
Invalidate the entire image on which the sprites are drawn diff --git a/SpriteLibrary/Doc/Help/html/ff84ba57-4738-8ff0-2356-095dfe1cc159.htm b/SpriteLibrary/Doc/Help/html/ff84ba57-4738-8ff0-2356-095dfe1cc159.htm index cc1ac71..59cb801 100644 --- a/SpriteLibrary/Doc/Help/html/ff84ba57-4738-8ff0-2356-095dfe1cc159.htm +++ b/SpriteLibrary/Doc/Help/html/ff84ba57-4738-8ff0-2356-095dfe1cc159.htm @@ -1,4 +1,4 @@ -Sprite.AnimateOnce Method
SpriteAnimateOnce Method
+Sprite.AnimateOnce Method

SpriteAnimateOnce Method

Start a new animation, but do it just once. You can use AnimateJustAFewTimes(1) to the same effect. Or, you can use AnimateJustAFewTimes with a different number. The SpriteAnimationComplete event will fire off when the animation completes. The variable, Sprite.AnimationDone will be true once the diff --git a/SpriteLibrary/Doc/Help/scripts/branding-Website.js b/SpriteLibrary/Doc/Help/scripts/branding-Website.js index 06ab980..4dce9ac 100644 --- a/SpriteLibrary/Doc/Help/scripts/branding-Website.js +++ b/SpriteLibrary/Doc/Help/scripts/branding-Website.js @@ -503,7 +503,7 @@ function ParseKeywords(keywords) { var keywordList = []; var checkWord; - var words = keywords.split(/\W+/); + var words = keywords.split(/[\s!@#$%^&*()\-=+\[\]{}\\|<>;:'",.<>/?`~]+/); for(var idx = 0; idx < words.length; idx++) { diff --git a/SpriteLibrary/Doc/Help/scripts/branding.js b/SpriteLibrary/Doc/Help/scripts/branding.js index 3e55541..14b6cc9 100644 --- a/SpriteLibrary/Doc/Help/scripts/branding.js +++ b/SpriteLibrary/Doc/Help/scripts/branding.js @@ -147,8 +147,9 @@ function UpdateLST(language) // with a space to prevent things running together. if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) { - if (devLangSpan.parentNode.nextSibling.nodeValue != null && - !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/)) + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) { devLangSpan.innerHTML = keyValue[1] + " "; } @@ -180,7 +181,8 @@ function UpdateLST(language) if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) { if(devLangSpan.parentNode.nextSibling.nodeValue != null && - !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/)) + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) { devLangSpan.innerHTML = keyValue[1] + " "; } diff --git a/SpriteLibrary/Doc/Help/styles/branding-zh-CN.css b/SpriteLibrary/Doc/Help/styles/branding-zh-CN.css index cf79e7c..87e7090 100644 --- a/SpriteLibrary/Doc/Help/styles/branding-zh-CN.css +++ b/SpriteLibrary/Doc/Help/styles/branding-zh-CN.css @@ -1,18 +1,18 @@ /* Start ZH-CN locale-specific CSS */ body { - font-family: MS YaHei, Simsun, Segoe UI, Verdana, Arial; + font-family: "Microsoft YaHei UI","Microsoft YaHei","SimSun","Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif } pre { - font-family: Consolas, Courier, monospace, 新宋体; + font-family: Consolas, Courier, monospace!important; } span.tt { - font-family: Consolas, Courier, monospace, 新宋体; + font-family: Consolas, Courier, monospace; } span.code { - font-family: Consolas, Courier, monospace, 新宋体; + font-family: Consolas, Courier, monospace; } /* End locale-specific CSS */ diff --git a/SpriteLibrary/Doc/Help/styles/branding.css b/SpriteLibrary/Doc/Help/styles/branding.css index 0ff8cb9..6850320 100644 --- a/SpriteLibrary/Doc/Help/styles/branding.css +++ b/SpriteLibrary/Doc/Help/styles/branding.css @@ -192,12 +192,8 @@ table.titleTable td { border-width: 0px; } td.titleColumn { - font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; - font-size: 2.5em; - font-weight: normal; margin-top: 0px; padding-left: 0px; - color: #000; vertical-align: middle; } td.logoColumn { @@ -446,6 +442,7 @@ div.caption { span.code, span.command { font-family: Consolas, Courier, monospace; color: #000066; + background-color: #f4f4f4; } span.ui { font-weight: bold; @@ -575,3 +572,12 @@ sup.citation a:link a:visited a:active { /* Placeholder for the Help 1 user data style class */ .userDataStyle { } + + + +.missing +{ + color: #dc143c; + font-size: 8.5pt; + font-weight: bold; +} diff --git a/SpriteLibrary/Doc/Help/styles/highlight.css b/SpriteLibrary/Doc/Help/styles/highlight.css index 04eb6d2..2916c31 100644 --- a/SpriteLibrary/Doc/Help/styles/highlight.css +++ b/SpriteLibrary/Doc/Help/styles/highlight.css @@ -7,6 +7,7 @@ .highlight-preprocessor { color: #996666; } .highlight-xml-tag { color: #AA4400 } .highlight-xml-bracket { color: #0000FF } +.highlight-xml-bracket-inline { background: #FFFF66 } .highlight-xml-comment { color: #006633 } .highlight-xml-cdata { color: #AA0088 } .highlight-xml-attribute-name { color: #0000FF } diff --git a/SpriteLibrary/Doc/Help/toc/0ac330a3-1432-ae65-488e-e5948e7871bf.xml b/SpriteLibrary/Doc/Help/toc/0ac330a3-1432-ae65-488e-e5948e7871bf.xml new file mode 100644 index 0000000..1fca3a6 --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/0ac330a3-1432-ae65-488e-e5948e7871bf.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/2788d4d5-88bf-1154-dd17-8d4b99a79118.xml b/SpriteLibrary/Doc/Help/toc/2788d4d5-88bf-1154-dd17-8d4b99a79118.xml index 26e8d91..b90aec8 100644 --- a/SpriteLibrary/Doc/Help/toc/2788d4d5-88bf-1154-dd17-8d4b99a79118.xml +++ b/SpriteLibrary/Doc/Help/toc/2788d4d5-88bf-1154-dd17-8d4b99a79118.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/323c4f03-703d-0898-c73e-40eb5784c05f.xml b/SpriteLibrary/Doc/Help/toc/323c4f03-703d-0898-c73e-40eb5784c05f.xml index f8e2297..1c5827a 100644 --- a/SpriteLibrary/Doc/Help/toc/323c4f03-703d-0898-c73e-40eb5784c05f.xml +++ b/SpriteLibrary/Doc/Help/toc/323c4f03-703d-0898-c73e-40eb5784c05f.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/5418aaf4-85e6-5953-87b9-51daa312bc53.xml b/SpriteLibrary/Doc/Help/toc/5418aaf4-85e6-5953-87b9-51daa312bc53.xml new file mode 100644 index 0000000..5bca532 --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/5418aaf4-85e6-5953-87b9-51daa312bc53.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/5aa6ad83-7060-97ba-0874-99e52486cd6c.xml b/SpriteLibrary/Doc/Help/toc/5aa6ad83-7060-97ba-0874-99e52486cd6c.xml new file mode 100644 index 0000000..c1c7d21 --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/5aa6ad83-7060-97ba-0874-99e52486cd6c.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/6b7227c0-7a6a-6342-3b08-917c7de429cc.xml b/SpriteLibrary/Doc/Help/toc/6b7227c0-7a6a-6342-3b08-917c7de429cc.xml index ff64013..b78c8f2 100644 --- a/SpriteLibrary/Doc/Help/toc/6b7227c0-7a6a-6342-3b08-917c7de429cc.xml +++ b/SpriteLibrary/Doc/Help/toc/6b7227c0-7a6a-6342-3b08-917c7de429cc.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/6fd31706-c5be-87f8-1b62-04ed7f7d9e90.xml b/SpriteLibrary/Doc/Help/toc/6fd31706-c5be-87f8-1b62-04ed7f7d9e90.xml new file mode 100644 index 0000000..ffc797c --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/6fd31706-c5be-87f8-1b62-04ed7f7d9e90.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/a498d1a3-101d-fccb-21fd-29b42a994024.xml b/SpriteLibrary/Doc/Help/toc/a498d1a3-101d-fccb-21fd-29b42a994024.xml new file mode 100644 index 0000000..b450fe7 --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/a498d1a3-101d-fccb-21fd-29b42a994024.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/b2b20aab-3fc0-1b0f-8fda-213dbc180690.xml b/SpriteLibrary/Doc/Help/toc/b2b20aab-3fc0-1b0f-8fda-213dbc180690.xml new file mode 100644 index 0000000..7640459 --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/b2b20aab-3fc0-1b0f-8fda-213dbc180690.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/ea3329cc-ea39-b02b-025e-fc9ac7e40cd8.xml b/SpriteLibrary/Doc/Help/toc/ea3329cc-ea39-b02b-025e-fc9ac7e40cd8.xml new file mode 100644 index 0000000..f843c1f --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/ea3329cc-ea39-b02b-025e-fc9ac7e40cd8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/eae2230d-9914-4c68-149a-45c83da90b44.xml b/SpriteLibrary/Doc/Help/toc/eae2230d-9914-4c68-149a-45c83da90b44.xml new file mode 100644 index 0000000..32b9807 --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/eae2230d-9914-4c68-149a-45c83da90b44.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/SpriteLibrary/Doc/Help/toc/fb676f66-0439-9787-e91c-371c56d66cce.xml b/SpriteLibrary/Doc/Help/toc/fb676f66-0439-9787-e91c-371c56d66cce.xml new file mode 100644 index 0000000..300561c --- /dev/null +++ b/SpriteLibrary/Doc/Help/toc/fb676f66-0439-9787-e91c-371c56d66cce.xml @@ -0,0 +1 @@ + \ No newline at end of file From 64dbc76f47bdc1e891bb7943202f5c62c83f9ac9 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Thu, 21 Sep 2017 13:12:22 -0500 Subject: [PATCH 76/77] Update change log --- SpriteLibrary/Resources/ChangeLog.rtf | 234 +++++++++++++------------- 1 file changed, 113 insertions(+), 121 deletions(-) diff --git a/SpriteLibrary/Resources/ChangeLog.rtf b/SpriteLibrary/Resources/ChangeLog.rtf index 5409f32..0e14b0d 100644 --- a/SpriteLibrary/Resources/ChangeLog.rtf +++ b/SpriteLibrary/Resources/ChangeLog.rtf @@ -1,93 +1,93 @@ -{\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;} +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria Math;} {\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f40\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609020204030204}Consolas;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;} {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} {\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} -{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f41\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f42\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f44\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f45\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f46\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f47\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f48\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f49\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f431\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f432\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} -{\f434\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f435\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f436\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f437\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);} -{\f438\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f439\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f441\fbidi \fmodern\fcharset238\fprq1 Consolas CE;}{\f442\fbidi \fmodern\fcharset204\fprq1 Consolas Cyr;} -{\f444\fbidi \fmodern\fcharset161\fprq1 Consolas Greek;}{\f445\fbidi \fmodern\fcharset162\fprq1 Consolas Tur;}{\f448\fbidi \fmodern\fcharset186\fprq1 Consolas Baltic;}{\f449\fbidi \fmodern\fcharset163\fprq1 Consolas (Vietnamese);} -{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;} -{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);} -{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} -{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f295\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f296\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f298\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f299\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f300\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f301\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f302\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f303\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f635\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f636\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} +{\f638\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f639\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f642\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f643\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} +{\f685\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f686\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f688\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f689\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\f690\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\f691\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\f692\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f693\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);} +{\f695\fbidi \fmodern\fcharset238\fprq1 Consolas CE;}{\f696\fbidi \fmodern\fcharset204\fprq1 Consolas Cyr;}{\f698\fbidi \fmodern\fcharset161\fprq1 Consolas Greek;}{\f699\fbidi \fmodern\fcharset162\fprq1 Consolas Tur;} +{\f702\fbidi \fmodern\fcharset186\fprq1 Consolas Baltic;}{\f703\fbidi \fmodern\fcharset163\fprq1 Consolas (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;} +{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);} +{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} +{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} {\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} {\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red43\green145\blue175;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 -\ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused -Normal Table;}}{\*\rsidtbl \rsid70908\rsid3222827}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator tim.young@lightsys.org}{\creatim\yr2017\mo9\dy20\hr8\min3} -{\revtim\yr2017\mo9\dy20\hr8\min8}{\version2}{\edmins5}{\nofpages4}{\nofwords1130}{\nofchars6445}{\nofcharsws7560}{\vern91}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 +\fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused +Normal Table;}}{\*\rsidtbl \rsid70908\rsid200619\rsid3222827}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator tim.young@lightsys.org} +{\creatim\yr2017\mo9\dy20\hr8\min3}{\revtim\yr2017\mo9\dy21\hr13\min11}{\version3}{\edmins5}{\nofpages4}{\nofwords1147}{\nofchars6542}{\nofcharsws7674}{\vern91}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} \paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 \dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale90\rsidroot3222827 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1 \pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5 \pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 +{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 1.0.6 -\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 \hich\af39\dbch\af31505\loch\f39 * \hich\af39\dbch\af31505\loch\f39 Ad\hich\af39\dbch\af31505\loch\f39 -ded linked sprite-controllers so we can share sprite definitions between controllers (decreases load time considerably) -\par \hich\af39\dbch\af31505\loch\f39 * Added a \hich\af39\dbch\af31505\loch\f39 S\hich\af39\dbch\af31505\loch\f39 prite\hich\af39\dbch\af31505\loch\f39 Database s\hich\af39\dbch\af31505\loch\f39 -ystem that can help you define, load, and save sprites. It also decreases load time. -\par \hich\af39\dbch\af31505\loch\f39 * Adde\hich\af39\dbch\af31505\loch\f39 d the SpriteDatabase \hich\af39\dbch\af31505\loch\f39 Open\hich\af39\dbch\af31505\loch\f39 EditWindow\hich\af39\dbch\af31505\loch\f39 -, which allows you to graphically define sprites. Add your sprite images to your \hich\af39\dbch\af31505\loch\f39 resources\hich\af39\dbch\af31505\loch\f39 -, and then make a function to call the OpenEditWindow function (passing it a filename). It will save the sprite definitions to the \hich\af39\dbch\af31505\loch\f39 filename. Then you can add that file to your \hich\af39\dbch\af31505\loch\f39 -resources and load that\hich\af39\dbch\af31505\loch\f39 new resource. +\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid200619 \hich\af39\dbch\af31505\loch\f39 * Changed the primary home to gitlab: }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid200619\charrsid200619 +\hich\af39\dbch\af31505\loch\f39 https://git.solidcharity.com/timy/SpriteLibrary}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid200619 +\par \hich\af39\dbch\af31505\loch\f39 * Rebuilt the documentation +\par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 \hich\af39\dbch\af31505\loch\f39 * Added linked sprite-controllers so we can share sprite definitions between controllers (decreases load time considerably) +\par \hich\af39\dbch\af31505\loch\f39 * Added a SpriteDatabase s\hich\af39\dbch\af31505\loch\f39 ystem that can help you define, load, and save sprites. It also decreases load time. +\par \hich\af39\dbch\af31505\loch\f39 * Added the SpriteDatabase OpenEditWindow, which allows you to graphically define sprites. Add your sprite images to your resources, and then make a function to call the\hich\af39\dbch\af31505\loch\f39 + OpenEditWindow function (passing it a filename). It will save the sprite definitions to the filename. Then you can add that file to your resources and load that new resource. \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 * F}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 \hich\af39\dbch\af31505\loch\f39 ix}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 ed MouseEnterTransparent, MouseLeaveTransparent -\par \hich\af39\dbch\af31505\loch\f39 * Added a number more Sprite creation functions +\par \hich\af39\dbch\af31505\loch\f39 * Added a number more Spr\hich\af39\dbch\af31505\loch\f39 ite creation functions \par \hich\af39\dbch\af31505\loch\f39 * Added a number more Sprite.AddAnimation functions \par \hich\af39\dbch\af31505\loch\f39 * Allow us to set the ending frame after we animate (which frame do we display when we are done) in AnimateOnce and AnimateJustAFewTimes -\par \hich\af39\dbch\af31505\loch\f39 * After a ReplaceImage, it immediately invalidates the sprite and re-draws it. -\par \hich\af39\dbch\af31505\loch\f39 * Add a series of Events, Sprite.MouseOv\hich\af39\dbch\af31505\loch\f39 -erTransparent, Sprite.MouseEnterTransparent, and Sprite.MouseLeaveTransparent. These check the transparent areas of a sprite to see if you are moving over a solid or transparent area of a sprite. For use if there is a lot of empty area inside a sprite, -\hich\af39\dbch\af31505\loch\f39 a\hich\af39\dbch\af31505\loch\f39 nd you do not want to trigger a MouseEnter function over the empty region. +\par \hich\af39\dbch\af31505\loch\f39 * After a ReplaceImage, it immediately inval\hich\af39\dbch\af31505\loch\f39 idates the sprite and re-draws it. +\par \hich\af39\dbch\af31505\loch\f39 * Add a series of Events, Sprite.MouseOverTransparent, Sprite.MouseEnterTransparent, and Sprite.MouseLeaveTransparent. These check the transparent areas of a sprite to see if you are moving over a solid or transparent ar +\hich\af39\dbch\af31505\loch\f39 ea of a sprite. For use if there is a lot of empty area inside a sprite, and you do not want to trigger a MouseEnter function over the empty region. \par \hich\af39\dbch\af31505\loch\f39 1.0.5 \par \hich\af39\dbch\af31505\loch\f39 * upgraded a lot of documentation. Started the big documentation push -\par \hich\af39\dbch\af31505\loch\f39 - inline documentation updated -\par \hich\af39\dbch\af31505\loch\f39 - Online documentation file: }{\field{\*\fldinst {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 HYPERLINK http://tyounglightsys.ddns.info -\hich\af39\dbch\af31505\loch\f39 /SpriteLibrary/doc }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 {\*\datafield +\par \hich\af39\dbch\af31505\loch\f39 - inline documentation upda\hich\af39\dbch\af31505\loch\f39 ted +\par \hich\af39\dbch\af31505\loch\f39 - Online documentation file: }{\field{\*\fldinst {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 HYPERLINK http://tyounglightsys.ddns.info/SpriteLibrary/doc }{ +\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid3222827 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7c00000068007400740070003a002f002f00740079006f0075006e0067006c0069006700680074007300790073002e00640064006e0073002e0069006e0066006f002f005300700072006900740065004c0069006200 -72006100720079002f0064006f0063000000795881f43b1d7f48af2c825dc485276300000000a5ab0003}}}{\fldrslt {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 http://tyounglightsys.ddns.info/SpriteLibrary/doc} -}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 +72006100720079002f0064006f0063000000795881f43b1d7f48af2c825dc485276300000000a5ab000300}}}{\fldrslt {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 http://tyounglightsys.ddns.info/SpriteLibr +\hich\af39\dbch\af31505\loch\f39 ary/doc}}}\sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \par \hich\af39\dbch\af31505\loch\f39 - Start of a large documentation PDF - Will not see the light of day until 1.0.6 \par \hich\af39\dbch\af31505\loch\f39 * added a SpriteIsBeingDestroyed event. That way you can have code fired off as a particular sprite is being destroyed. -\par \hich\af39\dbch\af31505\loch\f39 * added three events; MouseHover, MouseEnter, and MouseLeave. When the mouse moves over a sprite for the first time, it does the Mouse\hich\af39\dbch\af31505\loch\f39 -Enter. When we move off the sprite, it does the MouseLeave, and when we pause over the sprite, it does a MouseHover. -\par \hich\af39\dbch\af31505\loch\f39 * Added sprite opacity. Sprite.opacity = .5; +\par \hich\af39\dbch\af31505\loch\f39 * added three events; MouseHover, MouseEnt\hich\af39\dbch\af31505\loch\f39 +er, and MouseLeave. When the mouse moves over a sprite for the first time, it does the MouseEnter. When we move off the sprite, it does the MouseLeave, and when we pause over the sprite, it does a MouseHover. +\par \hich\af39\dbch\af31505\loch\f39 * Added sprite opacity. Sprite.opacity = .5;\hich\af39\dbch\af31505\loch\f39 \par \hich\af39\dbch\af31505\loch\f39 * fixed some issues with transparency and sprites -\par \hich\af39\dbch\af31505\loch\f39 * Fixed my new way to add animations. Th\hich\af39\dbch\af31505\loch\f39 e rotation they use is opposite of what I use. So everything rotated opposite from what was expected. -\par \hich\af39\dbch\af31505\loch\f39 * Added Sprite.MoveTo(Sprite) so a Sprite can target another sprite. The moving sprite will probably need to be moving a bit faster than the destination\hich\af39\dbch\af31505\loch\f39 - sprite if the moving sprite hopes to catch up with it. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed my new way to add animations. The rotation they use is opposite of what I use. So everything rotated opposite from what was expected. +\par \hich\af39\dbch\af31505\loch\f39 * Added Sprite.MoveTo(Sprite) so a Sprite can target another\hich\af39\dbch\af31505\loch\f39 + sprite. The moving sprite will probably need to be moving a bit faster than the destination sprite if the moving sprite hopes to catch up with it. \par \hich\af39\dbch\af31505\loch\f39 * Added GetSpriteBaseImageCenter and GetSpritePictureboxCenter to find the center-point of the sprite. -\par \hich\af39\dbch\af31505\loch\f39 * Added SpriteComparisonDelegate, the ability to override the sort order (display order) of sprit\hich\af39\dbch\af31505\loch\f39 -es. The sort order affects which sprite is printed on top of the other sprites. Whichever one has the highest priority is the one that appears on top of the other ones. The default sort order is created by: }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 -\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 SpriteComparisonDelegate}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\insrsid70908 \hich\af40\dbch\af31505\loch\f40 = }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 -\f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 delegate}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 (}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 -\f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 fi\hich\af40\dbch\af31505\loch\f40 rst, }{\rtlch\fcs1 \af40\afs19 -\ltrch\fcs0 \f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 second) \{ }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 -\f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first.Zvalue.CompareTo(second.Zvalue); \}; }{\rtlch\fcs1 -\af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\insrsid70908 +\par \hich\af39\dbch\af31505\loch\f39 * Ad\hich\af39\dbch\af31505\loch\f39 +ded SpriteComparisonDelegate, the ability to override the sort order (display order) of sprites. The sort order affects which sprite is printed on top of the other sprites. Whichever one has the highest priority is the one that appears on top of the oth +\hich\af39\dbch\af31505\loch\f39 e\hich\af39\dbch\af31505\loch\f39 r ones. The default sort order is created by: }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 SpriteComparisonDelegate}{ +\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\insrsid70908 \hich\af40\dbch\af31505\loch\f40 = }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 delegate}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 (}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first, }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 second) \{ }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first.Zvalue.CompareTo(second.Zvalue); \}; }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\insrsid70908 \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\cf1\insrsid70908 \hich\af39\dbch\af31505\loch\f39 The sort function simply compares the Zvalue. A more complex version might be:}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 delegate}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 (}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf17\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 Sprite}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 @@ -95,39 +95,40 @@ es. The sort order affects which sprite is printed on top of the other sprites. \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 second) \{ \par \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 if}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 (first.Zvalue != second.Zvalue) }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 -\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first\hich\af40\dbch\af31505\loch\f40 .Zvalue.CompareTo(second.Zvalue); +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first.Zvalue.CompareTo(second.Zvalue); \par \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 if}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 (first.BaseImageLocation.Y != second.BaseImageLocation.Y) }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 first.BaseImageLocation.Y.CompareTo(second.BaseImageLocation.Y); \par \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 return}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 -\hich\af40\dbch\af31505\loch\f40 first.BaseImageLocation.X.CompareTo(second.BaseIma\hich\af40\dbch\af31505\loch\f40 geLocation.X); +\hich\af40\dbch\af31505\loch\f40 first.BaseImageLocation.X.CompareTo(second.BaseImageLocation.X); \par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 \};}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\insrsid70908 \par }{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 * Added another way to Add Animations. We can create an animation that is a rotation of a different animation. For example, you can have something rotated by 45 or 90 degrees. \par \hich\af39\dbch\af31505\loch\f39 * Fixed a bug with large sprites that make other things blink -\par \hich\af39\dbch\af31505\loch\f39 * SpriteController.ResetKeypressState() clears any residual keypress. Sometimes the program misses keys being pressed and released. This clears any memory, and starts it from scratch. +\par \hich\af39\dbch\af31505\loch\f39 * SpriteControll\hich\af39\dbch\af31505\loch\f39 er.ResetKeypressState() clears any residual keypress. Sometimes the program misses keys being pressed and released. This clears any memory, and starts it from scratch. + \par \hich\af39\dbch\af31505\loch\f39 1.0.4 -\par \hich\af39\dbch\af31505\loch\f39 * \hich\af39\dbch\af31505\loch\f39 fix timing issue with start-animation. It had not been setting the animation start time. +\par \hich\af39\dbch\af31505\loch\f39 * fix timing issue with start-animation. It had not been setting the animation \hich\af39\dbch\af31505\loch\f39 start time. \par \hich\af39\dbch\af31505\loch\f39 * Added ability to change the animation speed of one frame. Works across all sprites. }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\lang9\langfe1033\highlight8\langnp9\insrsid70908 \hich\af40\dbch\af31505\loch\f40 ChangeFrameAnimationSpeed}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 / GetFrameAnimationSpeed}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 -\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to retur\hich\af39\dbch\af31505\loch\f39 n the count of animations this sprite has (Sprite.AnimationCount) -\par \hich\af39\dbch\af31505\loch\f39 * Added a Sprite.GetImage(animation, frame) so we can retrieve any specific image +\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to return the count of animations this sprite has (Sprite.AnimationCount) +\par \hich\af39\dbch\af31505\loch\f39 * Added a Sp\hich\af39\dbch\af31505\loch\f39 rite.GetImage(animation, frame) so we can retrieve any specific image \par \hich\af39\dbch\af31505\loch\f39 * added a sprite.unhidesprite function that does the opposite of the hidesprite function. -\par \hich\af39\dbch\af31505\loch\f39 * Fix the getanima\hich\af39\dbch\af31505\loch\f39 tionspeed func to return the real amount -\par \hich\af39\dbch\af31505\loch\f39 * Add a random number generator to the sprite controller +\par \hich\af39\dbch\af31505\loch\f39 * Fix the getanimationspeed func to return the real amount +\par \hich\af39\dbch\af31505\loch\f39 * Add a random number generator to th\hich\af39\dbch\af31505\loch\f39 e sprite controller \par \hich\af39\dbch\af31505\loch\f39 *Allow a change to the tick-speed. Default is 10ms. \par \hich\af39\dbch\af31505\loch\f39 *Add a spriteController.DestroyAllSprites function -\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to replace a sprite frame. (Sprit\hich\af39\dbch\af31505\loch\f39 e.ReplaceImage) +\par \hich\af39\dbch\af31505\loch\f39 * Added the ability to replace a sprite frame. (Sprite.ReplaceImage) \par \hich\af39\dbch\af31505\loch\f39 * Added a }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\lang9\langfe1033\highlight8\langnp9\insrsid70908 \hich\af40\dbch\af31505\loch\f40 RegisterKeyDownFunction}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 -\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 and RegisterKeyUpFunction, as well as the corresponding events on the keyfilter. This allows you to trigger things when a key is pressed and released.}{\rtlch\fcs1 \af39 \ltrch\fcs0 -\f39\lang9\langfe1033\langnp9\insrsid70908 -\par \hich\af39\dbch\af31505\loch\f39 * Added a function to return all the sprites that inte\hich\af39\dbch\af31505\loch\f39 rsect with a given rectangle -\par \hich\af39\dbch\af31505\loch\f39 * Added a KeysPressed function that returns a list of all the keys which are currently pressed. +\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 and RegisterKeyUpFunction, a\hich\af40\dbch\af31505\loch\f40 +s well as the corresponding events on the keyfilter. This allows you to trigger things when a key is pressed and released.}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 +\par \hich\af39\dbch\af31505\loch\f39 * Added a function to return all the sprites that intersect with a given rectangle +\par \hich\af39\dbch\af31505\loch\f39 * Added a KeysPressed function that returns a lis\hich\af39\dbch\af31505\loch\f39 t of all the keys which are currently pressed. \par \hich\af39\dbch\af31505\loch\f39 * Repaired a glitch in playing sounds. Set the stream position back to 0 (the beginning so you can play it a second time) -\par \hich\af39\dbch\af31505\loch\f39 *Repaire\hich\af39\dbch\af31505\loch\f39 d a small bug with the animate-once function that kept rotating the animation once it had finished.\line * Support for large sprites. SpriteController.}{\rtlch\fcs1 \af39 +\par \hich\af39\dbch\af31505\loch\f39 *Repaired a small bug with the animate-once function that kept rotating the animation \hich\af39\dbch\af31505\loch\f39 once it had finished.\line * Support for large sprites. SpriteController.}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\cf1\lang9\langfe1033\highlight8\langnp9\insrsid70908 \hich\af39\dbch\af31505\loch\f39 OptimizeForLargeSpriteImages}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\cf1\highlight8\insrsid70908 \hich\af39\dbch\af31505\loch\f39 - = true/false will resize the sprite and store it in its resized state. It shoul\hich\af39\dbch\af31505\loch\f39 d print the sprite faster this way than if it needs to squish or expand the sprite every time it goes to print it. + = true/false will resize the sprite and store it in its resized state. It should print the sprite faster this way than if it needs to squish or expand the sp\hich\af39\dbch\af31505\loch\f39 rite every time it goes to print it. \par \hich\af39\dbch\af31505\loch\f39 *Add the ability to specify the starting frame when we tell the sprite to do an animation. }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 public}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 }{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 void}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 ChangeAnimation(}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf2\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 int}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 @@ -135,16 +136,17 @@ ChangeFrameAnimationSpeed}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\hig \b\f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 StartFrame = 0}{\rtlch\fcs1 \af40\afs19 \ltrch\fcs0 \f40\fs19\cf1\highlight8\insrsid70908 \hich\af40\dbch\af31505\loch\f40 )}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 \par \hich\af39\dbch\af31505\loch\f39 1.0.3 -\par \hich\af39\dbch\af31505\loch\f39 * Fixed a problem in the "animate a few times" function. It basically would only animate once, regardless of how many times you told it to animate. -\par \hich\af39\dbch\af31505\loch\f39 * Fixed a problem in the sound. I was itterating through a list of sounds, and t\hich\af39\dbch\af31505\loch\f39 he list changed. My foreach loop would break. Changed that. Thanks, Warren for pointing that out. -\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo - Occasionally the MoveTo will break terribly. If you move the sprite to the position where it is, it will make a vector with NaN (Not a Nu\hich\af39\dbch\af31505\loch\f39 -mber) and it throws the sprite off to a place waaaay long away. -\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo - Would occasionally send the sprite off in the wrong direction for a bit. The "last movement" time was not set, so, when a direction was set, it would think it had been kept f -\hich\af39\dbch\af31505\loch\f39 rom moving for some time, and leap forward that amount of time. This resulted in the sprite suddenly being half-way across the screen in a strange location. All fixed. -\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo(List). It works much better now. It used to get a slightly off\hich\af39\dbch\af31505\loch\f39 - direction (probably a rounding issue) and would not recorrect. It always missed the destination. Changed it to be self correcting. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed a problem in the "animate a few times" functio\hich\af39\dbch\af31505\loch\f39 n. It basically would only animate once, regardless of how many times you told it to animate. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed a problem in the sound. I was itterating through a list of sounds, and the list changed. My foreach loop would break. Changed that. Thanks, Warren fo\hich\af39\dbch\af31505\loch\f39 r pointing that out. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo - Occasionally the MoveTo will break terribly. If you move the sprite to the position where it is, it will make a vector with NaN (Not a Number) and it throws the sprite off to a place waaaay long away. + +\par \hich\af39\dbch\af31505\loch\f39 +* Fixed MoveTo - Would occasionally send the sprite off in the wrong direction for a bit. The "last movement" time was not set, so, when a direction was set, it would think it had been kept from moving for some time, and leap forward that amount of time. +\hich\af39\dbch\af31505\loch\f39 \hich\af39\dbch\af31505\loch\f39 This resulted in the sprite suddenly being half-way across the screen in a strange location. All fixed. +\par \hich\af39\dbch\af31505\loch\f39 * Fixed MoveTo(List). It works much better now. It used to get a slightly off direction (probably a rounding issue) and would not recorrect. \hich\af39\dbch\af31505\loch\f39 + It always missed the destination. Changed it to be self correcting. \par \hich\af39\dbch\af31505\loch\f39 * FIxed faster movement to the left than right (due to dropping of decimals instead of rounding) -\par \hich\af39\dbch\af31505\loch\f39 * Added this release note\hich\af39\dbch\af31505\loch\f39 s file so people can figure out what has changed since the last update. +\par \hich\af39\dbch\af31505\loch\f39 * Added this release notes file so people can figure out what has changed since the last \hich\af39\dbch\af31505\loch\f39 update. \par \hich\af39\dbch\af31505\loch\f39 1.0.2 \par \hich\af39\dbch\af31505\loch\f39 * Able to change animation speed \par \hich\af39\dbch\af31505\loch\f39 * Added MoveTo @@ -152,9 +154,9 @@ mber) and it throws the sprite off to a place waaaay long away. \par \hich\af39\dbch\af31505\loch\f39 1.0.1 \par \hich\af39\dbch\af31505\loch\f39 * Minor changes (DateTime.Now -> DateTime.UtcNow) \par \hich\af39\dbch\af31505\loch\f39 * Change to Payload structure. Was "Object" now it is a class of its own: SpritePayload -\par \hich\af39\dbch\af31505\loch\f39 * return sprites at point broken terribly. Would return all the named sprites which had never been displayed. Finding all the sprites in the top-left corner returned\hich\af39\dbch\af31505\loch\f39 - a ton of sprites that should not have been there. Now it only returns sprites that have been printed. -\par \hich\af39\dbch\af31505\loch\f39 1.0.0 Initial Version}{\rtlch\fcs1 \af39 \ltrch\fcs0 \f39\lang9\langfe1033\langnp9\insrsid70908 +\par \hich\af39\dbch\af31505\loch\f39 * return sprites at point broke\hich\af39\dbch\af31505\loch\f39 +n terribly. Would return all the named sprites which had never been displayed. Finding all the sprites in the top-left corner returned a ton of sprites that should not have been there. Now it only returns sprites that have been printed. +\par \hich\af39\dbch\af31505\loch\f39 1.0.0 Initial V\hich\af39\dbch\af31505\loch\f39 ersion \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 @@ -236,35 +238,25 @@ c6c0ca53f9c86201e155bc76ff050000ffff0300504b0304140006000800000021000dd1909fb600 \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; -\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; -\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; -\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; -\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; -\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; -\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; -\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; -\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; -\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; -\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; -\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; -\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; -\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; -\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; -\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; -\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid; +\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid; +\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1; +\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1; +\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; +\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2; +\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3; +\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; +\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; @@ -305,8 +297,8 @@ fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e500000000000000000000000050f4 -a0841132d301feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000007059 +a7180533d301feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file From d1a58e80b058544f38eee3ae3638a98f721cdfb7 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Thu, 21 Sep 2017 13:12:43 -0500 Subject: [PATCH 77/77] Update the DLL version number in preparation for release --- SpriteLibrary/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SpriteLibrary/Properties/AssemblyInfo.cs b/SpriteLibrary/Properties/AssemblyInfo.cs index 0a660d9..5027363 100644 --- a/SpriteLibrary/Properties/AssemblyInfo.cs +++ b/SpriteLibrary/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 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.5")] -[assembly: AssemblyFileVersion("1.0.0.5")] +[assembly: AssemblyVersion("1.0.0.6")] +[assembly: AssemblyFileVersion("1.0.0.6")]