diff --git a/scenes/settings.tscn b/scenes/settings.tscn index ddd3c4a..613536a 100644 --- a/scenes/settings.tscn +++ b/scenes/settings.tscn @@ -75,6 +75,26 @@ offset_bottom = 81.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 24 +[node name="LoadSource" type="Node2D" parent="." unique_id=230611076] +position = Vector2(44, 314) +metadata/_edit_group_ = true + +[node name="LoadSourceLabel" type="Label" parent="LoadSource" unique_id=299353496] +offset_left = 9.0 +offset_top = 10.0 +offset_right = 132.0 +offset_bottom = 40.0 +theme_override_fonts/font = ExtResource("2_6wm04") +theme_override_font_sizes/font_size = 30 +text = "加载本地数据" + +[node name="ChooseSource" type="OptionButton" parent="LoadSource" unique_id=1045074926] +offset_left = 381.0 +offset_top = 5.0 +offset_right = 830.0 +offset_bottom = 60.0 +theme_override_font_sizes/font_size = 25 + [node name="SaveButton" type="Button" parent="." unique_id=1377249836] offset_left = 85.0 offset_top = 912.0 @@ -111,6 +131,16 @@ theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 50 text = "提示:无" +[node name="LoadButton" type="Button" parent="." unique_id=2015694853] +offset_left = 73.0 +offset_top = 793.0 +offset_right = 249.0 +offset_bottom = 882.0 +theme_override_fonts/font = ExtResource("2_6wm04") +theme_override_font_sizes/font_size = 30 +text = "加载数据" + [connection signal="pressed" from="SaveButton" to="." method="_on_save_button_pressed"] [connection signal="pressed" from="DownloadButton" to="." method="_on_download_button_pressed"] [connection signal="pressed" from="CancelButton" to="." method="_on_cancel_button_pressed"] +[connection signal="pressed" from="LoadButton" to="." method="_on_load_button_pressed"] diff --git a/scripts/autoload/DownloadManager.gd b/scripts/autoload/DownloadManager.gd index 1b7e753..4c4118b 100644 --- a/scripts/autoload/DownloadManager.gd +++ b/scripts/autoload/DownloadManager.gd @@ -69,6 +69,10 @@ func download_from_origin() -> int: get_uuid() + DirAccess.remove_absolute("user://download/temp/index.json") + DirAccess.remove_absolute("user://download/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]) @@ -80,6 +84,8 @@ func download_from_origin() -> int: await download_assets(origin) + get_sources() + return 0 func load_resource(): @@ -100,3 +106,18 @@ func load_resource(): 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 subdirs: PackedStringArray = dir.get_directories() + print(subdirs) + for subdir in subdirs: + if subdir == "temp": + continue + var file = FileAccess.open("user://download/%s/index.json" % [subdir], FileAccess.READ) + var text = file.get_as_text() + var content = JSON.parse_string(text) + file.close() + var source_name = content["name"] + var source_uuid = content["uuid"] + GameManager.sources[source_name] = source_uuid diff --git a/scripts/autoload/GameManager.gd b/scripts/autoload/GameManager.gd index 37a0871..bf54038 100644 --- a/scripts/autoload/GameManager.gd +++ b/scripts/autoload/GameManager.gd @@ -3,10 +3,13 @@ extends Node var data_origin: String = "" var ip_begin: String = "192.168." var username: String = "Player1" +var source: int = 0 var card_list: Dictionary = {} var matter_list: Dictionary = {} var reaction_list: Dictionary = {} var match_list: Dictionary = {} var pic_list: Dictionary = {} -var sound_list: Dictionary = {} \ No newline at end of file +var sound_list: Dictionary = {} + +var sources: Dictionary = {} \ No newline at end of file diff --git a/scripts/settings/settings.gd b/scripts/settings/settings.gd index 11a25c6..5ebcac9 100644 --- a/scripts/settings/settings.gd +++ b/scripts/settings/settings.gd @@ -1,14 +1,26 @@ extends Node2D func _ready() -> void: + init_sources() + init_text() + +func init_text() -> void: $DataSetting/LineEdit.text = GameManager.data_origin $IPBeginSetting/LineEdit.text = GameManager.ip_begin $UsernameSetting/LineEdit.text = GameManager.username + $LoadSource/ChooseSource.select(GameManager.source) + +func init_sources() -> void: + DownloadManager.get_sources() + var options = $LoadSource/ChooseSource + for source_name in GameManager.sources: + options.add_item(source_name) func _on_save_button_pressed() -> void: GameManager.data_origin = $DataSetting/LineEdit.text GameManager.ip_begin = $IPBeginSetting/LineEdit.text GameManager.username = $UsernameSetting/LineEdit.text + GameManager.source = $LoadSource/ChooseSource.get_selected() SceneManager.goto_scene("main_menu") @@ -29,3 +41,9 @@ func _on_download_button_pressed() -> void: DownloadManager.load_resource() $Tips.text = "提示:完成加载" + + +func _on_load_button_pressed() -> void: + DownloadManager.uuid = GameManager.sources[$LoadSource/ChooseSource.text] + DownloadManager.load_resource() + $Tips.text = "提示:完成加载"