From fca44e1036b4734c3cd3c507cdbef257aa8f0e27 Mon Sep 17 00:00:00 2001 From: Torsten Date: Sun, 16 Nov 2025 16:21:58 +0100 Subject: [PATCH] Load Map --- hexmapper/scenes/MainMap/_MainMap.tscn | 2 +- hexmapper/scenes/MainMap/map/map_manager.gd | 44 ++++++++++++++++++++- hexmapper/scenes/MainMap/startup.gd | 2 +- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/hexmapper/scenes/MainMap/_MainMap.tscn b/hexmapper/scenes/MainMap/_MainMap.tscn index 934d6b2..4f76133 100644 --- a/hexmapper/scenes/MainMap/_MainMap.tscn +++ b/hexmapper/scenes/MainMap/_MainMap.tscn @@ -285,6 +285,6 @@ script = ExtResource("8_4uh5x") [node name="Startup" type="Node" parent="Logic"] script = ExtResource("8_y3acc") -[node name="GroundMapManager" type="Node" parent="Logic"] +[node name="MapManager" type="Node" parent="Logic"] unique_name_in_owner = true script = ExtResource("1_fax2j") diff --git a/hexmapper/scenes/MainMap/map/map_manager.gd b/hexmapper/scenes/MainMap/map/map_manager.gd index c5dce64..c075920 100644 --- a/hexmapper/scenes/MainMap/map/map_manager.gd +++ b/hexmapper/scenes/MainMap/map/map_manager.gd @@ -9,6 +9,7 @@ var coord2tilename = {} var tilename2coord = {} signal selected_mapname_for_saving +signal selected_mapname_for_loading func _ready(): load_csv() @@ -16,6 +17,7 @@ func _ready(): ground_map.hex_clicked.connect(_on_hex_clicked) selected_mapname_for_saving.connect(_on_save_map) + selected_mapname_for_loading.connect(_on_load_map_from) var atlas_texture = AtlasTexture.new() var atlas_image = Image.new() @@ -91,7 +93,9 @@ func _on_map_item_selected(index: int) -> void: # 1 laden, 2 speichern, 3 speich %MapItemList.deselect_all() match index: 0: print("Neue Karte erstellen") - 1: print("Karte laden") + 1: + print("Karte laden") + load_map_from() 2: print("Karte speichern: %s/%s" % [Global.settings.current_project_dir,Global.settings.current_map_name]) %ResourceSaver.saveMap(Global.settings.current_project_dir + "/" + Global.settings.current_map_name) @@ -127,7 +131,6 @@ func save_map_as(): Global.settings.current_map_name = filename %MapName.text=filename - ResourceSaver.save(Global.settings, "user://settings.tres") emit_signal("selected_mapname_for_saving", full_filename) @@ -135,3 +138,40 @@ func save_map_as(): func _on_save_map(full_filename): %ResourceSaver.saveMap(full_filename) + + + + +func load_map_from(): + #var file_dialog1 = FileDialog.new() + %FileDialog.mode_overrides_title = false + %FileDialog.title="Karte laden" + %FileDialog.access=FileDialog.ACCESS_FILESYSTEM + %FileDialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE + print("Setting map directory to {0}".format([Global.settings.current_project_dir])) + %FileDialog.set_current_dir(Global.settings.current_project_dir) # or any other path + + %FileDialog.popup_centered() + %FileDialog.file_selected.connect(func(full_filename): + if not full_filename.ends_with(".tres"): full_filename = full_filename + ".tres" + #print("Mapname to save as: ", full_filename) + var filename:String = full_filename.split("/")[-1] + #print("Shortname: ", filename) + + var dir_elems = full_filename.split("/") + var sublist= dir_elems.slice(0, dir_elems.size() - 1) + var dir_str = "/".join(sublist) + + #var full_map_name = Global.settings.current_project_dir + "/" + Global.settings.current_map_name + Global.settings.current_project_dir = dir_str + Global.settings.current_map_name = filename + + %MapName.text=filename + + ResourceSaver.save(Global.settings, "user://settings.tres") + + emit_signal("selected_mapname_for_loading", full_filename) + ) + +func _on_load_map_from(full_filename): + %ResourceSaver.loadMap(full_filename) diff --git a/hexmapper/scenes/MainMap/startup.gd b/hexmapper/scenes/MainMap/startup.gd index d0f81cc..ff6d075 100644 --- a/hexmapper/scenes/MainMap/startup.gd +++ b/hexmapper/scenes/MainMap/startup.gd @@ -3,7 +3,7 @@ extends Node @onready var ground_map:TileMapLayer = %GroundMapLayer @onready var map_menu:Button = %MapMenu @onready var map_menu_itemcontainer:VBoxContainer = %MapMenuContainer -@onready var map_manager:Node = %GroundMapManager +@onready var map_manager:Node = %MapManager @onready var map_menu_item_list:Node = %MapItemList @onready var palette_panel:PanelContainer = %PalettePanel