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")]