Archipelago/worlds/sm/variaRandomizer/patches/patchaccess.py

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