source-engine/game/server/tf/tf_wartracker.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

77 lines
3.0 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Tracker for War Data on a player
//
// $NoKeywords: $
//=============================================================================//
#ifndef TF_SPYENGY_WARTRACKER_H
#define TF_SPYENGY_WARTRACKER_H
#ifdef _WIN32
#pragma once
#endif
#include "tf_wardata.h"
#include "shared_object_tracker.h"
class CTFplayer;
//---------------------------------------------------------------------
// Purpose: Tracks kills between Team Engineer and Team Spy in the 2014
// war. Players are considered Team Engineer if they are wearing
// the special Engy Hat or are unallied and playing as Engy.
// Visa versa, players are considered to be on Team Spy if they
// are wearing the special Spy Hat or are unallied and playing
// as Spy.
//---------------------------------------------------------------------
class CTFWarTracker : public CBaseSOTracker, public CGameEventListener
{
DECLARE_CLASS( CTFWarTracker, CBaseSOTracker )
public:
CTFWarTracker( const CSharedObject* pItem, CSteamID SteamIDOwner, CSOTrackerManager* pManager );
virtual void FireGameEvent( IGameEvent *pEvent ) OVERRIDE;
virtual void CommitChangesToDB() OVERRIDE;
virtual void OnUpdate() OVERRIDE {}
virtual void OnRemove() OVERRIDE {}
private:
static const int m_kPointsPerKill = 5;
static const int m_kBonusPointsPerKill = 2;
CGCMsgGC_War_IndividualUpdate m_ProtoData;
};
//---------------------------------------------------------------------
// Purpose: Contains all the trackers for wars for each player. Tells
// individual trackers to update the GC every m_kflThinkInterval
// seconds, defined below.
//---------------------------------------------------------------------
class CTFWarTrackerManager : public CSOTrackerManager
{
DECLARE_CLASS( CTFWarTrackerManager, CSOTrackerManager )
public:
CTFWarTrackerManager();
virtual SOTrackerMap_t::KeyType_t GetKeyForObjectTracker( const CSharedObject* pItem, CSteamID steamIDOwner ) OVERRIDE;
private:
#ifdef GAME_DLL
void SendMessageForCommit( const ::google::protobuf::Message* pProtoMessage ) const;
#endif
virtual int GetType() const OVERRIDE { return CWarData::k_nTypeID; }
virtual const char* GetName() const { return "WarTrackerManager"; }
virtual CFmtStr GetDebugObjectDescription( const CSharedObject* pItem ) const;
virtual CBaseSOTracker* AllocateNewTracker( const CSharedObject* pItem, CSteamID steamIDOwner, CSOTrackerManager* pManager ) const OVERRIDE;
virtual ::google::protobuf::Message* AllocateNewProtoMessage() const OVERRIDE;
virtual void OnCommitRecieved( const ::google::protobuf::Message* pProtoMsg ) OVERRIDE;
virtual bool ShouldTrackObject( const CSteamID & steamIDOwner, const CSharedObject *pObject ) const OVERRIDE;
virtual int CompareRecords( const ::google::protobuf::Message* pNewProtoMsg, const ::google::protobuf::Message* pExistingProtoMsg ) const OVERRIDE;
};
CTFWarTrackerManager* GetWarTrackerManager();
#endif // TF_SPYENGY_WARTRACKER_H