Hack in Spanish

This commit is contained in:
Mike A. Trethewey
2020-03-09 02:25:25 -07:00
parent b25e46b160
commit ca7fc4d0f6
9 changed files with 186 additions and 37 deletions

View File

@@ -8,6 +8,9 @@ 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
@@ -1094,6 +1097,11 @@ 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:
@@ -1149,7 +1157,7 @@ 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('-Balancing Doors')
logger.info(fish.translate("cli","cli","balance.doors"))
assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger)
# the rest
assign_the_rest(dungeon_map, neutral_sectors, global_pole)
@@ -1435,8 +1443,13 @@ def sum_polarity(sector_list):
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")
# step 1: fix polarity connection issues
logger.info('--Basic Traversal')
logger.info(fish.translate("cli","cli","basic.traversal"))
unconnected_builders = identify_polarity_issues(dungeon_map)
while len(unconnected_builders) > 0:
for name, builder in unconnected_builders.items():
@@ -1524,10 +1537,15 @@ def assign_polarized_sectors(dungeon_map, polarized_sectors, global_pole, logger
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")
builder_order = list(dungeon_map.values())
random.shuffle(builder_order)
for builder in builder_order:
logger.info('--Balancing %s', builder.name)
logger.info('%s %s', fish.translate("cli","cli","balancing"), builder.name)
while not builder.polarity().is_neutral():
candidates = find_neutralizing_candidates(builder, polarized_sectors)
valid, sectors = False, None
@@ -1832,8 +1850,13 @@ def assign_the_rest(dungeon_map, 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")
logger = logging.getLogger('')
logger.info('Splitting Up Desert/Skull')
logger.info(fish.translate("cli","cli","splitting.up") + ' ' + 'Desert/Skull')
candidate_sectors = dict.fromkeys(builder.sectors)
global_pole = GlobalPolarity(candidate_sectors)
@@ -1848,6 +1871,11 @@ def split_dungeon_builder(builder, split_list):
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")
logger = logging.getLogger('')
# categorize sectors
crystal_switches, crystal_barriers, neutral_sectors, polarized_sectors = categorize_sectors(candidate_sectors)
@@ -1860,7 +1888,7 @@ def balance_split(candidate_sectors, dungeon_map, global_pole):
# blue barriers
assign_crystal_barrier_sectors(dungeon_map, crystal_barriers, global_pole)
# polarity:
logger.info('-Re-balancing ' + next(iter(dungeon_map.keys())) + ' et al')
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)
# the rest
assign_the_rest(dungeon_map, neutral_sectors, global_pole)