add seed_name to multidata and RoomInfo
This commit is contained in:
		
							parent
							
								
									764e6e7926
								
							
						
					
					
						commit
						2df7e4e537
					
				
							
								
								
									
										4
									
								
								Main.py
								
								
								
								
							
							
						
						
									
										4
									
								
								Main.py
								
								
								
								
							|  | @ -417,7 +417,8 @@ def main(args, seed=None): | ||||||
|             for player in world.alttp_player_ids: |             for player in world.alttp_player_ids: | ||||||
|                 rom_futures.append(pool.submit(_gen_rom, team, player)) |                 rom_futures.append(pool.submit(_gen_rom, team, player)) | ||||||
|         for player in world.factorio_player_ids: |         for player in world.factorio_player_ids: | ||||||
|             mod_futures.append(pool.submit(generate_mod, world, player)) |             mod_futures.append(pool.submit(generate_mod, world, player, | ||||||
|  |                                            str(args.outputname if args.outputname else world.seed))) | ||||||
| 
 | 
 | ||||||
|         def get_entrance_to_region(region: Region): |         def get_entrance_to_region(region: Region): | ||||||
|             for entrance in region.entrances: |             for entrance in region.entrances: | ||||||
|  | @ -524,6 +525,7 @@ def main(args, seed=None): | ||||||
|                 "version": tuple(_version_tuple), |                 "version": tuple(_version_tuple), | ||||||
|                 "tags": ["AP"], |                 "tags": ["AP"], | ||||||
|                 "minimum_versions": minimum_versions, |                 "minimum_versions": minimum_versions, | ||||||
|  |                 "seed_name": str(args.outputname if args.outputname else world.seed) | ||||||
|             }), 9) |             }), 9) | ||||||
| 
 | 
 | ||||||
|             with open(output_path('%s.archipelago' % outfilebase), 'wb') as f: |             with open(output_path('%s.archipelago' % outfilebase), 'wb') as f: | ||||||
|  |  | ||||||
|  | @ -112,6 +112,7 @@ class Context(Node): | ||||||
|         self.tags = ['AP'] |         self.tags = ['AP'] | ||||||
|         self.games = {} |         self.games = {} | ||||||
|         self.minimum_client_versions: typing.Dict[int, Utils.Version] = {} |         self.minimum_client_versions: typing.Dict[int, Utils.Version] = {} | ||||||
|  |         self.seed_name = "" | ||||||
| 
 | 
 | ||||||
|     def load(self, multidatapath: str, use_embedded_server_options: bool = False): |     def load(self, multidatapath: str, use_embedded_server_options: bool = False): | ||||||
|         with open(multidatapath, 'rb') as f: |         with open(multidatapath, 'rb') as f: | ||||||
|  | @ -141,7 +142,7 @@ class Context(Node): | ||||||
|         for team, names in enumerate(decoded_obj['names']): |         for team, names in enumerate(decoded_obj['names']): | ||||||
|             for player, name in enumerate(names, 1): |             for player, name in enumerate(names, 1): | ||||||
|                 self.player_names[(team, player)] = name |                 self.player_names[(team, player)] = name | ||||||
| 
 |         self.seed_name = decoded_obj["seed_name"] | ||||||
|         self.connect_names = decoded_obj['connect_names'] |         self.connect_names = decoded_obj['connect_names'] | ||||||
|         self.remote_items = decoded_obj['remote_items'] |         self.remote_items = decoded_obj['remote_items'] | ||||||
|         self.locations = decoded_obj['locations'] |         self.locations = decoded_obj['locations'] | ||||||
|  | @ -152,6 +153,7 @@ class Context(Node): | ||||||
|             server_options = decoded_obj.get("server_options", {}) |             server_options = decoded_obj.get("server_options", {}) | ||||||
|             self._set_options(server_options) |             self._set_options(server_options) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|     def get_players_package(self): |     def get_players_package(self): | ||||||
|         return [NetworkPlayer(t, p, self.get_aliased_name(t, p), n) for (t, p), n in self.player_names.items()] |         return [NetworkPlayer(t, p, self.get_aliased_name(t, p), n) for (t, p), n in self.player_names.items()] | ||||||
| 
 | 
 | ||||||
