class PlayerBaseClient extends PlayerBase { static ScriptedLightBase m_PersonalLight; static bool m_PersonalLightEnabledOnCurrentServer = false; // "disablePersonalLight" in server.cfg decides if this is true or false static bool m_PersonalLightDisabledByDebug = false; static bool m_PersonalLightIsSwitchedOn = true; //! Creates PL if it doesn't exist already. static void CreatePersonalLight() { if (!m_PersonalLight && ( !GetGame().IsServer() || !GetGame().IsMultiplayer() )) { m_PersonalLight = ScriptedLightBase.CreateLight(PersonalLight, "0 0 0"); } } /* override void OnRPC(PlayerIdentity sender, int rpc_type, ParamsReadContext ctx) { super.OnRPC(sender, rpc_type, ctx); switch( rpc_type ) { case ERPCs.RPC_TOGGLE_PERSONAL_LIGHT: { Param1 is_enabled = new Param1(false); if (ctx.Read(is_enabled)) { m_PersonalLightEnabledOnCurrentServer = is_enabled.param1; UpdatePersonalLight(); } break; } } }*/ override void OnGameplayDataHandlerSync() { super.OnGameplayDataHandlerSync(); m_PersonalLightEnabledOnCurrentServer = !CfgGameplayHandler.GetDisablePersonalLight(); UpdatePersonalLight(); UpdateHitDirectionValues(); } //! Controls the ON/OFF switch of the Personal Light. PL will still shine only if the server allows it. static void SwitchPersonalLight(bool state) { if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() ) { m_PersonalLightIsSwitchedOn = state; UpdatePersonalLight(); } } //! Updates state of PL static void UpdatePersonalLight() { string param; CreatePersonalLight(); // Allow PL unless it's disabled by debug or client-side starting parameter if ( !GetCLIParam("disablePersonalLight", param) && !m_PersonalLightDisabledByDebug && m_PersonalLightIsSwitchedOn ) { m_PersonalLight.SetEnabled(m_PersonalLightEnabledOnCurrentServer); } else { m_PersonalLight.SetEnabled(false); } } static void UpdateHitDirectionValues() { HitDirectionEffectBase.CheckValues(); } }