import os import sys from . import config from .file import * g_data = {} class ModInfo(object): def __init__(self: object, modname: str): self.name = modname self.modinfo = None class ModInfoDir(ModInfo): def __init__(self: object, modname: str): super().__init__(modname) def path(self: object, path: str) -> str: return os.path.join(self.name, path) def exists(self: object, path: str) -> object: return exists('data', self.path(path)) def fd_open(self: object, path: str) -> object: return fd_open('data', self.path(path)) def has_modinfo(self: object) -> bool: return exists('data', self.path('modinfo.json')) def read_modinfo(self: object) -> None: inffile = self.fd_open('data', self.path('modinfo.json')) self.modinfo = json.load(inffile) def load_mods() -> None: global g_data g_data = {} full_modlist = {} for mod in os.listdir(os.path.join(program_path(), 'data')): mn, me = os.path.splitext(mod) if not mn in full_modlist: full_modlist[mn] = {} if me.lower() == 'zip': # handle zip mods here somehow # full_modlist[mn][me] = mod pass elif me == '' or os.path.isdir(os.path.join(program_path(), 'data', mn)): moddata = ModInfoDir() if moddata.has_modinfo(): full_modlist[mn][me] = moddata modlist = {} for mn in full_modlist.keys(): if '' in full_modlist[mn]: modlist[mn] = full_modlist[mn]['']