using System; using System.ComponentModel; using LuaInterface; using BizHawk.Emulation.Common; using BizHawk.Emulation.Cores.Consoles.Sega.gpgx; namespace BizHawk.Client.Common { [Description("Functions specific to GenesisHawk (functions may not run when an Genesis game is not loaded)")] public sealed class GenesisLuaLibrary : LuaLibraryBase { [OptionalService] private GPGX Genesis { get; set; } public GenesisLuaLibrary(Lua lua) : base(lua) { } public GenesisLuaLibrary(Lua lua, Action logOutputCallback) : base(lua, logOutputCallback) { } public override string Name => "genesis"; private GPGX.GPGXSettings GetSettings() { if (Genesis != null) { return Genesis.GetSettings(); } return new GPGX.GPGXSettings(); } private void PutSettings(GPGX.GPGXSettings settings) { Genesis?.PutSettings(settings); } [LuaMethodAttributes( "getlayer_bga", "Returns whether the bg layer A is displayed")] public bool GetLayerBgA() { return GetSettings().DrawBGA; } [LuaMethodAttributes( "getlayer_bgb", "Returns whether the bg layer B is displayed")] public bool GetLayerBgB() { return GetSettings().DrawBGB; } [LuaMethodAttributes( "getlayer_bgw", "Returns whether the bg layer W is displayed")] public bool GetLayerBgW() { return GetSettings().DrawBGW; } [LuaMethodAttributes( "setlayer_bga", "Sets whether the bg layer A is displayed")] public void SetLayerBgA(bool value) { var s = GetSettings(); s.DrawBGA = value; PutSettings(s); } [LuaMethodAttributes( "setlayer_bgb", "Sets whether the bg layer B is displayed")] public void SetLayerBgB(bool value) { var s = GetSettings(); s.DrawBGB = value; PutSettings(s); } [LuaMethodAttributes( "setlayer_bgw", "Sets whether the bg layer W is displayed")] public void SetLayerBgW(bool value) { var s = GetSettings(); s.DrawBGW = value; PutSettings(s); } } }