Restructuring spoiler output to support future types of map text output
This commit is contained in:
@@ -2719,6 +2719,7 @@ class Spoiler(object):
|
||||
self.world = world
|
||||
self.hashes = {}
|
||||
self.overworlds = {}
|
||||
self.maps = {}
|
||||
self.entrances = {}
|
||||
self.doors = {}
|
||||
self.doorTypes = {}
|
||||
@@ -2742,6 +2743,14 @@ class Spoiler(object):
|
||||
else:
|
||||
self.overworlds[(entrance, direction, player)] = OrderedDict([('player', player), ('entrance', entrance), ('exit', exit), ('direction', direction)])
|
||||
|
||||
def set_map(self, type, text, data, player):
|
||||
if type not in self.maps:
|
||||
self.maps[type] = {}
|
||||
if self.world.players == 1:
|
||||
self.maps[type][player] = OrderedDict([('text', text), ('data', data)])
|
||||
else:
|
||||
self.maps[type][player] = OrderedDict([('player', player), ('text', text), ('data', data)])
|
||||
|
||||
def set_entrance(self, entrance, exit, direction, player):
|
||||
if self.world.players == 1:
|
||||
self.entrances[(entrance, direction, player)] = OrderedDict([('entrance', entrance), ('exit', exit), ('direction', direction)])
|
||||
@@ -2910,6 +2919,7 @@ class Spoiler(object):
|
||||
self.parse_data()
|
||||
out = OrderedDict()
|
||||
out['Overworld'] = list(self.overworlds.values())
|
||||
out['Maps'] = list(self.maps.values())
|
||||
out['Entrances'] = list(self.entrances.values())
|
||||
out['Doors'] = list(self.doors.values())
|
||||
out['Lobbies'] = list(self.lobbies.values())
|
||||
@@ -3020,29 +3030,12 @@ class Spoiler(object):
|
||||
if self.overworlds:
|
||||
outfile.write('\n\nOverworld:\n\n')
|
||||
# overworld tile swaps
|
||||
swap_output = False
|
||||
for player in range(1, self.world.players + 1):
|
||||
if self.world.owMixed[player]:
|
||||
from OverworldShuffle import tile_swap_spoiler_table
|
||||
if not swap_output:
|
||||
swap_output = True
|
||||
outfile.write('OW Tile Swaps:\n')
|
||||
outfile.write(('' if self.world.players == 1 else str('(Player ' + str(player) + ')')).ljust(11)) # player name
|
||||
s = list(map(lambda x: ' ' if x not in self.world.owswaps[player][0] else 'S', [i for i in range(0x40)]))
|
||||
outfile.write((tile_swap_spoiler_table + '\n\n') % ( s[0x02], s[0x07], \
|
||||
s[0x00], s[0x03], s[0x05], \
|
||||
s[0x00], s[0x02],s[0x03], s[0x05], s[0x07], s[0x0a], s[0x0f], \
|
||||
s[0x0a], s[0x0f],
|
||||
s[0x10],s[0x11],s[0x12],s[0x13],s[0x14],s[0x15],s[0x16],s[0x17], s[0x10],s[0x11],s[0x12],s[0x13],s[0x14],s[0x15],s[0x16],s[0x17],
|
||||
s[0x18], s[0x1a],s[0x1b], s[0x1d],s[0x1e], \
|
||||
s[0x22], s[0x25], s[0x1a], s[0x1d], \
|
||||
s[0x28],s[0x29],s[0x2a],s[0x2b],s[0x2c],s[0x2d],s[0x2e],s[0x2f], s[0x18], s[0x1b], s[0x1e], \
|
||||
s[0x30], s[0x32],s[0x33],s[0x34],s[0x35], s[0x37], s[0x22], s[0x25], \
|
||||
s[0x3a],s[0x3b],s[0x3c], s[0x3f], \
|
||||
s[0x28],s[0x29],s[0x2a],s[0x2b],s[0x2c],s[0x2d],s[0x2e],s[0x2f], \
|
||||
s[0x32],s[0x33],s[0x34], s[0x37], \
|
||||
s[0x30], s[0x35],
|
||||
s[0x3a],s[0x3b],s[0x3c], s[0x3f]))
|
||||
if self.maps['swaps']:
|
||||
outfile.write('OW Tile Swaps:\n')
|
||||
for player in self.maps['swaps']:
|
||||
if self.world.players > 1:
|
||||
outfile.write(str('(Player ' + str(player) + ')\n')) # player name
|
||||
outfile.write(self.maps['swaps'][player]['text'] + '\n\n')
|
||||
|
||||
# overworld transitions
|
||||
outfile.write('\n'.join(['%s%s %s %s' % (f'{self.world.get_player_names(entry["player"])}: ' if self.world.players > 1 else '', self.world.fish.translate("meta","overworlds",entry['entrance']), '<=>' if entry['direction'] == 'both' else '<=' if entry['direction'] == 'exit' else '=>', self.world.fish.translate("meta","overworlds",entry['exit'])) for entry in self.overworlds.values()]))
|
||||
|
||||
@@ -137,6 +137,24 @@ def link_overworld(world, player):
|
||||
assert len(swapped_edges) == 0, 'Not all edges were swapped successfully: ' + ', '.join(swapped_edges )
|
||||
|
||||
update_world_regions(world, player)
|
||||
|
||||
# update spoiler
|
||||
s = list(map(lambda x: ' ' if x not in world.owswaps[player][0] else 'S', [i for i in range(0x40)]))
|
||||
text_output = tile_swap_spoiler_table.replace('s', '%s') % ( s[0x02], s[0x07],
|
||||
s[0x00], s[0x03], s[0x05],
|
||||
s[0x00], s[0x02],s[0x03], s[0x05], s[0x07], s[0x0a], s[0x0f],
|
||||
s[0x0a], s[0x0f],
|
||||
s[0x10],s[0x11],s[0x12],s[0x13],s[0x14],s[0x15],s[0x16],s[0x17], s[0x10],s[0x11],s[0x12],s[0x13],s[0x14],s[0x15],s[0x16],s[0x17],
|
||||
s[0x18], s[0x1a],s[0x1b], s[0x1d],s[0x1e],
|
||||
s[0x22], s[0x25], s[0x1a], s[0x1d],
|
||||
s[0x28],s[0x29],s[0x2a],s[0x2b],s[0x2c],s[0x2d],s[0x2e],s[0x2f], s[0x18], s[0x1b], s[0x1e],
|
||||
s[0x30], s[0x32],s[0x33],s[0x34],s[0x35], s[0x37], s[0x22], s[0x25],
|
||||
s[0x3a],s[0x3b],s[0x3c], s[0x3f],
|
||||
s[0x28],s[0x29],s[0x2a],s[0x2b],s[0x2c],s[0x2d],s[0x2e],s[0x2f],
|
||||
s[0x32],s[0x33],s[0x34], s[0x37],
|
||||
s[0x30], s[0x35],
|
||||
s[0x3a],s[0x3b],s[0x3c], s[0x3f])
|
||||
world.spoiler.set_map('swaps', text_output, world.owswaps[player][0], player)
|
||||
|
||||
# apply tile logical connections
|
||||
for owid in ow_connections.keys():
|
||||
@@ -1598,21 +1616,21 @@ flute_data = {
|
||||
}
|
||||
|
||||
tile_swap_spoiler_table = \
|
||||
""" 0 1 2 3 4 5 6 7
|
||||
""" 0 1 2 3 4 5 6 7
|
||||
+---+-+---+---+-+
|
||||
01234567 A(00)| |%s| | |%s|
|
||||
+--------+ | %s +-+ %s | %s +-+
|
||||
A(00)|%s %s%s %s %s| B(08)| |%s| | |%s|
|
||||
B(08)| %s %s| +-+-+-+-+-+-+-+-+
|
||||
C(10)|%s%s%s%s%s%s%s%s| C(10)|%s|%s|%s|%s|%s|%s|%s|%s|
|
||||
D(18)|%s %s%s %s%s | +-+-+-+-+-+-+-+-+
|
||||
E(20)| %s %s | D(18)| |%s| |%s| |
|
||||
F(28)|%s%s%s%s%s%s%s%s| | %s +-+ %s +-+ %s |
|
||||
G(30)|%s %s%s%s%s %s| E(20)| |%s| |%s| |
|
||||
H(38)| %s%s%s %s| +-+-+-+-+-+-+-+-+
|
||||
+--------+ F(28)|%s|%s|%s|%s|%s|%s|%s|%s|
|
||||
01234567 A(00)| |s| | |s|
|
||||
+--------+ | s +-+ s | s +-+
|
||||
A(00)|s ss s s| B(08)| |s| | |s|
|
||||
B(08)| s s| +-+-+-+-+-+-+-+-+
|
||||
C(10)|ssssssss| C(10)|s|s|s|s|s|s|s|s|
|
||||
D(18)|s ss ss | +-+-+-+-+-+-+-+-+
|
||||
E(20)| s s | D(18)| |s| |s| |
|
||||
F(28)|ssssssss| | s +-+ s +-+ s |
|
||||
G(30)|s ssss s| E(20)| |s| |s| |
|
||||
H(38)| sss s| +-+-+-+-+-+-+-+-+
|
||||
+--------+ F(28)|s|s|s|s|s|s|s|s|
|
||||
+-+-+-+-+-+-+-+-+
|
||||
G(30)| |%s|%s|%s| |%s|
|
||||
| %s +-+-+-+ %s +-+
|
||||
H(38)| |%s|%s|%s| |%s|
|
||||
G(30)| |s|s|s| |s|
|
||||
| s +-+-+-+ s +-+
|
||||
H(38)| |s|s|s| |s|
|
||||
+---+-+-+-+---+-+"""
|
||||
|
||||
Reference in New Issue
Block a user