Started working on updating map serialization/deserialization
This commit is contained in:
parent
23c0c388e4
commit
0d04ef63c5
3 changed files with 23 additions and 8 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
class_name MapData
|
class_name MapData
|
||||||
extends Resource
|
extends Resource
|
||||||
|
|
||||||
@export var cells:Array[Vector2i] = []
|
@export var ground_tiles:Array[Vector3i] = [] # x,y,tile_id
|
||||||
|
|
|
||||||
|
|
@ -8,16 +8,30 @@ func _ready():
|
||||||
func saveMap(absolute_map_filename:String):
|
func saveMap(absolute_map_filename:String):
|
||||||
print("Triggered ResourceSaver.saveMap(%s)" % [absolute_map_filename])
|
print("Triggered ResourceSaver.saveMap(%s)" % [absolute_map_filename])
|
||||||
var map_data = MapData.new()
|
var map_data = MapData.new()
|
||||||
map_data.cells = %GroundMapLayer.get_used_cells()
|
|
||||||
|
var cell_count:int = len(%GroundMapLayer.get_used_cells())
|
||||||
|
print("Number of used cells: %i" % [cell_count])
|
||||||
|
|
||||||
|
for cell_pos in %GroundMapLayer.get_used_cells():
|
||||||
|
var tile_id = %GroundMapLayer.get_cell_source_id(cell_pos)
|
||||||
|
map_data.ground_tiles.append( Vector3i(cell_pos.x, cell_pos.y, tile_id))
|
||||||
|
|
||||||
ResourceSaver.save(map_data, absolute_map_filename)
|
ResourceSaver.save(map_data, absolute_map_filename)
|
||||||
print("Saved {0}".format([absolute_map_filename]))
|
print("Saved {0}".format([absolute_map_filename]))
|
||||||
|
|
||||||
func loadMap(map_file_name):
|
func loadMap(map_file_name):
|
||||||
# TODO: Clear TilemapLayers before loading
|
# TODO: Clear TilemapLayers before loading
|
||||||
print("loadMap: {0}".format([map_file_name]))
|
%GroundMapLayer.clear()
|
||||||
var map:MapData = load(map_file_name)
|
|
||||||
|
|
||||||
# TODO: Set TileMapLayer cells according to loaded info
|
print("loadMap: {0}".format([map_file_name]))
|
||||||
for cell in map.cells:
|
#var map:MapData = load(map_file_name)
|
||||||
#%GroundMapLayer.get_used_cells() = map.cells
|
var map:MapData = ResourceLoader.load(map_file_name)
|
||||||
print(cell)
|
for tile_info:Vector3i in map.ground_tiles:
|
||||||
|
var cell_pos:Vector2i = Vector2i(tile_info[0], tile_info[1])
|
||||||
|
var tile_id:int = tile_info[2]
|
||||||
|
%GroundMapLayer.set_cell(cell_pos, tile_id)
|
||||||
|
|
||||||
|
## TODO: Set TileMapLayer cells according to loaded info
|
||||||
|
#for cell in map.cells:
|
||||||
|
# #%GroundMapLayer.get_used_cells() = map.cells#
|
||||||
|
# print(cell)
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ func load_settings():
|
||||||
var full_map_name = Global.settings.current_project_dir + "/" + Global.settings.current_map_name
|
var full_map_name = Global.settings.current_project_dir + "/" + Global.settings.current_map_name
|
||||||
if FileAccess.file_exists(full_map_name):
|
if FileAccess.file_exists(full_map_name):
|
||||||
print("Loading Map: ({0})".format([full_map_name]))
|
print("Loading Map: ({0})".format([full_map_name]))
|
||||||
|
%ResourceSaver.loadMap(full_map_name)
|
||||||
else:
|
else:
|
||||||
if DirAccess.dir_exists_absolute(cur_dir) and len(cur_dir)>0:
|
if DirAccess.dir_exists_absolute(cur_dir) and len(cur_dir)>0:
|
||||||
print("Select Map Dialog, because Dir exists: {0}".format([cur_dir]))
|
print("Select Map Dialog, because Dir exists: {0}".format([cur_dir]))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue