mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-15 23:21:40 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
213
Code/Combat/playerdata.h
Normal file
213
Code/Combat/playerdata.h
Normal file
@@ -0,0 +1,213 @@
|
||||
/*
|
||||
** Command & Conquer Renegade(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/***********************************************************************************************
|
||||
*** Confidential - Westwood Studios ***
|
||||
***********************************************************************************************
|
||||
* *
|
||||
* Project Name : Commando *
|
||||
* *
|
||||
* $Archive:: /Commando/Code/Combat/playerdata.h $*
|
||||
* *
|
||||
* $Author:: Byon_g $*
|
||||
* *
|
||||
* $Modtime:: 3/29/02 3:42p $*
|
||||
* *
|
||||
* $Revision:: 25 $*
|
||||
* *
|
||||
*---------------------------------------------------------------------------------------------*
|
||||
* Functions: *
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
#ifndef PLAYERDATA_H
|
||||
#define PLAYERDATA_H
|
||||
|
||||
#ifndef ALWAYS_H
|
||||
#include "always.h"
|
||||
#endif
|
||||
|
||||
#ifndef GAMEOBJREF_H
|
||||
#include "gameobjref.h"
|
||||
#endif
|
||||
|
||||
#ifndef _DATASAFE_H
|
||||
#include "..\commando\datasafe.h"
|
||||
#endif //_DATASAFE_H
|
||||
|
||||
#ifndef SIMPLEVEC_H
|
||||
#include "simplevec.h"
|
||||
#endif
|
||||
|
||||
|
||||
class ChunkSaveClass;
|
||||
class ChunkLoadClass;
|
||||
class DamageableGameObj;
|
||||
class SmartGameObj;
|
||||
class BitStreamClass;
|
||||
|
||||
/*
|
||||
** PlayerDataClass
|
||||
**
|
||||
** This class maintains the score and statistics for human player.
|
||||
** It is intended that the Commando code will derive a custom version,
|
||||
** and install it into each Human Player controlled SoldierGameObj.
|
||||
** When the SoldierGameObj dies, a new one should be created and the
|
||||
** same PlayerDataClass should be plugged into the new SoldierGameObj
|
||||
**
|
||||
** It is the creators responsibility to save and restore these classes,
|
||||
** and to re-install into the GameObjs after load.
|
||||
*/
|
||||
class PlayerDataClass
|
||||
{
|
||||
public:
|
||||
PlayerDataClass( void );
|
||||
~PlayerDataClass( void );
|
||||
|
||||
virtual void Reset_Player(void);
|
||||
|
||||
bool Save(ChunkSaveClass & csave);
|
||||
bool Load(ChunkLoadClass & cload);
|
||||
|
||||
void Set_GameObj( SmartGameObj * soldier ) { GameObj = (ScriptableGameObj*)soldier; }
|
||||
SmartGameObj * Get_GameObj( void ) { return (SmartGameObj*)(GameObj.Get_Ptr()); }
|
||||
|
||||
// Score access
|
||||
float Get_Score( void ) const { return (float)Score; }
|
||||
virtual void Set_Score( float score ) { Score = score; }
|
||||
virtual void Increment_Score( float add );
|
||||
|
||||
// Money access
|
||||
float Get_Money( void ) const { return (float)Money; }
|
||||
virtual void Set_Money( float money ) { Money = money; }
|
||||
virtual void Increment_Money( float add );
|
||||
virtual bool Purchase_Item( int cost );
|
||||
|
||||
// Damage Notification
|
||||
virtual void Apply_Damage_Points( float points, DamageableGameObj * victim );
|
||||
virtual void Apply_Death_Points( float points, DamageableGameObj * victim );
|
||||
|
||||
// Network support
|
||||
void Import_Occasional( BitStreamClass & packet );
|
||||
void Export_Occasional( BitStreamClass & packet );
|
||||
|
||||
// Stats
|
||||
void Stats_Reset( void );
|
||||
void Stats_Add_Game_Time( float time ) { StatTimeInGame += time; StatTimeInSession+=time; }
|
||||
void Stats_Add_Enemy_Killed( void ) { StatEnemiesKilled++; }
|
||||
void Stats_Add_Ally_Killed( void ) { StatAlliesKilled++; }
|
||||
void Stats_Add_Shot_Fired( void ) { StatShotsFired++; }
|
||||
void Stats_Add_Head_Shot( void ) { StatHeadShots++; }
|
||||
void Stats_Add_Torso_Shot( void ) { StatTorsoShots++; }
|
||||
void Stats_Add_Arm_Shot( void ) { StatArmShots++; }
|
||||
void Stats_Add_Leg_Shot( void ) { StatLegShots++; }
|
||||
void Stats_Add_Crotch_Shot( void ) { StatCrotchShots++; }
|
||||
void Stats_Set_Final_Health( float health ) { StatFinalHealth = health; }
|
||||
void Stats_Add_Powerup( void ) { StatPowerups++; }
|
||||
void Stats_Add_Vehicle_Destroyed( void ) { StatVehiclesDestroyed++; }
|
||||
void Stats_Add_Vehicle_Time( float time ) { StatTimeInVehicles += time; }
|
||||
void Stats_Add_Kill_From_Vehicle( void ) { StatKillsFromVehicles++; }
|
||||
void Stats_Add_Squish( void ) { StatSquishes++; }
|
||||
void Stats_Add_Credit_Grant( float grant ) { StatCreditsGranted += grant; }
|
||||
void Stats_Add_Building_Destroyed( void ) { StatBuildingsDestroyed++; }
|
||||
void Stats_Add_Head_Hit( void ) { StatHeadHits++; }
|
||||
void Stats_Add_Torso_Hit( void ) { StatTorsoHits++; }
|
||||
void Stats_Add_Arm_Hit( void ) { StatArmHits++; }
|
||||
void Stats_Add_Leg_Hit( void ) { StatLegHits++; }
|
||||
void Stats_Add_Crotch_Hit( void ) { StatCrotchHits++; }
|
||||
void Stats_Add_Weapon_Fired( int weapon_id );
|
||||
|
||||
float Get_Game_Time(void) const {return StatTimeInGame;}
|
||||
float Get_Session_Time(void) const {return StatTimeInSession;} // Note: This is per-session, it is not saved or loaded!
|
||||
int Get_Enemies_Killed(void) const {return StatEnemiesKilled;}
|
||||
int Get_Allies_Killed(void) const {return StatAlliesKilled;}
|
||||
int Get_Shots_Fired(void) const {return StatShotsFired;}
|
||||
int Get_Head_Shots(void) const {return StatHeadShots;}
|
||||
int Get_Torso_Shots(void) const {return StatTorsoShots;}
|
||||
int Get_Arm_Shots(void) const {return StatArmShots;}
|
||||
int Get_Leg_Shots(void) const {return StatLegShots;}
|
||||
int Get_Crotch_Shots(void) const {return StatCrotchShots;}
|
||||
float Get_Final_Health(void) const {return StatFinalHealth;}
|
||||
int Get_Powerups_Collected(void) const {return StatPowerups;}
|
||||
int Get_Vehiclies_Destroyed(void) const {return StatVehiclesDestroyed;}
|
||||
float Get_Vehicle_Time(void) const {return StatTimeInVehicles;}
|
||||
int Get_Kills_From_Vehicle(void) const {return StatKillsFromVehicles;}
|
||||
int Get_Squishes(void) const {return StatSquishes;}
|
||||
float Get_Credit_Grant(void) const {return StatCreditsGranted;}
|
||||
int Get_Building_Destroyed(void) const {return StatBuildingsDestroyed;}
|
||||
int Get_Head_Hit(void) const {return StatHeadHits;}
|
||||
int Get_Torso_Hit(void) const {return StatTorsoHits;}
|
||||
int Get_Arm_Hit(void) const {return StatArmHits;}
|
||||
int Get_Leg_Hit(void) const {return StatLegHits;}
|
||||
int Get_Crotch_Hit(void) const {return StatCrotchHits;}
|
||||
|
||||
int Get_Weapon_Fired_Count( void ) const;
|
||||
bool Get_Weapon_Fired( int index, unsigned long& weaponID, unsigned long& firedCount) const;
|
||||
|
||||
float Get_Punish_Timer( void ) {return PunishTimer;}
|
||||
void Inc_Punish_Timer( float amount ) {PunishTimer += amount;}
|
||||
|
||||
private:
|
||||
safe_float Score;
|
||||
safe_float Money;
|
||||
GameObjReference GameObj;
|
||||
float PunishTimer;
|
||||
|
||||
protected:
|
||||
float StatTimeInGame;
|
||||
float StatTimeInSession;
|
||||
int StatEnemiesKilled;
|
||||
int StatAlliesKilled;
|
||||
int StatShotsFired;
|
||||
int StatHeadShots;
|
||||
int StatTorsoShots;
|
||||
int StatArmShots;
|
||||
int StatLegShots;
|
||||
int StatCrotchShots;
|
||||
float StatFinalHealth;
|
||||
int StatPowerups;
|
||||
int StatVehiclesDestroyed;
|
||||
float StatTimeInVehicles;
|
||||
int StatKillsFromVehicles;
|
||||
int StatSquishes;
|
||||
float StatCreditsGranted;
|
||||
int StatBuildingsDestroyed;
|
||||
int StatHeadHits;
|
||||
int StatTorsoHits;
|
||||
int StatArmHits;
|
||||
int StatLegHits;
|
||||
int StatCrotchHits;
|
||||
|
||||
int StatLastWeaponIndex;
|
||||
SimpleDynVecClass<int> StatWeaponIDFired;
|
||||
SimpleDynVecClass<int> StatWeaponFireCount;
|
||||
};
|
||||
|
||||
#endif // PLAYERDATA_H
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//safe_int Score;
|
||||
//virtual bool Purchase_Item( int cost );
|
||||
//virtual void On_Kill( int victim_id ) {}
|
||||
//virtual void On_Kill( int victim_id, int victim_team ) {}
|
||||
Reference in New Issue
Block a user