mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-15 15:11:39 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
222
Code/Combat/weaponmanager.h
Normal file
222
Code/Combat/weaponmanager.h
Normal file
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
** 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/weaponmanager.h $*
|
||||
* *
|
||||
* $Author:: Byon_g $*
|
||||
* *
|
||||
* $Modtime:: 1/02/02 3:05p $*
|
||||
* *
|
||||
* $Revision:: 64 $*
|
||||
* *
|
||||
*---------------------------------------------------------------------------------------------*
|
||||
* Functions: *
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
#ifndef WEAPONMANAGER_H
|
||||
#define WEAPONMANAGER_H
|
||||
|
||||
#ifndef ALWAYS_H
|
||||
#include "always.h"
|
||||
#endif
|
||||
|
||||
#ifndef WWSTRING_H
|
||||
#include "wwstring.h"
|
||||
#endif
|
||||
|
||||
#ifndef DEFINITION_H
|
||||
#include "definition.h"
|
||||
#endif
|
||||
|
||||
#ifndef _DATASAFE_H
|
||||
#include "..\commando\datasafe.h"
|
||||
#endif //_DATASAFE_H
|
||||
|
||||
class WeaponClass;
|
||||
|
||||
/*
|
||||
** Weapon Definition Structure - These describe the basic functionality of
|
||||
** a weapon, and CANNOT be modified by instances
|
||||
*/
|
||||
class WeaponDefinitionClass : public DefinitionClass {
|
||||
|
||||
public:
|
||||
WeaponDefinitionClass( void );
|
||||
|
||||
virtual uint32 Get_Class_ID( void ) const;
|
||||
virtual PersistClass * Create( void ) const { WWASSERT( 0 ); return NULL; }
|
||||
virtual bool Save( ChunkSaveClass &csave );
|
||||
virtual bool Load( ChunkLoadClass &cload );
|
||||
virtual const PersistFactoryClass & Get_Factory( void ) const;
|
||||
|
||||
DECLARE_EDITABLE( WeaponDefinitionClass, DefinitionClass );
|
||||
|
||||
bool operator == ( const WeaponDefinitionClass & vector) const { return false; }
|
||||
bool operator != ( const WeaponDefinitionClass & vector) const { return true; }
|
||||
|
||||
int Style;
|
||||
StringClass Model;
|
||||
StringClass IdleAnim;
|
||||
StringClass FireAnim;
|
||||
StringClass BackModel;
|
||||
// int LegacyFireSoundDefID;
|
||||
float SwitchTime;
|
||||
safe_float ReloadTime;
|
||||
float KeyNumber;
|
||||
bool CanSnipe;
|
||||
bool CanReceiveGenericCnCAmmo;
|
||||
float Rating;
|
||||
int EjectPhysDefID;
|
||||
int MuzzleFlashPhysDefID;
|
||||
StringClass FirstPersonModel;
|
||||
Vector3 FirstPersonOffset;
|
||||
float RecoilImpulse;
|
||||
StringClass HUDIconTextureName;
|
||||
int ReloadSoundDefID;
|
||||
int EmptySoundDefID;
|
||||
int PrimaryAmmoDefID;
|
||||
int SecondaryAmmoDefID;
|
||||
safe_int ClipSize;
|
||||
float RecoilTime;
|
||||
float RecoilScale;
|
||||
bool AGiveWeaponsWeapon;
|
||||
safe_int MaxInventoryRounds;
|
||||
|
||||
int IconNameID;
|
||||
StringClass IconTextureName;
|
||||
RectClass IconTextureUV;
|
||||
Vector2 IconOffset;
|
||||
|
||||
StringClass HumanFiringAnimation;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
**
|
||||
*/
|
||||
class AmmoDefinitionClass : public DefinitionClass {
|
||||
|
||||
public:
|
||||
enum {
|
||||
AMMO_TYPE_NORMAL,
|
||||
AMMO_TYPE_C4_REMOTE,
|
||||
AMMO_TYPE_C4_TIMED,
|
||||
AMMO_TYPE_C4_PROXIMITY,
|
||||
};
|
||||
|
||||
AmmoDefinitionClass( void );
|
||||
|
||||
virtual uint32 Get_Class_ID( void ) const;
|
||||
virtual PersistClass * Create( void ) const { WWASSERT( 0 ); return NULL; }
|
||||
virtual bool Save( ChunkSaveClass &csave );
|
||||
virtual bool Load( ChunkLoadClass &cload );
|
||||
virtual const PersistFactoryClass & Get_Factory( void ) const;
|
||||
|
||||
DECLARE_EDITABLE( AmmoDefinitionClass, DefinitionClass );
|
||||
|
||||
bool operator == ( const AmmoDefinitionClass & vector) const { return false; }
|
||||
bool operator != ( const AmmoDefinitionClass & vector) const { return true; }
|
||||
|
||||
StringClass ModelFilename;
|
||||
StringClass ModelName;
|
||||
safe_int Warhead;
|
||||
safe_float Damage;
|
||||
safe_float Range;
|
||||
safe_float Velocity;
|
||||
float Gravity;
|
||||
float Elasticity;
|
||||
float RateOfFire;
|
||||
float SprayAngle;
|
||||
safe_int SprayCount;
|
||||
StringClass TrailEmitter;
|
||||
float AquireTime;
|
||||
float BurstDelayTime;
|
||||
safe_int BurstMax;
|
||||
int SoftPierceLimit;
|
||||
float TurnRate;
|
||||
bool TimeActivated;
|
||||
bool TerrainActivated;
|
||||
bool IsTracking;
|
||||
safe_float EffectiveRange;
|
||||
int ExplosionDefID;
|
||||
float RandomTrackingScale;
|
||||
bool DisplayLaser;
|
||||
safe_float ChargeTime;
|
||||
int ContinuousSoundDefID;
|
||||
int FireSoundDefID;
|
||||
StringClass ContinuousEmitterName;
|
||||
int MaxBounces;
|
||||
int SprayBulletCost;
|
||||
safe_int AmmoType;
|
||||
float C4TriggerTime1;
|
||||
float C4TriggerTime2;
|
||||
float C4TriggerTime3;
|
||||
float C4TriggerRange1;
|
||||
float C4TriggerRange2;
|
||||
float C4TriggerRange3;
|
||||
int C4TimingSound1ID;
|
||||
int C4TimingSound2ID;
|
||||
int C4TimingSound3ID;
|
||||
float AliasedSpeed;
|
||||
int HitterType;
|
||||
int BeaconDefID;
|
||||
|
||||
bool BeamEnabled; // enable/disable usage of beam for instant bullets
|
||||
Vector3 BeamColor;
|
||||
float BeamTime; // seconds
|
||||
float BeamWidth; // meters
|
||||
bool BeamEndCaps; // put end-caps on the beam?
|
||||
StringClass BeamTexture; // texture filename
|
||||
bool BeamSubdivisionEnabled; // boolean; we use fixed subdivision count
|
||||
float BeamSubdivisionScale; // normalized amplitude.
|
||||
bool BeamSubdivisionFrozen; // animated or frozen subdivision
|
||||
|
||||
int IconNameID;
|
||||
StringClass IconTextureName;
|
||||
RectClass IconTextureUV;
|
||||
Vector2 IconOffset;
|
||||
|
||||
float GrenadeSafetyTime;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
** Weapon Manager
|
||||
*/
|
||||
class WeaponManager {
|
||||
|
||||
public:
|
||||
static const WeaponDefinitionClass *Find_Weapon_Definition( const char *name );
|
||||
static const WeaponDefinitionClass *Find_Weapon_Definition( int id );
|
||||
static const AmmoDefinitionClass *Find_Ammo_Definition( const char *ammo_name );
|
||||
static const AmmoDefinitionClass *Find_Ammo_Definition( int id );
|
||||
|
||||
static bool Is_Weapon_Help_Disabled( void ) { return IsWeaponHelpDisabled; }
|
||||
static void Set_Weapon_Help_Disabled( bool state ) { IsWeaponHelpDisabled = state; }
|
||||
|
||||
private:
|
||||
static bool IsWeaponHelpDisabled;
|
||||
};
|
||||
|
||||
#endif // WEAPONMANAGER_H
|
||||
Reference in New Issue
Block a user