| 
									
										
										
										
											2023-04-08 16:52:34 -04:00
										 |  |  | import importlib | 
					
						
							|  |  |  | from ..logic.logic import Logic | 
					
						
							|  |  |  | from ..patches.common.patches import patches, additional_PLMs | 
					
						
							|  |  |  | from ..utils.parameters import appDir | 
					
						
							|  |  |  | from ..utils.utils import listDir, exists | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | class PatchAccess(object): | 
					
						
							|  |  |  |     def __init__(self): | 
					
						
							|  |  |  |         # load all ips patches | 
					
						
							|  |  |  |         self.patchesPath = {} | 
					
						
							| 
									
										
										
										
											2023-04-08 16:52:34 -04:00
										 |  |  |         commonDir = "/".join((appDir, 'worlds/sm/variaRandomizer/patches/common/ips')) | 
					
						
							|  |  |  |         for patch in listDir(commonDir): | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |             self.patchesPath[patch] = commonDir | 
					
						
							| 
									
										
										
										
											2023-04-08 16:52:34 -04:00
										 |  |  |         logicDir = "/".join((appDir, 'worlds/sm/variaRandomizer/patches/{}/ips'.format(Logic.patches))) | 
					
						
							|  |  |  |         for patch in listDir(logicDir): | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |             self.patchesPath[patch] = logicDir | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # load dict patches | 
					
						
							|  |  |  |         self.dictPatches = patches | 
					
						
							| 
									
										
										
										
											2023-03-25 14:30:38 -04:00
										 |  |  |         logicPatches = importlib.import_module("worlds.sm.variaRandomizer.patches.{}.patches".format(Logic.patches)).patches | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |         self.dictPatches.update(logicPatches) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # load additional PLMs | 
					
						
							|  |  |  |         self.additionalPLMs = additional_PLMs | 
					
						
							| 
									
										
										
										
											2023-03-25 14:30:38 -04:00
										 |  |  |         logicPLMs = importlib.import_module("worlds.sm.variaRandomizer.patches.{}.patches".format(Logic.patches)).additional_PLMs | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |         self.additionalPLMs.update(logicPLMs) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def getPatchPath(self, patch): | 
					
						
							|  |  |  |         # is patch preloaded | 
					
						
							|  |  |  |         if patch in self.patchesPath: | 
					
						
							| 
									
										
										
										
											2023-04-08 16:52:34 -04:00
										 |  |  |             return "/".join((self.patchesPath[patch], patch)) | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |         else: | 
					
						
							|  |  |  |             # patchs from varia_repository used by the customizer for permalinks | 
					
						
							| 
									
										
										
										
											2023-04-08 16:52:34 -04:00
										 |  |  |             if exists(patch): | 
					
						
							| 
									
										
										
										
											2021-11-12 08:00:11 -05:00
										 |  |  |                 return patch | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 raise Exception("unknown patch: {}".format(patch)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def getDictPatches(self): | 
					
						
							|  |  |  |         return self.dictPatches | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def getAdditionalPLMs(self): | 
					
						
							|  |  |  |         return self.additionalPLMs |