Files
emod-cli/debug_mod/DEBUG_ENV_SCRIPT/DebugClientSystem.py

78 lines
2.3 KiB
Python
Raw Permalink Normal View History

# -*- 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()