|  | @ -367,7 +369,8 @@ async def on_client_connected(ctx: Context, client: Client): | ||||||
|         'remaining_mode': ctx.remaining_mode, |         'remaining_mode': ctx.remaining_mode, | ||||||
|         'hint_cost': ctx.hint_cost, |         'hint_cost': ctx.hint_cost, | ||||||
|         'location_check_points': ctx.location_check_points, |         'location_check_points': ctx.location_check_points, | ||||||
|         'datapackage_version': network_data_package["version"] |         'datapackage_version': network_data_package["version"], | ||||||
|  |         'seed_name': ctx.seed_name | ||||||
|     }]) |     }]) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -69,8 +69,8 @@ def main(args=None, callback=ERmain): | ||||||
|     seed = get_seed(args.seed) |     seed = get_seed(args.seed) | ||||||
|     random.seed(seed) |     random.seed(seed) | ||||||
| 
 | 
 | ||||||
|     seedname = "M" + (f"{random.randint(0, pow(10, seeddigits) - 1)}".zfill(seeddigits)) |     seedname = f"{random.randint(0, pow(10, seeddigits) - 1)}".zfill(seeddigits) | ||||||
|     print(f"Generating mystery for {args.multi} player{'s' if args.multi > 1 else ''}, {seedname} Seed {seed}") |     print(f"Generating for {args.multi} player{'s' if args.multi > 1 else ''}, {seedname} Seed {seed}") | ||||||
| 
 | 
 | ||||||
|     if args.race: |     if args.race: | ||||||
|         random.seed()  # reset to time-based random source |         random.seed()  # reset to time-based random source | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								Utils.py
								
								
								
								
							
							
						
						
									
										2
									
								
								Utils.py
								
								
								
								
							|  | @ -12,7 +12,7 @@ class Version(typing.NamedTuple): | ||||||
|     minor: int |     minor: int | ||||||
|     build: int |     build: int | ||||||
| 
 | 
 | ||||||
| __version__ = "0.0.3" | __version__ = "0.0.4" | ||||||
| _version_tuple = tuplize_version(__version__) | _version_tuple = tuplize_version(__version__) | ||||||
| 
 | 
 | ||||||
| import builtins | import builtins | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ base_info = { | ||||||
|     "factorio_version": "1.1" |     "factorio_version": "1.1" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| def generate_mod(world: MultiWorld, player: int): | def generate_mod(world: MultiWorld, player: int, seedname: str): | ||||||
|     global template, locale_template |     global template, locale_template | ||||||
|     with template_load_lock: |     with template_load_lock: | ||||||
|         if not template: |         if not template: | ||||||
|  | @ -41,7 +41,7 @@ def generate_mod(world: MultiWorld, player: int): | ||||||
|     for location in world.get_filled_locations(player): |     for location in world.get_filled_locations(player): | ||||||
|         if not location.name.startswith("recipe-"):  # introduce this as a new location property? |         if not location.name.startswith("recipe-"):  # introduce this as a new location property? | ||||||
|             locations.append((location.name, location.item.name, location.item.player)) |             locations.append((location.name, location.item.name, location.item.player)) | ||||||
|     mod_name = f"archipelago-client-{world.seed}-{player}" |     mod_name = f"archipelago-client-{seedname}-{player}" | ||||||
|     tech_cost = {0: 0.1, |     tech_cost = {0: 0.1, | ||||||
|                  1: 0.25, |                  1: 0.25, | ||||||
|                  2: 0.5, |                  2: 0.5, | ||||||
|  |  | ||||||
|  | @ -76,9 +76,6 @@ def get_shapes(world: MultiWorld, player: int) -> Dict[str, List[str]]: | ||||||
|         # https://www.wolframalpha.com/input/?i=x+=+1/2+(n++++1)+(2++++n)+solve+for+n |         # https://www.wolframalpha.com/input/?i=x+=+1/2+(n++++1)+(2++++n)+solve+for+n | ||||||
|         import math |         import math | ||||||
|         slice_size = int(0.5*(math.sqrt(8*len(tech_names)+1)-3)) |         slice_size = int(0.5*(math.sqrt(8*len(tech_names)+1)-3)) | ||||||
| 
 |  | ||||||
|         import logging |  | ||||||
|         logging.info(slice_size) |  | ||||||
|         tech_names.sort() |         tech_names.sort() | ||||||
|         world.random.shuffle(tech_names) |         world.random.shuffle(tech_names) | ||||||
|         tech_names.sort(key=lambda tech_name: len(technology_table[tech_name].ingredients)) |         tech_names.sort(key=lambda tech_name: len(technology_table[tech_name].ingredients)) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue