Overworld enemizer work

This commit is contained in:
aerinon
2022-10-25 09:14:19 -06:00
parent 1529ec9473
commit 57c479e1c2
11 changed files with 1494 additions and 61 deletions

View File

@@ -1,4 +1,5 @@
from types import SimpleNamespace
from collections import Counter, defaultdict
from source.dungeon.EnemyList import enemy_names, SpriteType
from source.enemizer.Enemizer import randomize_underworld_rooms
@@ -8,15 +9,35 @@ import RaceRandom as random
if __name__ == '__main__':
random.seed(42)
world = SimpleNamespace(pottery={1: 'none'})
data_tables = init_data_tables(world, 1)
randomize_underworld_sprite_sheets(data_tables.sprite_sheets)
randomize_underworld_rooms(data_tables)
for room_id, enemy_list in data_tables.uw_enemy_table.room_map.items():
print(f'Room {hex(room_id)}:')
for i, sprite in enumerate(enemy_list):
if sprite.sub_type == SpriteType.Overlord:
print(f' Overlord #{i+1} {hex(sprite.kind)}:')
else:
print(f' Enemy #{i+1} {enemy_names[sprite.kind]}:')
stats = defaultdict(Counter)
column_headers = {}
for trial in range(0, 100):
world = SimpleNamespace(pottery={1: 'none'})
data_tables = init_data_tables(world, 1)
randomize_underworld_sprite_sheets(data_tables.sprite_sheets)
randomize_underworld_rooms(data_tables)
for room_id, enemy_list in data_tables.uw_enemy_table.room_map.items():
# print(f'Room {hex(room_id)}:')
for i, sprite in enumerate(enemy_list):
if sprite.sub_type == SpriteType.Overlord:
result = f'O{hex(sprite.kind)}'
else:
result = enemy_names[sprite.kind]
if result not in column_headers:
column_headers[result] = None
stats[(room_id, i)][result] += 1
with open('result.csv', 'w') as result_file:
result_file.write('room_id,slot,')
result_file.write(','.join(column_headers.keys()))
result_file.write('\n')
for key, counter in stats.items():
rid, slot = key
result_file.write(f'{rid},{slot}')
for result_item in column_headers.keys():
result_file.write(f',{counter[result_item]}')
result_file.write('\n')