Remove Mapbase's logic_eventlistener and reserve file for point_event

This commit is contained in:
ALLEN-PC\acj30 2025-03-01 10:09:05 -06:00
parent 9a776b666b
commit 62331158d5
2 changed files with 74 additions and 142 deletions

View File

@ -1,14 +1,7 @@
//========= Mapbase - https://github.com/mapbase-source/source-sdk-2013 ==== //========= Mapbase - https://github.com/mapbase-source/source-sdk-2013 ====
// //
// Purpose: Source SDK-based replication of logic_eventlistener from later versions // Purpose: An expanded version of logic_eventlistener that allows event data
// of Source. // to be passed directly to I/O.
//
// This is based entirely on Source 2013 code and Portal 2's FGD entry.
// It does not actually use code from Portal 2 or later.
//
// UPDATE FEBRUARY 2025: The real logic_eventlistener is now available.
// Thie file only remains to support point_event.
// TODO: Merge all CLogicEvenListener functions into CPointEvent
// //
//============================================================================= //=============================================================================
@ -18,143 +11,20 @@
// memdbgon must be the last include file in a .cpp file!!! // memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h" #include "tier0/memdbgon.h"
class CLogicEventListener2 : public CPointEntity,
public CGameEventListener
{
public:
DECLARE_CLASS( CLogicEventListener2, CPointEntity );
CLogicEventListener2();
void Activate();
virtual void ListenForEvents();
bool KeyValue(const char *szKeyName, const char *szValue);
virtual void FireGameEvent( IGameEvent *event );
// Input handlers
void InputEnable( inputdata_t &inputdata );
void InputDisable( inputdata_t &inputdata );
void InputToggle( inputdata_t &inputdata );
DECLARE_DATADESC();
string_t m_iszEventName;
// Outputs
COutputEvent m_OnEventFired;
protected:
bool m_bDisabled;
};
// This has been deprecated by the real logic_eventlistener
//LINK_ENTITY_TO_CLASS(logic_eventlistener, CLogicEventListener);
BEGIN_DATADESC( CLogicEventListener2 )
DEFINE_KEYFIELD(m_iszEventName, FIELD_STRING, "EventName"),
DEFINE_KEYFIELD(m_bDisabled, FIELD_BOOLEAN, "StartDisabled"),
// Inputs
DEFINE_INPUTFUNC(FIELD_VOID, "Enable", InputEnable),
DEFINE_INPUTFUNC(FIELD_VOID, "Disable", InputDisable),
DEFINE_INPUTFUNC(FIELD_VOID, "Toggle", InputToggle),
// Outputs
DEFINE_OUTPUT(m_OnEventFired, "OnEventFired"),
END_DATADESC()
//-----------------------------------------------------------------------------
// Purpose: Constructor.
//-----------------------------------------------------------------------------
CLogicEventListener2::CLogicEventListener2(void)
{
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CLogicEventListener2::Activate()
{
BaseClass::Activate();
ListenForEvents();
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CLogicEventListener2::ListenForEvents()
{
ListenForGameEvent(STRING(m_iszEventName));
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CLogicEventListener2::KeyValue(const char *szKeyName, const char *szValue)
{
if (FStrEq(szKeyName, "IsEnabled"))
{
m_bDisabled = !FStrEq(szValue, "0");
}
else
return BaseClass::KeyValue(szKeyName, szValue);
return true;
}
//-----------------------------------------------------------------------------
// Purpose: called when a game event is fired
//-----------------------------------------------------------------------------
void CLogicEventListener2::FireGameEvent( IGameEvent *event )
{
if (m_bDisabled)
return;
m_OnEventFired.FireOutput(this, this);
}
//------------------------------------------------------------------------------
// Purpose: Turns on the entity, allowing it to fire outputs.
//------------------------------------------------------------------------------
void CLogicEventListener2::InputEnable( inputdata_t &inputdata )
{
m_bDisabled = false;
}
//------------------------------------------------------------------------------
// Purpose: Turns off the entity, preventing it from firing outputs.
//------------------------------------------------------------------------------
void CLogicEventListener2::InputDisable( inputdata_t &inputdata )
{
m_bDisabled = true;
}
//------------------------------------------------------------------------------
// Purpose: Toggles the enabled/disabled state of the entity.
//------------------------------------------------------------------------------
void CLogicEventListener2::InputToggle( inputdata_t &inputdata )
{
m_bDisabled = !m_bDisabled;
}
#define POINT_EVENT_NUM_VALUES 8 #define POINT_EVENT_NUM_VALUES 8
class CPointEvent : public CLogicEventListener2 class CPointEvent : public CPointEntity,
public CGameEventListener
{ {
public: public:
DECLARE_CLASS( CPointEvent, CLogicEventListener2 ); DECLARE_CLASS( CPointEvent, CPointEntity );
CPointEvent(); CPointEvent();
void Activate();
bool KeyValue( const char *szKeyName, const char *szValue );
string_t m_KeyNames[POINT_EVENT_NUM_VALUES]; string_t m_KeyNames[POINT_EVENT_NUM_VALUES];
void ListenForEvents(); void ListenForEvents();
@ -162,15 +32,25 @@ public:
void FireGameEvent( IGameEvent *event ); void FireGameEvent( IGameEvent *event );
// Input handlers // Input handlers
void InputEnable( inputdata_t &inputdata );
void InputDisable( inputdata_t &inputdata );
void InputToggle( inputdata_t &inputdata );
void InputSetAllEvents( inputdata_t &inputdata ); void InputSetAllEvents( inputdata_t &inputdata );
void InputAddEvent( inputdata_t &inputdata ); void InputAddEvent( inputdata_t &inputdata );
//void InputRemoveEvent( inputdata_t &inputdata ); //void InputRemoveEvent( inputdata_t &inputdata );
DECLARE_DATADESC(); DECLARE_DATADESC();
string_t m_iszEventName;
// Outputs // Outputs
COutputEvent m_OnEventFired;
COutputString m_OutEventName; COutputString m_OutEventName;
COutputString m_OutValue[POINT_EVENT_NUM_VALUES]; COutputString m_OutValue[POINT_EVENT_NUM_VALUES];
protected:
bool m_bDisabled;
}; };
LINK_ENTITY_TO_CLASS(point_event, CPointEvent); LINK_ENTITY_TO_CLASS(point_event, CPointEvent);
@ -188,11 +68,15 @@ BEGIN_DATADESC( CPointEvent )
DEFINE_KEYFIELD(m_KeyNames[7], FIELD_STRING, "KeyName08"), DEFINE_KEYFIELD(m_KeyNames[7], FIELD_STRING, "KeyName08"),
// Inputs // Inputs
DEFINE_INPUTFUNC(FIELD_VOID, "Enable", InputEnable),
DEFINE_INPUTFUNC(FIELD_VOID, "Disable", InputDisable),
DEFINE_INPUTFUNC(FIELD_VOID, "Toggle", InputToggle),
DEFINE_INPUTFUNC(FIELD_STRING, "SetAllEvents", InputSetAllEvents), DEFINE_INPUTFUNC(FIELD_STRING, "SetAllEvents", InputSetAllEvents),
DEFINE_INPUTFUNC(FIELD_STRING, "AddEvent", InputAddEvent), DEFINE_INPUTFUNC(FIELD_STRING, "AddEvent", InputAddEvent),
//DEFINE_INPUTFUNC(FIELD_STRING, "RemoveEvent", InputRemoveEvent), //DEFINE_INPUTFUNC(FIELD_STRING, "RemoveEvent", InputRemoveEvent),
// Outputs // Outputs
DEFINE_OUTPUT(m_OnEventFired, "OnEventFired"),
DEFINE_OUTPUT(m_OutEventName, "OutEventName"), DEFINE_OUTPUT(m_OutEventName, "OutEventName"),
DEFINE_OUTPUT(m_OutValue[0], "OutValue01"), DEFINE_OUTPUT(m_OutValue[0], "OutValue01"),
DEFINE_OUTPUT(m_OutValue[1], "OutValue02"), DEFINE_OUTPUT(m_OutValue[1], "OutValue02"),
@ -212,6 +96,30 @@ CPointEvent::CPointEvent(void)
{ {
} }
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
void CPointEvent::Activate()
{
BaseClass::Activate();
ListenForEvents();
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
bool CPointEvent::KeyValue(const char *szKeyName, const char *szValue)
{
if (FStrEq(szKeyName, "IsEnabled"))
{
m_bDisabled = !FStrEq(szValue, "0");
}
else
return BaseClass::KeyValue(szKeyName, szValue);
return true;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: // Purpose:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -234,8 +142,8 @@ void CPointEvent::FireGameEvent( IGameEvent *event )
{ {
if (m_bDisabled) if (m_bDisabled)
return; return;
BaseClass::FireGameEvent(event); m_OnEventFired.FireOutput(this, this);
m_OutEventName.Set(AllocPooledString(event->GetName()), this, this); m_OutEventName.Set(AllocPooledString(event->GetName()), this, this);
for (int i = 0; i < POINT_EVENT_NUM_VALUES; i++) for (int i = 0; i < POINT_EVENT_NUM_VALUES; i++)
@ -248,6 +156,30 @@ void CPointEvent::FireGameEvent( IGameEvent *event )
} }
} }
//------------------------------------------------------------------------------
// Purpose: Turns on the entity, allowing it to fire outputs.
//------------------------------------------------------------------------------
void CPointEvent::InputEnable( inputdata_t &inputdata )
{
m_bDisabled = false;
}
//------------------------------------------------------------------------------
// Purpose: Turns off the entity, preventing it from firing outputs.
//------------------------------------------------------------------------------
void CPointEvent::InputDisable( inputdata_t &inputdata )
{
m_bDisabled = true;
}
//------------------------------------------------------------------------------
// Purpose: Toggles the enabled/disabled state of the entity.
//------------------------------------------------------------------------------
void CPointEvent::InputToggle( inputdata_t &inputdata )
{
m_bDisabled = !m_bDisabled;
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// Purpose: // Purpose:
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View File

@ -88,7 +88,7 @@ $Project
$File "mapbase\variant_tools.h" $File "mapbase\variant_tools.h"
$File "mapbase\vgui_text_display.cpp" $File "mapbase\vgui_text_display.cpp"
$File "mapbase\logic_eventlistener.cpp" $File "mapbase\point_event.cpp"
$File "mapbase\logic_register_activator.cpp" $File "mapbase\logic_register_activator.cpp"
} }
} }