diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaCsInfoProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaCsInfoProvider.cs index 0637da337..81ff151b0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaCsInfoProvider.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaCsInfoProvider.cs @@ -1,4 +1,8 @@ -namespace Barotrauma.LuaCs; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Barotrauma.LuaCs; public sealed class LuaCsInfoProvider : ILuaCsInfoProvider { @@ -15,4 +19,29 @@ public sealed class LuaCsInfoProvider : ILuaCsInfoProvider public bool RestrictMessageSize => GameMain.LuaCs.RestrictMessageSize; public string LocalDataSavePath => GameMain.LuaCs.LocalDataSavePath; public RunState CurrentRunState => GameMain.LuaCs.CurrentRunState; + public ContentPackage LuaCsForBarotraumaPackage + { + get + { + var luaCs = FirstOrDefaultLua(ContentPackageManager.EnabledPackages.All); + if (luaCs == null) + { + luaCs = FirstOrDefaultLua(ContentPackageManager.LocalPackages.Regular); + } + + if (luaCs == null) + { + luaCs = FirstOrDefaultLua(ContentPackageManager.WorkshopPackages.Regular); + } + + return luaCs; + + ContentPackage FirstOrDefaultLua(IEnumerable packages) + { + return packages.FirstOrDefault(p => + p.Name.Equals("LuaCsForBarotrauma", StringComparison.InvariantCultureIgnoreCase) + || p.Name.Equals("Lua for Barotrauma", StringComparison.InvariantCultureIgnoreCase)); + } + } + } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaCsInfoProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaCsInfoProvider.cs index 337294941..2cf93ed94 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaCsInfoProvider.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaCsInfoProvider.cs @@ -39,4 +39,9 @@ public interface ILuaCsInfoProvider : IService /// The current state of the Execution State Machine. /// public RunState CurrentRunState { get; } + + /// + /// Returns the best-matching LuaCsForBarotrauma package (enabled list > localMods > WorkshopMods). + /// + public ContentPackage LuaCsForBarotraumaPackage { get; } }