import os import sys if len(sys.argv) < 2: print("Usage: python3 /path/to/main.py /path/to/ht.config") sys.exit(1) CFG = os.path.realpath(sys.argv[1]) SCRIPT_DIR = os.path.dirname(os.path.realpath(sys.argv[0])) sys.path.append(f"{SCRIPT_DIR}/../cross-language-dialect/ctx") sys.path.append(f"{SCRIPT_DIR}/../cross-language-dialect/lib") sys.path.append(f"{SCRIPT_DIR}/py") import arcade from cfg import * from cld import * from ctx import * from fs import * from desktop import * from desktop_Platform import * from desktop_Window import * from ht_Context import * ctrl = ctx_Controller(ht_createContext()) ctrl.registerFunctions([ cfg_parseConfigTree, fs_locateConfigDir, fs_readConfig, ]) def printDbg(c): print(f"Dbg key/value: '{c.recentField}'/'{c.field(c.recentField)}'") ctrl.registerCallback(printDbg) p = desktop_Platform() p.ctrl = ctrl # Bind platform to context changes. def process(c): # Copy context to platform. p.c = c # Perform context dependent calls of desktop functions. # Similar to context functions, but no platform is returned. desktop_applyConfigInit(p) desktop_createConfigPlayerSprites(p) desktop_createConfigStaticSprites(p) desktop_loadConfigTextures(p) desktop_movePlayerInstantly(p) ctrl.registerCallback(process) ctrl.set("cfgPath", CFG) ctrl.set("scriptDir", SCRIPT_DIR) wnd = desktop_Window(p) ctrl.set("didLaunch", True) arcade.run()