diff --git a/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs b/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs index e727be87ea..03dc7d6f83 100644 --- a/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs +++ b/Intersect.Client.Core/Interface/Shared/SettingsWindow.cs @@ -418,7 +418,6 @@ public SettingsWindow(Base parent) : base(parent: parent, title: Strings.Setting _worldScale = new LabeledSlider(parent: _videoContainer, name: nameof(_worldScale)) { Dock = Pos.Top, - IsDisabled = !Options.IsLoaded, Font = _defaultFont, Label = Strings.Settings.WorldScale, Orientation = Orientation.LeftToRight, @@ -556,6 +555,13 @@ protected override void EnsureInitialized() LoadJsonUi(stage: UI.Shared, resolution: Graphics.Renderer?.GetResolutionString()); } + protected override void OnJsonReloaded() + { + base.OnJsonReloaded(); + + UpdateWorldScaleControls(); + } + public override bool IsBlockingInput => _keybindingEditBtn is not null; private BottomBarItems CreateBottomBar(Base parent) diff --git a/Intersect.Client.Framework/Gwen/Control/Base.cs b/Intersect.Client.Framework/Gwen/Control/Base.cs index b9e0a91048..85c1fd7bbf 100644 --- a/Intersect.Client.Framework/Gwen/Control/Base.cs +++ b/Intersect.Client.Framework/Gwen/Control/Base.cs @@ -759,7 +759,12 @@ public object? UserData public bool IsDisabled { get => (_inheritParentEnablementProperties && Parent != default) ? Parent.IsDisabled : _disabled; - set => SetAndDoIfChanged(ref _disabled, value, Invalidate); + set => SetAndDoIfChanged(ref _disabled, value, OnDisabledChanged); + } + + protected virtual void OnDisabledChanged(bool oldValue, bool newValue) + { + Invalidate(); } /// @@ -1293,6 +1298,7 @@ public void LoadJsonUi(GameContentManager.UI stage, string? resolution = default { LoadJson(obj, true); ProcessAlignments(); + OnJsonReloaded(); } } catch (Exception exception) @@ -1309,6 +1315,11 @@ public void LoadJsonUi(GameContentManager.UI stage, string? resolution = default }); } + protected virtual void OnJsonReloaded() + { + + } + public virtual void LoadJson(JToken token, bool isRoot = default) { if (token is not JObject obj) @@ -4549,6 +4560,4 @@ protected bool SetAndDoIfChanged( valueChangeHandler(oldValue, value); return true; } -} - -public delegate void ValueChangeHandler(TValue oldValue, TValue newValue); +} \ No newline at end of file diff --git a/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs b/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs index e57a18a381..c3a8333239 100644 --- a/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs +++ b/Intersect.Client.Framework/Gwen/Control/LabeledSlider.cs @@ -272,6 +272,11 @@ public string? ValueFormatString /// public event GwenEventHandler>? ValueChanged; + protected override void OnDisabledChanged(bool oldValue, bool newValue) + { + base.OnDisabledChanged(oldValue, newValue); + } + protected override void Layout(Skin.Base skin) { if (_recomputeValueMinimumSize) diff --git a/Intersect.Client.Framework/Gwen/Control/ValueChangeHandler.cs b/Intersect.Client.Framework/Gwen/Control/ValueChangeHandler.cs new file mode 100644 index 0000000000..ebd1261752 --- /dev/null +++ b/Intersect.Client.Framework/Gwen/Control/ValueChangeHandler.cs @@ -0,0 +1,3 @@ +namespace Intersect.Client.Framework.Gwen.Control; + +public delegate void ValueChangeHandler(TValue oldValue, TValue newValue); \ No newline at end of file