//========= 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 IGameEvent* CreateEvent() { IGameEvent *pEvent = gameeventmanager->CreateEvent( T::s_eventName ); Assert( pEvent ); return pEvent; } //----------------------------------------------------------------------------- template 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( pEvent ) ); } BallGet::BallGet( int ownerIndex_ ) : ownerIndex( ownerIndex_ ) { } void BallGet::Fire() { if ( IGameEvent *pEvent = CreateEvent() ) { 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( 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() ) { 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( 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() ) { 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( 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() ) { 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( pEvent ) ); } BallStolen::BallStolen() : victimIndex( -1 ) , attackerIndex( -1 ) { } BallStolen::BallStolen( int victimIndex_, int attackerIndex_ ) : victimIndex( victimIndex_ ) , attackerIndex( attackerIndex_ ) { } void BallStolen::Fire() { if ( IGameEvent *pEvent = CreateEvent() ) { 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( pEvent ) ); } BallBlocked::BallBlocked() : ownerIndex( -1 ) , blockerIndex( -1 ) { } BallBlocked::BallBlocked( int ownerIndex_, int blockerIndex_ ) : ownerIndex( ownerIndex_ ) , blockerIndex( blockerIndex_ ) { } void BallBlocked::Fire() { if ( IGameEvent *pEvent = CreateEvent() ) { pEvent->SetInt( s_keyOwnerIndex, ownerIndex ); pEvent->SetInt( s_keyBlockerIndex, blockerIndex ); gameeventmanager->FireEvent( pEvent ); } }