| 
									
										
										
										
											2021-01-03 14:32:32 +01:00
										 |  |  | from typing import NamedTuple, Union | 
					
						
							| 
									
										
										
										
											2021-01-21 23:37:58 +01:00
										 |  |  | import logging | 
					
						
							| 
									
										
										
										
											2021-01-03 14:32:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-27 14:52:33 +02:00
										 |  |  | from ..AutoWorld import World | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GenericWorld(World): | 
					
						
							|  |  |  |     game = "Archipelago" | 
					
						
							|  |  |  |     topology_present = False | 
					
						
							|  |  |  |     item_name_to_id = { | 
					
						
							|  |  |  |         "Nothing": -1 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     location_name_to_id = { | 
					
						
							|  |  |  |         "Cheat Console" : -1, | 
					
						
							|  |  |  |         "Server": -2 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     hidden = True | 
					
						
							| 
									
										
										
										
											2021-07-12 13:54:47 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-03 14:32:32 +01:00
										 |  |  | class PlandoItem(NamedTuple): | 
					
						
							|  |  |  |     item: str | 
					
						
							|  |  |  |     location: str | 
					
						
							|  |  |  |     world: Union[bool, str] = False  # False -> own world, True -> not own world | 
					
						
							|  |  |  |     from_pool: bool = True  # if item should be removed from item pool | 
					
						
							| 
									
										
										
										
											2021-01-21 23:37:58 +01:00
										 |  |  |     force: str = 'silent'  # false -> warns if item not successfully placed. true -> errors out on failure to place item. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def warn(self, warning: str): | 
					
						
							|  |  |  |         if self.force in ['true', 'fail', 'failure', 'none', 'false', 'warn', 'warning']: | 
					
						
							|  |  |  |             logging.warning(f'{warning}') | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             logging.debug(f'{warning}') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def failed(self, warning: str, exception=Exception): | 
					
						
							|  |  |  |         if self.force in ['true', 'fail', 'failure']: | 
					
						
							|  |  |  |             raise exception(warning) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             self.warn(warning) | 
					
						
							| 
									
										
										
										
											2021-01-03 14:32:32 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PlandoConnection(NamedTuple): | 
					
						
							|  |  |  |     entrance: str | 
					
						
							|  |  |  |     exit: str | 
					
						
							|  |  |  |     direction: str  # entrance, exit or both |