44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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
 | |
| 
 | |
| class PatchAccess(object):
 | |
|     def __init__(self):
 | |
|         # load all ips patches
 | |
|         self.patchesPath = {}
 | |
|         commonDir = "/".join((appDir, 'worlds/sm/variaRandomizer/patches/common/ips'))
 | |
|         for patch in listDir(commonDir):
 | |
|             self.patchesPath[patch] = commonDir
 | |
|         logicDir = "/".join((appDir, 'worlds/sm/variaRandomizer/patches/{}/ips'.format(Logic.patches)))
 | |
|         for patch in listDir(logicDir):
 | |
|             self.patchesPath[patch] = logicDir
 | |
| 
 | |
|         # load dict patches
 | |
|         self.dictPatches = patches
 | |
|         logicPatches = importlib.import_module("worlds.sm.variaRandomizer.patches.{}.patches".format(Logic.patches)).patches
 | |
|         self.dictPatches.update(logicPatches)
 | |
| 
 | |
|         # load additional PLMs
 | |
|         self.additionalPLMs = additional_PLMs
 | |
|         logicPLMs = importlib.import_module("worlds.sm.variaRandomizer.patches.{}.patches".format(Logic.patches)).additional_PLMs
 | |
|         self.additionalPLMs.update(logicPLMs)
 | |
| 
 | |
|     def getPatchPath(self, patch):
 | |
|         # is patch preloaded
 | |
|         if patch in self.patchesPath:
 | |
|             return "/".join((self.patchesPath[patch], patch))
 | |
|         else:
 | |
|             # patchs from varia_repository used by the customizer for permalinks
 | |
|             if exists(patch):
 | |
|                 return patch
 | |
|             else:
 | |
|                 raise Exception("unknown patch: {}".format(patch))
 | |
| 
 | |
|     def getDictPatches(self):
 | |
|         return self.dictPatches
 | |
| 
 | |
|     def getAdditionalPLMs(self):
 | |
|         return self.additionalPLMs
 | 
