rokojori_action_library/Runtime/App/App.cs

88 lines
1.5 KiB
C#

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<string,string> _settingsData = new Dictionary<string, string>();
public Dictionary<string,string> 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();
}
}
}