integrate maseya-z3pr palette shuffle

This commit is contained in:
Fabian Dill 2020-08-23 12:06:00 +02:00
parent 91c141c803
commit 4cf1923c98
3 changed files with 35 additions and 12 deletions

View File

@ -246,7 +246,7 @@ def main(args, seed=None):
return player, team, bytes(rom.name).decode() return player, team, bytes(rom.name).decode()
pool = concurrent.futures.ThreadPoolExecutor() pool = concurrent.futures.ThreadPoolExecutor()
multidata_task = None
if not args.suppress_rom: if not args.suppress_rom:
rom_futures = [] rom_futures = []
@ -302,11 +302,13 @@ def main(args, seed=None):
with open(output_path('%s.multidata' % outfilebase), 'wb') as f: with open(output_path('%s.multidata' % outfilebase), 'wb') as f:
f.write(multidata) f.write(multidata)
pool.submit(write_multidata, rom_futures) multidata_task = pool.submit(write_multidata, rom_futures)
if not args.skip_playthrough: if not args.skip_playthrough:
logger.info('Calculating playthrough.') logger.info('Calculating playthrough.')
create_playthrough(world) create_playthrough(world)
if multidata_task:
multidata_task.result() # retrieve exception if one exists
pool.shutdown() # wait for all queued tasks to complete pool.shutdown() # wait for all queued tasks to complete
if args.create_spoiler: # needs spoiler.hashes to be filled, that depend on rom_futures being done if args.create_spoiler: # needs spoiler.hashes to be filled, that depend on rom_futures being done
world.spoiler.to_file(output_path('%s_Spoiler.txt' % outfilebase)) world.spoiler.to_file(output_path('%s_Spoiler.txt' % outfilebase))

View File

@ -10,7 +10,8 @@ def update_command():
subprocess.call([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt', '--upgrade']) subprocess.call([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt', '--upgrade'])
naming_specialties = {"PyYAML": "yaml"} # PyYAML is imported as the name yaml naming_specialties = {"PyYAML": "yaml", # PyYAML is imported as the name yaml
"maseya-z3pr": "maseya"}
def update(): def update():

38
Rom.py
View File

@ -25,7 +25,10 @@ from Items import ItemFactory
from EntranceShuffle import door_addresses from EntranceShuffle import door_addresses
import Patch import Patch
try:
from maseya import z3pr
except:
z3pr = None
class LocalRom(object): class LocalRom(object):
@ -1477,16 +1480,33 @@ def apply_rom_settings(rom, beep, color, quickswap, fastmenu, disable_music, spr
if sprite is not None: if sprite is not None:
write_sprite(rom, sprite) write_sprite(rom, sprite)
# reset palette if it was adjusted already
default_ow_palettes(rom) default_ow_palettes(rom)
if ow_palettes == 'random':
randomize_ow_palettes(rom, local_random)
elif ow_palettes == 'blackout':
blackout_ow_palettes(rom)
default_uw_palettes(rom) default_uw_palettes(rom)
if uw_palettes == 'random':
randomize_uw_palettes(rom, local_random) if z3pr:
elif uw_palettes == 'blackout': options = {
"randomize_dungeon": uw_palettes == 'random',
"randomize_overworld": ow_palettes == 'random'
}
if any(options.values()):
ColorF = z3pr.ColorF
def next_color():
return ColorF(local_random.random(), local_random.random(), local_random.random())
z3pr.randomize(rom.buffer, "maseya", next_color, options)
else:
logging.warning("Could not find z3pr palette shuffle. "
"If you want improved palette shuffling please install the maseya-z3pr package.")
if ow_palettes == 'random':
randomize_ow_palettes(rom, local_random)
if uw_palettes == 'random':
randomize_uw_palettes(rom, local_random)
if ow_palettes == 'blackout':
blackout_ow_palettes(rom)
if uw_palettes == 'blackout':
blackout_uw_palettes(rom) blackout_uw_palettes(rom)
if isinstance(rom, LocalRom): if isinstance(rom, LocalRom):