pyglet_demo/engine/data.py

56 lines
1.5 KiB
Python

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]['']