summaryrefslogtreecommitdiff
path: root/game/server/tf/tf_wartracker.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/tf/tf_wartracker.h')
-rw-r--r--game/server/tf/tf_wartracker.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/game/server/tf/tf_wartracker.h b/game/server/tf/tf_wartracker.h
new file mode 100644
index 0000000..5ea67ab
--- /dev/null
+++ b/game/server/tf/tf_wartracker.h
@@ -0,0 +1,76 @@
+//========= 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
+