From 538c4632af1a20dccb4b52c138bd0f3d44702db9 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 20 Sep 2014 01:00:50 +0000 Subject: [PATCH] Add a LuaLibraryAttributes attribute to lua libraries with a Released property, only register libraries that are released except in Developer Builds, set tastudio library Released flag to false --- BizHawk.Client.Common/lua/LuaAttributes.cs | 16 ++++++++++--- .../Lua/Libraries/EmuLuaLibrary.Tastudio.cs | 1 + .../tools/Lua/Libraries/EmuLuaLibrary.cs | 23 ++++++++++++++++--- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/BizHawk.Client.Common/lua/LuaAttributes.cs b/BizHawk.Client.Common/lua/LuaAttributes.cs index 1990e2b653..c2fc8a88b6 100644 --- a/BizHawk.Client.Common/lua/LuaAttributes.cs +++ b/BizHawk.Client.Common/lua/LuaAttributes.cs @@ -4,13 +4,23 @@ namespace BizHawk.Client.Common { public class LuaMethodAttributes : Attribute { - public string Name { get; set; } - public string Description { get; set; } - public LuaMethodAttributes(string name, string description) { Name = name; Description = description; } + + public string Name { get; set; } + public string Description { get; set; } + } + + public class LuaLibraryAttributes : Attribute + { + public LuaLibraryAttributes(bool released) + { + Released = released; + } + + public bool Released { get; set; } } } diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs index b69f2b5af4..cf145e2429 100644 --- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs +++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs @@ -7,6 +7,7 @@ using LuaInterface; namespace BizHawk.Client.EmuHawk { [Description("A library for manipulating the Tastudio dialog of the EmuHawk client")] + [LuaLibraryAttributes(released: false)] public sealed class TastudioLuaLibrary : LuaLibraryBase { public TastudioLuaLibrary(Lua lua) diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs index 648d30b663..d287cfab5d 100644 --- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs +++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.cs @@ -49,6 +49,13 @@ namespace BizHawk.Client.EmuHawk Docs.Clear(); _caller = passed.Get(); + + var tt = typeof(TastudioLuaLibrary); + var mm = typeof(MainMemoryLuaLibrary); + + var tatt = tt.GetCustomAttributes(typeof(LuaLibraryAttributes), false); + var matt = mm.GetCustomAttributes(typeof(LuaLibraryAttributes), false); + // Register lua libraries var libs = Assembly .Load("BizHawk.Client.Common") @@ -67,9 +74,19 @@ namespace BizHawk.Client.EmuHawk foreach (var lib in libs) { - var instance = (LuaLibraryBase)Activator.CreateInstance(lib, _lua); - instance.LuaRegister(lib, Docs); - Libraries.Add(lib, instance); + bool addLibrary = true; + var attributes = lib.GetCustomAttributes(typeof(LuaLibraryAttributes), false); + if (attributes.Any()) + { + addLibrary = VersionInfo.DeveloperBuild || (attributes.First() as LuaLibraryAttributes).Released; + } + + if (addLibrary) + { + var instance = (LuaLibraryBase)Activator.CreateInstance(lib, _lua); + instance.LuaRegister(lib, Docs); + Libraries.Add(lib, instance); + } } _lua.RegisterFunction("print", this, GetType().GetMethod("Print"));