You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.3 KiB
75 lines
2.3 KiB
//========= 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
|