Re-Organizing Structure Layout
Restructuring project to proper directory layout.
This commit is contained in:
parent
38518a1fcd
commit
1340eba1cb
10806 changed files with 16774 additions and 16774 deletions
|
|
@ -1,13 +1,13 @@
|
|||
[gd_scene format=3 uid="uid://qu7opwfv2ejy"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bb2asei1pibev" path="res://UI/assets/bootstrap/arrow-repeat.png" id="1_b8obq"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb2asei1pibev" path="res://assets/bootstrap/arrow-repeat.png" id="1_b8obq"]
|
||||
[ext_resource type="Script" uid="uid://c0gqgv8ixdudx" path="res://UI/Controls/game_entry.gd" id="1_eo48f"]
|
||||
[ext_resource type="Script" uid="uid://chgufd1youdel" path="res://lib/games_info/steam_service.gd" id="1_lcnnc"]
|
||||
[ext_resource type="Texture2D" uid="uid://eybcntflwjpx" path="res://UI/assets/bootstrap/megaphone.svg" id="2_7t4x7"]
|
||||
[ext_resource type="Texture2D" uid="uid://eybcntflwjpx" path="res://assets/bootstrap/megaphone.svg" id="2_7t4x7"]
|
||||
[ext_resource type="Script" uid="uid://cyef5m8x5f7k6" path="res://lib/games_info/itch_io_service.gd" id="2_eo48f"]
|
||||
[ext_resource type="Texture2D" uid="uid://pur2a3t6vlfb" path="res://UI/assets/simple/steam.svg" id="3_lcnnc"]
|
||||
[ext_resource type="Texture2D" uid="uid://bw7yr2aonagxc" path="res://UI/assets/font_awesome/itch-io.svg" id="4_eo48f"]
|
||||
[ext_resource type="Texture2D" uid="uid://i8rcx5bhkd5x" path="res://UI/assets/bootstrap/trash.svg" id="5_b1mm0"]
|
||||
[ext_resource type="Texture2D" uid="uid://pur2a3t6vlfb" path="res://assets/simple/steam.svg" id="3_lcnnc"]
|
||||
[ext_resource type="Texture2D" uid="uid://bw7yr2aonagxc" path="res://assets/font_awesome/itch-io.svg" id="4_eo48f"]
|
||||
[ext_resource type="Texture2D" uid="uid://i8rcx5bhkd5x" path="res://assets/bootstrap/trash.svg" id="5_b1mm0"]
|
||||
|
||||
[node name="GameEntry" type="PanelContainer" unique_id=2093938454]
|
||||
offset_right = 8.0
|
||||
|
|
|
|||
|
|
@ -1,90 +0,0 @@
|
|||
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()
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://cksum4dhxw4t3
|
||||
|
|
@ -1,256 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://diloovqtdspia"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cksum4dhxw4t3" path="res://UI/Controls/general_panel.gd" id="1_oafot"]
|
||||
[ext_resource type="Texture2D" uid="uid://cnu6l3x820i82" path="res://UI/assets/bootstrap/eye-slash.png" id="1_rbtts"]
|
||||
[ext_resource type="Script" uid="uid://ch7qf8iy31pfy" path="res://lib/UI/line_edit_with_buttons.gd" id="2_oookw"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_oookw"]
|
||||
content_margin_left = 4.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 35.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0, 0, 0, 0.6)
|
||||
corner_radius_top_left = 3
|
||||
corner_radius_top_right = 3
|
||||
corner_radius_bottom_right = 3
|
||||
corner_radius_bottom_left = 3
|
||||
corner_detail = 5
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7naex"]
|
||||
content_margin_left = 4.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 35.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.1, 0.1, 0.1, 0.3)
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0, 0, 0, 0.3)
|
||||
corner_radius_top_left = 3
|
||||
corner_radius_top_right = 3
|
||||
corner_radius_bottom_right = 3
|
||||
corner_radius_bottom_left = 3
|
||||
corner_detail = 5
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_en626"]
|
||||
content_margin_left = 4.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 35.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(1, 1, 1, 0.75)
|
||||
draw_center = false
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
corner_radius_top_left = 3
|
||||
corner_radius_top_right = 3
|
||||
corner_radius_bottom_right = 3
|
||||
corner_radius_bottom_left = 3
|
||||
corner_detail = 5
|
||||
expand_margin_left = 2.0
|
||||
expand_margin_top = 2.0
|
||||
expand_margin_right = 2.0
|
||||
expand_margin_bottom = 2.0
|
||||
|
||||
[node name="General" type="PanelContainer" unique_id=1071328377]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_type_variation = &"TabPanel"
|
||||
script = ExtResource("1_oafot")
|
||||
metadata/_tab_index = 0
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=186780433]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 10
|
||||
theme_override_constants/margin_right = 10
|
||||
theme_override_constants/margin_bottom = 10
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" unique_id=1977184294]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer" unique_id=1662003636]
|
||||
layout_mode = 2
|
||||
text = "Twitch Connection"
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=257475890]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="GridContainer2" type="GridContainer" parent="MarginContainer/VBoxContainer" unique_id=1782409199]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
columns = 5
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=369397407]
|
||||
layout_mode = 2
|
||||
text = "Streamer"
|
||||
|
||||
[node name="AuthStreamer" type="Button" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=1511405430]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Authorize"
|
||||
expand_icon = true
|
||||
|
||||
[node name="Control" type="Control" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=1874914415]
|
||||
custom_minimum_size = Vector2(80, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=1521756670]
|
||||
layout_mode = 2
|
||||
text = "Streamer Name:"
|
||||
|
||||
[node name="StreamerName" type="Label" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=59070065]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "None"
|
||||
|
||||
[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=965481211]
|
||||
layout_mode = 2
|
||||
text = "Bot"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="AuthBot" type="Button" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=203881381]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Authorize"
|
||||
|
||||
[node name="Control2" type="Control" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=2068280804]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label5" type="Label" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=857371567]
|
||||
layout_mode = 2
|
||||
text = "Bot Name:"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="BotName" type="Label" parent="MarginContainer/VBoxContainer/GridContainer2" unique_id=170288312]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "None"
|
||||
|
||||
[node name="Control" type="Control" parent="MarginContainer/VBoxContainer" unique_id=2050811969]
|
||||
custom_minimum_size = Vector2(0, 20)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer" unique_id=1660842123]
|
||||
layout_mode = 2
|
||||
text = "OBS Connection"
|
||||
|
||||
[node name="HSeparator2" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=1850227217]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer" unique_id=46738562]
|
||||
layout_mode = 2
|
||||
columns = 2
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=1864377551]
|
||||
layout_mode = 2
|
||||
text = "Host:"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="ObsHost" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=1257620413]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(240, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=527107935]
|
||||
layout_mode = 2
|
||||
text = "Port:"
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="ObsPort" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=1323500208]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
min_value = 1023.0
|
||||
max_value = 65535.0
|
||||
value = 4455.0
|
||||
alignment = 2
|
||||
|
||||
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=800471885]
|
||||
layout_mode = 2
|
||||
text = "Password:"
|
||||
|
||||
[node name="ObsPass" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=170190217]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_styles/normal = SubResource("StyleBoxFlat_oookw")
|
||||
theme_override_styles/read_only = SubResource("StyleBoxFlat_7naex")
|
||||
theme_override_styles/focus = SubResource("StyleBoxFlat_en626")
|
||||
secret = true
|
||||
script = ExtResource("2_oookw")
|
||||
right = ExtResource("1_rbtts")
|
||||
metadata/_custom_type_script = "uid://ch7qf8iy31pfy"
|
||||
|
||||
[node name="Control" type="Control" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=1104560246]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ObsRecon" type="CheckBox" parent="MarginContainer/VBoxContainer/GridContainer" unique_id=1392024112]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Auto Reconnect"
|
||||
|
||||
[node name="Control2" type="Control" parent="MarginContainer/VBoxContainer" unique_id=1368253689]
|
||||
custom_minimum_size = Vector2(0, 20)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer" unique_id=971642918]
|
||||
layout_mode = 2
|
||||
text = "Startup"
|
||||
|
||||
[node name="HSeparator3" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=1963662250]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="GridContainer3" type="GridContainer" parent="MarginContainer/VBoxContainer" unique_id=364750310]
|
||||
layout_mode = 2
|
||||
columns = 2
|
||||
|
||||
[node name="AutoTwitch" type="CheckBox" parent="MarginContainer/VBoxContainer/GridContainer3" unique_id=120315074]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(260, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
text = "Auto-Connect Twitch"
|
||||
|
||||
[node name="ConnectTwitch" type="Button" parent="MarginContainer/VBoxContainer/GridContainer3" unique_id=1912102897]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(240, 0)
|
||||
layout_mode = 2
|
||||
text = "Connect Twitch"
|
||||
|
||||
[node name="AutoObs" type="CheckBox" parent="MarginContainer/VBoxContainer/GridContainer3" unique_id=2046121184]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(260, 0)
|
||||
layout_mode = 2
|
||||
text = "Auto Connect OBS"
|
||||
|
||||
[node name="ConnectObs" type="Button" parent="MarginContainer/VBoxContainer/GridContainer3" unique_id=1488421279]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(240, 0)
|
||||
layout_mode = 2
|
||||
text = "Connect OBS"
|
||||
|
||||
[node name="Control3" type="Control" parent="MarginContainer/VBoxContainer" unique_id=292441254]
|
||||
custom_minimum_size = Vector2(0, 20)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label4" type="Label" parent="MarginContainer/VBoxContainer" unique_id=1102442861]
|
||||
layout_mode = 2
|
||||
text = "Display"
|
||||
|
||||
[node name="HSeparator4" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=2077615507]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=1279240869]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="UseScreen" type="CheckBox" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=480029198]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Use Specific Screen:"
|
||||
|
||||
[node name="DisplayScreen" type="OptionButton" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=151546822]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
extends PanelContainer
|
||||
|
||||
@onready var user_games: UserGamesPanel = %UserGames
|
||||
@onready var tui := %TwitchUserInfo
|
||||
@onready var up := %UserPromo
|
||||
|
||||
|
||||
var chatter: Chatter:
|
||||
set(value):
|
||||
chatter = value
|
||||
if not value:
|
||||
tui.clear()
|
||||
up.chatter = value
|
||||
user_games.clear()
|
||||
return
|
||||
if tui:
|
||||
tui.populate_from_chatter(chatter)
|
||||
if up:
|
||||
up.chatter = value
|
||||
if user_games:
|
||||
user_games.chatter = value
|
||||
|
||||
func _ready() -> void:
|
||||
tui.extra_expanding.connect(func(x): if x: up.visible = false)
|
||||
tui.extra_expanded.connect(func(x): if not x: up.visible = true)
|
||||
resized.connect(func():
|
||||
var width := int(size.x / 2)
|
||||
user_games.splitter.split_offsets[0] = width
|
||||
)
|
||||
tui.populate_from_chatter(chatter)
|
||||
up.chatter = chatter
|
||||
user_games.chatter = chatter
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://bbyomfy4iqbq3
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://d3fhwrt28r08x"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bk7elsy5s3equ" path="res://UI/Controls/twitch_user_info.tscn" id="1_bbob4"]
|
||||
[ext_resource type="Script" uid="uid://bbyomfy4iqbq3" path="res://UI/Controls/internal_twitch_user_info.gd" id="1_l8fl7"]
|
||||
[ext_resource type="PackedScene" uid="uid://cadil3rnqh61e" path="res://UI/Controls/user_promo.tscn" id="2_l8fl7"]
|
||||
[ext_resource type="PackedScene" uid="uid://cojuxefo7cryj" path="res://UI/Controls/user_games.tscn" id="4_h7tf2"]
|
||||
|
||||
[node name="InternalTwitchUserInfo" type="PanelContainer" unique_id=1986869556]
|
||||
offset_right = 1346.0
|
||||
offset_bottom = 536.0
|
||||
theme_type_variation = &"TabPanel"
|
||||
script = ExtResource("1_l8fl7")
|
||||
metadata/_tab_index = 0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=92971307]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=515716981]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TwitchUserInfo" parent="VBoxContainer/HBoxContainer" unique_id=1944732530 instance=ExtResource("1_bbob4")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
|
||||
[node name="UserPromo" parent="VBoxContainer/HBoxContainer" unique_id=1364169576 instance=ExtResource("2_l8fl7")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
|
||||
[node name="UserGames" parent="VBoxContainer" unique_id=2022365407 instance=ExtResource("4_h7tf2")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
extends PanelContainer
|
||||
|
||||
var chatter: Chatter:
|
||||
set(value):
|
||||
chatter = value
|
||||
if not chatter:
|
||||
live = null
|
||||
return
|
||||
live = Globals.live_streamers[chatter.twitch_id] if chatter.twitch_id in Globals.live_streamers.keys() else null
|
||||
_populate_view()
|
||||
|
||||
var live: TwitchStream
|
||||
|
||||
var _ticks: int = 0
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
%StreamTitle.pressed.connect(_open_stream)
|
||||
%RaidCurrentUser.pressed.connect(_raid_stream)
|
||||
if not chatter: return
|
||||
if not live and chatter.twitch_id in Globals.live_streamers.keys():
|
||||
live = Globals.live_streamers[chatter.twitch_id]
|
||||
_populate_view()
|
||||
|
||||
func _populate_view() -> void:
|
||||
if not live:
|
||||
set_process(false)
|
||||
return
|
||||
set_process(true)
|
||||
%StreamTitle.text = live.title
|
||||
%StreamViewerCount.text = str(live.viewer_count)
|
||||
var url := live.thumbnail_url.format({"width": 640, "height": 360})
|
||||
var img = await Globals.twitcher.media.load_image(url)
|
||||
%StreamThumbnail.texture = ImageTexture.create_from_image(img)
|
||||
|
||||
func _process(_d: float) -> void:
|
||||
if not live:
|
||||
set_process(false)
|
||||
return
|
||||
|
||||
_ticks += 1
|
||||
if _ticks < 30: return
|
||||
_ticks = 0
|
||||
|
||||
var system_unix = Time.get_unix_time_from_system()
|
||||
var stream_start_unix = Time.get_unix_time_from_datetime_string(live.started_at)
|
||||
var elapsed = Time.get_datetime_string_from_unix_time((system_unix - stream_start_unix), true)
|
||||
|
||||
%StreamTime.text = elapsed.split(" ")[1]
|
||||
|
||||
func _open_stream() -> void:
|
||||
if not live: return
|
||||
OS.shell_open("https://twitch.tv/%s" % live.user_login)
|
||||
|
||||
func _raid_stream() -> void:
|
||||
if not live: return
|
||||
pass
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://cdtfvedghei5f
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://bipoye4ww4ua6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cdtfvedghei5f" path="res://UI/Controls/internal_user_live.gd" id="1_rl2q8"]
|
||||
[ext_resource type="Texture2D" uid="uid://b3372gsnwqsyn" path="res://UI/assets/bootstrap/twitch.svg" id="1_sw5jj"]
|
||||
[ext_resource type="Texture2D" uid="uid://bu2juj2beyws7" path="res://UI/assets/twitch_user_profile_pic.png" id="2_rl2q8"]
|
||||
|
||||
[node name="InternalUserLive" type="PanelContainer" unique_id=17956466]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_rl2q8")
|
||||
metadata/_tab_index = 1
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1170164100]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="StreamTitle" type="Button" parent="VBoxContainer" unique_id=1072998029]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=12650367]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="StreamThumbnail" type="TextureRect" parent="VBoxContainer/HBoxContainer" unique_id=641456832]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="UserChat" type="PanelContainer" parent="VBoxContainer/HBoxContainer" unique_id=1609959534]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/UserChat" unique_id=471477121]
|
||||
custom_minimum_size = Vector2(300, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Chat" type="PanelContainer" parent="VBoxContainer/HBoxContainer/UserChat/VBoxContainer" unique_id=2018394431]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/HBoxContainer/UserChat/VBoxContainer/Chat" unique_id=1349693918]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ChatHistory" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/UserChat/VBoxContainer/Chat/ScrollContainer" unique_id=1839863005]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Message" type="LineEdit" parent="VBoxContainer/HBoxContainer/UserChat/VBoxContainer" unique_id=1978478528]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
placeholder_text = "chat"
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer" unique_id=1134033714]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/PanelContainer" unique_id=411231899]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="RaidCurrentUser" type="Button" parent="VBoxContainer/PanelContainer/HBoxContainer" unique_id=288716491]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(250, 0)
|
||||
layout_mode = 2
|
||||
text = "Raid!"
|
||||
icon = ExtResource("1_sw5jj")
|
||||
expand_icon = true
|
||||
|
||||
[node name="ChatLiveSteramer" type="LineEdit" parent="VBoxContainer/PanelContainer/HBoxContainer" unique_id=789542500]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="StreamTime" type="Label" parent="VBoxContainer/PanelContainer/HBoxContainer" unique_id=969178063]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "00:15:42"
|
||||
|
||||
[node name="Icon" type="TextureRect" parent="VBoxContainer/PanelContainer/HBoxContainer" unique_id=521936560]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_rl2q8")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="StreamViewerCount" type="Label" parent="VBoxContainer/PanelContainer/HBoxContainer" unique_id=20195332]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "15"
|
||||
|
|
@ -1,167 +0,0 @@
|
|||
@tool
|
||||
extends PanelContainer
|
||||
class_name ItchIOAppInfo
|
||||
|
||||
@export var enable_logger: bool = true
|
||||
@warning_ignore("unused_private_class_variable")
|
||||
@export_tool_button("Search", "Button") var _search = tool_search
|
||||
@export var tool_app_url: String
|
||||
|
||||
#region Test Apps
|
||||
enum ItchIOGames{
|
||||
RIDICULOUS_SHOPPING,
|
||||
THE_MAZE_AND_THE_BEAST,
|
||||
THE_SUNNYSIDE_MOTEL_IN_HUTTSVILLE_ARKANSAS,
|
||||
VOID_DRIVE_THROUGH,
|
||||
POTION_QUEST,
|
||||
SUPER_ROLL_OUT,
|
||||
COVINOS_ROTTEN_FRUIT,
|
||||
AUTENTIC_ITALIAN_PIZZA,
|
||||
}
|
||||
const ITCHIO_APP_URLS: Dictionary[ItchIOGames, String] = {
|
||||
ItchIOGames.RIDICULOUS_SHOPPING: "https://uff.itch.io/ridiculous-shopping",
|
||||
ItchIOGames.THE_MAZE_AND_THE_BEAST: "https://uff.itch.io/the-maze-and-the-beast",
|
||||
ItchIOGames.THE_SUNNYSIDE_MOTEL_IN_HUTTSVILLE_ARKANSAS: "https://fgaha56.itch.io/the-sunnyside-motel-in-huttsville-arkansas",
|
||||
ItchIOGames.VOID_DRIVE_THROUGH: "https://fgaha56.itch.io/void-drive-through",
|
||||
ItchIOGames.POTION_QUEST: "https://vex667.itch.io/potion-quest",
|
||||
ItchIOGames.SUPER_ROLL_OUT: "https://seano4d.itch.io/super-roll-out",
|
||||
ItchIOGames.COVINOS_ROTTEN_FRUIT: "https://jerem-watts.itch.io/gorley-cleans-up-covinos-rotten-fruit",
|
||||
ItchIOGames.AUTENTIC_ITALIAN_PIZZA: "https://trevron.itch.io/authentic-italian-pizza",
|
||||
}
|
||||
@export var selected_itchio_game: ItchIOGames:
|
||||
set(val):
|
||||
selected_itchio_game = val
|
||||
if is_node_ready(): get_app_info(ITCHIO_APP_URLS[selected_itchio_game])
|
||||
@export var test_data: ItchIOAppData
|
||||
#endregion
|
||||
|
||||
const IMG_VALID_FORMATS = ["png", "jpeg", "jpg", "bmp", "webp", "svg"]
|
||||
|
||||
static var _log: TwitchLogger = TwitchLogger.new(&"ItchAppInfo")
|
||||
var data: ItchIOAppData:
|
||||
set(val):
|
||||
data = val
|
||||
if is_node_ready():
|
||||
%VisitPage.disabled = data == null
|
||||
|
||||
var _save_data: ItchIOAppData
|
||||
|
||||
func _ready() -> void:
|
||||
%Clear.pressed.connect(clear)
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
clear()
|
||||
|
||||
func tool_search() -> void:
|
||||
if !Engine.is_editor_hint():
|
||||
return
|
||||
if tool_app_url:
|
||||
get_app_info(tool_app_url)
|
||||
|
||||
func get_app_info(app_url: String) -> ItchIOAppData:
|
||||
var _data: ItchIOAppData = await %ItchIOService.get_itch_app_data(app_url)
|
||||
if not _data:
|
||||
return null
|
||||
|
||||
display_app_info(_data)
|
||||
if Engine.is_editor_hint():
|
||||
test_data = _data
|
||||
return _data
|
||||
|
||||
func display_app_info(_data: ItchIOAppData) -> void:
|
||||
clear()
|
||||
data = _data
|
||||
if not data: return
|
||||
%AppSearch.text = str(data.url)
|
||||
%AppId.text = str(data.id)
|
||||
%GameName.text = data.title
|
||||
|
||||
var authors_string: String = ""
|
||||
for i: int in data.authors.size():
|
||||
var author_dic: Dictionary = data.authors[i]
|
||||
authors_string += "[b][url={url}]{name}[/url][/b]".format(author_dic)
|
||||
if i+1 < data.authors.size():
|
||||
authors_string += ", "
|
||||
|
||||
%AuthorName.text = "[i]by %s[/i]" % authors_string
|
||||
if data.cover_image:
|
||||
%CapsuleImage.texture = await load_texture_from_url(data.cover_image)
|
||||
if not data.screenshots_thumbnails.is_empty():
|
||||
var texture := await load_texture_from_url(data.screenshots_thumbnails.front())
|
||||
if texture:
|
||||
%Background.texture = texture
|
||||
|
||||
%lb_price_desc.visible = !data.is_free
|
||||
if data.is_free:
|
||||
%GamePrice.text = "[color=green][wave][b]Free to play![/b][/wave][/color]"
|
||||
else:
|
||||
%GamePrice.text = "[color=green][b]%s[/b][/color]" % data.price
|
||||
|
||||
%Description.text = data.description
|
||||
|
||||
func clear() -> void:
|
||||
data = null
|
||||
%AppSearch.text = ""
|
||||
%GameName.text = ""
|
||||
%AuthorName.text = ""
|
||||
%CapsuleImage.texture = null
|
||||
%Background.texture = null
|
||||
%ReleaseDate.text = ""
|
||||
%GamePrice.text = ""
|
||||
%h_price.hide()
|
||||
%Description.text = ""
|
||||
|
||||
func load_texture_from_url(url: String) -> ImageTexture:
|
||||
var http := HTTPRequest.new()
|
||||
add_child(http)
|
||||
var url_no_query: String = url.split("?")[0]
|
||||
var file_type = url_no_query.get_extension()
|
||||
if not file_type in ["png", "jpeg", "jpg", "bmp", "webp", "svg"]:
|
||||
file_type = "webp"
|
||||
|
||||
var _err = http.request(url)
|
||||
if _err != OK:
|
||||
print("_err != OK")
|
||||
return
|
||||
|
||||
var result: Array = await http.request_completed
|
||||
var _result: int = result[0]
|
||||
var response_code: int = result[1]
|
||||
var _headers: PackedStringArray = result[2]
|
||||
var buffer: PackedByteArray = result[3]
|
||||
if response_code != HTTPClient.RESPONSE_OK:
|
||||
print("response_code != HTTPClient.RESPONSE_OK")
|
||||
return
|
||||
|
||||
var tex_image := Image.new()
|
||||
match file_type:
|
||||
"png": tex_image.load_png_from_buffer(buffer)
|
||||
"jpeg", "jpg": tex_image.load_jpg_from_buffer(buffer)
|
||||
"bmp": tex_image.load_bmp_from_buffer(buffer)
|
||||
"webp": tex_image.load_webp_from_buffer(buffer)
|
||||
"svg": tex_image.load_svg_from_buffer(buffer)
|
||||
_:
|
||||
_log.e("%s format not recognized." % file_type)
|
||||
return null
|
||||
|
||||
var tex = ImageTexture.create_from_image(tex_image)
|
||||
http.queue_free()
|
||||
return tex
|
||||
|
||||
|
||||
func _notification(what: int) -> void:
|
||||
if not Engine.is_editor_hint(): return
|
||||
match what:
|
||||
NOTIFICATION_EDITOR_PRE_SAVE:
|
||||
_save_data = data
|
||||
#_save_capsule_texture = %CapsuleImage.texture
|
||||
#_save_bg_texture = %Background.texture
|
||||
#test_data = null
|
||||
clear()
|
||||
NOTIFICATION_EDITOR_POST_SAVE:
|
||||
test_data = _save_data
|
||||
display_app_info.call_deferred(_save_data)
|
||||
#%CapsuleImage.texture = _save_capsule_texture
|
||||
#%Background.texture = _save_bg_texture
|
||||
#_save_capsule_texture = null
|
||||
#_save_bg_texture = null
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://cc2x4u4d0qrg1
|
||||
|
|
@ -1,186 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://c0ahhupmdstxq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cc2x4u4d0qrg1" path="res://UI/Controls/itch_app_panel.gd" id="1_5d14s"]
|
||||
[ext_resource type="Script" uid="uid://cyef5m8x5f7k6" path="res://lib/games_info/itch_io_service.gd" id="2_15a0r"]
|
||||
[ext_resource type="Texture2D" uid="uid://bw7yr2aonagxc" path="res://UI/assets/font_awesome/itch-io.svg" id="3_xpc18"]
|
||||
[ext_resource type="Texture2D" uid="uid://4juherhkw8hp" path="res://addons/script_splitter/assets/Close.svg" id="4_g2paa"]
|
||||
[ext_resource type="FontFile" uid="uid://cx1a4aqqxhsrn" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Italic.ttf" id="5_itotn"]
|
||||
[ext_resource type="FontFile" uid="uid://b6u8lwedqawa7" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Bold italic.ttf" id="6_3efm0"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3mi7s"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 8.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 8.0
|
||||
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0.6215238, 0.6215239, 0.62152356, 1)
|
||||
border_blend = true
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_tbax8"]
|
||||
font_size = 24
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_s4fpn"]
|
||||
font = ExtResource("5_itotn")
|
||||
font_size = 20
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_cc846"]
|
||||
font = ExtResource("6_3efm0")
|
||||
font_size = 20
|
||||
|
||||
[node name="ItchAppPanel" type="PanelContainer" unique_id=691251029]
|
||||
offset_right = 616.0
|
||||
offset_bottom = 860.0
|
||||
script = ExtResource("1_5d14s")
|
||||
selected_itchio_game = 1
|
||||
|
||||
[node name="ItchIOService" type="Node" parent="." unique_id=1316795504]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("2_15a0r")
|
||||
metadata/_custom_type_script = "uid://cyef5m8x5f7k6"
|
||||
|
||||
[node name="Background" type="TextureRect" parent="." unique_id=1907032212]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="v" type="VBoxContainer" parent="." unique_id=279286858]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="m" type="MarginContainer" parent="v" unique_id=357824354]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="h" type="HBoxContainer" parent="v/m" unique_id=833665550]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="Icon" type="TextureRect" parent="v/m/h" unique_id=1660071037]
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
texture = ExtResource("3_xpc18")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="Title" type="Label" parent="v/m/h" unique_id=833828536]
|
||||
layout_mode = 2
|
||||
text = "itchIO App Info"
|
||||
|
||||
[node name="Clear" type="Button" parent="v/m" unique_id=1103305607]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 4
|
||||
icon = ExtResource("4_g2paa")
|
||||
icon_alignment = 1
|
||||
|
||||
[node name="hsep" type="HSeparator" parent="v" unique_id=1999803799]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="h" type="HBoxContainer" parent="v" unique_id=660296882]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="v/h" unique_id=1424894063]
|
||||
layout_mode = 2
|
||||
text = "App url"
|
||||
|
||||
[node name="AppSearch" type="LineEdit" parent="v/h" unique_id=1792920414]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="AppId" type="LineEdit" parent="v" unique_id=327619984]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "2673807"
|
||||
placeholder_text = "App ID"
|
||||
alignment = 1
|
||||
|
||||
[node name="info" type="PanelContainer" parent="v" unique_id=1542425427]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_3mi7s")
|
||||
|
||||
[node name="sc" type="ScrollContainer" parent="v/info" unique_id=1867214191]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="v" type="VBoxContainer" parent="v/info/sc" unique_id=3173697]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="GameName" type="Label" parent="v/info/sc/v" unique_id=279823622]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_tbax8")
|
||||
horizontal_alignment = 1
|
||||
text_overrun_behavior = 3
|
||||
|
||||
[node name="AuthorName" type="RichTextLabel" parent="v/info/sc/v" unique_id=348439232]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
bbcode_enabled = true
|
||||
fit_content = true
|
||||
scroll_active = false
|
||||
autowrap_mode = 0
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="CapsuleImage" type="TextureRect" parent="v/info/sc/v" unique_id=1515227202]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="hr" type="HBoxContainer" parent="v/info/sc/v" unique_id=1865485586]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="lb" type="Label" parent="v/info/sc/v/hr" unique_id=1295698123]
|
||||
layout_mode = 2
|
||||
text = "Release Date:"
|
||||
label_settings = SubResource("LabelSettings_s4fpn")
|
||||
|
||||
[node name="ReleaseDate" type="Label" parent="v/info/sc/v/hr" unique_id=489036318]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_cc846")
|
||||
|
||||
[node name="h_price" type="HBoxContainer" parent="v/info/sc/v" unique_id=2028526260]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="lb_price_desc" type="Label" parent="v/info/sc/v/h_price" unique_id=956528954]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Price:"
|
||||
label_settings = SubResource("LabelSettings_s4fpn")
|
||||
|
||||
[node name="GamePrice" type="Label" parent="v/info/sc/v/h_price" unique_id=290394728]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_cc846")
|
||||
|
||||
[node name="hsep" type="HSeparator" parent="v/info/sc/v" unique_id=343519708]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Description" type="RichTextLabel" parent="v/info/sc/v" unique_id=1459602721]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
bbcode_enabled = true
|
||||
|
||||
[node name="VisitPage" type="Button" parent="v" unique_id=914935418]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Visit Steam Page"
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
[gd_scene format=3 uid="uid://cbr5aed24dvty"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bkhjets1gnsk2" path="res://UI/Controls/loading_simple.gd" id="1_86jie"]
|
||||
[ext_resource type="Texture2D" uid="uid://btyra86eut5se" path="res://UI/assets/loading.png" id="1_iuxiu"]
|
||||
[ext_resource type="Texture2D" uid="uid://btyra86eut5se" path="res://assets/loading.png" id="1_iuxiu"]
|
||||
|
||||
[node name="LoadingSimple" type="PanelContainer" unique_id=814067408]
|
||||
script = ExtResource("1_86jie")
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
[gd_scene format=3 uid="uid://cetlbpyakk1vo"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d1t6dwda2ccbc" path="res://UI/Controls/script_editor.gd" id="1_2d8la"]
|
||||
[ext_resource type="Theme" uid="uid://bh8pw2ic1krk3" path="res://UI/assets/editor_theme.tres" id="2_b6d4x"]
|
||||
[ext_resource type="CodeHighlighter" uid="uid://cana6jwydsw5b" path="res://UI/assets/gdscript_highlighter4.tres" id="2_tuoer"]
|
||||
[ext_resource type="Theme" uid="uid://bh8pw2ic1krk3" path="res://assets/editor_theme.tres" id="2_b6d4x"]
|
||||
[ext_resource type="CodeHighlighter" uid="uid://cana6jwydsw5b" path="res://assets/gdscript_highlighter4.tres" id="2_tuoer"]
|
||||
|
||||
[node name="ScriptEditor" type="PanelContainer" unique_id=1486890629]
|
||||
anchors_preset = 15
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
extends PanelContainer
|
||||
|
||||
signal dlg_closed()
|
||||
signal users_updated()
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
%SearchUser.text_submitted.connect(_handle_search_user)
|
||||
%SearchId.text_submitted.connect(_handle_search_id)
|
||||
%SaveUser.pressed.connect(_handle_save_user)
|
||||
%UpdateUser.pressed.connect(_handle_update_user)
|
||||
%ClearUser.pressed.connect(%TwitchUserInfo.clear)
|
||||
|
||||
func _handle_search_user(user: String) -> void:
|
||||
%TwitchUserInfo.show_busy()
|
||||
var t_user := await Globals.twitcher.get_user(user)
|
||||
if t_user == null:
|
||||
%TwitchUserInfo.show_normal()
|
||||
DisplayServer.dialog_show("Failed to find Twitch User", "Failed to find the Twitch user going by %s" % user, ["Ok"], dlg_closed.emit)
|
||||
await dlg_closed
|
||||
return
|
||||
|
||||
%TwitchUserInfo.populate_from_twitch_user(t_user)
|
||||
|
||||
func _handle_search_id(id: String) -> void:
|
||||
%TwitchUserInfo.show_busy()
|
||||
var t_user := await Globals.twitcher.get_user_by_id(id)
|
||||
if t_user == null:
|
||||
%TwitchUserInfo.show_normal()
|
||||
DisplayServer.dialog_show("Failed to find Twitch User", "Unable to find a Twitch user with the associated id %s" % id, ["Ok"], dlg_closed.emit)
|
||||
await dlg_closed
|
||||
return
|
||||
|
||||
%TwitchUserInfo.populate_from_twitch_user(t_user)
|
||||
|
||||
func _handle_save_user() -> void:
|
||||
var user: TwitchUser = %TwitchUserInfo.t_user
|
||||
var chatter: Chatter = Globals.context.chatters.find_one(Condition.new().equal("twitch_id", user.id))
|
||||
if chatter:
|
||||
DisplayServer.dialog_show("Add Twitch User", "This user already exists in the database.", ["Ok"], dlg_closed.emit)
|
||||
await dlg_closed
|
||||
return
|
||||
|
||||
chatter = Chatter.new()
|
||||
chatter.twitch_id = user.id
|
||||
chatter.user = user
|
||||
chatter.first_added = Time.get_unix_time_from_system()
|
||||
chatter.first_seen = -1
|
||||
chatter.last_seen = -1
|
||||
Globals.context.chatters.append(chatter)
|
||||
%TwitchUserInfo.clear()
|
||||
users_updated.emit()
|
||||
|
||||
func _handle_update_user() -> void:
|
||||
pass
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://dgd1pmou5c35b
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://2ifvkmqd0q3i"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bexdhdpprh6aa" path="res://UI/assets/font_awesome/magnifying-glass-location.svg" id="1_c6q78"]
|
||||
[ext_resource type="Script" uid="uid://dgd1pmou5c35b" path="res://UI/Controls/search_twitch_user.gd" id="1_k513e"]
|
||||
[ext_resource type="PackedScene" uid="uid://bk7elsy5s3equ" path="res://UI/Controls/twitch_user_info.tscn" id="2_k513e"]
|
||||
[ext_resource type="Texture2D" uid="uid://bqgx2li6ejy4q" path="res://UI/assets/bootstrap/floppy-fill.png" id="3_hc0ai"]
|
||||
[ext_resource type="Texture2D" uid="uid://ch7pe2qtxu5vt" path="res://UI/assets/font_awesome/user-pen.svg" id="4_21lmp"]
|
||||
[ext_resource type="Texture2D" uid="uid://di8hel7cykf1y" path="res://UI/assets/font_awesome/eraser.svg" id="5_c6q78"]
|
||||
|
||||
[node name="SearchTwitchUser" type="PanelContainer" unique_id=83637811]
|
||||
script = ExtResource("1_k513e")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=574238165]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Search" type="HBoxContainer" parent="VBoxContainer" unique_id=335042598]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ico" type="TextureRect" parent="VBoxContainer/Search" unique_id=2076335426]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("1_c6q78")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="SearchUser" type="LineEdit" parent="VBoxContainer/Search" unique_id=1739256223]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "search by username"
|
||||
|
||||
[node name="SearchId" type="LineEdit" parent="VBoxContainer/Search" unique_id=778191154]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "search by user ID"
|
||||
|
||||
[node name="TwitchUserInfo" parent="VBoxContainer" unique_id=1944732530 instance=ExtResource("2_k513e")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=663178970]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="SaveUser" type="Button" parent="VBoxContainer/HBoxContainer" unique_id=1903961333]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Save new user"
|
||||
icon = ExtResource("3_hc0ai")
|
||||
expand_icon = true
|
||||
|
||||
[node name="UpdateUser" type="Button" parent="VBoxContainer/HBoxContainer" unique_id=1835546110]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Update User"
|
||||
icon = ExtResource("4_21lmp")
|
||||
expand_icon = true
|
||||
|
||||
[node name="ClearUser" type="Button" parent="VBoxContainer/HBoxContainer" unique_id=2034415437]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Clear"
|
||||
icon = ExtResource("5_c6q78")
|
||||
expand_icon = true
|
||||
|
|
@ -1,233 +0,0 @@
|
|||
@tool
|
||||
extends PanelContainer
|
||||
class_name SteamAppPanel
|
||||
|
||||
#region Test Apps
|
||||
#region Constants
|
||||
enum SteamGames{
|
||||
BLOOD_AND_MEAD,
|
||||
RIDICULOUS_SHIPPING,
|
||||
MEMORI,
|
||||
BLOCK_SHOP,
|
||||
FIELD_OF_HEROES,
|
||||
ZOOIKA,
|
||||
KOOK,
|
||||
ALPINE_LAKE,
|
||||
REPLICAT,
|
||||
CARBRIX,
|
||||
KERKER,
|
||||
XXX_CRAZYMIKE_XXX,
|
||||
MAGNET_JACK,
|
||||
ROGUE_BLIGHT,
|
||||
RISE_OF_PIRACY,
|
||||
MEGABAT,
|
||||
WARLOCKS_GANTLET,
|
||||
ARTIFICIAL,
|
||||
OCEAN_MIRROR,
|
||||
SPACE_SCAVANGER2,
|
||||
SCOPECREEP,
|
||||
THE_UNWANTED_WAR,
|
||||
HYPERONS,
|
||||
EPIC_HERO_GAME,
|
||||
CYBER_LOUNGE_TYCOON,
|
||||
OLD_BONES,
|
||||
GRIME_AND_GOLD,
|
||||
LONG_GONE,
|
||||
BOMB_AROUND,
|
||||
NO_SIGNAL,
|
||||
HEMOMANCER,
|
||||
SOPHIAS_PATH,
|
||||
WAKE_CUP,
|
||||
PROVIDENCE,
|
||||
TORSO_TENNIS,
|
||||
STICK_AND_STACK,
|
||||
FALINERE_FANTASY,
|
||||
MR_FARMBOY,
|
||||
ECHO_SHREDD,
|
||||
}
|
||||
const STEAM_APP_IDS: Dictionary[SteamGames, int] = {
|
||||
SteamGames.BLOOD_AND_MEAD: 1081830,
|
||||
SteamGames.RIDICULOUS_SHIPPING: 2649940,
|
||||
SteamGames.MEMORI: 1712700,
|
||||
SteamGames.BLOCK_SHOP: 2731590,
|
||||
SteamGames.FIELD_OF_HEROES: 1267290,
|
||||
SteamGames.ZOOIKA: 2994730,
|
||||
SteamGames.KOOK: 2329690,
|
||||
SteamGames.ALPINE_LAKE: 2341620,
|
||||
SteamGames.REPLICAT: 3509430,
|
||||
SteamGames.CARBRIX: 3712430,
|
||||
SteamGames.KERKER: 2645100,
|
||||
SteamGames.XXX_CRAZYMIKE_XXX: 2468680,
|
||||
SteamGames.MAGNET_JACK: 1491800,
|
||||
SteamGames.ROGUE_BLIGHT: 1890310,
|
||||
SteamGames.RISE_OF_PIRACY: 1400660,
|
||||
SteamGames.MEGABAT: 2429230,
|
||||
SteamGames.WARLOCKS_GANTLET: 2391180,
|
||||
SteamGames.ARTIFICIAL: 904510,
|
||||
SteamGames.OCEAN_MIRROR: 2725640,
|
||||
SteamGames.SPACE_SCAVANGER2: 1962010,
|
||||
SteamGames.SCOPECREEP: 3595710,
|
||||
SteamGames.THE_UNWANTED_WAR: 2487370,
|
||||
SteamGames.HYPERONS: 2479500,
|
||||
SteamGames.EPIC_HERO_GAME: 2081720,
|
||||
SteamGames.CYBER_LOUNGE_TYCOON: 1852150,
|
||||
SteamGames.OLD_BONES: 3358260,
|
||||
SteamGames.GRIME_AND_GOLD: 3165090,
|
||||
SteamGames.LONG_GONE: 1977610,
|
||||
SteamGames.BOMB_AROUND: 3539690,
|
||||
SteamGames.NO_SIGNAL: 2840590,
|
||||
SteamGames.HEMOMANCER: 3690780,
|
||||
SteamGames.SOPHIAS_PATH: 3197650,
|
||||
SteamGames.WAKE_CUP: 2881430,
|
||||
SteamGames.PROVIDENCE: 3643600,
|
||||
SteamGames.TORSO_TENNIS: 2824780,
|
||||
SteamGames.STICK_AND_STACK: 3655080,
|
||||
SteamGames.FALINERE_FANTASY: 1976930,
|
||||
SteamGames.MR_FARMBOY: 2795090,
|
||||
SteamGames.ECHO_SHREDD: 3232000,
|
||||
}
|
||||
#endregion
|
||||
|
||||
@warning_ignore("unused_private_class_variable")
|
||||
@export_tool_button("Search", "Button") var _search = _tool_search
|
||||
@export var tool_app_id: int
|
||||
@export var selected_steam_game: SteamGames:
|
||||
set(val):
|
||||
selected_steam_game = val
|
||||
if is_node_ready(): get_app_info(STEAM_APP_IDS[selected_steam_game])
|
||||
@export var test_data: SteamAppData
|
||||
var _save_data: SteamAppData
|
||||
var _save_bg_texture: ImageTexture
|
||||
var _save_capsule_texture: ImageTexture
|
||||
#endregion
|
||||
|
||||
static var _log: TwitchLogger = TwitchLogger.new(&"SteamAppPanel")
|
||||
|
||||
var data: SteamAppData:
|
||||
set(val):
|
||||
data = val
|
||||
if is_node_ready():
|
||||
%VisitPage.disabled = data == null
|
||||
|
||||
func _ready() -> void:
|
||||
%VisitPage.pressed.connect(_on_btn_visit_page_pressed)
|
||||
%Clear.pressed.connect(clear)
|
||||
if Engine.is_editor_hint():
|
||||
if selected_steam_game != 0:
|
||||
get_app_info(STEAM_APP_IDS[selected_steam_game])
|
||||
return
|
||||
clear()
|
||||
|
||||
func _tool_search() -> void:
|
||||
if !Engine.is_editor_hint():
|
||||
return
|
||||
if tool_app_id:
|
||||
get_app_info(tool_app_id)
|
||||
|
||||
func get_app_info(app_id: int) -> SteamAppData:
|
||||
var _data: SteamAppData = await %SteamService.get_steam_app_data(app_id)
|
||||
if not _data:
|
||||
return
|
||||
|
||||
display_app_info(_data)
|
||||
if Engine.is_editor_hint():
|
||||
test_data = _data
|
||||
return _data
|
||||
|
||||
func display_app_info(_data: SteamAppData) -> void:
|
||||
data = _data
|
||||
%AppSearch.text = str(data.steam_app_id)
|
||||
%GameName.text = data.name
|
||||
%AuthorName.text = "[font_size=20][i]by [b]%s[/b][/i][/font_size]" % data.developers.front()
|
||||
%CapsuleImage.texture = await load_texture_from_url(data.header_image)
|
||||
if !data.screenshots_thumbs.is_empty():
|
||||
%Background.texture = await load_texture_from_url(data.screenshots_thumbs.front())
|
||||
%ReleaseDate.text = data.release_date.date
|
||||
%lb_price_desc.visible = !data.is_free
|
||||
%h_price.visible = data.price_final_formatted != "" or data.is_free
|
||||
if %h_price.visible:
|
||||
if data.is_free:
|
||||
%GamePrice.text = "Free to Play!"
|
||||
else:
|
||||
%GamePrice.text = data.price_final_formatted
|
||||
if data.price_discount_percent != 0:
|
||||
%GamePrice.text += "(%d%% discount!)" % data.price_discount_percent
|
||||
|
||||
%Description.text = data.short_description
|
||||
|
||||
func clear() -> void:
|
||||
data = null
|
||||
%AppSearch.text = ""
|
||||
%GameName.text = ""
|
||||
%AuthorName.text = ""
|
||||
%CapsuleImage.texture = null
|
||||
%Background.texture = null
|
||||
%ReleaseDate.text = ""
|
||||
%GamePrice.text = ""
|
||||
%h_price.hide()
|
||||
%Description.text = ""
|
||||
pass
|
||||
|
||||
func load_texture_from_url(url: String) -> ImageTexture:
|
||||
var http := HTTPRequest.new()
|
||||
add_child(http)
|
||||
var url_no_query: String = url.split("?")[0]
|
||||
var file_type = url_no_query.get_extension()
|
||||
if not file_type in ["png", "jpeg", "jpg", "bmp", "webp", "svg"]:
|
||||
file_type = "webp"
|
||||
|
||||
var _err = http.request(url)
|
||||
if _err != OK:
|
||||
print("_err != OK")
|
||||
return
|
||||
|
||||
var result: Array = await http.request_completed
|
||||
var _result: int = result[0]
|
||||
var response_code: int = result[1]
|
||||
var _headers: PackedStringArray = result[2]
|
||||
var buffer: PackedByteArray = result[3]
|
||||
if response_code != HTTPClient.RESPONSE_OK:
|
||||
print("response_code != HTTPClient.RESPONSE_OK")
|
||||
return
|
||||
|
||||
var tex_image := Image.new()
|
||||
match file_type:
|
||||
"png": tex_image.load_png_from_buffer(buffer)
|
||||
"jpeg", "jpg": tex_image.load_jpg_from_buffer(buffer)
|
||||
"bmp": tex_image.load_bmp_from_buffer(buffer)
|
||||
"webp": tex_image.load_webp_from_buffer(buffer)
|
||||
"svg": tex_image.load_svg_from_buffer(buffer)
|
||||
_:
|
||||
_log.e("%s format not recognized." % file_type)
|
||||
return null
|
||||
|
||||
var tex = ImageTexture.create_from_image(tex_image)
|
||||
http.queue_free()
|
||||
return tex
|
||||
|
||||
func _on_btn_visit_page_pressed() -> void:
|
||||
if data:
|
||||
OS.shell_open(data.short_url)
|
||||
|
||||
func _enter_tree() -> void:
|
||||
if not Engine.is_editor_hint():
|
||||
return
|
||||
|
||||
|
||||
func _notification(what: int) -> void:
|
||||
if not Engine.is_editor_hint(): return
|
||||
match what:
|
||||
NOTIFICATION_EDITOR_PRE_SAVE:
|
||||
_save_data = data
|
||||
#_save_capsule_texture = %CapsuleImage.texture
|
||||
#_save_bg_texture = %Background.texture
|
||||
#test_data = null
|
||||
clear()
|
||||
NOTIFICATION_EDITOR_POST_SAVE:
|
||||
test_data = _save_data
|
||||
display_app_info.call_deferred(_save_data)
|
||||
#%CapsuleImage.texture = _save_capsule_texture
|
||||
#%Background.texture = _save_bg_texture
|
||||
#_save_capsule_texture = null
|
||||
#_save_bg_texture = null
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://q1gm8286nbuf
|
||||
|
|
@ -1,297 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://685pgmw1cdw3"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://chgufd1youdel" path="res://lib/games_info/steam_service.gd" id="1_uovli"]
|
||||
[ext_resource type="Script" uid="uid://q1gm8286nbuf" path="res://UI/Controls/steam_app_panel.gd" id="1_vlxh5"]
|
||||
[ext_resource type="Texture2D" uid="uid://bjrfknk2rkyuy" path="res://UI/assets/font_awesome/steam.svg" id="2_pws53"]
|
||||
[ext_resource type="Script" uid="uid://bllsv2cy6komw" path="res://lib/models/steam_app_data.gd" id="2_wmir7"]
|
||||
[ext_resource type="Texture2D" uid="uid://4juherhkw8hp" path="res://addons/script_splitter/assets/Close.svg" id="3_yygdx"]
|
||||
[ext_resource type="FontFile" uid="uid://cx1a4aqqxhsrn" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Italic.ttf" id="4_43mqw"]
|
||||
[ext_resource type="FontFile" uid="uid://b6u8lwedqawa7" path="res://UI/assets/neon-wave-theme/polentical_neon/Polentical Neon Bold italic.ttf" id="5_vlxh5"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yygdx"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 8.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 8.0
|
||||
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||
corner_radius_top_left = 3
|
||||
corner_radius_top_right = 3
|
||||
corner_radius_bottom_right = 3
|
||||
corner_radius_bottom_left = 3
|
||||
corner_detail = 5
|
||||
|
||||
[sub_resource type="Resource" id="Resource_wmir7"]
|
||||
script = ExtResource("2_wmir7")
|
||||
steam_app_id = 3712430
|
||||
type = "game"
|
||||
name = "Carbrix"
|
||||
short_description = "Carbrix is a sci-fi inspired multiplayer vehicle-building sandbox game where creativity meets action. Design and construct anything you can imagine—from sleek cars and powerful trucks to futuristic planes, bikes, and rockets."
|
||||
detailed_description = "<p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/ddedd3e2cbbbda0b12059974c2562381.avif?t=1771564874\" width=545 height=124 /></span></p><p class=\"bb_paragraph\" style=\"text-align: center\"></p><p class=\"bb_paragraph\" style=\"text-align: center\"><strong>Carbrix is a sci-fi inspired multiplayer vehicle-building sandbox game</strong> where creativity meets action. Design and construct anything you can imagine, from sleek cars and powerful trucks to futuristic planes, bikes, and rockets.</p><p class=\"bb_paragraph\" style=\"text-align: center\">Play solo or team up with friends in multiplayer to share your creations, race, battle, or simply explore endless possibilities. With intuitive building tools and a physics-driven world, Carbrix offers a playground of imagination, competition, and fun.</p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/62d477ed4a8d0610fe41ebcfe4d80a5c.avif?t=1771564874\" width=592 height=124 /></span></p><p class=\"bb_paragraph\" style=\"text-align: center\">With <strong>Carbrix</strong>, you can build cars, trucks, planes, bikes—and so much more!</p><p class=\"bb_paragraph\" style=\"text-align: center\">Thanks to the intuitive building system, you can <strong>build, test, and drive</strong> with ease.</p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><h2 class=\"bb_tag\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/8c98159aaf423437bda13df2b30a2e5e.avif?t=1771564874\" width=905 height=121 /></span></h2><p class=\"bb_paragraph\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><video class=\"bb_img\" autoplay muted loop playsinline crossorigin=\"anonymous\" poster=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/3babe6402e31c20319d567a0821a29c3.poster.avif?t=1771564874\" width=640 height=360 ><source src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/3babe6402e31c20319d567a0821a29c3.webm?t=1771564874\" type=\"video/webm; codecs=vp9\"></video></span></p><p class=\"bb_paragraph\" style=\"text-align: center\">Looking for something to sink your teeth into?</p><p class=\"bb_paragraph\" style=\"text-align: center\">With the built-in destruction system, worry no more</p><p class=\"bb_paragraph\" style=\"text-align: center\">Create combat-oriented vehicles and battle your friends!</p><p class=\"bb_paragraph\" ></p><h2 class=\"bb_tag\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/b54bb17deb785da3089c5b644e3f91ab.avif?t=1771564874\" width=923 height=121 /></span></h2><p class=\"bb_paragraph\" style=\"text-align: center\"><strong>With multiplayer, the fun never ends!</strong><br>Team up with your friends to build together—or challenge them in head-to-head battles.</p><p class=\"bb_paragraph\" style=\"text-align: center\">Take part in thrilling races, compete in creative build contests,<br>or just mess around and see who can come up with the wildest inventions.</p><p class=\"bb_paragraph\" style=\"text-align: center\">With so many ways to play, there’s always something new to try!</p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p>"
|
||||
header_image = "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/a18c9a286445c8553a4eac10ba42df6b96ce63ed/header.jpg?t=1771564874"
|
||||
capsule_image = "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/0e3354ecdcc92437b51dcc8a7ce5aec3c956d6b8/capsule_231x87.jpg?t=1771564874"
|
||||
capsule_imagev5 = "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/0e3354ecdcc92437b51dcc8a7ce5aec3c956d6b8/capsule_184x69.jpg?t=1771564874"
|
||||
developers = Array[String](["Redston4D"])
|
||||
publishers = Array[String](["Redston4D"])
|
||||
platforms = {
|
||||
"linux": true,
|
||||
"mac": false,
|
||||
"windows": true
|
||||
}
|
||||
genres = Array[Dictionary]([{
|
||||
"description": "Action",
|
||||
"id": "1"
|
||||
}, {
|
||||
"description": "Adventure",
|
||||
"id": "25"
|
||||
}, {
|
||||
"description": "Casual",
|
||||
"id": "4"
|
||||
}, {
|
||||
"description": "Indie",
|
||||
"id": "23"
|
||||
}, {
|
||||
"description": "Racing",
|
||||
"id": "9"
|
||||
}, {
|
||||
"description": "Simulation",
|
||||
"id": "28"
|
||||
}])
|
||||
release_date = {
|
||||
"coming_soon": true,
|
||||
"date": "Coming soon"
|
||||
}
|
||||
screenshots_full = Array[String](["https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/4a0c3b9405921fd84ee530e87c4bb49e5bac47d5/ss_4a0c3b9405921fd84ee530e87c4bb49e5bac47d5.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3/ss_c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/41a0157dabd641a59f561befa2d36687405f906c/ss_41a0157dabd641a59f561befa2d36687405f906c.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/d6440c8c03850fa478c8c845561c6729bf69b981/ss_d6440c8c03850fa478c8c845561c6729bf69b981.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/8c8af6ab67b663d1860e5ebdfe3943eebe85e222/ss_8c8af6ab67b663d1860e5ebdfe3943eebe85e222.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/7ebb66440d8eef2e94a818d95f0805f89ca881d3/ss_7ebb66440d8eef2e94a818d95f0805f89ca881d3.1920x1080.jpg?t=1771564874"])
|
||||
screenshots_thumbs = Array[String](["https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/4a0c3b9405921fd84ee530e87c4bb49e5bac47d5/ss_4a0c3b9405921fd84ee530e87c4bb49e5bac47d5.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3/ss_c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/41a0157dabd641a59f561befa2d36687405f906c/ss_41a0157dabd641a59f561befa2d36687405f906c.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/d6440c8c03850fa478c8c845561c6729bf69b981/ss_d6440c8c03850fa478c8c845561c6729bf69b981.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/8c8af6ab67b663d1860e5ebdfe3943eebe85e222/ss_8c8af6ab67b663d1860e5ebdfe3943eebe85e222.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/7ebb66440d8eef2e94a818d95f0805f89ca881d3/ss_7ebb66440d8eef2e94a818d95f0805f89ca881d3.600x338.jpg?t=1771564874"])
|
||||
categories = Array[Dictionary]([{
|
||||
"description": "Single-player",
|
||||
"id": 2.0
|
||||
}, {
|
||||
"description": "Multi-player",
|
||||
"id": 1.0
|
||||
}, {
|
||||
"description": "PvP",
|
||||
"id": 49.0
|
||||
}, {
|
||||
"description": "Online PvP",
|
||||
"id": 36.0
|
||||
}, {
|
||||
"description": "Co-op",
|
||||
"id": 9.0
|
||||
}, {
|
||||
"description": "Online Co-op",
|
||||
"id": 38.0
|
||||
}, {
|
||||
"description": "Steam Achievements",
|
||||
"id": 22.0
|
||||
}, {
|
||||
"description": "Steam Workshop",
|
||||
"id": 30.0
|
||||
}, {
|
||||
"description": "Custom Volume Controls",
|
||||
"id": 68.0
|
||||
}, {
|
||||
"description": "Adjustable Difficulty",
|
||||
"id": 78.0
|
||||
}, {
|
||||
"description": "Playable without Timed Input",
|
||||
"id": 74.0
|
||||
}, {
|
||||
"description": "Save Anytime",
|
||||
"id": 79.0
|
||||
}, {
|
||||
"description": "Stereo Sound",
|
||||
"id": 69.0
|
||||
}, {
|
||||
"description": "Surround Sound",
|
||||
"id": 70.0
|
||||
}, {
|
||||
"description": "Partial Controller Support",
|
||||
"id": 18.0
|
||||
}, {
|
||||
"description": "Family Sharing",
|
||||
"id": 62.0
|
||||
}])
|
||||
pc_requirements = "<strong>Minimum:</strong><br><ul class=\"bb_ul\"><li>Requires a 64-bit processor and operating system<br></li><li><strong>OS *:</strong> Windows 7 +<br></li><li><strong>Processor:</strong> Intel Core i5-4670k<br></li><li><strong>Memory:</strong> 8 GB RAM<br></li><li><strong>Graphics:</strong> Intel HD 4600 Graphics<br></li><li><strong>DirectX:</strong> Version 12<br></li><li><strong>Storage:</strong> 1 GB available space<br></li><li><strong>Additional Notes:</strong> Please make sure your GraphicsCard has vulkan</li></ul>"
|
||||
mac_requirements = "{ \"minimum\": \"<strong>Minimum:</strong><br><ul class=\\\"bb_ul\\\"></ul>\", \"recommended\": \"<strong>Recommended:</strong><br><ul class=\\\"bb_ul\\\"></ul>\" }"
|
||||
linux_requirements = "{ \"minimum\": \"<strong>Minimum:</strong><br><ul class=\\\"bb_ul\\\"><li><strong>Processor:</strong> Intel Core i5-4670k<br></li><li><strong>Memory:</strong> 8 GB RAM<br></li><li><strong>Graphics:</strong> Please make sure your GraphicsCard has vulkan<br></li><li><strong>Storage:</strong> 1 GB available space</li></ul>\", \"recommended\": \"<strong>Recommended:</strong><br><ul class=\\\"bb_ul\\\"><li><strong>Processor:</strong> Intel Core i5-8500<br></li><li><strong>Memory:</strong> 16 GB RAM<br></li><li><strong>Graphics:</strong> Please make sure your GraphicsCard has vulkan<br></li><li><strong>Storage:</strong> 1 GB available space</li></ul>\" }"
|
||||
support_email = "CarbrixGame@gmail.com"
|
||||
background_image = "https://store.akamai.steamstatic.com/images/storepagebackground/app/3712430?t=1771564874"
|
||||
background_image_raw = "https://store.akamai.steamstatic.com/images/storepagebackground/app/3712430?t=1771564874"
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pws53"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 8.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 8.0
|
||||
bg_color = Color(0.1, 0.1, 0.1, 0.6)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0.6215238, 0.6215239, 0.62152356, 1)
|
||||
border_blend = true
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_43mqw"]
|
||||
font_size = 24
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_wmir7"]
|
||||
font = ExtResource("4_43mqw")
|
||||
font_size = 20
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_312dj"]
|
||||
font = ExtResource("5_vlxh5")
|
||||
font_size = 20
|
||||
|
||||
[node name="SteamAppPanel" type="PanelContainer" unique_id=597550935]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_right = -1304.0
|
||||
offset_bottom = -220.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_yygdx")
|
||||
script = ExtResource("1_vlxh5")
|
||||
selected_steam_game = 9
|
||||
test_data = SubResource("Resource_wmir7")
|
||||
|
||||
[node name="SteamService" type="Node" parent="." unique_id=1253608490]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("1_uovli")
|
||||
metadata/_custom_type_script = "uid://chgufd1youdel"
|
||||
|
||||
[node name="Background" type="TextureRect" parent="." unique_id=2131684228]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
expand_mode = 1
|
||||
|
||||
[node name="v" type="VBoxContainer" parent="." unique_id=711622106]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="m" type="MarginContainer" parent="v" unique_id=326930510]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="h" type="HBoxContainer" parent="v/m" unique_id=503322652]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="Icon" type="TextureRect" parent="v/m/h" unique_id=637511916]
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
texture = ExtResource("2_pws53")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="Title" type="Label" parent="v/m/h" unique_id=1565364238]
|
||||
layout_mode = 2
|
||||
text = "Steam App Info"
|
||||
|
||||
[node name="Clear" type="Button" parent="v/m" unique_id=1693377160]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 4
|
||||
icon = ExtResource("3_yygdx")
|
||||
icon_alignment = 1
|
||||
|
||||
[node name="hsep" type="HSeparator" parent="v" unique_id=110475068]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="h" type="HBoxContainer" parent="v" unique_id=1010103611]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="v/h" unique_id=908847968]
|
||||
layout_mode = 2
|
||||
text = "App ID"
|
||||
|
||||
[node name="AppSearch" type="LineEdit" parent="v/h" unique_id=817183379]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="info" type="PanelContainer" parent="v" unique_id=944205836]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_pws53")
|
||||
|
||||
[node name="sc" type="ScrollContainer" parent="v/info" unique_id=783796096]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="v" type="VBoxContainer" parent="v/info/sc" unique_id=315401709]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="GameName" type="Label" parent="v/info/sc/v" unique_id=1985979119]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_43mqw")
|
||||
horizontal_alignment = 1
|
||||
text_overrun_behavior = 3
|
||||
|
||||
[node name="AuthorName" type="RichTextLabel" parent="v/info/sc/v" unique_id=2070779365]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
bbcode_enabled = true
|
||||
fit_content = true
|
||||
scroll_active = false
|
||||
autowrap_mode = 0
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="CapsuleImage" type="TextureRect" parent="v/info/sc/v" unique_id=1453640911]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="hr" type="HBoxContainer" parent="v/info/sc/v" unique_id=1399335643]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="lb" type="Label" parent="v/info/sc/v/hr" unique_id=578554525]
|
||||
layout_mode = 2
|
||||
text = "Release Date:"
|
||||
label_settings = SubResource("LabelSettings_wmir7")
|
||||
|
||||
[node name="ReleaseDate" type="Label" parent="v/info/sc/v/hr" unique_id=156600009]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_312dj")
|
||||
|
||||
[node name="h_price" type="HBoxContainer" parent="v/info/sc/v" unique_id=1445934632]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="lb_price_desc" type="Label" parent="v/info/sc/v/h_price" unique_id=1941918091]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Price:"
|
||||
label_settings = SubResource("LabelSettings_wmir7")
|
||||
|
||||
[node name="GamePrice" type="Label" parent="v/info/sc/v/h_price" unique_id=2076721537]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
label_settings = SubResource("LabelSettings_312dj")
|
||||
|
||||
[node name="hsep" type="HSeparator" parent="v/info/sc/v" unique_id=292231258]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Description" type="RichTextLabel" parent="v/info/sc/v" unique_id=771650243]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
bbcode_enabled = true
|
||||
|
||||
[node name="VisitPage" type="Button" parent="v" unique_id=263478236]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Visit Steam Page"
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
extends PanelContainer
|
||||
|
||||
const CHEVRONS = [
|
||||
preload("res://UI/assets/font_awesome/chevron-left.svg"),
|
||||
preload("res://UI/assets/font_awesome/chevron-right.svg")
|
||||
]
|
||||
@export var expanded: bool = false
|
||||
|
||||
signal extra_expanding(is_expanding: bool)
|
||||
signal extra_expanded(is_expanded: bool)
|
||||
|
||||
var is_extra_panel_expanded: bool
|
||||
var tw_expand: Tween
|
||||
|
||||
var t_user: TwitchUser
|
||||
var chatter: Chatter
|
||||
|
||||
func _ready() -> void:
|
||||
toggle_extra_panel(expanded)
|
||||
%ExpandExtraInfo.pressed.connect(func(): toggle_extra_panel(!is_extra_panel_expanded))
|
||||
%LoadingSimple.hide()
|
||||
|
||||
func show_busy() -> void:
|
||||
%LoadingSimple.show()
|
||||
|
||||
func show_normal() -> void:
|
||||
%LoadingSimple.hide()
|
||||
|
||||
func populate_from_twitch_user(_t_user: TwitchUser) -> void:
|
||||
%LoadingSimple.show()
|
||||
clear()
|
||||
t_user = _t_user
|
||||
if not t_user: return
|
||||
%Username.text = t_user.login
|
||||
%DisplayName.text = t_user.display_name
|
||||
%UserId.text = t_user.id
|
||||
%ProfilePictureURL.text = t_user.profile_image_url
|
||||
if t_user.profile_image_url:
|
||||
%AvatarImg.texture = await Globals.twitcher.media.load_profile_image(t_user)
|
||||
else:
|
||||
%AvatarImg.texture = preload("res://UI/assets/twitch_user_profile_pic.png")
|
||||
|
||||
%Type.text = t_user.type
|
||||
%ChannelDescription.text = t_user.description
|
||||
%BroadcasterType.text = t_user.broadcaster_type
|
||||
%OfflineImageURL.text = t_user.offline_image_url
|
||||
%ViewCount.text = str(t_user.view_count)
|
||||
%LoadingSimple.hide()
|
||||
|
||||
func populate_from_chatter(_chatter: Chatter) -> void:
|
||||
%LoadingSimple.show()
|
||||
clear()
|
||||
chatter = _chatter
|
||||
if not chatter: return
|
||||
t_user = await Globals.twitcher.get_user_by_id(chatter.twitch_id)
|
||||
%Username.text = t_user.login
|
||||
%DisplayName.text = t_user.display_name
|
||||
%UserId.text = t_user.id
|
||||
%ProfilePictureURL.text = t_user.profile_image_url
|
||||
if t_user.profile_image_url:
|
||||
%AvatarImg.texture = await Globals.twitcher.media.load_profile_image(t_user)
|
||||
else:
|
||||
%AvatarImg.texture = preload("res://UI/assets/twitch_user_profile_pic.png")
|
||||
|
||||
%Type.text = t_user.type
|
||||
%ChannelDescription.text = t_user.description
|
||||
%BroadcasterType.text = t_user.broadcaster_type
|
||||
%OfflineImageURL.text = t_user.offline_image_url
|
||||
%ViewCount.text = str(t_user.view_count)
|
||||
%LoadingSimple.hide()
|
||||
|
||||
func clear() -> void:
|
||||
%AvatarImg.texture = preload("res://UI/assets/twitch_user_profile_pic.png")
|
||||
%LoadingSimple.hide()
|
||||
%Username.text = ""
|
||||
%DisplayName.text = ""
|
||||
%UserId.text = ""
|
||||
%ProfilePictureURL.text = ""
|
||||
%ChatColor.color = Color.TRANSPARENT
|
||||
|
||||
%Type.text = ""
|
||||
%ChannelDescription.text = ""
|
||||
%BroadcasterType.text = ""
|
||||
%OfflineImageURL.text = ""
|
||||
%ViewCount.text = ""
|
||||
|
||||
func toggle_extra_panel(val: bool) -> void:
|
||||
is_extra_panel_expanded = val
|
||||
%ExpandExtraInfo.icon = CHEVRONS[0] if is_extra_panel_expanded else CHEVRONS[1]
|
||||
var min_size_x: float = 400 if is_extra_panel_expanded else 0
|
||||
if tw_expand:
|
||||
tw_expand.kill()
|
||||
%ExtraInfo.show()
|
||||
tw_expand = create_tween()
|
||||
tw_expand.tween_callback(extra_expanding.emit.bind(is_extra_panel_expanded))
|
||||
tw_expand.set_ease(Tween.EASE_OUT)
|
||||
tw_expand.set_trans(Tween.TRANS_CUBIC)
|
||||
tw_expand.tween_property(%ExtraInfo, ^"custom_minimum_size:x", min_size_x, 0.3)
|
||||
if !is_extra_panel_expanded:
|
||||
tw_expand.tween_property(%ExtraInfo, ^"visible", false, 0.0)
|
||||
tw_expand.tween_callback(extra_expanded.emit.bind(is_extra_panel_expanded))
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://bj86xfgm00ay2
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://bk7elsy5s3equ"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bj86xfgm00ay2" path="res://UI/Controls/twitch_user_info.gd" id="1_2rtl8"]
|
||||
[ext_resource type="Texture2D" uid="uid://bu2juj2beyws7" path="res://UI/assets/twitch_user_profile_pic.png" id="1_wdavc"]
|
||||
[ext_resource type="Texture2D" uid="uid://cjiu8qsg8kcvk" path="res://UI/assets/font_awesome/chevron-right.svg" id="2_8x1yt"]
|
||||
[ext_resource type="Theme" uid="uid://dh11pgqmtpeig" path="res://UI/assets/main_theme.tres" id="2_grpru"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbr5aed24dvty" path="res://UI/Controls/loading_simple.tscn" id="5_ssps2"]
|
||||
|
||||
[node name="TwitchUserInfo" type="PanelContainer" unique_id=1944732530]
|
||||
offset_right = 294.0
|
||||
offset_bottom = 128.0
|
||||
script = ExtResource("1_2rtl8")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=835428733]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="AvatarImg" type="TextureRect" parent="HBoxContainer" unique_id=847416416]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 128)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("1_wdavc")
|
||||
expand_mode = 2
|
||||
stretch_mode = 4
|
||||
|
||||
[node name="RefreshAvatar" type="Button" parent="HBoxContainer/AvatarImg" unique_id=470568045]
|
||||
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
|
||||
theme = ExtResource("2_grpru")
|
||||
theme_type_variation = &"BlankButton"
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer" unique_id=2091869482]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/VBoxContainer" unique_id=1790412527]
|
||||
custom_minimum_size = Vector2(420, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="DisplayName" type="LineEdit" parent="HBoxContainer/VBoxContainer/HBoxContainer" unique_id=112898446]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "display name"
|
||||
|
||||
[node name="UserId" type="LineEdit" parent="HBoxContainer/VBoxContainer/HBoxContainer" unique_id=301550074]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "user id"
|
||||
|
||||
[node name="ChannelDescription" type="TextEdit" parent="HBoxContainer/VBoxContainer" unique_id=1913020364]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(420, 0)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
placeholder_text = "Channel description"
|
||||
wrap_mode = 1
|
||||
indent_wrapped_lines = true
|
||||
|
||||
[node name="ExpandExtraInfo" type="Button" parent="HBoxContainer" unique_id=943960057]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(18, 0)
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"BlankButton"
|
||||
icon = ExtResource("2_8x1yt")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="ExtraInfo" type="PanelContainer" parent="HBoxContainer" unique_id=1175412769]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"TabPanel"
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="HBoxContainer/ExtraInfo" unique_id=1105674920]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/ExtraInfo/ScrollContainer" unique_id=1573319906]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Username" type="LineEdit" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer" unique_id=1399710760]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
placeholder_text = "username"
|
||||
|
||||
[node name="ProfilePictureURL" type="LineEdit" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer" unique_id=1845036114]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
placeholder_text = "profile picture url"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer" unique_id=655171068]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer" unique_id=1450064024]
|
||||
layout_mode = 2
|
||||
text = "Twitch chat color"
|
||||
|
||||
[node name="ChatColor" type="ColorRect" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer" unique_id=2056189419]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(64, 16)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer" unique_id=55699403]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer2" unique_id=1163546465]
|
||||
layout_mode = 2
|
||||
text = "type"
|
||||
|
||||
[node name="Type" type="LineEdit" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer2" unique_id=403251125]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer3" type="HBoxContainer" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer" unique_id=1302353290]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer3" unique_id=2125425960]
|
||||
layout_mode = 2
|
||||
text = "broadcaster type"
|
||||
|
||||
[node name="BroadcasterType" type="LineEdit" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer3" unique_id=136580961]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer4" type="HBoxContainer" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer" unique_id=315878161]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer4" unique_id=1792499029]
|
||||
layout_mode = 2
|
||||
text = "offline image url"
|
||||
|
||||
[node name="OfflineImageURL" type="LineEdit" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer4" unique_id=1036495270]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer5" type="HBoxContainer" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer" unique_id=376702304]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer5" unique_id=1139447144]
|
||||
layout_mode = 2
|
||||
text = "view count"
|
||||
|
||||
[node name="ViewCount" type="LineEdit" parent="HBoxContainer/ExtraInfo/ScrollContainer/VBoxContainer/HBoxContainer5" unique_id=1793906256]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="LoadingSimple" parent="." unique_id=814067408 instance=ExtResource("5_ssps2")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
[gd_scene format=3 uid="uid://c3hb5od24tfr3"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bu2juj2beyws7" path="res://UI/assets/twitch_user_profile_pic.png" id="1_8xi1h"]
|
||||
[ext_resource type="Theme" uid="uid://dh11pgqmtpeig" path="res://UI/assets/main_theme.tres" id="1_r4556"]
|
||||
[ext_resource type="Texture2D" uid="uid://bu2juj2beyws7" path="res://assets/twitch_user_profile_pic.png" id="1_8xi1h"]
|
||||
[ext_resource type="Theme" uid="uid://dh11pgqmtpeig" path="res://assets/main_theme.tres" id="1_r4556"]
|
||||
[ext_resource type="Script" uid="uid://ldua0xcjjws4" path="res://UI/Controls/user_entry.gd" id="1_xsfty"]
|
||||
[ext_resource type="PackedScene" uid="uid://cbr5aed24dvty" path="res://UI/Controls/loading_simple.tscn" id="3_mi6bx"]
|
||||
[ext_resource type="Texture2D" uid="uid://ed2yvxs0b8sv" path="res://UI/assets/bootstrap/megaphone-fill.png" id="3_sck47"]
|
||||
[ext_resource type="Texture2D" uid="uid://eybcntflwjpx" path="res://UI/assets/bootstrap/megaphone.svg" id="4_0jtnn"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb2asei1pibev" path="res://UI/assets/bootstrap/arrow-repeat.png" id="5_xsfty"]
|
||||
[ext_resource type="Texture2D" uid="uid://b3372gsnwqsyn" path="res://UI/assets/bootstrap/twitch.svg" id="6_mi6bx"]
|
||||
[ext_resource type="Texture2D" uid="uid://d1qh7e8vpfm1p" path="res://UI/assets/font_awesome/ellipsis.svg" id="7_k1oax"]
|
||||
[ext_resource type="Texture2D" uid="uid://echc7jyluqi0" path="res://UI/assets/bootstrap/trash.png" id="9_k1oax"]
|
||||
[ext_resource type="Texture2D" uid="uid://ed2yvxs0b8sv" path="res://assets/bootstrap/megaphone-fill.png" id="3_sck47"]
|
||||
[ext_resource type="Texture2D" uid="uid://eybcntflwjpx" path="res://assets/bootstrap/megaphone.svg" id="4_0jtnn"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb2asei1pibev" path="res://assets/bootstrap/arrow-repeat.png" id="5_xsfty"]
|
||||
[ext_resource type="Texture2D" uid="uid://b3372gsnwqsyn" path="res://assets/bootstrap/twitch.svg" id="6_mi6bx"]
|
||||
[ext_resource type="Texture2D" uid="uid://d1qh7e8vpfm1p" path="res://assets/font_awesome/ellipsis.svg" id="7_k1oax"]
|
||||
[ext_resource type="Texture2D" uid="uid://echc7jyluqi0" path="res://assets/bootstrap/trash.png" id="9_k1oax"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ddi2y"]
|
||||
content_margin_left = 4.0
|
||||
|
|
|
|||
|
|
@ -1,85 +0,0 @@
|
|||
extends PanelContainer
|
||||
class_name UserGamesPanel
|
||||
const GAME_ENTRY = preload("res://UI/Controls/game_entry.tscn")
|
||||
|
||||
@onready var splitter: HSplitContainer = %Splitter
|
||||
var chatter: Chatter:
|
||||
set(value):
|
||||
chatter = value
|
||||
if not chatter: return
|
||||
clear()
|
||||
populate_games()
|
||||
|
||||
func _ready() -> void:
|
||||
%SteamSearch.pressed.connect(_handle_search)
|
||||
%AddSteamGame.pressed.connect(_handle_add)
|
||||
|
||||
func _handle_search() -> void:
|
||||
var info: String = %SteamGameInput.text
|
||||
var app_id: int = -1
|
||||
if info.begins_with("https:"):
|
||||
var parts := Array(info.split("/"))
|
||||
parts.reverse()
|
||||
for part in parts:
|
||||
if part.is_valid_int():
|
||||
app_id = part.to_int()
|
||||
break
|
||||
elif info.is_valid_int():
|
||||
app_id = info.to_int()
|
||||
if app_id == -1: return
|
||||
var data: SteamAppData = await %SteamService.get_steam_app_data(app_id)
|
||||
if data:
|
||||
%SteamAppPanel.display_app_info(data)
|
||||
%SteamAppPanel.show()
|
||||
|
||||
func _handle_add() -> void:
|
||||
var info: String = %SteamGameInput.text
|
||||
var app_id: int = -1
|
||||
if info.begins_with("https:"):
|
||||
var parts = Array(info.split("/"))
|
||||
parts.reverse()
|
||||
for part in parts:
|
||||
if part.is_valid_int():
|
||||
app_id = part.to_int()
|
||||
break
|
||||
elif info.is_valid_int():
|
||||
app_id = info.to_int()
|
||||
|
||||
if app_id == -1: return
|
||||
|
||||
var data: SteamAppData = await %SteamService.get_steam_app_data(app_id)
|
||||
if data:
|
||||
chatter.steam_games.append(app_id)
|
||||
chatter.save()
|
||||
clear()
|
||||
populate_games()
|
||||
|
||||
func populate_games() -> void:
|
||||
for game in chatter.steam_games:
|
||||
var inst: GameEntry = GAME_ENTRY.instantiate()
|
||||
inst.steam_app_id = game
|
||||
inst.type = GameEntry.Type.STEAM
|
||||
inst.game_info_steam_pressed.connect(func(x: SteamAppData):
|
||||
%SteamAppPanel.show()
|
||||
%SteamAppPanel.display_app_info(x)
|
||||
)
|
||||
%SteamList.add_child(inst)
|
||||
|
||||
for game in chatter.itch_games:
|
||||
var inst: GameEntry = GAME_ENTRY.instantiate()
|
||||
inst.itchio_app_url = chatter.itch_games[game]
|
||||
inst.type = GameEntry.Type.ITCHIO
|
||||
inst.game_info_itchio_pressesd.connect(func(x: ItchIOAppData):
|
||||
%ItchAppPanel.show()
|
||||
%ItchAppPanel.display_app_info(x)
|
||||
)
|
||||
%ItchList.add_child(inst)
|
||||
|
||||
func clear() -> void:
|
||||
for node in %SteamList.get_children():
|
||||
node.queue_free()
|
||||
for node in %ItchList.get_children():
|
||||
node.queue_free()
|
||||
|
||||
%SteamAppPanel.clear()
|
||||
%ItchAppPanel.clear()
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://bj06jd8vt70im
|
||||
|
|
@ -1,249 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://cojuxefo7cryj"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bexdhdpprh6aa" path="res://UI/assets/font_awesome/magnifying-glass-location.svg" id="1_7mil5"]
|
||||
[ext_resource type="Script" uid="uid://bj06jd8vt70im" path="res://UI/Controls/user_games.gd" id="1_myc1y"]
|
||||
[ext_resource type="Texture2D" uid="uid://4nae34ce8pjn" path="res://UI/assets/bootstrap/plus-circle.svg" id="2_0hl8v"]
|
||||
[ext_resource type="Script" uid="uid://chgufd1youdel" path="res://lib/games_info/steam_service.gd" id="2_u0xo6"]
|
||||
[ext_resource type="Script" uid="uid://cyef5m8x5f7k6" path="res://lib/games_info/itch_io_service.gd" id="3_hk3mv"]
|
||||
[ext_resource type="PackedScene" uid="uid://685pgmw1cdw3" path="res://UI/Controls/steam_app_panel.tscn" id="3_j36q5"]
|
||||
[ext_resource type="Script" uid="uid://bllsv2cy6komw" path="res://lib/models/steam_app_data.gd" id="4_myc1y"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0ahhupmdstxq" path="res://UI/Controls/itch_app_panel.tscn" id="8_hk3mv"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_hk3mv"]
|
||||
script = ExtResource("4_myc1y")
|
||||
steam_app_id = 3712430
|
||||
type = "game"
|
||||
name = "Carbrix"
|
||||
short_description = "Carbrix is a sci-fi inspired multiplayer vehicle-building sandbox game where creativity meets action. Design and construct anything you can imagine—from sleek cars and powerful trucks to futuristic planes, bikes, and rockets."
|
||||
detailed_description = "<p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/ddedd3e2cbbbda0b12059974c2562381.avif?t=1771564874\" width=545 height=124 /></span></p><p class=\"bb_paragraph\" style=\"text-align: center\"></p><p class=\"bb_paragraph\" style=\"text-align: center\"><strong>Carbrix is a sci-fi inspired multiplayer vehicle-building sandbox game</strong> where creativity meets action. Design and construct anything you can imagine, from sleek cars and powerful trucks to futuristic planes, bikes, and rockets.</p><p class=\"bb_paragraph\" style=\"text-align: center\">Play solo or team up with friends in multiplayer to share your creations, race, battle, or simply explore endless possibilities. With intuitive building tools and a physics-driven world, Carbrix offers a playground of imagination, competition, and fun.</p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/62d477ed4a8d0610fe41ebcfe4d80a5c.avif?t=1771564874\" width=592 height=124 /></span></p><p class=\"bb_paragraph\" style=\"text-align: center\">With <strong>Carbrix</strong>, you can build cars, trucks, planes, bikes—and so much more!</p><p class=\"bb_paragraph\" style=\"text-align: center\">Thanks to the intuitive building system, you can <strong>build, test, and drive</strong> with ease.</p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><h2 class=\"bb_tag\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/8c98159aaf423437bda13df2b30a2e5e.avif?t=1771564874\" width=905 height=121 /></span></h2><p class=\"bb_paragraph\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><video class=\"bb_img\" autoplay muted loop playsinline crossorigin=\"anonymous\" poster=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/3babe6402e31c20319d567a0821a29c3.poster.avif?t=1771564874\" width=640 height=360 ><source src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/3babe6402e31c20319d567a0821a29c3.webm?t=1771564874\" type=\"video/webm; codecs=vp9\"></video></span></p><p class=\"bb_paragraph\" style=\"text-align: center\">Looking for something to sink your teeth into?</p><p class=\"bb_paragraph\" style=\"text-align: center\">With the built-in destruction system, worry no more</p><p class=\"bb_paragraph\" style=\"text-align: center\">Create combat-oriented vehicles and battle your friends!</p><p class=\"bb_paragraph\" ></p><h2 class=\"bb_tag\" style=\"text-align: center\"><span class=\"bb_img_ctn\"><img class=\"bb_img\" src=\"https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/extras/b54bb17deb785da3089c5b644e3f91ab.avif?t=1771564874\" width=923 height=121 /></span></h2><p class=\"bb_paragraph\" style=\"text-align: center\"><strong>With multiplayer, the fun never ends!</strong><br>Team up with your friends to build together—or challenge them in head-to-head battles.</p><p class=\"bb_paragraph\" style=\"text-align: center\">Take part in thrilling races, compete in creative build contests,<br>or just mess around and see who can come up with the wildest inventions.</p><p class=\"bb_paragraph\" style=\"text-align: center\">With so many ways to play, there’s always something new to try!</p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p><p class=\"bb_paragraph\" ></p>"
|
||||
header_image = "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/a18c9a286445c8553a4eac10ba42df6b96ce63ed/header.jpg?t=1771564874"
|
||||
capsule_image = "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/0e3354ecdcc92437b51dcc8a7ce5aec3c956d6b8/capsule_231x87.jpg?t=1771564874"
|
||||
capsule_imagev5 = "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/0e3354ecdcc92437b51dcc8a7ce5aec3c956d6b8/capsule_184x69.jpg?t=1771564874"
|
||||
developers = Array[String](["Redston4D"])
|
||||
publishers = Array[String](["Redston4D"])
|
||||
platforms = {
|
||||
"linux": true,
|
||||
"mac": false,
|
||||
"windows": true
|
||||
}
|
||||
genres = Array[Dictionary]([{
|
||||
"description": "Action",
|
||||
"id": "1"
|
||||
}, {
|
||||
"description": "Adventure",
|
||||
"id": "25"
|
||||
}, {
|
||||
"description": "Casual",
|
||||
"id": "4"
|
||||
}, {
|
||||
"description": "Indie",
|
||||
"id": "23"
|
||||
}, {
|
||||
"description": "Racing",
|
||||
"id": "9"
|
||||
}, {
|
||||
"description": "Simulation",
|
||||
"id": "28"
|
||||
}])
|
||||
release_date = {
|
||||
"coming_soon": true,
|
||||
"date": "Coming soon"
|
||||
}
|
||||
screenshots_full = Array[String](["https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/4a0c3b9405921fd84ee530e87c4bb49e5bac47d5/ss_4a0c3b9405921fd84ee530e87c4bb49e5bac47d5.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3/ss_c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/41a0157dabd641a59f561befa2d36687405f906c/ss_41a0157dabd641a59f561befa2d36687405f906c.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/d6440c8c03850fa478c8c845561c6729bf69b981/ss_d6440c8c03850fa478c8c845561c6729bf69b981.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/8c8af6ab67b663d1860e5ebdfe3943eebe85e222/ss_8c8af6ab67b663d1860e5ebdfe3943eebe85e222.1920x1080.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/7ebb66440d8eef2e94a818d95f0805f89ca881d3/ss_7ebb66440d8eef2e94a818d95f0805f89ca881d3.1920x1080.jpg?t=1771564874"])
|
||||
screenshots_thumbs = Array[String](["https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/4a0c3b9405921fd84ee530e87c4bb49e5bac47d5/ss_4a0c3b9405921fd84ee530e87c4bb49e5bac47d5.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3/ss_c3bfb9c95fafd7e2e42bf22b2e1a6324202ff3b3.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/41a0157dabd641a59f561befa2d36687405f906c/ss_41a0157dabd641a59f561befa2d36687405f906c.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/d6440c8c03850fa478c8c845561c6729bf69b981/ss_d6440c8c03850fa478c8c845561c6729bf69b981.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/8c8af6ab67b663d1860e5ebdfe3943eebe85e222/ss_8c8af6ab67b663d1860e5ebdfe3943eebe85e222.600x338.jpg?t=1771564874", "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/3712430/7ebb66440d8eef2e94a818d95f0805f89ca881d3/ss_7ebb66440d8eef2e94a818d95f0805f89ca881d3.600x338.jpg?t=1771564874"])
|
||||
categories = Array[Dictionary]([{
|
||||
"description": "Single-player",
|
||||
"id": 2.0
|
||||
}, {
|
||||
"description": "Multi-player",
|
||||
"id": 1.0
|
||||
}, {
|
||||
"description": "PvP",
|
||||
"id": 49.0
|
||||
}, {
|
||||
"description": "Online PvP",
|
||||
"id": 36.0
|
||||
}, {
|
||||
"description": "Co-op",
|
||||
"id": 9.0
|
||||
}, {
|
||||
"description": "Online Co-op",
|
||||
"id": 38.0
|
||||
}, {
|
||||
"description": "Steam Achievements",
|
||||
"id": 22.0
|
||||
}, {
|
||||
"description": "Steam Workshop",
|
||||
"id": 30.0
|
||||
}, {
|
||||
"description": "Custom Volume Controls",
|
||||
"id": 68.0
|
||||
}, {
|
||||
"description": "Adjustable Difficulty",
|
||||
"id": 78.0
|
||||
}, {
|
||||
"description": "Playable without Timed Input",
|
||||
"id": 74.0
|
||||
}, {
|
||||
"description": "Save Anytime",
|
||||
"id": 79.0
|
||||
}, {
|
||||
"description": "Stereo Sound",
|
||||
"id": 69.0
|
||||
}, {
|
||||
"description": "Surround Sound",
|
||||
"id": 70.0
|
||||
}, {
|
||||
"description": "Partial Controller Support",
|
||||
"id": 18.0
|
||||
}, {
|
||||
"description": "Family Sharing",
|
||||
"id": 62.0
|
||||
}])
|
||||
pc_requirements = "<strong>Minimum:</strong><br><ul class=\"bb_ul\"><li>Requires a 64-bit processor and operating system<br></li><li><strong>OS *:</strong> Windows 7 +<br></li><li><strong>Processor:</strong> Intel Core i5-4670k<br></li><li><strong>Memory:</strong> 8 GB RAM<br></li><li><strong>Graphics:</strong> Intel HD 4600 Graphics<br></li><li><strong>DirectX:</strong> Version 12<br></li><li><strong>Storage:</strong> 1 GB available space<br></li><li><strong>Additional Notes:</strong> Please make sure your GraphicsCard has vulkan</li></ul>"
|
||||
mac_requirements = "{ \"minimum\": \"<strong>Minimum:</strong><br><ul class=\\\"bb_ul\\\"></ul>\", \"recommended\": \"<strong>Recommended:</strong><br><ul class=\\\"bb_ul\\\"></ul>\" }"
|
||||
linux_requirements = "{ \"minimum\": \"<strong>Minimum:</strong><br><ul class=\\\"bb_ul\\\"><li><strong>Processor:</strong> Intel Core i5-4670k<br></li><li><strong>Memory:</strong> 8 GB RAM<br></li><li><strong>Graphics:</strong> Please make sure your GraphicsCard has vulkan<br></li><li><strong>Storage:</strong> 1 GB available space</li></ul>\", \"recommended\": \"<strong>Recommended:</strong><br><ul class=\\\"bb_ul\\\"><li><strong>Processor:</strong> Intel Core i5-8500<br></li><li><strong>Memory:</strong> 16 GB RAM<br></li><li><strong>Graphics:</strong> Please make sure your GraphicsCard has vulkan<br></li><li><strong>Storage:</strong> 1 GB available space</li></ul>\" }"
|
||||
support_email = "CarbrixGame@gmail.com"
|
||||
background_image = "https://store.akamai.steamstatic.com/images/storepagebackground/app/3712430?t=1771564874"
|
||||
background_image_raw = "https://store.akamai.steamstatic.com/images/storepagebackground/app/3712430?t=1771564874"
|
||||
|
||||
[node name="UserGames" type="PanelContainer" unique_id=2022365407]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_myc1y")
|
||||
|
||||
[node name="SteamService" type="Node" parent="." unique_id=1181960445]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("2_u0xo6")
|
||||
metadata/_custom_type_script = "uid://chgufd1youdel"
|
||||
|
||||
[node name="ItchIOService" type="Node" parent="." unique_id=400309790]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("3_hk3mv")
|
||||
metadata/_custom_type_script = "uid://cyef5m8x5f7k6"
|
||||
|
||||
[node name="Splitter" type="HSplitContainer" parent="." unique_id=182228020]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
split_offsets = PackedInt32Array(530)
|
||||
split_offset = 530
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Splitter" unique_id=869345086]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="Splitter/VBoxContainer" unique_id=385647229]
|
||||
layout_mode = 2
|
||||
text = "Games"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="Splitter/VBoxContainer" unique_id=1347394535]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Splitter/VBoxContainer" unique_id=123570347]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="SteamColumn" type="VBoxContainer" parent="Splitter/VBoxContainer/HBoxContainer" unique_id=1965017268]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="SteamSearch" type="HBoxContainer" parent="Splitter/VBoxContainer/HBoxContainer/SteamColumn" unique_id=476996992]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="SteamGameInput" type="LineEdit" parent="Splitter/VBoxContainer/HBoxContainer/SteamColumn/SteamSearch" unique_id=135652688]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "steam app id or url"
|
||||
|
||||
[node name="SteamSearch" type="Button" parent="Splitter/VBoxContainer/HBoxContainer/SteamColumn/SteamSearch" unique_id=1427348414]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("1_7mil5")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="AddSteamGame" type="Button" parent="Splitter/VBoxContainer/HBoxContainer/SteamColumn/SteamSearch" unique_id=1199771317]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("2_0hl8v")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="Splitter/VBoxContainer/HBoxContainer/SteamColumn" unique_id=1782797010]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Splitter/VBoxContainer/HBoxContainer/SteamColumn/PanelContainer" unique_id=1538765940]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="SteamList" type="VBoxContainer" parent="Splitter/VBoxContainer/HBoxContainer/SteamColumn/PanelContainer/ScrollContainer" unique_id=788126228]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="VSeparator" type="VSeparator" parent="Splitter/VBoxContainer/HBoxContainer" unique_id=220505221]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ItchColumn" type="VBoxContainer" parent="Splitter/VBoxContainer/HBoxContainer" unique_id=1035792899]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="ItchSearch" type="HBoxContainer" parent="Splitter/VBoxContainer/HBoxContainer/ItchColumn" unique_id=58917565]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ItchInput" type="LineEdit" parent="Splitter/VBoxContainer/HBoxContainer/ItchColumn/ItchSearch" unique_id=81918204]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "itch.io link"
|
||||
|
||||
[node name="ItchFetch" type="Button" parent="Splitter/VBoxContainer/HBoxContainer/ItchColumn/ItchSearch" unique_id=1917953068]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("1_7mil5")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="ItchAdd" type="Button" parent="Splitter/VBoxContainer/HBoxContainer/ItchColumn/ItchSearch" unique_id=1726319206]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("2_0hl8v")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="Splitter/VBoxContainer/HBoxContainer/ItchColumn" unique_id=1055230274]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="Splitter/VBoxContainer/HBoxContainer/ItchColumn/PanelContainer" unique_id=1143536360]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ItchList" type="VBoxContainer" parent="Splitter/VBoxContainer/HBoxContainer/ItchColumn/PanelContainer/ScrollContainer" unique_id=1691269823]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="TabContainer" type="TabContainer" parent="Splitter" unique_id=298665581]
|
||||
layout_mode = 2
|
||||
current_tab = 1
|
||||
tabs_visible = false
|
||||
|
||||
[node name="SteamAppPanel" parent="Splitter/TabContainer" unique_id=597550935 instance=ExtResource("3_j36q5")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
test_data = SubResource("Resource_hk3mv")
|
||||
metadata/_tab_index = 0
|
||||
|
||||
[node name="ItchAppPanel" parent="Splitter/TabContainer" unique_id=691251029 instance=ExtResource("8_hk3mv")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 1
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
[gd_scene format=3 uid="uid://cdm7rbq5547xp"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bgur6pwnuh27h" path="res://UI/Controls/user_list.gd" id="1_cj73x"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb2asei1pibev" path="res://UI/assets/bootstrap/arrow-repeat.png" id="1_o0xn2"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4le71w5j6nq5" path="res://UI/assets/simple/twitch.svg" id="2_cj73x"]
|
||||
[ext_resource type="Texture2D" uid="uid://cnofay0htsof1" path="res://UI/assets/bootstrap/sort-up.svg" id="3_7xwno"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb2asei1pibev" path="res://assets/bootstrap/arrow-repeat.png" id="1_o0xn2"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4le71w5j6nq5" path="res://assets/simple/twitch.svg" id="2_cj73x"]
|
||||
[ext_resource type="Texture2D" uid="uid://cnofay0htsof1" path="res://assets/bootstrap/sort-up.svg" id="3_7xwno"]
|
||||
|
||||
[node name="UserList" type="PanelContainer" unique_id=1448466108]
|
||||
script = ExtResource("1_cj73x")
|
||||
|
|
|
|||
|
|
@ -1,65 +0,0 @@
|
|||
extends PanelContainer
|
||||
|
||||
var chatter: Chatter:
|
||||
set(value):
|
||||
chatter = value
|
||||
if not chatter:
|
||||
_clear_promos()
|
||||
return
|
||||
_populate_promos()
|
||||
|
||||
func _ready() -> void:
|
||||
for btn in [%Streamer, %Shoutout, %Promote]:
|
||||
btn.pressed.connect(_update_promos)
|
||||
for le in [%YouTubeHandle, %BlueSkyHandle, %WebSite, %ShoutoutMessage, %PromotionMessage]:
|
||||
le.text_changed.connect(_update_promos)
|
||||
if not chatter: return
|
||||
_populate_promos()
|
||||
|
||||
func _clear_promos() -> void:
|
||||
%Streamer.button_pressed = false
|
||||
%Shoutout.button_pressed = false
|
||||
%Promote.button_pressed = false
|
||||
%YouTubeHandle.text = ""
|
||||
%BlueSkyHandle.text = ""
|
||||
%WebSite.text = ""
|
||||
%ShoutoutMessage.text = ""
|
||||
%PromotionMessage.text = ""
|
||||
|
||||
func _populate_promos() -> void:
|
||||
%Streamer.button_pressed = chatter.is_streamer
|
||||
%Shoutout.button_pressed = chatter.auto_shoutout
|
||||
%Promote.button_pressed = chatter.extra_data.has("auto-promo")
|
||||
%YouTubeHandle.text = chatter.urls.youtube if chatter.urls.has("youtube") else ""
|
||||
%BlueSkyHandle.text = chatter.urls.bluesky if chatter.urls.has("bluesky") else ""
|
||||
%WebSite.text = chatter.urls.website if chatter.urls.has("website") else ""
|
||||
%ShoutoutMessage.text = chatter.extra_data.shoutout_message if chatter.extra_data.has("shoutout_message") else ""
|
||||
%PromotionMessage.text = chatter.extra_data.promotion_message if chatter.extra_data.has("promotion_message") else ""
|
||||
|
||||
func _update_promos() -> void:
|
||||
if not chatter: return
|
||||
chatter.is_streamer = %Streamer.button_pressed
|
||||
chatter.auto_shoutout = %Shoutout.button_pressed
|
||||
chatter.extra_data["auto_promo"] = %Promote.button_pressed
|
||||
if %YouTubeHandle.text != "":
|
||||
chatter.urls["youtube"] = %YouTubeHandle.text
|
||||
else:
|
||||
chatter.urls.erase("youtube")
|
||||
if %BlueSkyHandle.text != "":
|
||||
chatter.urls["bluesky"] = %BlueSkyHandle.text
|
||||
else:
|
||||
chatter.urls.erase("bluesky")
|
||||
if %WebSite.text != "":
|
||||
chatter.urls["website"] = %WebSite.text
|
||||
else:
|
||||
chatter.urls.erase("website")
|
||||
if %ShoutoutMessage.text != "":
|
||||
chatter.extra_data.shoutout_message = %ShoutoutMessage.text
|
||||
else:
|
||||
chatter.extra_data.erase("shoutout_message")
|
||||
if %PromotionMessage.text != "":
|
||||
chatter.extra_data.promotion_message = %PromotionMessage.text
|
||||
else:
|
||||
chatter.extra_data.erase("promotion_message")
|
||||
|
||||
chatter.save()
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://8frnm7cda0ht
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://cadil3rnqh61e"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://8frnm7cda0ht" path="res://UI/Controls/user_promo.gd" id="1_jcejw"]
|
||||
[ext_resource type="Texture2D" uid="uid://cup1m40podywb" path="res://UI/assets/bootstrap/megaphone-fill.svg" id="1_nwev1"]
|
||||
[ext_resource type="Texture2D" uid="uid://dp06rjedx170o" path="res://UI/assets/bootstrap/globe2.svg" id="2_jcejw"]
|
||||
|
||||
[node name="UserPromo" type="PanelContainer" unique_id=1364169576]
|
||||
offset_right = 406.0
|
||||
offset_bottom = 136.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource("1_jcejw")
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=1229873159]
|
||||
layout_mode = 2
|
||||
horizontal_scroll_mode = 0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer" unique_id=120163548]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/VBoxContainer" unique_id=98113976]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Streamer" type="CheckButton" parent="ScrollContainer/VBoxContainer/HBoxContainer" unique_id=737955603]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Streamer"
|
||||
|
||||
[node name="Shoutout" type="CheckButton" parent="ScrollContainer/VBoxContainer/HBoxContainer" unique_id=378103028]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Shoutout"
|
||||
|
||||
[node name="Promote" type="CheckButton" parent="ScrollContainer/VBoxContainer/HBoxContainer" unique_id=929607483]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Auto-Promote"
|
||||
|
||||
[node name="WorksWith" type="HBoxContainer" parent="ScrollContainer/VBoxContainer" unique_id=1239050314]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/WorksWith" unique_id=400379538]
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
text = "Works with"
|
||||
|
||||
[node name="OptionButton" type="OptionButton" parent="ScrollContainer/VBoxContainer/WorksWith" unique_id=1872170308]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="YouTube" type="HBoxContainer" parent="ScrollContainer/VBoxContainer" unique_id=1207903264]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/YouTube" unique_id=1593070954]
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
text = "YouTube"
|
||||
|
||||
[node name="YtPromo" type="Button" parent="ScrollContainer/VBoxContainer/YouTube" unique_id=1096467567]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("1_nwev1")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="YtLink" type="Button" parent="ScrollContainer/VBoxContainer/YouTube" unique_id=50317293]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("2_jcejw")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="YouTubeHandle" type="LineEdit" parent="ScrollContainer/VBoxContainer/YouTube" unique_id=603065520]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "YouTube @handle"
|
||||
|
||||
[node name="BlueSky" type="HBoxContainer" parent="ScrollContainer/VBoxContainer" unique_id=1489223257]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/BlueSky" unique_id=381069814]
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
text = "Bluesky"
|
||||
|
||||
[node name="BsPromo" type="Button" parent="ScrollContainer/VBoxContainer/BlueSky" unique_id=658543783]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("1_nwev1")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="BsLink" type="Button" parent="ScrollContainer/VBoxContainer/BlueSky" unique_id=1961953027]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("2_jcejw")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="BlueSkyHandle" type="LineEdit" parent="ScrollContainer/VBoxContainer/BlueSky" unique_id=360439078]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "b.sky @handle"
|
||||
|
||||
[node name="WebSite" type="HBoxContainer" parent="ScrollContainer/VBoxContainer" unique_id=573488452]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/WebSite" unique_id=1373223946]
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
text = "Website"
|
||||
|
||||
[node name="WsPromo" type="Button" parent="ScrollContainer/VBoxContainer/WebSite" unique_id=973904899]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("1_nwev1")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="WsLink" type="Button" parent="ScrollContainer/VBoxContainer/WebSite" unique_id=666822841]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(24, 24)
|
||||
layout_mode = 2
|
||||
icon = ExtResource("2_jcejw")
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[node name="WebSite" type="LineEdit" parent="ScrollContainer/VBoxContainer/WebSite" unique_id=1937578185]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "https://"
|
||||
|
||||
[node name="ShoutoutMessage" type="LineEdit" parent="ScrollContainer/VBoxContainer" unique_id=1766315801]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "shoutout message"
|
||||
|
||||
[node name="PromotionMessage" type="LineEdit" parent="ScrollContainer/VBoxContainer" unique_id=1002295180]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "promotion message"
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
extends PanelContainer
|
||||
|
||||
@onready var itu := %InternalTwitchUserInfo
|
||||
@onready var iul := %InternalUserLive
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
%SearchTwitchUser.users_updated.connect(%UserList.update_list)
|
||||
%UserList.populate_list()
|
||||
%UserList.user_selected.connect(_handle_user_selected)
|
||||
%Clear.pressed.connect(_handle_clear)
|
||||
|
||||
func _handle_user_selected(user: Chatter) -> void:
|
||||
itu.chatter = user
|
||||
iul.chatter = user
|
||||
%Tabs.current_tab = 0
|
||||
%SearchTwitchUser.hide()
|
||||
|
||||
func _handle_clear() -> void:
|
||||
itu.chatter = null
|
||||
iul.chatter = null
|
||||
%SearchTwitchUser.show()
|
||||
|
|
@ -1 +0,0 @@
|
|||
uid://ykgacitkm8qw
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
[gd_scene format=3 uid="uid://b7ubexvohw507"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ykgacitkm8qw" path="res://UI/Controls/users.gd" id="1_8sme5"]
|
||||
[ext_resource type="PackedScene" uid="uid://cdm7rbq5547xp" path="res://UI/Controls/user_list.tscn" id="1_wmtpy"]
|
||||
[ext_resource type="PackedScene" uid="uid://2ifvkmqd0q3i" path="res://UI/Controls/search_twitch_user.tscn" id="2_hl8i0"]
|
||||
[ext_resource type="PackedScene" uid="uid://d3fhwrt28r08x" path="res://UI/Controls/internal_twitch_user_info.tscn" id="4_jqw2j"]
|
||||
[ext_resource type="PackedScene" uid="uid://bipoye4ww4ua6" path="res://UI/Controls/internal_user_live.tscn" id="5_8sme5"]
|
||||
[ext_resource type="Texture2D" uid="uid://4juherhkw8hp" path="res://addons/script_splitter/assets/Close.svg" id="6_oms12"]
|
||||
|
||||
[node name="Users" type="PanelContainer" unique_id=823449222]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_type_variation = &"TabPanel"
|
||||
script = ExtResource("1_8sme5")
|
||||
metadata/_tab_index = 1
|
||||
|
||||
[node name="HSplitContainer" type="HSplitContainer" parent="." unique_id=1436900852]
|
||||
layout_mode = 2
|
||||
split_offsets = PackedInt32Array(400)
|
||||
split_offset = 400
|
||||
|
||||
[node name="UserList" parent="HSplitContainer" unique_id=1448466108 instance=ExtResource("1_wmtpy")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="UserManager" type="PanelContainer" parent="HSplitContainer" unique_id=1405139410]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/UserManager" unique_id=558998019]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="SearchTwitchUser" parent="HSplitContainer/UserManager/VBoxContainer" unique_id=83637811 instance=ExtResource("2_hl8i0")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"TabPanel"
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="HSplitContainer/UserManager/VBoxContainer" unique_id=195418375]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer/UserManager/VBoxContainer" unique_id=408900267]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_right = 10
|
||||
|
||||
[node name="Tabs" type="TabContainer" parent="HSplitContainer/UserManager/VBoxContainer/MarginContainer" unique_id=140135258]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 300)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
current_tab = 0
|
||||
tab_0/title = "Twitch User Info"
|
||||
tab_1/title = "User Live"
|
||||
|
||||
[node name="InternalTwitchUserInfo" parent="HSplitContainer/UserManager/VBoxContainer/MarginContainer/Tabs" unique_id=1986869556 instance=ExtResource("4_jqw2j")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_type_variation = &""
|
||||
metadata/_tab_name = "Twitch User Info"
|
||||
|
||||
[node name="InternalUserLive" parent="HSplitContainer/UserManager/VBoxContainer/MarginContainer/Tabs" unique_id=17956466 instance=ExtResource("5_8sme5")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
metadata/_tab_name = "User Live"
|
||||
|
||||
[node name="Clear" type="Button" parent="HSplitContainer/UserManager/VBoxContainer/MarginContainer" unique_id=624044174]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 0
|
||||
icon = ExtResource("6_oms12")
|
||||
Loading…
Add table
Add a link
Reference in a new issue