- Fixed shet.

This commit is contained in:
MapleWheels
2026-03-05 17:48:27 -05:00
parent 1fe68aa861
commit 368b18d440
5 changed files with 36 additions and 10 deletions

View File

@@ -3,15 +3,27 @@ using System.Globalization;
using System.Linq;
using System.Xml.Linq;
using Barotrauma.LuaCs.Data;
using Microsoft.Toolkit.Diagnostics;
using Microsoft.Xna.Framework.Input;
using OneOf;
namespace Barotrauma.LuaCs.Data;
public class SettingControl : SettingBase, ISettingControl
public sealed class SettingControl : SettingBase, ISettingControl
{
public SettingControl(IConfigInfo configInfo) : base(configInfo)
public class Factory : ISettingBase.IFactory<ISettingBase>
{
public ISettingBase CreateInstance(IConfigInfo configInfo, Func<OneOf<string, XElement, object>, bool> valueChangePredicate)
{
Guard.IsNotNull(configInfo, nameof(configInfo));
return new SettingControl(configInfo, valueChangePredicate);
}
}
public SettingControl(IConfigInfo configInfo, Func<OneOf<string, XElement, object>, bool> valueChangePredicate) : base(configInfo)
{
_valueChangePredicate = valueChangePredicate;
TrySetValue(configInfo.Element);
}
protected override void OnDispose()
@@ -19,9 +31,9 @@ public class SettingControl : SettingBase, ISettingControl
OnValueChanged = null;
}
private Func<OneOf<string, XElement, object>, bool> _valueChangePredicate;
public override Type GetValueType() => typeof(KeyOrMouse);
public override string GetStringValue() => Value.ToString();
public override string GetDefaultStringValue() => new KeyOrMouse(Keys.NumLock).ToString();
public override bool TrySetValue(OneOf<string, XElement> value)
@@ -35,6 +47,11 @@ public class SettingControl : SettingBase, ISettingControl
return false;
}
if (_valueChangePredicate is not null && !_valueChangePredicate.Invoke(newVal))
{
return false;
}
Value = newVal;
OnValueChanged?.Invoke(this);
return true;

View File

@@ -6,6 +6,7 @@ using System.Linq;
using System.Numerics;
using Barotrauma.LuaCs.Data;
using Vector2 = Microsoft.Xna.Framework.Vector2;
using Vector4 = Microsoft.Xna.Framework.Vector4;
// ReSharper disable ObjectCreationAsStatement
@@ -28,7 +29,6 @@ internal sealed class ModsGameplaySettingsMenu : ModsSettingsMenuBase
SettingsMenu settingsMenuInstance) : base(contentFrame, packageManagementService, configService, settingsMenuInstance)
{
_settingsInstancesGameplay = configService.GetDisplayableConfigs()
.Where(s => s is not ISettingControl)
.ToImmutableArray();
@@ -69,7 +69,6 @@ internal sealed class ModsGameplaySettingsMenu : ModsSettingsMenuBase
OnApplyInstalledModsChanges = () =>
{
_settingsInstancesGameplay = configService.GetDisplayableConfigs()
.Where(s => s is not ISettingControl)
.ToImmutableArray();
if (_selectedContentPackage is not null && !GetTargetPackagesList().Contains(_selectedContentPackage))
{
@@ -128,6 +127,7 @@ internal sealed class ModsGameplaySettingsMenu : ModsSettingsMenuBase
.Where(s => _selectedCategory.IsNullOrWhiteSpace()
|| _selectedCategory == "All"
|| GetLocalizedString(s.GetDisplayInfo().DisplayCategory, "General") == _selectedCategory)
.OrderBy(s => GetLocalizedString(s.GetDisplayInfo().DisplayName, s.InternalName))
.ToImmutableArray();
}
@@ -139,6 +139,7 @@ internal sealed class ModsGameplaySettingsMenu : ModsSettingsMenuBase
.Where(s => _selectedContentPackage is null
|| _selectedContentPackage == ContentPackageManager.VanillaCorePackage // vanilla is treated as all packages
|| s.OwnerPackage == _selectedContentPackage)
.OrderBy(s => GetLocalizedString(s.GetDisplayInfo().DisplayName, s.InternalName))
.ToImmutableArray();
}
@@ -212,7 +213,6 @@ internal sealed class ModsGameplaySettingsMenu : ModsSettingsMenuBase
foreach (var category in categories)
{
DebugConsole.Log(category);
var btn = new GUIButton(new RectTransform(new Vector2(1f, 0.122f), displayCategoriesLayout.RectTransform),
text: category, color: Color.TransparentBlack)
{
@@ -264,6 +264,7 @@ internal sealed class ModsGameplaySettingsMenu : ModsSettingsMenuBase
font: GUIStyle.SmallFont,
textAlignment: Alignment.Left)
{
Padding = new Vector4(0.02f,0,0,0),
CanBeFocused = false
};

View File

@@ -45,11 +45,12 @@ public class SettingsMenuSystem : ISettingsMenuSystem
_gameplayContentFrame = CreateNewContentTab(tabGameplayIndex, __instance,
"SettingsMenuTab.Mods", "LuaCsForBarotrauma.SettingsMenu.ModGameplayButton");
_controlsContentFrame = CreateNewContentTab(tabControlsIndex, __instance,
/*_controlsContentFrame = CreateNewContentTab(tabControlsIndex, __instance,
"SettingsMenuTab.Controls", "LuaCsForBarotrauma.SettingsMenu.ModControlsButton");
*/
_gameplayMenuInstance = new ModsGameplaySettingsMenu(_gameplayContentFrame, _packageManagementService, _configService, __instance);
_controlsMenuInstance = new ModsControlsSettingsMenu(_controlsContentFrame, _packageManagementService, _configService, __instance);
//_controlsMenuInstance = new ModsControlsSettingsMenu(_controlsContentFrame, _packageManagementService, _configService, __instance);
}
private GUIFrame CreateNewContentTab(SettingsMenu.Tab tab, SettingsMenu settingsMenuInstance, string settingsMenuTabName, string settingMenuHoverTextIdent)

View File

@@ -7,6 +7,7 @@
<Setting Name="TestRangeFloat" Type="rangeFloat" Min="0" Max="25" Steps="11"/>
<Setting Name="TestRangeInt" Type="rangeInt" Min="0" Max="10" Steps="11"/>
<Setting Name="TestString" Type="string" />
<Setting Name="TestControl" Type="control" Value="A"/>
</Settings>
<Profiles>
<Profile Name="default">

View File

@@ -50,8 +50,14 @@ public class SettingsEntryRegistrar : ISettingsRegistrationProvider
return new SettingRangeFloat.RangeFactory().CreateInstance(cfgInfo.Info, (val) =>
IsValueChangeAllowed(cfgInfo.Info, val, valueChangePredicate));
});
// ISettingList : Not Implemented yet
#if CLIENT
configService.RegisterSettingTypeInitializer("control" , cfgInfo =>
{
return new SettingControl.Factory().CreateInstance(cfgInfo.Info, val =>
IsValueChangeAllowed(cfgInfo.Info, val, valueChangePredicate));
});
#endif
}
private void RegisterSettingEntry<T>(IConfigService configService, string typeName, Func<OneOf<string, XElement, object>, bool> valueChangePredicate) where T : IEquatable<T>, IConvertible