| 
									
										
										
										
											2022-10-28 21:00:06 +02:00
										 |  |  | from typing import Dict, List | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-09 20:58:24 +02:00
										 |  |  | from .Technologies import factorio_base_id | 
					
						
							| 
									
										
										
										
											2022-10-28 21:00:06 +02:00
										 |  |  | from .Options import MaxSciencePack | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def make_pools() -> Dict[str, List[str]]: | 
					
						
							|  |  |  |     pools: Dict[str, List[str]] = {} | 
					
						
							|  |  |  |     for i, pack in enumerate(MaxSciencePack.get_ordered_science_packs(), start=1): | 
					
						
							| 
									
										
										
										
											2023-11-07 21:02:28 +01:00
										 |  |  |         max_needed: int = 999 | 
					
						
							| 
									
										
										
										
											2022-10-28 21:00:06 +02:00
										 |  |  |         prefix: str = f"AP-{i}-" | 
					
						
							| 
									
										
										
										
											2023-11-07 21:02:28 +01:00
										 |  |  |         pools[pack] = [prefix + str(x).upper().zfill(3) for x in range(1, max_needed + 1)] | 
					
						
							| 
									
										
										
										
											2022-10-28 21:00:06 +02:00
										 |  |  |     return pools | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | location_pools: Dict[str, List[str]] = make_pools() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | location_table: Dict[str, int] = {} | 
					
						
							| 
									
										
										
										
											2023-04-09 20:58:24 +02:00
										 |  |  | end_id: int = factorio_base_id | 
					
						
							| 
									
										
										
										
											2022-10-28 21:00:06 +02:00
										 |  |  | for pool in location_pools.values(): | 
					
						
							|  |  |  |     location_table.update({name: ap_id for ap_id, name in enumerate(pool, start=end_id)}) | 
					
						
							|  |  |  |     end_id += len(pool) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-09 20:58:24 +02:00
										 |  |  | assert end_id - len(location_table) == factorio_base_id | 
					
						
							| 
									
										
										
										
											2022-10-28 21:00:06 +02:00
										 |  |  | del pool |