mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-04-15 05:52:32 +03:00
Remove Mapbase's logic_eventlistener and reserve file for point_event
This commit is contained in:
parent
9a776b666b
commit
62331158d5
@ -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:
|
||||
//------------------------------------------------------------------------------
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user