| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  | def create_regions(self, world, player: int): | 
					
						
							|  |  |  |     from . import create_region | 
					
						
							|  |  |  |     from BaseClasses import Entrance | 
					
						
							| 
									
										
										
										
											2023-03-25 14:30:38 -04:00
										 |  |  |     from worlds.sm.variaRandomizer.logic.logic import Logic | 
					
						
							|  |  |  |     from worlds.sm.variaRandomizer.graph.vanilla.graph_locations import locationsDict | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     regions = [] | 
					
						
							|  |  |  |     for accessPoint in Logic.accessPoints: | 
					
						
							| 
									
										
										
										
											2023-02-19 23:09:54 +01:00
										 |  |  |         if not accessPoint.Escape: | 
					
						
							|  |  |  |             regions.append(create_region(self,  | 
					
						
							|  |  |  |                                          world,  | 
					
						
							|  |  |  |                                          player,  | 
					
						
							|  |  |  |                                          accessPoint.Name,  | 
					
						
							|  |  |  |                                          None, | 
					
						
							|  |  |  |                                          [accessPoint.Name + "->" + key for key in accessPoint.intraTransitions.keys()])) | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     world.regions += regions | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # create a region for each location and link each to what the location has access | 
					
						
							|  |  |  |     # we make them one way so that the filler (and spoiler log) doesnt try to use those region as intermediary path | 
					
						
							|  |  |  |     # this is required in AP because a location cant have multiple parent regions | 
					
						
							|  |  |  |     locationRegions = [] | 
					
						
							|  |  |  |     for locationName, value in locationsDict.items(): | 
					
						
							|  |  |  |         locationRegions.append(create_region(   self,  | 
					
						
							|  |  |  |                                                 world,  | 
					
						
							|  |  |  |                                                 player,  | 
					
						
							|  |  |  |                                                 locationName,  | 
					
						
							|  |  |  |                                                 [locationName])) | 
					
						
							|  |  |  |         for key in value.AccessFrom.keys(): | 
					
						
							|  |  |  |             currentRegion =world.get_region(key, player) | 
					
						
							|  |  |  |             currentRegion.exits.append(Entrance(player, key + "->"+ locationName, currentRegion)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     world.regions += locationRegions | 
					
						
							|  |  |  |     #create entrances | 
					
						
							|  |  |  |     regionConcat = regions + locationRegions | 
					
						
							|  |  |  |     for region in regionConcat: | 
					
						
							|  |  |  |         for exit in region.exits: | 
					
						
							|  |  |  |             exit.connect(world.get_region(exit.name[exit.name.find("->") + 2:], player)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     world.regions += [ | 
					
						
							|  |  |  |         create_region(self, world, player, 'Menu', None, ['StartAP']) | 
					
						
							|  |  |  |     ] |