feat: 完成资源下载功能

This commit is contained in:
2026-01-21 17:03:59 +08:00
parent f8880b7e92
commit 62a4288621
2 changed files with 39 additions and 4 deletions
+39 -4
View File
@@ -7,17 +7,43 @@ func create_file(file_path: String) -> void:
var base_dir = file_path.get_base_dir() var base_dir = file_path.get_base_dir()
if !DirAccess.dir_exists_absolute(base_dir): if !DirAccess.dir_exists_absolute(base_dir):
DirAccess.make_dir_recursive_absolute(base_dir) DirAccess.make_dir_recursive_absolute(base_dir)
FileAccess.open(file_path, FileAccess.WRITE) var file = FileAccess.open(file_path, FileAccess.WRITE)
file.close()
func download_file(server_path: String, local_path: String) -> void: func download_file(server_path: String, local_path: String) -> void:
var http = HTTPRequest.new() var http = HTTPRequest.new()
add_child(http) add_child(http)
var file_path = "user://downloads_test/" + local_path var file_path = local_path
if !FileAccess.file_exists(file_path): if !FileAccess.file_exists(file_path):
create_file(file_path) create_file(file_path)
http.set_download_file(file_path) http.download_file = file_path
http.request(server_path) http.request(server_path)
func download_defs(type: String, origin: String) -> void:
var list_file = FileAccess.open("user://download/source/%ss/list.json" % [type], FileAccess.READ)
var list_text = list_file.get_as_text()
print(list_text)
var list = JSON.parse_string(list_text)
if !list:
return
for k in list:
var filename = list[k]
download_file("%s%s/id/%s" % [origin, type, k], "user://download/source/%ss/%s.json" % [type, filename])
func download_assets(origin: String) -> void:
var list_file = FileAccess.open("user://download/source/assets/list.json", FileAccess.READ)
var list_text = list_file.get_as_text()
print(list_text)
var list = JSON.parse_string(list_text)
if !list:
return
for k in list["pics"]:
var filename = list["pics"][k]
download_file("%sasset/pic/%s" % [origin, k], "user://download/source/assets/pics/%s" % [filename])
for k in list["sounds"]:
var filename = list["sounds"][k]
download_file("%sasset/sound/%s" % [origin, k], "user://download/source/assets/sounds/%s" % [filename])
func download_from_origin() -> int: func download_from_origin() -> int:
var origin = GameManager.data_origin var origin = GameManager.data_origin
var http = HTTPRequest.new() var http = HTTPRequest.new()
@@ -32,7 +58,16 @@ func download_from_origin() -> int:
if origin[-1] != "/": if origin[-1] != "/":
origin = origin + "/" origin = origin + "/"
download_file(origin + "card/id/Oxygen", "test_Oxygen.json") download_file(origin + "card/list", "user://download/source/cards/list.json")
download_file(origin + "reaction/list", "user://download/source/reactions/list.json")
download_file(origin + "matter/list", "user://download/source/matters/list.json")
download_file(origin + "asset/list", "user://download/source/assets/list.json")
download_defs("card", origin)
download_defs("reaction", origin)
download_defs("matter", origin)
download_assets(origin)
return 0 return 0