//========= 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