source-engine/utils/gamestats_reader/dod_gamestats.h

175 lines
3.6 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: The dod game stats header
//
// $NoKeywords: $
//=============================================================================//
#ifndef DOD_GAMESTATS_H
#define DOD_GAMESTATS_H
#ifdef _WIN32
#pragma once
#endif
// Redefine some things for the stat reader so it doesn't have to include weapon_dodbase.h
#ifndef GAME_DLL
typedef enum
{
WEAPON_NONE = 0,
//Melee
WEAPON_AMERKNIFE,
WEAPON_SPADE,
//Pistols
WEAPON_COLT,
WEAPON_P38,
WEAPON_C96,
//Rifles
WEAPON_GARAND,
WEAPON_M1CARBINE,
WEAPON_K98,
//Sniper Rifles
WEAPON_SPRING,
WEAPON_K98_SCOPED,
//SMG
WEAPON_THOMPSON,
WEAPON_MP40,
WEAPON_MP44,
WEAPON_BAR,
//Machine guns
WEAPON_30CAL,
WEAPON_MG42,
//Rocket weapons
WEAPON_BAZOOKA,
WEAPON_PSCHRECK,
//Grenades
WEAPON_FRAG_US,
WEAPON_FRAG_GER,
WEAPON_FRAG_US_LIVE,
WEAPON_FRAG_GER_LIVE,
WEAPON_SMOKE_US,
WEAPON_SMOKE_GER,
WEAPON_RIFLEGREN_US,
WEAPON_RIFLEGREN_GER,
WEAPON_RIFLEGREN_US_LIVE,
WEAPON_RIFLEGREN_GER_LIVE,
// not actually separate weapons, but defines used in stats recording
// find a better way to do this without polluting the list of actual weapons.
WEAPON_THOMPSON_PUNCH,
WEAPON_MP40_PUNCH,
WEAPON_GARAND_ZOOMED,
WEAPON_K98_ZOOMED,
WEAPON_SPRING_ZOOMED,
WEAPON_K98_SCOPED_ZOOMED,
WEAPON_30CAL_UNDEPLOYED,
WEAPON_MG42_UNDEPLOYED,
WEAPON_BAR_SEMIAUTO,
WEAPON_MP44_SEMIAUTO,
WEAPON_MAX, // number of weapons weapon index
} DODWeaponID;
#endif // ndef WEAPON_NONE
#define DOD_STATS_BLOB_VERSION 1
#define DOD_NUM_DISTANCE_STAT_WEAPONS 22
#define DOD_NUM_NODIST_STAT_WEAPONS 14
#define DOD_NUM_WEAPON_DISTANCE_BUCKETS 10
extern int iDistanceStatWeapons[DOD_NUM_DISTANCE_STAT_WEAPONS];
extern int iNoDistStatWeapons[DOD_NUM_NODIST_STAT_WEAPONS];
extern int iWeaponBucketDistances[DOD_NUM_WEAPON_DISTANCE_BUCKETS-1];
#ifndef GAME_DLL
extern const char * s_WeaponAliasInfo[];
#endif
typedef struct
{
char szGameName[8];
byte iVersion;
char szMapName[32];
char ipAddr[4];
short port;
int serverid;
} gamestats_header_t;
// Stats for bullet weapons - includes distance of hits
typedef struct
{
short iNumAttacks; // times fired
short iNumHits; // times hit
// distance buckets - distances are defined per-weapon ( 0 is closest, buckets-1 farthest )
short iDistanceBuckets[DOD_NUM_WEAPON_DISTANCE_BUCKETS];
} dod_gamestats_weapon_distance_t;
// Stats for non-bullet weapons
typedef struct
{
short iNumAttacks; // times fired
short iNumHits; // times hit
} dod_gamestats_weapon_nodist_t;
typedef struct
{
gamestats_header_t header;
// Team Scores
byte iNumAlliesWins;
byte iNumAxisWins;
short iAlliesTickPoints;
short iAxisTickPoints;
short iMinutesPlayed; // time spent on the map rotation
// Player Data
short iMinutesPlayedPerClass_Allies[7]; // includes random
short iMinutesPlayedPerClass_Axis[7]; // includes random
short iKillsPerClass_Allies[6];
short iKillsPerClass_Axis[6];
short iSpawnsPerClass_Allies[6];
short iSpawnsPerClass_Axis[6];
short iCapsPerClass_Allies[6];
short iCapsPerClass_Axis[6];
byte iDefensesPerClass_Allies[6];
byte iDefensesPerClass_Axis[6];
// Server Settings
// assume these class limits don't change through the course of the map
byte iClassLimits_Allies[6];
byte iClassLimits_Axis[6];
// Weapon Data
dod_gamestats_weapon_distance_t weaponStatsDistance[DOD_NUM_DISTANCE_STAT_WEAPONS]; // 14 * 22 = 308 bytes
dod_gamestats_weapon_nodist_t weaponStats[DOD_NUM_NODIST_STAT_WEAPONS]; // 4 * 14 = 56 bytes
// how many times a weapon was picked up ?
} dod_gamestats_t;
#endif // DOD_GAMESTATS_H