From b811bced099eac44f097af49d56aca4e64cd4af5 Mon Sep 17 00:00:00 2001 From: Tiger Date: Sat, 14 Feb 2026 12:47:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=8F=90=E7=A4=BA=EF=BC=8C=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=95=B0=E6=8D=AE=E6=BA=90=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/autoload/DownloadManager.gd | 42 ++++++++++++++--------------- scripts/autoload/GameManager.gd | 2 +- scripts/game/card.gd | 2 +- scripts/settings/settings.gd | 3 +++ 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/scripts/autoload/DownloadManager.gd b/scripts/autoload/DownloadManager.gd index 7a1ba40..fcb9a89 100644 --- a/scripts/autoload/DownloadManager.gd +++ b/scripts/autoload/DownloadManager.gd @@ -1,6 +1,6 @@ extends Node -var uuid: String = "source" +var uuid: String func create_file(file_path: String) -> void: var base_dir = file_path.get_base_dir() @@ -20,14 +20,14 @@ func download_file(server_path: String, local_path: String) -> void: await http.request_completed func get_uuid() -> void: - var index_file = FileAccess.open("user://download/temp/index.json", FileAccess.READ) + var index_file = FileAccess.open("user://download/sources/temp/index.json", FileAccess.READ) var index_text = index_file.get_as_text() var content = JSON.parse_string(index_text) index_file.close() uuid = content["uuid"] func download_defs(type: String, origin: String) -> void: - var list_file = FileAccess.open("user://download/%s/%ss/list.json" % [uuid, type], FileAccess.READ) + var list_file = FileAccess.open("user://download/sources/%s/%ss/list.json" % [uuid, type], FileAccess.READ) var list_text = list_file.get_as_text() var list = JSON.parse_string(list_text) list_file.close() @@ -35,10 +35,10 @@ func download_defs(type: String, origin: String) -> void: return for k in list: var filename = list[k] - await download_file("%s%s/id/%s" % [origin, type, k], "user://download/%s/%ss/%s.json" % [uuid, type, filename]) + await download_file("%s%s/id/%s" % [origin, type, k], "user://download/sources/%s/%ss/%s.json" % [uuid, type, filename]) func download_assets(origin: String) -> void: - var list_file = FileAccess.open("user://download/%s/assets/list.json" % [uuid], FileAccess.READ) + var list_file = FileAccess.open("user://download/sources/%s/assets/list.json" % [uuid], FileAccess.READ) var list_text = list_file.get_as_text() var list = JSON.parse_string(list_text) list_file.close() @@ -46,10 +46,10 @@ func download_assets(origin: String) -> void: return for k in list["pics"]: var filename = list["pics"][k] - await download_file("%sasset/pic/%s" % [origin, k], "user://download/%s/assets/pics/%s" % [uuid, filename]) + await download_file("%sasset/pic/%s" % [origin, k], "user://download/sources/%s/assets/pics/%s" % [uuid, filename]) for k in list["sounds"]: var filename = list["sounds"][k] - await download_file("%sasset/sound/%s" % [origin, k], "user://download/%s/assets/sounds/%s" % [uuid, filename]) + await download_file("%sasset/sound/%s" % [origin, k], "user://download/sources/%s/assets/sounds/%s" % [uuid, filename]) func download_from_origin() -> int: var origin = GameManager.data_origin @@ -65,18 +65,18 @@ func download_from_origin() -> int: if origin[-1] != "/": origin = origin + "/" - await download_file(origin + "index", "user://download/temp/index.json") + await download_file(origin + "index", "user://download/sources/temp/index.json") get_uuid() - DirAccess.remove_absolute("user://download/temp/index.json") - DirAccess.remove_absolute("user://download/temp/") + DirAccess.remove_absolute("user://download/sources/temp/index.json") + DirAccess.remove_absolute("user://download/sources/temp/") - await download_file(origin + "index", "user://download/%s/index.json" % [uuid]) - await download_file(origin + "card/list", "user://download/%s/cards/list.json" % [uuid]) - await download_file(origin + "reaction/list", "user://download/%s/reactions/list.json" % [uuid]) - await download_file(origin + "matter/list", "user://download/%s/matters/list.json" % [uuid]) - await download_file(origin + "asset/list", "user://download/%s/assets/list.json" % [uuid]) + await download_file(origin + "index", "user://download/sources/%s/index.json" % [uuid]) + await download_file(origin + "card/list", "user://download/sources/%s/cards/list.json" % [uuid]) + await download_file(origin + "reaction/list", "user://download/sources/%s/reactions/list.json" % [uuid]) + await download_file(origin + "matter/list", "user://download/sources/%s/matters/list.json" % [uuid]) + await download_file(origin + "asset/list", "user://download/sources/%s/assets/list.json" % [uuid]) await download_defs("card", origin) await download_defs("reaction", origin) @@ -89,31 +89,31 @@ func download_from_origin() -> int: return 0 func load_resource(): - var card_file = FileAccess.open("user://download/%s/cards/list.json" % [uuid], FileAccess.READ) + var card_file = FileAccess.open("user://download/sources/%s/cards/list.json" % [uuid], FileAccess.READ) GameManager.card_list = JSON.parse_string(card_file.get_as_text()) card_file.close() - var reaction_file = FileAccess.open("user://download/%s/reactions/list.json" % [uuid], FileAccess.READ) + var reaction_file = FileAccess.open("user://download/sources/%s/reactions/list.json" % [uuid], FileAccess.READ) GameManager.reaction_list = JSON.parse_string(reaction_file.get_as_text()) reaction_file.close() - var matter_file = FileAccess.open("user://download/%s/matters/list.json" % [uuid], FileAccess.READ) + var matter_file = FileAccess.open("user://download/sources/%s/matters/list.json" % [uuid], FileAccess.READ) GameManager.matter_list = JSON.parse_string(matter_file.get_as_text()) matter_file.close() - var asset_file = FileAccess.open("user://download/%s/assets/list.json" % [uuid], FileAccess.READ) + var asset_file = FileAccess.open("user://download/sources/%s/assets/list.json" % [uuid], FileAccess.READ) var asset_list = JSON.parse_string(asset_file.get_as_text()) GameManager.pic_list = asset_list["pics"] GameManager.sound_list = asset_list["sounds"] asset_file.close() func get_sources(): - var dir = DirAccess.open("user://download/") + var dir = DirAccess.open("user://download/sources/") var subdirs: PackedStringArray = dir.get_directories() for subdir in subdirs: if subdir == "temp": continue - var file = FileAccess.open("user://download/%s/index.json" % [subdir], FileAccess.READ) + var file = FileAccess.open("user://download/sources/%s/index.json" % [subdir], FileAccess.READ) var text = file.get_as_text() var content = JSON.parse_string(text) file.close() diff --git a/scripts/autoload/GameManager.gd b/scripts/autoload/GameManager.gd index bf54038..2bb2e44 100644 --- a/scripts/autoload/GameManager.gd +++ b/scripts/autoload/GameManager.gd @@ -3,7 +3,7 @@ extends Node var data_origin: String = "" var ip_begin: String = "192.168." var username: String = "Player1" -var source: int = 0 +var source: int = -1 var card_list: Dictionary = {} var matter_list: Dictionary = {} diff --git a/scripts/game/card.gd b/scripts/game/card.gd index d2c5fde..0df88fa 100644 --- a/scripts/game/card.gd +++ b/scripts/game/card.gd @@ -11,4 +11,4 @@ func set_texture(pic: String) -> void: func set_card(cname: String) -> void: card_name = cname - set_texture("user://download/%s/assets/pics/%s" % [DownloadManager.uuid, GameManager.pic_list[card_name]]) + set_texture("user://download/sources/%s/assets/pics/%s" % [DownloadManager.uuid, GameManager.pic_list[card_name]]) diff --git a/scripts/settings/settings.gd b/scripts/settings/settings.gd index a3151e3..6ec0cc6 100644 --- a/scripts/settings/settings.gd +++ b/scripts/settings/settings.gd @@ -43,6 +43,9 @@ func _on_download_button_pressed() -> void: func _on_load_button_pressed() -> void: + if GameManager.sources.size() == 0 or GameManager.source == -1: + $Tips.text = "提示:无本地数据或未选择,无法加载" + return; DownloadManager.uuid = GameManager.sources[$LoadSource/ChooseSource.text] DownloadManager.load_resource() $Tips.text = "提示:完成加载"