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.Get(); var data = resolvedApp.GetAppSettingsData(); var saveMap = new Dictionary(); 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 ); } } }