rokojori_action_library/Runtime/App/Settings/Actions/SaveAppSettings.cs

54 lines
1.0 KiB
C#

using Godot;
using System.Collections.Generic;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class SaveAppSettings:Action
{
[Export]
public string savePath = "";
[Export]
public App app;
[Export]
public bool writeDefaults = true;
protected override void _OnTrigger()
{
var resolvedApp = app ?? Unique<App>.Get();
var data = resolvedApp.GetAppSettingsData();
var saveMap = new Dictionary<string,string>();
foreach ( var kv in data ){ saveMap[ kv.Key ] = kv.Value; }
if ( writeDefaults )
{
app.settings.categories.ForEach(
( c )=>
{
c.settings.ForEach(
( appSetting )=>
{
if ( saveMap.ContainsKey( appSetting.id ) )
{
return;
}
saveMap[ appSetting.id ] = appSetting.GetDefaultValue();
}
);
}
);
}
GDFilesSync.SaveJSON( savePath, saveMap );
}
}
}