76 lines
3.5 KiB
C#
76 lines
3.5 KiB
C#
using System;
|
|
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using RecrownedAthenaeum.SpecialTypes;
|
|
using RecrownedAthenaeum.UI.Skin.Definitions;
|
|
|
|
namespace RecrownedAthenaeum.UI.Skin
|
|
{
|
|
/// <summary>
|
|
/// The output requirements of a skin. This allows for very customized skin systems if needed.
|
|
/// </summary>
|
|
public interface ISkin
|
|
{
|
|
/// <summary>
|
|
/// The texture for the cursor.
|
|
/// </summary>
|
|
Texture2D CursorTexture { get; }
|
|
|
|
/// <summary>
|
|
/// Draws a region from the texture atlas.
|
|
/// </summary>
|
|
/// <param name="regionName">Region to draw.</param>
|
|
/// <param name="color">The color to tint the region.</param>
|
|
/// <param name="batch">The batch to use.</param>
|
|
/// <param name="destination">The destination to draw to.</param>
|
|
/// <param name="rotation">The rotation to use in radians.</param>
|
|
/// <param name="origin">The origin for the rotation.</param>
|
|
void Draw(string regionName, string color, SpriteBatch batch, Rectangle destination, float rotation = 0, Vector2 origin = default(Vector2));
|
|
|
|
/// <summary>
|
|
/// Returns a <see cref="Color"/> with given name of defined color;
|
|
/// </summary>
|
|
/// <param name="name">Name of defined color.</param>
|
|
/// <returns>The defined color based on the name given.</returns>
|
|
Color GetColor(string name);
|
|
|
|
/// <summary>
|
|
/// Returns a <see cref="TextureAtlas.Region"/> with given name of region.
|
|
/// </summary>
|
|
/// <param name="name">Name of region.</param>
|
|
/// <returns>The region corresponding to the name.</returns>
|
|
TextureAtlas.Region GetTextureAtlasRegion(string name);
|
|
|
|
/// <summary>
|
|
/// Returns an <see cref="ISkinDefinitionData"/> of the given name and type.
|
|
/// </summary>
|
|
/// <param name="definitionName">Name of definition of the <paramref name="type"/></param>
|
|
/// <param name="type">The UIModule the definition defines.</param>
|
|
/// <returns>The interface for the definition.</returns>
|
|
ISkinDefinitionData ObtainDefinition(string definitionName, Type type);
|
|
|
|
/// <summary>
|
|
/// Returns the default <see cref="ISkinDefinitionData"/> of the given parameters.
|
|
/// </summary>
|
|
/// <param name="type">The type of definition the default should be coming from.</param>
|
|
/// <returns>The default definition for the given type.</returns>
|
|
ISkinDefinitionData ObtainDefinition(Type type);
|
|
|
|
/// <summary>
|
|
/// Returns the proper definition for the given parameters or throws exception in the case the requested definition does not exist.
|
|
/// </summary>
|
|
/// <typeparam name="T">Convenience to cast to the needed definition type.</typeparam>
|
|
/// <param name="definitionName">The name of the definition.</param>
|
|
/// <param name="type">UIModule type the definition defines.</param>
|
|
/// <returns>The definition cast to T.</returns>
|
|
T ObtainDefinition<T>(string definitionName, Type type) where T : ISkinDefinitionData;
|
|
|
|
/// <summary>
|
|
/// Returns the default definition.
|
|
/// </summary>
|
|
/// <typeparam name="T">Convenience to cast to T.</typeparam>
|
|
/// <param name="type">The type of the UIModule to retrieve the default from.</param>
|
|
/// <returns>The default definition for the given type.</returns>
|
|
T ObtainDefinition<T>(Type type) where T : ISkinDefinitionData;
|
|
}
|
|
} |