2010-07-22 01:46:14 -05:00
# ifndef INCLUDED_ASW_ACHIEVEMENTS_H
# define INCLUDED_ASW_ACHIEVEMENTS_H
# include "achievementmgr.h"
enum
{
ACHIEVEMENT_ASW_KILL_WITHOUT_FRIENDLY_FIRE = 0 ,
ACHIEVEMENT_ASW_NO_FRIENDLY_FIRE ,
ACHIEVEMENT_ASW_SHIELDBUG ,
ACHIEVEMENT_ASW_GRENADE_MULTI_KILL ,
ACHIEVEMENT_ASW_ACCURACY ,
ACHIEVEMENT_ASW_NO_DAMAGE_TAKEN ,
ACHIEVEMENT_ASW_EGGS_BEFORE_HATCH ,
ACHIEVEMENT_ASW_GRUB_KILLS ,
ACHIEVEMENT_ASW_MELEE_PARASITE ,
ACHIEVEMENT_ASW_MELEE_KILLS ,
ACHIEVEMENT_ASW_BARREL_KILLS ,
ACHIEVEMENT_ASW_INFESTATION_CURING ,
ACHIEVEMENT_ASW_FAST_WIRE_HACKS ,
ACHIEVEMENT_ASW_FAST_COMPUTER_HACKS ,
ACHIEVEMENT_ASW_GROUP_HEAL ,
ACHIEVEMENT_ASW_GROUP_DAMAGE_AMP ,
ACHIEVEMENT_ASW_FAST_RELOADS_IN_A_ROW ,
ACHIEVEMENT_ASW_FAST_RELOAD ,
ACHIEVEMENT_ASW_ALL_HEALING ,
ACHIEVEMENT_ASW_PROTECT_TECH ,
ACHIEVEMENT_ASW_TECH_SURVIVES ,
ACHIEVEMENT_ASW_STUN_GRENADE ,
ACHIEVEMENT_ASW_WELD_DOOR ,
ACHIEVEMENT_ASW_DODGE_RANGER_SHOT ,
ACHIEVEMENT_ASW_BOOMER_KILL_EARLY ,
ACHIEVEMENT_ASW_UNLOCK_ALL_WEAPONS ,
ACHIEVEMENT_ASW_FREEZE_GRENADE ,
ACHIEVEMENT_ASW_AMMO_RESUPPLY ,
ACHIEVEMENT_ASW_SENTRY_GUN_KILLS ,
ACHIEVEMENT_ASW_RIFLE_KILLS ,
ACHIEVEMENT_ASW_PRIFLE_KILLS ,
ACHIEVEMENT_ASW_AUTOGUN_KILLS ,
ACHIEVEMENT_ASW_SHOTGUN_KILLS ,
ACHIEVEMENT_ASW_VINDICATOR_KILLS ,
ACHIEVEMENT_ASW_PISTOL_KILLS ,
ACHIEVEMENT_ASW_PDW_KILLS ,
ACHIEVEMENT_ASW_TESLA_GUN_KILLS ,
ACHIEVEMENT_ASW_RAILGUN_KILLS ,
ACHIEVEMENT_ASW_FLAMER_KILLS ,
ACHIEVEMENT_ASW_CHAINSAW_KILLS ,
ACHIEVEMENT_ASW_MINIGUN_KILLS ,
ACHIEVEMENT_ASW_SNIPER_RIFLE_KILLS ,
ACHIEVEMENT_ASW_GRENADE_LAUNCHER_KILLS ,
ACHIEVEMENT_ASW_HORNET_KILLS ,
ACHIEVEMENT_ASW_LASER_MINE_KILLS ,
ACHIEVEMENT_ASW_MINE_KILLS ,
ACHIEVEMENT_ASW_EASY_CAMPAIGN ,
ACHIEVEMENT_ASW_NORMAL_CAMPAIGN ,
ACHIEVEMENT_ASW_HARD_CAMPAIGN ,
ACHIEVEMENT_ASW_INSANE_CAMPAIGN ,
ACHIEVEMENT_ASW_KILL_GRIND_1 ,
ACHIEVEMENT_ASW_KILL_GRIND_2 ,
ACHIEVEMENT_ASW_KILL_GRIND_3 ,
ACHIEVEMENT_ASW_KILL_GRIND_4 ,
ACHIEVEMENT_ASW_SPEEDRUN_LANDING_BAY ,
ACHIEVEMENT_ASW_SPEEDRUN_DESCENT ,
ACHIEVEMENT_ASW_SPEEDRUN_DEIMA ,
ACHIEVEMENT_ASW_SPEEDRUN_RYDBERG ,
ACHIEVEMENT_ASW_SPEEDRUN_RESIDENTIAL ,
ACHIEVEMENT_ASW_SPEEDRUN_SEWER ,
ACHIEVEMENT_ASW_SPEEDRUN_TIMOR ,
ACHIEVEMENT_ASW_CAMPAIGN_NO_DEATHS ,
ACHIEVEMENT_ASW_MISSION_NO_DEATHS ,
2010-10-11 17:51:21 -05:00
ACHIEVEMENT_ASW_PARA_HAT ,
ACHIEVEMENT_ASW_IMBA_CAMPAIGN ,
ACHIEVEMENT_ASW_HARDCORE ,
2010-07-22 01:46:14 -05:00
} ;
# define ACH_LISTEN_ALIEN_DEATH_EVENTS 0x1000
# ifdef CLIENT_DLL
class C_ASW_Marine ;
class CASW_Achievement ;
class CASW_Achievement_Manager : public CAchievementMgr
{
public :
typedef CAchievementMgr BaseClass ;
CASW_Achievement_Manager ( ) ;
virtual bool Init ( ) ;
virtual void LevelInitPreEntity ( ) ;
virtual void FireGameEvent ( IGameEvent * event ) ;
virtual void Shutdown ( ) ;
CUtlVector < CASW_Achievement * > m_vecAlienDeathEventListeners [ MAX_SPLITSCREEN_PLAYERS ] ; // vector of achievements that are listening for alien death events
} ;
// base class for all Alien Swarm achievements
class CASW_Achievement : public CBaseAchievement
{
public :
typedef CBaseAchievement BaseClass ;
CASW_Achievement ( ) ;
virtual const char * GetIconPath ( ) ;
virtual bool OnAlienDied ( int nAlienClass , C_ASW_Marine * pKiller , int nWeaponClass ) ;
void SetAlienClassFilter ( int nAlienClass ) { m_nAlienClassFilter = nAlienClass ; }
void SetWeaponClassFilter ( int nWeaponClass ) { m_nWeaponClassFilter = nWeaponClass ; }
int m_nAlienClassFilter ;
int m_nWeaponClassFilter ;
} ;
extern CASW_Achievement_Manager g_ASW_AchievementMgr ; // global achievement manager for Alien Swarm
# endif
# endif // INCLUDED_ASW_ACHIEVEMENTS_H