214 lines
8.6 KiB
C
214 lines
8.6 KiB
C
|
/*
|
||
|
** 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 ) {}
|