diff --git a/main_win.gd b/main_win.gd index ee404b39..e0121dcb 100644 --- a/main_win.gd +++ b/main_win.gd @@ -1,6 +1,7 @@ extends Control @onready var controls: VBoxContainer = %Controls +@onready var ui_bar: HBoxContainer = %UIBar @onready var auth_twitch: Button = %AuthTwitch @onready var auth_bot: Button = %AuthBot @onready var bot_hello: Button = %BotHello @@ -17,26 +18,10 @@ extends Control # Called when the node enters the scene tree for the first time. func _ready() -> void: Globals.twitcher = twitcher - auto_connect.button_pressed = Globals.settings.auto_connect - auth_twitch.pressed.connect(_handle_twitch_auth) - auth_bot.pressed.connect(_handle_bot_auth) - bot_hello.pressed.connect(_handle_bot_hello) - twitcher.chat.message_received.connect(_handle_chat_message) - get_window().mouse_entered.connect(func(): controls.visible = true) - get_window().mouse_exited.connect(func(): controls.visible = false) - exit_overlay.pressed.connect(func(): get_tree().quit()) - auto_connect.pressed.connect(func(): Globals.settings.auto_connect = auto_connect.button_pressed) var res := twitcher.load_streamer_token() if res == TwitcherExtended.AuthStatus.UNAUTHORIZED: return - - if auto_connect.button_pressed: - _handle_twitch_auth() - res = twitcher.load_chatbot_token() - if res == TwitcherExtended.AuthStatus.UNAUTHORIZED: - return - _handle_bot_auth() func _handle_twitch_auth() -> void: await twitcher.setup_streamer() @@ -47,82 +32,3 @@ func _handle_bot_auth() -> void: await twitcher.setup_chatbot() if twitcher.is_chatbot_authed(): auth_bot.disabled = true - -func _handle_bot_hello() -> void: - twitcher.send_message("Hello") - -func _handle_chat_message(message: TwitchChatMessage) -> void: - var badges_dict: Dictionary = await message.get_badges(twitcher.media) - var badges: Array[SpriteFrames] = [] - badges.assign(badges_dict.values()) - - var result_message: String = "" - var badge_id: int = 0 - for badge: SpriteFrames in badges: - result_message += "[sprite id='0-%s']%s[/sprite]" % [badge_id, badge.resource_path] - badge_id += 1 - result_message += "[color=%s]%s[/color]: " % [message.get_color(), message.chatter_user_name] - - match message.message_type: - # The default message style - TwitchChatMessage.MessageType.text: - result_message = await show_text(message, result_message) - - # When someone is using the gigantified emotes - TwitchChatMessage.MessageType.power_ups_gigantified_emote: - result_message = await show_text(message, result_message, 3) - - # When someone is using the hilight my message from channel points rewards - TwitchChatMessage.MessageType.channel_points_highlighted: - result_message += "[bgcolor=#755ebc][color=#e9fffb]" - result_message = await show_text(message, result_message) - result_message += "[/color][/bgcolor]" - - # When someone is using teh message effect bit reward: - TwitchChatMessage.MessageType.power_ups_message_effect: - result_message += "[shake rate=20.0 level=5 connected=1]" - result_message = await show_text(message, result_message) - result_message += "[/shake]" - - append_history(result_message) - -func append_history(message: String) -> void: - var msg: RichTextLabel = RichTextLabel.new() - msg.bbcode_enabled = true - msg.fit_content = true - - var effect: SpriteFrameEffect = SpriteFrameEffect.new() - msg.install_effect(effect) - chat_list.add_child(msg) - - message = effect.prepare_message(message, msg) - msg.text = "%s %s" % [_get_time(), message] - - await get_tree().process_frame - var rect := msg.get_rect() - chat_history.scroll_vertical = roundi(rect.position.y + rect.size.y) - -func _get_time() -> String: - var time_data: Dictionary = Time.get_time_dict_from_system() - return "%02d:%02d" % [time_data["hour"], time_data["minute"]] - - -func show_text(message: TwitchChatMessage, current_text: String, emote_scale: int = 1) -> String: - await message.load_emotes_from_fragment(twitcher.media) - - var fragment_id: int = 0 - for fragment: TwitchChatMessage.Fragment in message.message.fragments: - fragment_id += 1 - match fragment.type: - TwitchChatMessage.FragmentType.text: - current_text += fragment.text - TwitchChatMessage.FragmentType.cheermote: - var cheermote_scale: StringName = TwitchCheermoteDefinition.SCALE_MAP.get(emote_scale, TwitchCheermoteDefinition.SCALE_1) - var cheermote: SpriteFrames = await fragment.cheermote.get_sprite_frames(twitcher.media, cheermote_scale) - current_text += "[sprite id='f-%s']%s[/sprite]" % [fragment_id, cheermote.resource_path] - TwitchChatMessage.FragmentType.emote: - var emote: SpriteFrames = await fragment.emote.get_sprite_frames(twitcher.media, emote_scale) - current_text += "[sprite id='f-%s']%s[/sprite]" % [fragment_id, emote.resource_path] - TwitchChatMessage.FragmentType.mention: - current_text += "[color=%s]%s[/color]" % ["#00a0b6", fragment.mention.user_name] - return current_text diff --git a/main_win.tscn b/main_win.tscn index 300e03a0..a5961113 100644 --- a/main_win.tscn +++ b/main_win.tscn @@ -52,55 +52,6 @@ grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_bgu0c") -[node name="Controls" type="VBoxContainer" parent="." unique_id=1372792566] -unique_name_in_owner = true -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="HBoxContainer" type="HBoxContainer" parent="Controls" unique_id=1218191491] -layout_mode = 2 - -[node name="AuthTwitch" type="Button" parent="Controls/HBoxContainer" unique_id=262058607] -unique_name_in_owner = true -layout_mode = 2 -text = "Auth Twitch" - -[node name="AuthBot" type="Button" parent="Controls/HBoxContainer" unique_id=64725557] -unique_name_in_owner = true -layout_mode = 2 -text = "Auth Bot" - -[node name="BotHello" type="Button" parent="Controls/HBoxContainer" unique_id=353165911] -unique_name_in_owner = true -layout_mode = 2 -text = "Bot Send Hello" - -[node name="AutoConnect" type="CheckBox" parent="Controls/HBoxContainer" unique_id=171499895] -unique_name_in_owner = true -layout_mode = 2 -text = "Auto-Connect" - -[node name="ExitOverlay" type="Button" parent="Controls/HBoxContainer" unique_id=655410314] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 10 -text = "Exit" - -[node name="ChatHistory" type="ScrollContainer" parent="Controls" unique_id=1443037902] -unique_name_in_owner = true -layout_mode = 2 -size_flags_vertical = 3 -horizontal_scroll_mode = 0 - -[node name="ChatList" type="VBoxContainer" parent="Controls/ChatHistory" unique_id=895834768] -unique_name_in_owner = true -layout_mode = 2 -size_flags_horizontal = 3 - [node name="TwitcherExtended" type="Node" parent="." unique_id=1225944144 node_paths=PackedStringArray("service", "chat", "bot", "chatbot_auth", "eventsub", "api", "auth", "media")] script = ExtResource("2_x1kh3") streamer_token = ExtResource("3_vhvw8")