mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-04-16 22:42:31 +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 ====
|
//========= 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:
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user