You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
250 lines
6.5 KiB
250 lines
6.5 KiB
![]()
4 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#include "cbase.h"
|
||
|
#include "passtime_game_events.h"
|
||
|
#include "igameevents.h"
|
||
|
#include "tier0/memdbgon.h"
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
using namespace PasstimeGameEvents;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
namespace
|
||
|
{
|
||
|
//-----------------------------------------------------------------------------
|
||
|
template<class T>
|
||
|
IGameEvent* CreateEvent()
|
||
|
{
|
||
|
IGameEvent *pEvent = gameeventmanager->CreateEvent( T::s_eventName );
|
||
|
Assert( pEvent );
|
||
|
return pEvent;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
template<class T>
|
||
|
bool IsType( IGameEvent *pEvent )
|
||
|
{
|
||
|
return FStrEq( pEvent->GetName(), T::s_eventName );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
const char *const BallGet::s_eventName = "pass_get";
|
||
|
const char *const BallGet::s_keyOwnerIndex = "owner";
|
||
|
|
||
|
BallGet::BallGet( IGameEvent *pEvent )
|
||
|
: ownerIndex( pEvent->GetInt( s_keyOwnerIndex ) )
|
||
|
{
|
||
|
Assert( IsType<BallGet>( pEvent ) );
|
||
|
}
|
||
|
|
||
|
BallGet::BallGet( int ownerIndex_ )
|
||
|
: ownerIndex( ownerIndex_ )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void BallGet::Fire()
|
||
|
{
|
||
|
if ( IGameEvent *pEvent = CreateEvent<BallGet>() )
|
||
|
{
|
||
|
pEvent->SetInt( s_keyOwnerIndex, ownerIndex );
|
||
|
gameeventmanager->FireEvent(pEvent);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
const char *const Score::s_eventName = "pass_score";
|
||
|
const char *const Score::s_keyScorerIndex = "scorer";
|
||
|
const char *const Score::s_keyAssisterIndex = "assister";
|
||
|
const char *const Score::s_keyNumPoints = "points";
|
||
|
|
||
|
Score::Score( IGameEvent *pEvent )
|
||
|
: scorerIndex( pEvent->GetInt( s_keyScorerIndex ) )
|
||
|
, assisterIndex( pEvent->GetInt( s_keyAssisterIndex ) )
|
||
|
, numPoints( pEvent->GetInt( s_keyNumPoints ) )
|
||
|
{
|
||
|
Assert( IsType<Score>( pEvent ) );
|
||
|
}
|
||
|
|
||
|
Score::Score( int scorerIndex_, int assisterIndex_, int numPoints_ )
|
||
|
: scorerIndex( scorerIndex_ )
|
||
|
, assisterIndex( assisterIndex_ )
|
||
|
, numPoints( numPoints_ )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
Score::Score( int scorerIndex_, int numPoints_ )
|
||
|
: scorerIndex( scorerIndex_ )
|
||
|
, assisterIndex( -1 )
|
||
|
, numPoints( numPoints_ )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void Score::Fire()
|
||
|
{
|
||
|
if ( IGameEvent *pEvent = CreateEvent<Score>() )
|
||
|
{
|
||
|
pEvent->SetInt( s_keyScorerIndex, scorerIndex );
|
||
|
pEvent->SetInt( s_keyAssisterIndex, assisterIndex );
|
||
|
pEvent->SetInt( s_keyNumPoints, numPoints );
|
||
|
gameeventmanager->FireEvent( pEvent );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
const char *const BallFree::s_eventName = "pass_free";
|
||
|
const char *const BallFree::s_keyOwnerIndex = "owner";
|
||
|
const char *const BallFree::s_keyAttackerIndex = "attacker";
|
||
|
|
||
|
BallFree::BallFree( IGameEvent *pEvent )
|
||
|
: ownerIndex( pEvent->GetInt( s_keyOwnerIndex ) )
|
||
|
, attackerIndex( pEvent->GetInt( s_keyAttackerIndex ) )
|
||
|
{
|
||
|
Assert( IsType<BallFree>( pEvent ) );
|
||
|
}
|
||
|
|
||
|
BallFree::BallFree()
|
||
|
: ownerIndex( -1 )
|
||
|
, attackerIndex( -1 )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BallFree::BallFree( int ownerIndex_ )
|
||
|
: ownerIndex( ownerIndex_ )
|
||
|
, attackerIndex( -1 )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BallFree::BallFree( int ownerIndex_, int attackerIndex_ )
|
||
|
: ownerIndex( ownerIndex_ )
|
||
|
, attackerIndex( attackerIndex_ )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void BallFree::Fire()
|
||
|
{
|
||
|
if ( IGameEvent *pEvent = CreateEvent<BallFree>() )
|
||
|
{
|
||
|
pEvent->SetInt( s_keyOwnerIndex, ownerIndex );
|
||
|
pEvent->SetInt( s_keyAttackerIndex, attackerIndex );
|
||
|
gameeventmanager->FireEvent( pEvent );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
const char *const PassCaught::s_eventName = "pass_pass_caught";
|
||
|
const char *const PassCaught::s_keyPasserIndex = "passer";
|
||
|
const char *const PassCaught::s_keyCatcherIndex = "catcher";
|
||
|
const char *const PassCaught::s_keyDist = "dist";
|
||
|
const char *const PassCaught::s_keyDuration = "duration";
|
||
|
|
||
|
PassCaught::PassCaught( IGameEvent *pEvent )
|
||
|
: passerIndex( pEvent->GetInt( s_keyPasserIndex ) )
|
||
|
, catcherIndex( pEvent->GetInt( s_keyCatcherIndex ) )
|
||
|
, dist( pEvent->GetFloat( s_keyDist ) )
|
||
|
, duration( pEvent->GetFloat( s_keyDuration ) )
|
||
|
{
|
||
|
Assert( IsType<PassCaught>( pEvent ) );
|
||
|
}
|
||
|
|
||
|
PassCaught::PassCaught()
|
||
|
: passerIndex( -1 )
|
||
|
, catcherIndex( -1 )
|
||
|
, dist( 0 )
|
||
|
, duration( 0 )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
PassCaught::PassCaught( int passerIndex_, int catcherIndex_, float dist_, float duration_ )
|
||
|
: passerIndex( passerIndex_ )
|
||
|
, catcherIndex( catcherIndex_ )
|
||
|
, dist( dist_ )
|
||
|
, duration( duration_ )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void PassCaught::Fire()
|
||
|
{
|
||
|
if ( IGameEvent *pEvent = CreateEvent<PassCaught>() )
|
||
|
{
|
||
|
pEvent->SetInt( s_keyPasserIndex, passerIndex );
|
||
|
pEvent->SetInt( s_keyCatcherIndex, catcherIndex );
|
||
|
pEvent->SetFloat( s_keyDist, dist );
|
||
|
pEvent->SetFloat( s_keyDuration, duration );
|
||
|
gameeventmanager->FireEvent( pEvent );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
const char *const BallStolen::s_eventName = "pass_ball_stolen";
|
||
|
const char *const BallStolen::s_keyVictimIndex = "victim";
|
||
|
const char *const BallStolen::s_keyAttackerIndex = "attacker";
|
||
|
|
||
|
BallStolen::BallStolen( IGameEvent *pEvent )
|
||
|
: victimIndex( pEvent->GetInt( s_keyVictimIndex ) )
|
||
|
, attackerIndex( pEvent->GetInt( s_keyAttackerIndex ) )
|
||
|
{
|
||
|
Assert( IsType<BallStolen>( pEvent ) );
|
||
|
}
|
||
|
|
||
|
BallStolen::BallStolen()
|
||
|
: victimIndex( -1 )
|
||
|
, attackerIndex( -1 )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BallStolen::BallStolen( int victimIndex_, int attackerIndex_ )
|
||
|
: victimIndex( victimIndex_ )
|
||
|
, attackerIndex( attackerIndex_ )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void BallStolen::Fire()
|
||
|
{
|
||
|
if ( IGameEvent *pEvent = CreateEvent<BallStolen>() )
|
||
|
{
|
||
|
pEvent->SetInt( s_keyVictimIndex, victimIndex );
|
||
|
pEvent->SetInt( s_keyAttackerIndex, attackerIndex );
|
||
|
gameeventmanager->FireEvent( pEvent );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
const char *const BallBlocked::s_eventName = "pass_ball_blocked";
|
||
|
const char *const BallBlocked::s_keyOwnerIndex = "owner";
|
||
|
const char *const BallBlocked::s_keyBlockerIndex = "blocker";
|
||
|
|
||
|
BallBlocked::BallBlocked( IGameEvent *pEvent )
|
||
|
: ownerIndex( pEvent->GetInt( s_keyOwnerIndex ) )
|
||
|
, blockerIndex( pEvent->GetInt( s_keyBlockerIndex ) )
|
||
|
{
|
||
|
Assert( IsType<BallBlocked>( pEvent ) );
|
||
|
}
|
||
|
|
||
|
BallBlocked::BallBlocked()
|
||
|
: ownerIndex( -1 )
|
||
|
, blockerIndex( -1 )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BallBlocked::BallBlocked( int ownerIndex_, int blockerIndex_ )
|
||
|
: ownerIndex( ownerIndex_ )
|
||
|
, blockerIndex( blockerIndex_ )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void BallBlocked::Fire()
|
||
|
{
|
||
|
if ( IGameEvent *pEvent = CreateEvent<BallBlocked>() )
|
||
|
{
|
||
|
pEvent->SetInt( s_keyOwnerIndex, ownerIndex );
|
||
|
pEvent->SetInt( s_keyBlockerIndex, blockerIndex );
|
||
|
gameeventmanager->FireEvent( pEvent );
|
||
|
}
|
||
|
}
|