72 lines
1.6 KiB
C#
72 lines
1.6 KiB
C#
|
|
|
||
|
|
using Godot;
|
||
|
|
using Rokojori;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using System.Linq;
|
||
|
|
|
||
|
|
namespace Rokojori;
|
||
|
|
|
||
|
|
[Tool]
|
||
|
|
[GlobalClass]
|
||
|
|
public partial class UINumberAppSettingHandler:UIAppSettingHandler
|
||
|
|
{
|
||
|
|
[Export]
|
||
|
|
public UIValueSlider slider;
|
||
|
|
|
||
|
|
public override void _Ready()
|
||
|
|
{
|
||
|
|
Initialize();
|
||
|
|
}
|
||
|
|
|
||
|
|
public override void FocusHandler()
|
||
|
|
{
|
||
|
|
slider.CallDeferred( slider.GrabFocus );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
public override void LoadSetting()
|
||
|
|
{
|
||
|
|
var app = Unique<App>.Get();
|
||
|
|
var value = app.GetSetting( appSetting );
|
||
|
|
var normalized = slider.mode.FromSerializedToNormalized( value );
|
||
|
|
slider.SetSliderMainValue( normalized );
|
||
|
|
|
||
|
|
this.LogInfo( "Set setting", appSetting.title.currentValue, value, normalized );
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Initialize()
|
||
|
|
{
|
||
|
|
UIValueSliderMode mode = null;
|
||
|
|
|
||
|
|
if ( appSetting is ResolutionScalingSetting rss )
|
||
|
|
{
|
||
|
|
var resFloatMode = new UIResolutionScaleMode();
|
||
|
|
resFloatMode.CopyFrom( appSetting as NumberAppSetting );
|
||
|
|
resFloatMode.userScaleToResolutionScale = rss.userScaleToResolutionScale;
|
||
|
|
mode = resFloatMode;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
mode = UIFloatValueMode.From( appSetting as NumberAppSetting );
|
||
|
|
}
|
||
|
|
|
||
|
|
slider.mode = mode;
|
||
|
|
|
||
|
|
slider._onSliderChange.AddAction(
|
||
|
|
( v2 )=>
|
||
|
|
{
|
||
|
|
if ( appSetting is ResolutionScalingSetting )
|
||
|
|
{
|
||
|
|
var resFloatMode = slider.mode as UIResolutionScaleMode;
|
||
|
|
resFloatMode.windowSize = GetWindow().Size;
|
||
|
|
}
|
||
|
|
|
||
|
|
var app = Unique<App>.Get();
|
||
|
|
app.SetSetting( appSetting.id, slider.mode.GetSerializedValue( slider.mainValue ) );
|
||
|
|
appSetting.ApplyValue( app );
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|