54 lines
1.0 KiB
C#
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 );
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|