| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- /*
- ** 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 ) {}
|