using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using RecrownedAthenaeum.SpecialTypes; using RecrownedAthenaeum.UI.SkinSystem.Definitions; namespace RecrownedAthenaeum.UI.SkinSystem { /// /// The output requirements of a skin. This allows for very customized skin systems if needed. /// public interface ISkin { /// /// The texture for the cursor. /// Texture2D CursorTexture { get; } /// /// Draws a region from the texture atlas. /// /// Region to draw. /// The color to tint the region. /// The batch to use. /// The destination to draw to. /// The rotation to use in radians. /// The origin for the rotation. void Draw(string regionName, string color, SpriteBatch batch, Rectangle destination, float rotation = 0, Vector2 origin = default(Vector2)); /// /// Returns a with given name of defined color; /// /// Name of defined color. /// The defined color based on the name given. Color GetColor(string name); /// /// Returns a with given name of region. /// /// Name of region. /// The region corresponding to the name. TextureAtlas.Region GetTextureAtlasRegion(string name); /// /// Returns the proper definition for the given parameters or throws exception in the case the requested definition does not exist. /// /// Convenience to cast to the needed definition type. /// The name of the definition. Default is null and will be replaced with "default" for name. /// The definition cast to T. T ObtainDefinition(string definitionName = null) where T : SkinDefinitionData; } }