feat: 增加加载失败提示,更改本地数据源路径

This commit is contained in:
2026-02-14 12:47:52 +08:00
parent c413cced56
commit b811bced09
4 changed files with 26 additions and 23 deletions
+21 -21
View File
@@ -1,6 +1,6 @@
extends Node extends Node
var uuid: String = "source" var uuid: String
func create_file(file_path: String) -> void: func create_file(file_path: String) -> void:
var base_dir = file_path.get_base_dir() 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 await http.request_completed
func get_uuid() -> void: 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 index_text = index_file.get_as_text()
var content = JSON.parse_string(index_text) var content = JSON.parse_string(index_text)
index_file.close() index_file.close()
uuid = content["uuid"] uuid = content["uuid"]
func download_defs(type: String, origin: String) -> void: 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_text = list_file.get_as_text()
var list = JSON.parse_string(list_text) var list = JSON.parse_string(list_text)
list_file.close() list_file.close()
@@ -35,10 +35,10 @@ func download_defs(type: String, origin: String) -> void:
return return
for k in list: for k in list:
var filename = list[k] 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: 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_text = list_file.get_as_text()
var list = JSON.parse_string(list_text) var list = JSON.parse_string(list_text)
list_file.close() list_file.close()
@@ -46,10 +46,10 @@ func download_assets(origin: String) -> void:
return return
for k in list["pics"]: for k in list["pics"]:
var filename = list["pics"][k] 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"]: for k in list["sounds"]:
var filename = list["sounds"][k] 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: func download_from_origin() -> int:
var origin = GameManager.data_origin var origin = GameManager.data_origin
@@ -65,18 +65,18 @@ func download_from_origin() -> int:
if origin[-1] != "/": if origin[-1] != "/":
origin = origin + "/" 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() get_uuid()
DirAccess.remove_absolute("user://download/temp/index.json") DirAccess.remove_absolute("user://download/sources/temp/index.json")
DirAccess.remove_absolute("user://download/temp/") DirAccess.remove_absolute("user://download/sources/temp/")
await download_file(origin + "index", "user://download/%s/index.json" % [uuid]) await download_file(origin + "index", "user://download/sources/%s/index.json" % [uuid])
await download_file(origin + "card/list", "user://download/%s/cards/list.json" % [uuid]) await download_file(origin + "card/list", "user://download/sources/%s/cards/list.json" % [uuid])
await download_file(origin + "reaction/list", "user://download/%s/reactions/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/%s/matters/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/%s/assets/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("card", origin)
await download_defs("reaction", origin) await download_defs("reaction", origin)
@@ -89,31 +89,31 @@ func download_from_origin() -> int:
return 0 return 0
func load_resource(): 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()) GameManager.card_list = JSON.parse_string(card_file.get_as_text())
card_file.close() 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()) GameManager.reaction_list = JSON.parse_string(reaction_file.get_as_text())
reaction_file.close() 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()) GameManager.matter_list = JSON.parse_string(matter_file.get_as_text())
matter_file.close() 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()) var asset_list = JSON.parse_string(asset_file.get_as_text())
GameManager.pic_list = asset_list["pics"] GameManager.pic_list = asset_list["pics"]
GameManager.sound_list = asset_list["sounds"] GameManager.sound_list = asset_list["sounds"]
asset_file.close() asset_file.close()
func get_sources(): func get_sources():
var dir = DirAccess.open("user://download/") var dir = DirAccess.open("user://download/sources/")
var subdirs: PackedStringArray = dir.get_directories() var subdirs: PackedStringArray = dir.get_directories()
for subdir in subdirs: for subdir in subdirs:
if subdir == "temp": if subdir == "temp":
continue 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 text = file.get_as_text()
var content = JSON.parse_string(text) var content = JSON.parse_string(text)
file.close() file.close()
+1 -1
View File
@@ -3,7 +3,7 @@ extends Node
var data_origin: String = "" var data_origin: String = ""
var ip_begin: String = "192.168." var ip_begin: String = "192.168."
var username: String = "Player1" var username: String = "Player1"
var source: int = 0 var source: int = -1
var card_list: Dictionary = {} var card_list: Dictionary = {}
var matter_list: Dictionary = {} var matter_list: Dictionary = {}
+1 -1
View File
@@ -11,4 +11,4 @@ func set_texture(pic: String) -> void:
func set_card(cname: String) -> void: func set_card(cname: String) -> void:
card_name = cname 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]])
+3
View File
@@ -43,6 +43,9 @@ func _on_download_button_pressed() -> void:
func _on_load_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.uuid = GameManager.sources[$LoadSource/ChooseSource.text]
DownloadManager.load_resource() DownloadManager.load_resource()
$Tips.text = "提示:完成加载" $Tips.text = "提示:完成加载"