StreamOverlay/UI/Controls/general_panel.gd
Mario Steele ba537bc791 Updated GeneralPanel
Updated UI to have Section for Display
Added logic to handle Authorizing Streamer and Bot.
Added logic to handle Connecting to OBS.
Added Loading/Saving Logic for other settings in the General Panel.
2026-03-02 02:17:42 -06:00

90 lines
3.4 KiB
GDScript

extends PanelContainer
class_name GeneralPanel
const EYE_SLASH = preload("uid://csrvryk82h6w8")
const EYE = preload("uid://baex3uuhl827k")
var test: Color = Color.BLUE
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
%ObsPass.right = EYE_SLASH
%ObsPass.secret = true
%ObsPass.right_button_pressed.connect(_handle_password_show)
%DisplayScreen.item_selected.connect(func(x): Globals.main_win.get_window().current_screen = x)
%UseScreen.pressed.connect(func():
Globals.main_win.get_window().current_screen = ProjectSettings.get_setting("display/window/size/initial_screen")
%DisplayScreen.select(Globals.main_win.get_window().current_screen)
%DisplayScreen.disabled = !%UseScreen.button_pressed
)
%AuthStreamer.pressed.connect(func(): %AuthStreamer.disabled = await Globals.twitcher.authorize_streamer())
%AuthBot.pressed.connect(func(): %AuthBot.disabled = await Globals.twitcher.authorize_chatbot())
%ConnectObs.pressed.connect(func(): ObsManager.connect_to_host())
_load_settings()
func _load_settings() -> void:
%ObsHost.text = Globals.settings.obs_host
%ObsPort.value = Globals.settings.obs_port
%ObsPass.text = Globals.settings.obs_pass
%AutoTwitch.button_pressed = Globals.settings.auto_connect_twitch
%AutoObs.button_pressed = Globals.settings.auto_connect_obs
%ObsRecon.button_pressed = Globals.settings.obs_reconnect
%ConnectTwitch.disabled = Globals.twitcher.eventsub.is_open
%ConnectTwitch.text = "Connect Twitch" if not Globals.twitcher.eventsub.is_open else "Disconnect Twitch"
for scr in DisplayServer.get_screen_count():
%DisplayScreen.add_item("Monitor %d" % (scr + 1))
if Globals.settings.display_screen == -1:
%UseScreen.button_pressed = false
%DisplayScreen.disabled = true
else:
%UseScreen.button_pressed = true
%DisplayScreen.select(Globals.settings.display_screen)
%DisplayScreen.disabled = false
if not Globals.twitcher.streamer_token_loaded:
var res := await Globals.twitcher.load_streamer_token()
if res == TwitcherExtended.AuthStatus.UNAUTHORIZED:
%AuthStreamer.disabled = false
else:
%AuthStreamer.disabled = true
%StreamerName.text = Globals.twitcher.streamer_user.display_name
else:
%AuthStreamer.disabled = true
%StreamerName.text = Globals.twitcher.streamer_user.display_name
if not Globals.twitcher.chatbot_token_loaded:
var res := await Globals.twitcher.load_chatbot_token()
if res == TwitcherExtended.AuthStatus.UNAUTHORIZED:
%AuthBot.disabled = false
else:
%AuthBot.disabled = true
%BotName.text = Globals.twitcher.bot_user.display_name
else:
%AuthBot.disabled = true
%BotName.text = Globals.twitcher.bot_user.display_name
func apply_settings() -> void:
Globals.settings.obs_host = %ObsHost.text
Globals.settings.obs_port = floori(%ObsPort.value)
Globals.settings.obs_pass = %ObsPass.text
Globals.settings.auto_connect_twitch = %AutoTwitch.button_pressed
Globals.settings.auto_connect_obs = %AutoObs.button_pressed
Globals.settings.obs_reconnect = %ObsRecon.button_pressed
if %UseScreen.button_pressed:
Globals.settings.display_screen = %DisplayScreen.selected
else:
Globals.settings.display_screen = -1
Globals.main_win.get_window().current_screen = ProjectSettings.get_setting("display/window/size/initial_screen")
func _handle_password_show() -> void:
if %ObsPass.right == EYE_SLASH:
%ObsPass.right = EYE
%ObsPass.secret = false
else:
%ObsPass.right = EYE_SLASH
%ObsPass.secret = true
func _exit_tree() -> void:
apply_settings()