Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

130 lines
5.2 KiB

//====== Copyright © 1996-2006, Valve Corporation, All rights reserved. =======//
//
// Purpose:
//
//=============================================================================//
#ifndef ASW_GAMESTATS_H
#define ASW_GAMESTATS_H
#ifdef _WIN32
#pragma once
#endif
#include "GameStats.h"
#include "asw_gamestats_shared.h"
#include "GameEventListener.h"
#include "utlvector.h"
#include "asw_player_shared.h"
// Forward declarations
class CASW_Player;
class CASW_Marine;
struct FailAdviceMessageStatus_t;
class CASW_BurnInfo;
//=============================================================================
//
// Class for tracking per-campaign server side stats
//
class CASWCampaignStatTracker
{
public:
// Events
void Event_LevelInit( void ) { }
void Event_LevelShutdown( float flElapsed ) { }
void Event_MarineKilled( CASW_Marine *pMarine, const CTakeDamageInfo &info ) { }
void Event_MarineTookDamage( CASW_Marine *pMarine, const CTakeDamageInfo &info ) { }
void Event_MarineBreadcrumb( CASW_Marine *pMarine ) { }
void Event_MarineReloading( CASW_Marine *pMarine, const char *szWeaponClass ) { }
void Event_MarineTookPickup( CASW_Marine *pMarine, const char *szPickupClass, const char *szDroppedClass ) { }
void Event_AlienSpawned( CBaseEntity *pAlien ) { }
void Event_AlienKilled( CBaseEntity *pAlien, const CTakeDamageInfo &info ) { }
void Event_MissionStarted() { }
void Event_MissionComplete( bool bSuccess ) { }
};
//=============================================================================
//=============================================================================
//
// Class for tracking per-mission server side stats
//
class CASWMissionStatTracker
{
public:
CASWMissionStatTracker() { }
// Events
void Event_LevelInit( void ) { }
void Event_LevelShutdown( float flElapsed ) { }
void Event_MarineKilled( CASW_Marine *pMarine, const CTakeDamageInfo &info ) { }
void Event_MarineTookDamage( CASW_Marine *pMarine, const CTakeDamageInfo &info ) { }
void Event_MarineBreadcrumb( CASW_Marine *pMarine ) { }
void Event_MarineReloading( CASW_Marine *pMarine, CBaseEntity *pWeapon ) { }
void Event_MarineTookPickup( CASW_Marine *pMarine, CBaseEntity *pPickupClass, CBaseEntity *pDroppedClass ) { }
void Event_AlienSpawned( CBaseEntity *pAlien ) { }
void Event_AlienKilled( CBaseEntity *pAlien, const CTakeDamageInfo &info ) { }
void Event_AlienTookDamage( CBaseEntity *pAlien, const CTakeDamageInfo &info ) { }
void Event_EntityBurned( CBaseEntity *pEntity, float fTotalDamage, CBaseEntity *pBurningWeapon = NULL ) { }
void Event_MissionStarted( void ) { }
void Event_MissionComplete( bool bSuccess, int iFinalFailAdvice, const FailAdviceMessageStatus_t *pFailStatus ) { }
void Event_MarineHealed( CASW_Marine *pMarine, int amount, CBaseEntity* pHealingWeapon = NULL ) { }
void Event_MarineWeaponFired( const CBaseEntity *pWeapon, const CASW_Marine *pMarine, int nShotsFired, bool bIsSecondary ) { }
void Event_MarinesSpawned( void ) { }
void OnSessionStart( void ) { }
void OnSessionEnd( void ) { }
// Send all of the accumulated stats for the current mission
virtual void SubmitGameStats( KeyValues *pKV ) { }
};
//=============================================================================
//=============================================================================
//
// Infested Game Stats Class
//
class CASWGameStats : public CBaseGameStats, public CGameEventListener, public CAutoGameSystem
{
public:
// Constructor/Destructor.
CASWGameStats( void ) { }
~CASWGameStats( void ) { }
virtual void Clear( void ) { }
virtual bool UseOldFormat() { return false; }
virtual bool AddDataForSend( KeyValues *pKV, StatSendType_t sendType ) { return false; }
virtual bool Init( void ) { return true; }
// Events. Forwarded to Mission Tracker and Campaign Tracker as needed.
virtual void Event_LevelInit( void ) { }
virtual void Event_LevelShutdown( float flElapsed ) { }
void Event_MarineKilled( CASW_Marine *pMarine, const CTakeDamageInfo &info ) { }
void Event_MarineTookDamage( CASW_Marine *pMarine, const CTakeDamageInfo &info ) { }
void Event_MarineBreadcrumb( CASW_Marine *pMarine ) { }
void Event_MarineReloading( CASW_Marine *pMarine, CBaseEntity *pWeapon ) { }
void Event_MarineTookPickup( CASW_Marine *pMarine, CBaseEntity *pPickupClass, CBaseEntity *pDroppedClass ) { }
void Event_AlienSpawned( CBaseEntity *pAlien ) { }
void Event_AlienKilled( CBaseEntity *pAlien, const CTakeDamageInfo &info ) { }
void Event_AlienTookDamage( CBaseEntity *pAlien, const CTakeDamageInfo &info ) { }
void Event_EntityBurned( CBaseEntity *pEntity, float fTotalDamage, CBaseEntity *pBurningWeapon = NULL ) { }
void Event_MissionStarted( void ) { }
void Event_MissionComplete( bool bSuccess, int iFinalFailAdvice, const FailAdviceMessageStatus_t *pFailStatus ) { }
void Event_MarineHealed( CASW_Marine *pMarine, int amount, CBaseEntity *pHealingWeapon = NULL ) { }
void Event_MarineWeaponFired( const CBaseEntity *pWeapon, const CASW_Marine *pMarine, int nShotsFired, bool bIsSecondary = false ) { }
void Event_MarinesSpawned( void ) { }
void OnSessionStart( void ) { }
void OnSessionEnd( void ) { }
virtual void FireGameEvent( IGameEvent * event ) { }
void PrintGamestatsMemoryUsage( void ) { }
};
extern CASWGameStats CASW_GameStats;
#endif // ASW_GAMESTATS_H