Preserve map region replacement order
This commit is contained in:
parent
f1fb01501c
commit
74ab47f1e8
|
@ -70,6 +70,7 @@ class WorldMap:
|
|||
var block_tile_ids: PoolByteArray
|
||||
var block_pathing: PoolIntArray
|
||||
var event_replacements: Dictionary # Dictionary[Array[EventReplacementRegion]]
|
||||
var event_replacements_ordered: Array # Array[int flag, EventReplacementRegion]
|
||||
|
||||
class EventReplacementRegion:
|
||||
var start_y: int
|
||||
|
@ -142,6 +143,7 @@ class WorldMap:
|
|||
func init_event_replacements(_data: Dictionary, buffer: StreamPeerBuffer, worldmap_event_replacements: Array):
|
||||
# Turn deserialized WorldMapEventReplacement structs into EventReplacementRegions
|
||||
self.event_replacements = {}
|
||||
self.event_replacements_ordered = []
|
||||
var last_event_flag: int = -1
|
||||
var last_y: int = -1
|
||||
var region := WorldMap.EventReplacementRegion.new()
|
||||
|
@ -158,6 +160,7 @@ class WorldMap:
|
|||
elif last_event_flag != event_flag or last_y != y-1:
|
||||
# Save last region and start a new one
|
||||
self.event_replacements.get_or_add(last_event_flag, []).append(region)
|
||||
self.event_replacements_ordered.append([last_event_flag, region])
|
||||
# Start a new region
|
||||
region = WorldMap.EventReplacementRegion.new()
|
||||
region.start_y = y
|
||||
|
@ -167,6 +170,7 @@ class WorldMap:
|
|||
region.rows.append([x, blocks])
|
||||
# Save final region
|
||||
self.event_replacements.get_or_add(last_event_flag, []).append(region)
|
||||
self.event_replacements_ordered.append([last_event_flag, region])
|
||||
|
||||
|
||||
var worldmaps = [WorldMap.new(), WorldMap.new(), WorldMap.new(), WorldMap.new(), WorldMap.new()]
|
||||
|
|
|
@ -28,9 +28,11 @@ func _create_worldmap_texture(id: int) -> void:
|
|||
func _create_worldmap_textures() -> void:
|
||||
for id in 5:
|
||||
self._create_worldmap_texture(id)
|
||||
for flag_block in MapLoader.worldmaps[id].event_replacements.values():
|
||||
for region in flag_block:
|
||||
self.map_regional_replacement_lists[id].append(region)
|
||||
# for flag_block in MapLoader.worldmaps[id].event_replacements.values():
|
||||
# for region in flag_block:
|
||||
# self.map_regional_replacement_lists[id].append(region)
|
||||
for flag_and_region in MapLoader.worldmaps[id].event_replacements_ordered:
|
||||
self.map_regional_replacement_lists[id].append(flag_and_region[1])
|
||||
|
||||
func _set_map(id: int) -> void:
|
||||
if id < 0 or id >= len(map_images):
|
||||
|
|
Loading…
Reference in New Issue