using Godot; using System.Collections.Generic; namespace Rokojori { public enum AppPlatformOS { Windows, MacOS, iOS, Android, MetaHorizonOS, Switch, Switch2, PS4, PS5, XBoxOne, XBoxSeriesXS } public enum AppLauncher { Native, Steam, Epic, Web } [Tool] [GlobalClass,Icon("res://addons/rokojori_action_library/Icons/App.svg")] public partial class App: Node { [Export] public AppPlatformOS os; [Export] public AppLauncher launcher; [Export] public AppSettings settings; [Export] public Action onAppStart; Dictionary _settingsData = new Dictionary(); public Dictionary GetAppSettingsData() =>_settingsData; public string GetSetting( AppSetting appSetting ) { return _settingsData.ContainsKey( appSetting.id ) ? _settingsData[ appSetting.id ] : appSetting.GetDefaultValue(); } public string GetSetting( string id ) { return _settingsData.ContainsKey( id ) ? _settingsData[ id ] : null; } public void SetSetting( string id, string value ) { // this.LogInfo( "Set setting:", id, value ); _settingsData[ id ] = value; } int _fps = 60; public int x = 0; [Export] public int fps { get => _fps; set { _fps = value; Engine.MaxFps = _fps; } } public override void _Ready() { if ( Engine.IsEditorHint() ) { return; } onAppStart?.Trigger(); } } }