diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/cstrike/achievements_cs.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/shared/cstrike/achievements_cs.h')
| -rw-r--r-- | game/shared/cstrike/achievements_cs.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/game/shared/cstrike/achievements_cs.h b/game/shared/cstrike/achievements_cs.h new file mode 100644 index 0000000..817a73e --- /dev/null +++ b/game/shared/cstrike/achievements_cs.h @@ -0,0 +1,75 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + + +#include "cbase.h" + +#ifdef CLIENT_DLL + +bool CheckWinNoEnemyCaps( IGameEvent *event, int iRole ); +bool IsLocalCSPlayerClass( int iClass ); +bool GameRulesAllowsAchievements( void ); + +//---------------------------------------------------------------------------------------------------------------- +// Base class for all CS achievements +class CCSBaseAchievement : public CBaseAchievement +{ + DECLARE_CLASS( CCSBaseAchievement, CBaseAchievement ); +public: + + CCSBaseAchievement(); + + virtual void GetSettings( KeyValues* pNodeOut ); // serialize + virtual void ApplySettings( /* const */ KeyValues* pNodeIn ); // unserialize + + // [dwenger] Necessary for sorting achievements by award time + virtual void OnAchieved(); + bool GetAwardTime( int& year, int& month, int& day, int& hour, int& minute, int& second ); + + int64 GetSortKey() const { return GetUnlockTime(); } +}; + + +//---------------------------------------------------------------------------------------------------------------- +// Helper class for achievements that check that the player was playing on a game team for the full round +class CCSBaseAchievementFullRound : public CCSBaseAchievement +{ + DECLARE_CLASS( CCSBaseAchievementFullRound, CCSBaseAchievement ); +public: + virtual void Init() ; + virtual void ListenForEvents(); + void FireGameEvent_Internal( IGameEvent *event ); + bool PlayerWasInEntireRound( float flRoundTime ); + + virtual void Event_OnRoundComplete( float flRoundTime, IGameEvent *event ) = 0 ; +}; + + +//---------------------------------------------------------------------------------------------------------------- +// Helper class for achievements based on other achievements +class CAchievement_Meta : public CCSBaseAchievement +{ + DECLARE_CLASS( CAchievement_Meta, CCSBaseAchievement ); +public: + CAchievement_Meta(); + virtual void Init(); + +#if !defined(NO_STEAM) + STEAM_CALLBACK( CAchievement_Meta, Steam_OnUserAchievementStored, UserAchievementStored_t, m_CallbackUserAchievement ); +#endif + +protected: + void AddRequirement( int nAchievementId ); + +private: + CUtlVector<int> m_requirements; +}; + + + +extern CAchievementMgr g_AchievementMgrCS; // global achievement mgr for CS + +#endif // CLIENT_DLL
\ No newline at end of file |