101 lines
2.6 KiB
C#
101 lines
2.6 KiB
C#
using System;
|
|
|
|
namespace BizHawk.Client.ApiHawk
|
|
{
|
|
/// <summary>
|
|
/// This class hold logic interraction for the BizHawkExternalToolUsageAttribute
|
|
/// This attribute helps ApiHawk to know how a tool can be enabled or not
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Assembly)]
|
|
public sealed class BizHawkExternalToolUsageAttribute : Attribute
|
|
{
|
|
#region Fields
|
|
|
|
private BizHawkExternalToolUsage _ToolUsage;
|
|
private CoreSystem _System;
|
|
private string _GameHash;
|
|
|
|
#endregion
|
|
|
|
#region cTor(s)
|
|
|
|
/// <summary>
|
|
/// Initialize a new instance of <see cref="BizHawkExternalToolUsageAttribute"/>
|
|
/// </summary>
|
|
/// <param name="usage"><see cref="BizHawkExternalToolUsage"/> i.e. what your external tool is for</param>
|
|
/// <param name="system"><see cref="CoreSystem"/> that your external tool is used for</param>
|
|
/// <param name="gameHash">The game hash, unique game ID (see in the game database)</param>
|
|
public BizHawkExternalToolUsageAttribute(BizHawkExternalToolUsage usage, CoreSystem system, string gameHash)
|
|
{
|
|
if (usage == BizHawkExternalToolUsage.EmulatorSpecific && system == CoreSystem.Null)
|
|
{
|
|
throw new InvalidOperationException("A system must be set");
|
|
}
|
|
if (usage == BizHawkExternalToolUsage.GameSpecific && gameHash.Trim() == "")
|
|
{
|
|
throw new InvalidOperationException("A game hash must be set");
|
|
}
|
|
|
|
_ToolUsage = usage;
|
|
_System = system;
|
|
_GameHash = gameHash;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initialize a new instance of <see cref="BizHawkExternalToolUsageAttribute"/>
|
|
/// </summary>
|
|
/// <param name="usage"><see cref="BizHawkExternalToolUsage"/> i.e. what your external tool is for</param>
|
|
/// <param name="system"><see cref="CoreSystem"/> that your external tool is used for</param>
|
|
public BizHawkExternalToolUsageAttribute(BizHawkExternalToolUsage usage, CoreSystem system)
|
|
:this(usage, system, "")
|
|
{}
|
|
|
|
/// <summary>
|
|
/// Initialize a new instance of <see cref="BizHawkExternalToolUsageAttribute"/>
|
|
/// </summary>
|
|
public BizHawkExternalToolUsageAttribute()
|
|
:this(BizHawkExternalToolUsage.Global, CoreSystem.Null, "")
|
|
{ }
|
|
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
/// <summary>
|
|
/// Gets the specific system used by the exetrnal tool
|
|
/// </summary>
|
|
public CoreSystem System
|
|
{
|
|
get
|
|
{
|
|
return _System;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the specific game (hash) used by the exetrnal tool
|
|
/// </summary>
|
|
public string GameHash
|
|
{
|
|
get
|
|
{
|
|
return _GameHash;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the tool usage
|
|
/// </summary>
|
|
public BizHawkExternalToolUsage ToolUsage
|
|
{
|
|
get
|
|
{
|
|
return _ToolUsage;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|