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