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 ====
//
// Purpose: Source SDK-based replication of logic_eventlistener from later versions
// of Source.
//
// 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
// Purpose: An expanded version of logic_eventlistener that allows event data
// to be passed directly to I/O.
//
//=============================================================================
@ -18,143 +11,20 @@
// memdbgon must be the last include file in a .cpp file!!!
#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
class CPointEvent : public CLogicEventListener2
class CPointEvent : public CPointEntity,
public CGameEventListener
{
public:
DECLARE_CLASS( CPointEvent, CLogicEventListener2 );
DECLARE_CLASS( CPointEvent, CPointEntity );
CPointEvent();
void Activate();
bool KeyValue( const char *szKeyName, const char *szValue );
string_t m_KeyNames[POINT_EVENT_NUM_VALUES];
void ListenForEvents();
@ -162,15 +32,25 @@ public:
void FireGameEvent( IGameEvent *event );
// Input handlers
void InputEnable( inputdata_t &inputdata );
void InputDisable( inputdata_t &inputdata );
void InputToggle( inputdata_t &inputdata );
void InputSetAllEvents( inputdata_t &inputdata );
void InputAddEvent( inputdata_t &inputdata );
//void InputRemoveEvent( inputdata_t &inputdata );
DECLARE_DATADESC();
string_t m_iszEventName;
// Outputs
COutputEvent m_OnEventFired;
COutputString m_OutEventName;
COutputString m_OutValue[POINT_EVENT_NUM_VALUES];
protected:
bool m_bDisabled;
};
LINK_ENTITY_TO_CLASS(point_event, CPointEvent);
@ -188,11 +68,15 @@ BEGIN_DATADESC( CPointEvent )
DEFINE_KEYFIELD(m_KeyNames[7], FIELD_STRING, "KeyName08"),
// 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, "AddEvent", InputAddEvent),
//DEFINE_INPUTFUNC(FIELD_STRING, "RemoveEvent", InputRemoveEvent),
// Outputs
DEFINE_OUTPUT(m_OnEventFired, "OnEventFired"),
DEFINE_OUTPUT(m_OutEventName, "OutEventName"),
DEFINE_OUTPUT(m_OutValue[0], "OutValue01"),
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:
//-----------------------------------------------------------------------------
@ -234,8 +142,8 @@ void CPointEvent::FireGameEvent( IGameEvent *event )
{
if (m_bDisabled)
return;
BaseClass::FireGameEvent(event);
m_OnEventFired.FireOutput(this, this);
m_OutEventName.Set(AllocPooledString(event->GetName()), this, this);
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:
//------------------------------------------------------------------------------

View File

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