Pass the fish better
This commit is contained in:
@@ -8,9 +8,6 @@ from functools import reduce
|
||||
import operator as op
|
||||
from typing import List
|
||||
|
||||
from source.classes.BabelFish import BabelFish
|
||||
import CLI as cli
|
||||
|
||||
from BaseClasses import DoorType, Direction, CrystalBarrier, RegionType, Polarity, Sector, PolSlot, flooded_keys
|
||||
from Regions import key_only_locations, dungeon_events, flooded_keys_reverse
|
||||
from Dungeons import dungeon_regions
|
||||
@@ -1097,11 +1094,6 @@ def simple_dungeon_builder(name, sector_list):
|
||||
|
||||
|
||||
def create_dungeon_builders(all_sectors, world, player, dungeon_entrances=None):
|
||||
settings = cli.get_args_priority(None, None, None)
|
||||
if "load" in settings:
|
||||
settings = settings["load"]
|
||||
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
|
||||
|
||||
logger = logging.getLogger('')
|
||||
logger.info('Shuffling Dungeon Sectors')
|
||||
if dungeon_entrances is None:
|
||||
@@ -1157,8 +1149,8 @@ def create_dungeon_builders(all_sectors, world, player, dungeon_entrances=None):
|
||||
# polarity:
|
||||
if not global_pole.is_valid(dungeon_map):
|
||||
raise NeutralizingException('Either free location/crystal assignment is already globally invalid - lazy dev check this earlier!')
|
||||
logger.info(fish.translate("cli","cli","balance.doors"))
|
||||
assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger)
|
||||
logger.info(world.fish.translate("cli","cli","balance.doors"))
|
||||
assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger, world.fish)
|
||||
# the rest
|
||||
assign_the_rest(dungeon_map, neutral_sectors, global_pole)
|
||||
return dungeon_map
|
||||
@@ -1442,12 +1434,7 @@ def sum_polarity(sector_list):
|
||||
return pol
|
||||
|
||||
|
||||
def assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger):
|
||||
settings = cli.get_args_priority(None, None, None)
|
||||
if "load" in settings:
|
||||
settings = settings["load"]
|
||||
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
|
||||
|
||||
def assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger, fish):
|
||||
# step 1: fix polarity connection issues
|
||||
logger.info(fish.translate("cli","cli","basic.traversal"))
|
||||
unconnected_builders = identify_polarity_issues(dungeon_map)
|
||||
@@ -1487,7 +1474,7 @@ def assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger
|
||||
problem_builders = identify_simple_branching_issues(problem_builders)
|
||||
|
||||
# step 3: fix neutrality issues
|
||||
polarity_step_3(dungeon_map, polarized_sectors, global_pole, logger)
|
||||
polarity_step_3(dungeon_map, polarized_sectors, global_pole, logger, fish)
|
||||
|
||||
# step 4: fix dead ends again
|
||||
neutral_choices: List[List] = neutralize_the_rest(polarized_sectors)
|
||||
@@ -1536,12 +1523,7 @@ def assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger
|
||||
tries += 1
|
||||
|
||||
|
||||
def polarity_step_3(dungeon_map, polarized_sectors, global_pole, logger):
|
||||
settings = cli.get_args_priority(None, None, None)
|
||||
if "load" in settings:
|
||||
settings = settings["load"]
|
||||
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
|
||||
|
||||
def polarity_step_3(dungeon_map, polarized_sectors, global_pole, logger, fish):
|
||||
builder_order = list(dungeon_map.values())
|
||||
random.shuffle(builder_order)
|
||||
for builder in builder_order:
|
||||
@@ -1849,12 +1831,7 @@ def assign_the_rest(dungeon_map, neutral_sectors, global_pole):
|
||||
assign_sector(sector_list[i], builder, neutral_sectors, global_pole)
|
||||
|
||||
|
||||
def split_dungeon_builder(builder, split_list):
|
||||
settings = cli.get_args_priority(None, None, None)
|
||||
if "load" in settings:
|
||||
settings = settings["load"]
|
||||
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
|
||||
|
||||
def split_dungeon_builder(builder, split_list, fish):
|
||||
logger = logging.getLogger('')
|
||||
logger.info(fish.translate("cli","cli","splitting.up") + ' ' + 'Desert/Skull')
|
||||
candidate_sectors = dict.fromkeys(builder.sectors)
|
||||
@@ -1867,15 +1844,10 @@ def split_dungeon_builder(builder, split_list):
|
||||
sub_builder.all_entrances = split_entrances
|
||||
for r_name in split_entrances:
|
||||
assign_sector(find_sector(r_name, candidate_sectors), sub_builder, candidate_sectors, global_pole)
|
||||
return balance_split(candidate_sectors, dungeon_map, global_pole)
|
||||
return balance_split(candidate_sectors, dungeon_map, global_pole, fish)
|
||||
|
||||
|
||||
def balance_split(candidate_sectors, dungeon_map, global_pole):
|
||||
settings = cli.get_args_priority(None, None, None)
|
||||
if "load" in settings:
|
||||
settings = settings["load"]
|
||||
fish = BabelFish(lang=settings["lang"] if "lang" in settings else "en")
|
||||
|
||||
def balance_split(candidate_sectors, dungeon_map, global_pole, fish):
|
||||
logger = logging.getLogger('')
|
||||
# categorize sectors
|
||||
crystal_switches, crystal_barriers, neutral_sectors, polarized_sectors = categorize_sectors(candidate_sectors)
|
||||
@@ -1889,7 +1861,7 @@ def balance_split(candidate_sectors, dungeon_map, global_pole):
|
||||
assign_crystal_barrier_sectors(dungeon_map, crystal_barriers, global_pole)
|
||||
# polarity:
|
||||
logger.info(fish.translate("cli","cli","re-balancing") + ' ' + next(iter(dungeon_map.keys())) + ' et al')
|
||||
assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger)
|
||||
assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger, fish)
|
||||
# the rest
|
||||
assign_the_rest(dungeon_map, neutral_sectors, global_pole)
|
||||
return dungeon_map
|
||||
|
||||
Reference in New Issue
Block a user