sqwarmed/sdk_src/game/server/swarm/asw_marine_resource.h

159 lines
5.5 KiB
C++

#ifndef _INCLUDED_ASW_MARINE_RESOURCE_H
#define _INCLUDED_ASW_MARINE_RESOURCE_H
#ifdef _WIN32
#pragma once
#endif
#include "baseentity.h"
#include "asw_shareddefs.h"
class CASW_Marine_Profile;
class CASW_Marine;
class CASW_Player;
class CASW_Weapon;
class CASW_Door;
// This class holds information about a particular ingame marine
// most of the data is set on the server and sent to the clients
class CASW_Marine_Profile;
class CASW_Intensity;
class CASW_Marine_Resource : public CBaseEntity
{
public:
DECLARE_CLASS( CASW_Marine_Resource, CBaseEntity );
DECLARE_DATADESC();
DECLARE_SERVERCLASS();
CASW_Marine_Resource();
virtual ~CASW_Marine_Resource();
CNetworkVar( int, m_MarineProfileIndex );
CNetworkHandle (CASW_Marine, m_MarineEntity); // the actual marine
CNetworkHandle (CASW_Player, m_Commander); // the player in charge of this marine
CNetworkVar( int, m_iCommanderIndex );
// indices into the equipment list for currently selected equipment
CNetworkArray( int, m_iWeaponsInSlots, ASW_MAX_EQUIP_SLOTS );
int m_iInitialWeaponsInSlots[ ASW_MAX_EQUIP_SLOTS ];
CNetworkVar( bool, m_bInfested );
CNetworkVar( bool, m_bInhabited );
CNetworkVar( bool, m_bTakenWoundDamage );
CNetworkVar( bool, m_bHealthHalved );
CNetworkVar( int, m_iServerFiring );
// stats
int m_iShotsFired;
int m_iShotsMissed;
int m_iPlayerShotsFired; // NOTE: player shots are not increased if you hit a junk item (so accuracy is only based on alien hits and misses)
int m_iPlayerShotsMissed;
//CNetworkVar( float, m_fDamageTaken );
float m_fDamageTaken;
CNetworkVar( int, m_iAliensKilled );
int m_iAliensKilledByBouncingBullets;
int m_iAliensKilledSinceLastFriendlyFireIncident;
bool m_bAwardedFFPartialAchievement;
bool m_bAwardedHealBeaconAchievement;
bool m_bDealtNonMeleeDamage;
Vector m_vecOutOfAmmoSpot;
int m_iHealCount; // how many times this marine received a heal
int m_iDamageTakenDuringHack;
CNetworkVarEmbedded( CTimeline, m_TimelineFriendlyFire );
CNetworkVarEmbedded( CTimeline, m_TimelineKillsTotal );
CNetworkVarEmbedded( CTimeline, m_TimelineHealth );
CNetworkVarEmbedded( CTimeline, m_TimelineAmmo );
CNetworkVarEmbedded( CTimeline, m_TimelinePosX );
CNetworkVarEmbedded( CTimeline, m_TimelinePosY );
// skills
CNetworkArray( int, m_index, ASW_SCANNER_MAX_BLIPS );
virtual int ShouldTransmit( const CCheckTransmitInfo *pInfo );
void SetCommander(CASW_Player* commander);
CASW_Player* GetCommander();
void GetDisplayName( char *pwchDisplayName, int nMaxBytes );
void SetMarineEntity(CASW_Marine* marine);
CASW_Marine* GetMarineEntity();
void SetProfileIndex(int ProfileIndex);
int GetProfileIndex();
CASW_Marine_Profile* GetProfile();
bool IsInfested() { return m_bInfested; }
void SetInfested(bool b) { m_bInfested = b; }
bool IsInhabited();
void SetInhabited(bool bInhabited);
void UpdateWeaponIndices();
float GetHealthPercent();
bool IsFiring();
void SetFiring(int iFiring) { m_iServerFiring = iFiring; }
bool IsReloading();
// leadership effects
float OnFired_GetDamageScale(); // called whenever a weapon is fired. Leadership and damage amp scaling is done here
int m_iLeadershipCount;
Vector m_vecDeathPosition; // position of the marine when he died
float m_fDeathTime;
// medal stats collection
void DebugMedalStats();
void DebugMedalStatsOnScreen();
float m_fFriendlyFireDamageDealt; // how much FF damage this marine dealt out
int m_iSingleGrenadeKills; // our max number of aliens killed with a single grenade this mission
int m_iKickedGrenadeKills; // how many aliens were killed by a kicked grenade
int m_iShieldbugsKilled;
int m_iParasitesKilled;
int m_iSavedLife; // has this marine killed an alien that was munching on a teammate?
bool m_bHurt; // has this marine been hurt at all?
int m_iMadFiring;
int m_iMadFiringAutogun;
//int m_iLastStandKills; // alien kills made while the NCO marine is bleeding to death
int m_iMedicHealing; // how much healing this medic has done (minus healing of FF damage)
int m_iCuredInfestation; // how many marines have survived infestation after a cure from us (not a heal)
int m_iOnlyWeaponEquipIndex; // equip index of the only weapon we've used (-1 means not used a weapon yet, -2 means we've used multiple weapons)
bool m_bOnlyWeaponExtra; // was the only weapon we've used an extra item?
void UsedWeapon(CASW_Weapon *pWeapon, int iShots);
void UsedWeapon(int iWeaponEquipIndex, bool bWeaponExtra, int iShots);
int m_iMineKills;
int m_iSentryKills;
int m_iEggKills;
int m_iGrubKills;
int m_iBarrelKills;
int m_iFiresPutOut;
bool m_bDidFastReloadsInARow;
bool m_bDamageAmpMedal;
bool m_bKilledBoomerEarly;
bool m_bStunGrenadeMedal;
bool m_bFreezeGrenadeMedal;
bool m_bDodgedRanger;
bool m_bProtectedTech;
bool m_bMeleeParasiteKill;
int m_iAliensKicked;
int m_iFastDoorHacks;
int m_iFastComputerHacks;
CNetworkHandle(CASW_Door, m_hWeldingDoor); // networks down which door this marine tried to cut/seal last, so all players can see its progress on the HUD
// medals awarded during the debrief
CNetworkString( m_MedalsAwarded, 255 );
bool m_bAwardedMedals;
CUtlVector<int> m_aAchievementsEarned;
// char array of medals awarded (used for stats upload)
CUtlVector<unsigned char> m_CharMedals;
CNetworkVar(bool, m_bUsingEngineeringAura);
// Intensity
CASW_Intensity* GetIntensity() { return m_pIntensity; }
private:
CASW_Intensity* m_pIntensity;
};
#endif /* _INCLUDED_ASW_MARINE_RESOURCE_H */