From eb16b80134a136df3af1e2c2123bf52666cf5e6f Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Tue, 10 Mar 2026 10:27:40 -0500 Subject: [PATCH] Updated UserGames Renamed search and add functions for Steam to _handle_steam_*, Added ItchIO handlers Updated Steam Add to check and see if we have already fetched the App information, and if so, use it, otherwise try to search. *Note* Need to clear after adding, so we don't accidently add to the wrong user, and need to validate if the game has already been added or not. Added Logic to for ItchIO. --- UI/Panels/User/user_games.gd | 76 ++++++++++++++++++++++++---------- UI/Panels/User/user_games.tscn | 4 +- 2 files changed, 57 insertions(+), 23 deletions(-) diff --git a/UI/Panels/User/user_games.gd b/UI/Panels/User/user_games.gd index b45a1b89..6dfb25ca 100644 --- a/UI/Panels/User/user_games.gd +++ b/UI/Panels/User/user_games.gd @@ -11,10 +11,13 @@ var chatter: Chatter: populate_games() func _ready() -> void: - %SteamSearch.pressed.connect(_handle_search) - %AddSteamGame.pressed.connect(_handle_add) + %SteamSearch.pressed.connect(_handle_steam_search) + %AddSteamGame.pressed.connect(_handle_steam_add) + %ItchFetch.pressed.connect(_handle_itch_search) + %ItchAdd.pressed.connect(_handle_itch_add) -func _handle_search() -> void: +#region Steam Search +func _handle_steam_search() -> void: var info: String = %SteamGameInput.text var app_id: int = -1 if info.begins_with("https:"): @@ -32,27 +35,58 @@ func _handle_search() -> void: %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() +func _handle_steam_add() -> void: + if %SteamAppPanel.data: + var app: SteamAppData = %SteamAppPanel.data + chatter.steam_games.append(app.steam_app_id) + else: + 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 + if app_id == -1: return - var data: SteamAppData = await %SteamService.get_steam_app_data(app_id) + var data: SteamAppData = await %SteamService.get_steam_app_data(app_id) + if data: + chatter.steam_games.append(app_id) + + chatter.save() + clear() + populate_games() +#endregion + +#region Itch Search +func _handle_itch_search() -> void: + var info: String = %ItchInput.text + if not (info.begins_with("http://") or info.begins_with("https://")): return + var data: ItchIOAppData = await %ItchIOService.get_itch_app_data(info) if data: - chatter.steam_games.append(app_id) - chatter.save() - clear() - populate_games() + %ItchAppPanel.display_app_info(data) + %ItchAppPanel.show() + +func _handle_itch_add() -> void: + if %ItchAppPanel.data: + var app: ItchIOAppData = %ItchAppPanel.data + chatter.itch_games[app.title] = app.url + else: + var info: String = %ItchInput.text + if not (info.begins_with("http://") or info.begins_with("https://")): return + + var data: ItchIOAppData = await %ItchIOService.get_itch_app_data(info) + if data: + chatter.itch_games[data.title] = data.url + chatter.save() + clear() + populate_games() +#endregion func populate_games() -> void: for game in chatter.steam_games: diff --git a/UI/Panels/User/user_games.tscn b/UI/Panels/User/user_games.tscn index 45ec8033..a585fabc 100644 --- a/UI/Panels/User/user_games.tscn +++ b/UI/Panels/User/user_games.tscn @@ -9,7 +9,7 @@ [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/Panels/itch_app_panel.tscn" id="8_hk3mv"] -[sub_resource type="Resource" id="Resource_hk3mv"] +[sub_resource type="Resource" id="Resource_yiww1"] script = ExtResource("4_myc1y") steam_app_id = 3712430 type = "game" @@ -240,7 +240,7 @@ tabs_visible = false unique_name_in_owner = true visible = false layout_mode = 2 -test_data = SubResource("Resource_hk3mv") +test_data = SubResource("Resource_yiww1") metadata/_tab_index = 0 [node name="ItchAppPanel" parent="Splitter/TabContainer" unique_id=691251029 instance=ExtResource("8_hk3mv")]