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.
This commit is contained in:
Mario Steele 2026-03-10 10:27:40 -05:00
parent cc01a207fc
commit eb16b80134
2 changed files with 57 additions and 23 deletions

View file

@ -11,10 +11,13 @@ var chatter: Chatter:
populate_games() populate_games()
func _ready() -> void: func _ready() -> void:
%SteamSearch.pressed.connect(_handle_search) %SteamSearch.pressed.connect(_handle_steam_search)
%AddSteamGame.pressed.connect(_handle_add) %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 info: String = %SteamGameInput.text
var app_id: int = -1 var app_id: int = -1
if info.begins_with("https:"): if info.begins_with("https:"):
@ -32,27 +35,58 @@ func _handle_search() -> void:
%SteamAppPanel.display_app_info(data) %SteamAppPanel.display_app_info(data)
%SteamAppPanel.show() %SteamAppPanel.show()
func _handle_add() -> void: func _handle_steam_add() -> void:
var info: String = %SteamGameInput.text if %SteamAppPanel.data:
var app_id: int = -1 var app: SteamAppData = %SteamAppPanel.data
if info.begins_with("https:"): chatter.steam_games.append(app.steam_app_id)
var parts = Array(info.split("/")) else:
parts.reverse() var info: String = %SteamGameInput.text
for part in parts: var app_id: int = -1
if part.is_valid_int(): if info.begins_with("https:"):
app_id = part.to_int() var parts = Array(info.split("/"))
break parts.reverse()
elif info.is_valid_int(): for part in parts:
app_id = info.to_int() 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: if data:
chatter.steam_games.append(app_id) %ItchAppPanel.display_app_info(data)
chatter.save() %ItchAppPanel.show()
clear()
populate_games() 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: func populate_games() -> void:
for game in chatter.steam_games: for game in chatter.steam_games:

View file

@ -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="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"] [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") script = ExtResource("4_myc1y")
steam_app_id = 3712430 steam_app_id = 3712430
type = "game" type = "game"
@ -240,7 +240,7 @@ tabs_visible = false
unique_name_in_owner = true unique_name_in_owner = true
visible = false visible = false
layout_mode = 2 layout_mode = 2
test_data = SubResource("Resource_hk3mv") test_data = SubResource("Resource_yiww1")
metadata/_tab_index = 0 metadata/_tab_index = 0
[node name="ItchAppPanel" parent="Splitter/TabContainer" unique_id=691251029 instance=ExtResource("8_hk3mv")] [node name="ItchAppPanel" parent="Splitter/TabContainer" unique_id=691251029 instance=ExtResource("8_hk3mv")]