pokepurple/addons/twitcher/editor/twitch_editor_settings.gd
Mario Steele c11a4ebbc2 Initial Commit
Initial commit of Code Base.
2025-06-12 14:31:14 -05:00

145 lines
5.1 KiB
GDScript

@tool
extends RefCounted
## Utilitiy Node for Inspector to calling API functionallity at any point
const EDITOR_OAUTH_TOKEN: String = "user://editor_oauth_token.tres"
const EDITOR_OAUTH_SETTING: String = "user://editor_oauth_setting.tres"
const GAME_OAUTH_TOKEN: String = "res://twitch_oauth_token.tres"
const GAME_OAUTH_SETTING: String = "res://twitch_oauth_setting.tres"
const TWITCH_DEFAULT_SCOPE: String = "res://addons/twitcher/auth/preset_overlay_scopes.tres"
const PRESET_GAME: StringName = &"Game"
const PRESET_OVERLAY: StringName = &"Overlay"
const PRESET_OTHER: StringName = &"Other"
static var _editor_oauth_token_property: ProjectSettingProperty
static var editor_oauth_token: OAuthToken:
set(val):
editor_oauth_token = val
_editor_oauth_token_property.set_val(val.resource_path)
static var _editor_oauth_setting_property: ProjectSettingProperty
static var editor_oauth_setting: OAuthSetting:
set(val):
editor_oauth_setting = val
_editor_oauth_setting_property.set_val(val.resource_path)
static var _game_oauth_token_property: ProjectSettingProperty
static var game_oauth_token: OAuthToken:
set(val):
game_oauth_token = val
_game_oauth_token_property.set_val(val.resource_path)
static var _game_oauth_setting_property: ProjectSettingProperty
static var game_oauth_setting: OAuthSetting:
set(val):
game_oauth_setting = val
_game_oauth_setting_property.set_val(val.resource_path)
static var _scope_property: ProjectSettingProperty
static var scopes: TwitchOAuthScopes:
set(val):
scopes = val
_scope_property.set_val(val.resource_path)
static var _show_setup_on_startup: ProjectSettingProperty
static var show_setup_on_startup: bool:
set(val): _show_setup_on_startup.set_val(val)
get: return _show_setup_on_startup.get_val()
static var _project_preset: ProjectSettingProperty
static var project_preset: StringName:
set(val): _project_preset.set_val(val)
get: return _project_preset.get_val()
static var _initialized: bool
static func setup() -> void:
if not _initialized:
_initialized = true
_setup_project_settings()
_reload_setting()
static func _setup_project_settings() -> void:
_editor_oauth_token_property = ProjectSettingProperty.new("twitcher/editor/editor_oauth_token", EDITOR_OAUTH_TOKEN)
_editor_oauth_token_property.as_file("*.res,*.tres")
_editor_oauth_setting_property = ProjectSettingProperty.new("twitcher/editor/editor_oauth_setting", EDITOR_OAUTH_SETTING)
_editor_oauth_setting_property.as_file("*.res,*.tres")
_game_oauth_token_property = ProjectSettingProperty.new("twitcher/editor/game_oauth_token", GAME_OAUTH_TOKEN)
_game_oauth_token_property.as_file("*.res,*.tres")
_game_oauth_setting_property = ProjectSettingProperty.new("twitcher/editor/game_oauth_setting", GAME_OAUTH_SETTING)
_game_oauth_setting_property.as_file("*.res,*.tres")
_scope_property = ProjectSettingProperty.new("twitcher/editor/default_scopes", TWITCH_DEFAULT_SCOPE)
_scope_property.as_file("*.res,*.tres")
_show_setup_on_startup = ProjectSettingProperty.new("twitcher/editor/show_setup_on_startup", true)
_project_preset = ProjectSettingProperty.new("twitcher/editor/project_preset")
_project_preset.as_select([PRESET_GAME, PRESET_OVERLAY, PRESET_OTHER], false)
static func _reload_setting() -> void:
editor_oauth_setting = load(_editor_oauth_setting_property.get_val())
editor_oauth_token = load(_editor_oauth_token_property.get_val())
game_oauth_setting = load(_game_oauth_setting_property.get_val())
game_oauth_token = load(_game_oauth_token_property.get_val())
var editor_oauth_token_path: String = _editor_oauth_token_property.get_val()
if editor_oauth_token_path:
if not FileAccess.file_exists(editor_oauth_token_path):
_create_editor_oauth_token()
var editor_oauth_setting_path: String = _editor_oauth_setting_property.get_val()
if editor_oauth_setting_path:
if not FileAccess.file_exists(editor_oauth_setting_path):
_create_editor_oauth_setting()
var scope_path: String = get_scope_path()
if scope_path and FileAccess.file_exists(scope_path):
scopes = load(scope_path)
static func save_editor_oauth_setting() -> void:
ResourceSaver.save(editor_oauth_setting)
static func save_editor_oauth_token() -> void:
ResourceSaver.save(editor_oauth_token)
static func get_scope_path() -> String:
return _scope_property.get_val()
static func set_scope_path(path: String) -> void:
_scope_property.set_val(path)
static func is_valid() -> bool:
var token_valid = is_instance_valid(editor_oauth_token) && editor_oauth_token.is_token_valid()
var setting_valid = is_instance_valid(editor_oauth_setting) && editor_oauth_setting.is_valid()
return token_valid && setting_valid
static func _create_editor_oauth_token() -> void:
var path: String = _editor_oauth_token_property.get_val()
var token = OAuthToken.new()
token._identifier = "EditorToken"
token.take_over_path(path)
editor_oauth_token = token
save_editor_oauth_token()
static func _create_editor_oauth_setting() -> void:
var path: String = _editor_oauth_setting_property.get_val()
var setting = TwitchAuth.create_default_oauth_setting()
setting.take_over_path(path)
editor_oauth_setting = setting
save_editor_oauth_setting()