EmuHawk: ToolManager.IsAvailable<T> (#1294)
This commit is contained in:
parent
c012f56e45
commit
8a10ba6372
|
@ -6,14 +6,17 @@ namespace BizHawk.Client.EmuHawk
|
||||||
[AttributeUsage(AttributeTargets.Class)]
|
[AttributeUsage(AttributeTargets.Class)]
|
||||||
public class ToolAttribute : Attribute
|
public class ToolAttribute : Attribute
|
||||||
{
|
{
|
||||||
public ToolAttribute(bool released, string[] supportedSystems)
|
public ToolAttribute(bool released, string[] supportedSystems, string[] unsupportedCores = null)
|
||||||
{
|
{
|
||||||
Released = released;
|
Released = released;
|
||||||
SupportedSystems = supportedSystems;
|
SupportedSystems = supportedSystems;
|
||||||
|
UnsupportedCores = unsupportedCores;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Released { get; private set; }
|
public bool Released { get; private set; }
|
||||||
|
|
||||||
public IEnumerable<string> SupportedSystems { get; private set; }
|
public IEnumerable<string> SupportedSystems { get; private set; }
|
||||||
|
|
||||||
|
public IEnumerable<string> UnsupportedCores { get; private set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
//Verify all wording in the error reports
|
//Verify all wording in the error reports
|
||||||
|
|
||||||
|
|
||||||
[Tool(released: true, supportedSystems: new[] { "GB", "GBA", "GEN", "N64", "NES", "PSX", "SAT", "SMS", "SNES" })]
|
[Tool(released: true, supportedSystems: new[] { "GB", "GBA", "GEN", "N64", "NES", "PSX", "SAT", "SMS", "SNES" },
|
||||||
|
unsupportedCores: new[] { "Snes9x" })]
|
||||||
public partial class GameShark : Form, IToolForm, IToolFormAutoConfig
|
public partial class GameShark : Form, IToolForm, IToolFormAutoConfig
|
||||||
{
|
{
|
||||||
#region " Game Genie Dictionary "
|
#region " Game Genie Dictionary "
|
||||||
|
|
|
@ -10,6 +10,7 @@ using System.Windows.Forms;
|
||||||
using BizHawk.Client.Common;
|
using BizHawk.Client.Common;
|
||||||
using BizHawk.Emulation.Common;
|
using BizHawk.Emulation.Common;
|
||||||
using BizHawk.Common.ReflectionExtensions;
|
using BizHawk.Common.ReflectionExtensions;
|
||||||
|
using BizHawk.Client.EmuHawk.CoreExtensions;
|
||||||
|
|
||||||
namespace BizHawk.Client.EmuHawk
|
namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
|
@ -743,13 +744,30 @@ namespace BizHawk.Client.EmuHawk
|
||||||
.OfType<ToolAttribute>()
|
.OfType<ToolAttribute>()
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
// If no supported systems mentioned assume all
|
// start with the assumption that if no supported systems are mentioned and no unsupported cores are mentioned
|
||||||
if (attr?.SupportedSystems != null && attr.SupportedSystems.Any())
|
// then this is available for all
|
||||||
|
bool supported = true;
|
||||||
|
|
||||||
|
if (attr?.SupportedSystems != null && attr.SupportedSystems.Any())
|
||||||
{
|
{
|
||||||
return attr.SupportedSystems.Contains(Global.Emulator.SystemId);
|
// supported systems are available
|
||||||
}
|
supported = attr.SupportedSystems.Contains(Global.Emulator.SystemId);
|
||||||
|
|
||||||
return true;
|
if (supported)
|
||||||
|
{
|
||||||
|
// check for a core not supported override
|
||||||
|
if (attr.UnsupportedCores.Contains(Global.Emulator.DisplayName()))
|
||||||
|
supported = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (attr?.UnsupportedCores != null && attr.UnsupportedCores.Any())
|
||||||
|
{
|
||||||
|
// no supported system specified, but unsupported cores are
|
||||||
|
if (attr.UnsupportedCores.Contains(Global.Emulator.DisplayName()))
|
||||||
|
supported = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return supported;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: Referencing these properties creates an instance of the tool and persists it. They should be referenced by type if this is not desired
|
// Note: Referencing these properties creates an instance of the tool and persists it. They should be referenced by type if this is not desired
|
||||||
|
@ -973,7 +991,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
public void LoadGameGenieEc()
|
public void LoadGameGenieEc()
|
||||||
{
|
{
|
||||||
if (GlobalWin.Tools.IsAvailable<GameShark>())
|
if (GlobalWin.Tools.IsAvailable<GameShark>())
|
||||||
{
|
{
|
||||||
GlobalWin.Tools.Load<GameShark>();
|
GlobalWin.Tools.Load<GameShark>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue