43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
import os, importlib
 | 
						|
from worlds.sm.variaRandomizer.logic.logic import Logic
 | 
						|
from worlds.sm.variaRandomizer.patches.common.patches import patches, additional_PLMs
 | 
						|
from worlds.sm.variaRandomizer.utils.parameters import appDir
 | 
						|
 | 
						|
class PatchAccess(object):
 | 
						|
    def __init__(self):
 | 
						|
        # load all ips patches
 | 
						|
        self.patchesPath = {}
 | 
						|
        commonDir = os.path.join(appDir, 'worlds/sm/variaRandomizer/patches/common/ips/')
 | 
						|
        for patch in os.listdir(commonDir):
 | 
						|
            self.patchesPath[patch] = commonDir
 | 
						|
        logicDir = os.path.join(appDir, 'worlds/sm/variaRandomizer/patches/{}/ips/'.format(Logic.patches))
 | 
						|
        for patch in os.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 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
 |