Initial Commit

Initial commit of Code Base.
This commit is contained in:
Mario Steele 2025-06-12 14:31:14 -05:00
parent 293b1213e1
commit c11a4ebbc2
653 changed files with 36893 additions and 1 deletions

View file

@ -0,0 +1,139 @@
@tool
extends MarginContainer
enum UseCase {
Overlay, Game, Other
}
const PRESET_GAME_SCOPES = preload("res://addons/twitcher/auth/preset_game_scopes.tres")
const PRESET_OVERLAY_SCOPES = preload("res://addons/twitcher/auth/preset_overlay_scopes.tres")
const TwitchScopeProperty = preload("res://addons/twitcher/editor/inspector/twitch_scope_property.gd")
const TwitchEditorSettings = preload("res://addons/twitcher/editor/twitch_editor_settings.gd")
const TwitchTweens = preload("res://addons/twitcher/editor/twitch_tweens.gd")
@export var choose_button_group: ButtonGroup
@onready var overlay: CheckBox = %Overlay
@onready var game: CheckBox = %Game
@onready var something_else: CheckBox = %SomethingElse
@onready var scope_list: RichTextLabel = %ScopeList
@onready var to_documentation: Button = %ToDocumentation
@onready var scope_file_select: FileSelect = %ScopeFileSelect
@onready var scopes_container: HBoxContainer = %Scopes
@onready var advanced_edit: CheckButton = %AdvancedEdit
@onready var other_scope_options: PanelContainer = %OtherScopeOptions
@onready var extended_scope_info: PanelContainer = %ExtendedScopeInfo
@onready var save: Button = %Save
var other_scope_property: TwitchScopeProperty = TwitchScopeProperty.new()
var scopes: TwitchOAuthScopes: set = update_scopes
var has_changes: bool:
set(val):
has_changes = val
changed.emit()
save.text = save.text.trim_suffix(" (unsaved changes)")
if has_changes: save.text += " (unsaved changes)"
signal changed
signal use_case_changed(use_case: UseCase)
func _ready() -> void:
to_documentation.pressed.connect(_on_to_documentation_pressed)
choose_button_group.pressed.connect(_on_choose)
scope_file_select.file_selected.connect(_on_scope_file_selected)
save.pressed.connect(_on_save_pressed)
other_scope_property.scope_selected.connect(_on_scope_info)
advanced_edit.toggled.connect(_on_toggle_advanced_edit)
scopes_container.hide()
extended_scope_info.hide()
extended_scope_info.add_child(other_scope_property)
# Reset radio buttons cause it's a tool script and the radio button stay and won't throw another signal otherwise
game.set_pressed_no_signal(false)
overlay.set_pressed_no_signal(false)
something_else.set_pressed_no_signal(false)
scope_file_select.path = TwitchEditorSettings.get_scope_path()
match TwitchEditorSettings.project_preset:
TwitchEditorSettings.PRESET_GAME:
game.button_pressed = true
TwitchEditorSettings.PRESET_OVERLAY:
overlay.button_pressed = true
TwitchEditorSettings.PRESET_OTHER:
something_else.button_pressed = true
# Needs to be resetted cause the radio reset will change the has_changges to true
has_changes = false
func _on_scope_file_selected(path: String) -> void:
has_changes = true
if FileAccess.file_exists(path):
var resource = load(path)
if resource is OAuthScopes: scopes = resource
else: OS.alert("The selected scope is not a scope file, it will be overwritten!")
func _on_toggle_advanced_edit(toggled_on: bool) -> void:
extended_scope_info.visible = toggled_on
func _on_choose(button: BaseButton) -> void:
match button:
overlay:
use_case_changed.emit(UseCase.Overlay)
scopes = PRESET_OVERLAY_SCOPES.duplicate(true)
advanced_edit.button_pressed = false
TwitchEditorSettings.project_preset = TwitchEditorSettings.PRESET_OVERLAY
game:
use_case_changed.emit(UseCase.Game)
scopes = PRESET_GAME_SCOPES.duplicate(true)
advanced_edit.button_pressed = false
TwitchEditorSettings.project_preset = TwitchEditorSettings.PRESET_GAME
something_else:
use_case_changed.emit(UseCase.Other)
scopes = TwitchOAuthScopes.new()
advanced_edit.button_pressed = true
TwitchEditorSettings.project_preset = TwitchEditorSettings.PRESET_OTHER
_show_selected_scopes()
has_changes = true
func _on_scope_info(scope: TwitchScope.Definition) -> void:
_show_selected_scopes()
func _on_save_pressed() -> void:
var s_path = scope_file_select.path
scopes.take_over_path(s_path)
ResourceSaver.save(scopes, s_path)
TwitchEditorSettings.set_scope_path(s_path)
TwitchTweens.flash(save, Color.GREEN)
has_changes = false
func _show_selected_scopes() -> void:
scopes_container.show()
if scopes.used_scopes.is_empty():
scope_list.text = "[i]No scopes selected yet[/i]"
return
var scope_description: String = ""
for scope_name: StringName in scopes.used_scopes:
var scope: TwitchScope.Definition = TwitchScope.SCOPE_MAP[scope_name]
scope_description += "[b]%s[/b] - %s\n\n" % [scope.value, scope.description]
scope_list.text = scope_description
func _on_to_documentation_pressed() -> void:
OS.shell_open("https://dev.twitch.tv/docs/authentication/scopes/")
func update_scopes(val: TwitchOAuthScopes) -> void:
scopes = val
other_scope_property.set_object_and_property(scopes, "")
other_scope_property.update_property()
_show_selected_scopes()