mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from collections.abc import Iterable
|
|
|
|
from .model import ConnectionData, RegionData, ModRegionsData
|
|
from ..mods.region_data import region_data_by_content_pack, vanilla_connections_to_remove_by_content_pack
|
|
|
|
|
|
def modify_regions_for_mods(current_regions_by_name: dict[str, RegionData], active_content_packs: Iterable[str]) -> None:
|
|
for content_pack in active_content_packs:
|
|
try:
|
|
region_data = region_data_by_content_pack[content_pack]
|
|
except KeyError:
|
|
continue
|
|
|
|
merge_mod_regions(current_regions_by_name, region_data)
|
|
|
|
|
|
def merge_mod_regions(current_regions_by_name: dict[str, RegionData], mod_region_data: ModRegionsData) -> None:
|
|
for new_region in mod_region_data.regions:
|
|
region_name = new_region.name
|
|
try:
|
|
current_region = current_regions_by_name[region_name]
|
|
except KeyError:
|
|
current_regions_by_name[region_name] = new_region
|
|
continue
|
|
|
|
current_regions_by_name[region_name] = current_region.merge_with(new_region)
|
|
|
|
|
|
def modify_connections_for_mods(connections: dict[str, ConnectionData], active_mods: Iterable[str]) -> None:
|
|
for active_mod in active_mods:
|
|
try:
|
|
region_data = region_data_by_content_pack[active_mod]
|
|
except KeyError:
|
|
continue
|
|
|
|
try:
|
|
vanilla_connections_to_remove = vanilla_connections_to_remove_by_content_pack[active_mod]
|
|
for connection_name in vanilla_connections_to_remove:
|
|
connections.pop(connection_name)
|
|
except KeyError:
|
|
pass
|
|
|
|
connections.update({
|
|
connection.name: connection
|
|
for connection in region_data.connections
|
|
})
|