# -*- coding: utf-8 -*- import mod.client.extraClientApi as clientApi from . import IPCSystem, Lifecycle from .Config import DEBUG_CONFIG from .Game import ( INIT_RELOAD_TIME, RELOAD_ADDON, RELOAD_MOD, RELOAD_SHADERS, RELOAD_WORLD, ) ClientSystem = clientApi.GetClientSystemCls() ENGINE_NAMESPACE = clientApi.GetEngineNamespace() ENGINE_SYSTEM_NAME = clientApi.GetEngineSystemName() class DebugClientSystem(ClientSystem): def __init__(self, namespace, system_name): ClientSystem.__init__(self, namespace, system_name) self._initialized = False self._listening = False def Update(self): if not self._initialized: Lifecycle.activate(self) IPCSystem.ON_CLIENT_INIT() self.ListenForEvent( ENGINE_NAMESPACE, ENGINE_SYSTEM_NAME, "OnKeyPressInGame", self, self.on_key_press_in_game, ) self._listening = True self._initialized = True INIT_RELOAD_TIME() IPCSystem.UPDATE_CLIENT() return ClientSystem.Update(self) def Destroy(self): try: if self._listening: self.UnListenForEvent( ENGINE_NAMESPACE, ENGINE_SYSTEM_NAME, "OnKeyPressInGame", self, self.on_key_press_in_game, ) self._listening = False finally: try: IPCSystem.ON_CLIENT_EXIT() finally: self._initialized = False Lifecycle.deactivate(self) def on_key_press_in_game(self, args): if args["isDown"] != "0": return if args["screenName"] != "hud_screen" and not DEBUG_CONFIG.get( "reload_key_global", False ): return key = args["key"] if key == str(DEBUG_CONFIG.get("reload_key", "82")): RELOAD_MOD() elif key == str(DEBUG_CONFIG.get("reload_world_key", "")): RELOAD_WORLD() elif key == str(DEBUG_CONFIG.get("reload_addon_key", "")): RELOAD_ADDON() elif key == str(DEBUG_CONFIG.get("reload_shaders_key", "")): RELOAD_SHADERS()