| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /*
- ** Command & Conquer Red Alert(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/>.
- */
- /* $Header: /CounterStrike/WEAPON.H 1 3/03/97 10:26a Joe_bostic $ */
- /***********************************************************************************************
- *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
- ***********************************************************************************************
- * *
- * Project Name : Command & Conquer *
- * *
- * File Name : WEAPON.H *
- * *
- * Programmer : Joe L. Bostic *
- * *
- * Start Date : 05/17/96 *
- * *
- * Last Update : May 17, 1996 [JLB] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #ifndef WEAPON_H
- #define WEAPON_H
- /**********************************************************************
- ** This is the constant data associated with a weapon. Some objects
- ** can have multiple weapons and this class is used to isolate and
- ** specify this data in a convenient and selfcontained way.
- */
- class WeaponTypeClass
- {
- public:
- WeaponTypeClass(char const * name);
- WeaponTypeClass(NoInitClass const &) {}
- ~WeaponTypeClass(void);
- void * operator new(size_t);
- static void * operator new(size_t , void * ptr) {return(ptr);};
- void operator delete(void * pointer);
- char const * Name(void) const {return(IniName);}
- bool Read_INI(CCINIClass & ini);
- static WeaponTypeClass * As_Pointer(WeaponType weapon);
- void Code_Pointers(void) {}
- void Decode_Pointers(void) {}
- ThreatType Allowed_Threats(void) const;
- bool Is_Wall_Destroyer(void) const;
- /*
- ** This is both the weapon type number and the index number into
- ** the weapon array.
- */
- int ID;
- /*
- ** This is the identifying name of this weapon.
- */
- char const * IniName;
- /*
- ** Increase the weapon speed if the target is flying.
- */
- unsigned IsTurboBoosted:1;
- /*
- ** If potential targets of this weapon should be scanned for
- ** nearby friendly structures and if found, firing upon the target
- ** would be discouraged, then this flag will be true.
- */
- unsigned IsSupressed:1;
- /*
- ** If this weapon is equipped with a camera that reveals the
- ** area around the firer, then this flag will be true.
- */
- unsigned IsCamera:1;
- /*
- ** If this weapon requires charging before it can fire, then this
- ** flag is true. In actuality, this only applies to the Tesla coil
- ** which has specific charging animation. The normal rate of fire
- ** value suffices for all other cases.
- */
- unsigned IsElectric:1;
- /*
- ** This is the number of shots this weapon first (in rapid succession).
- ** The normal value is 1, but for the case of two shooter weapons such as
- ** the double barreled gun turrets of the Mammoth tank, this value will be
- ** set to 2.
- */
- int Burst;
- /*
- ** This is the unit class of the projectile fired. A subset of the unit types
- ** represent projectiles. It is one of these classes that is specified here.
- ** If this object does not fire anything, then this value will be BULLET_NONE.
- */
- BulletTypeClass const * Bullet;
- /*
- ** This is the damage (explosive load) to be assigned to the projectile that
- ** this object fires. For the rare healing weapon, this value is negative.
- */
- int Attack;
- /*
- ** Speed of the projectile launched.
- */
- MPHType MaxSpeed;
- /*
- ** Warhead to attach to the projectile.
- */
- WarheadTypeClass const * WarheadPtr;
- /*
- ** Objects that fire (which can be buildings as well) will fire at a
- ** frequency controlled by this value. This value serves as a count
- ** down timer between shots. The smaller the value, the faster the
- ** rate of fire.
- */
- int ROF;
- /*
- ** When this object fires, the range at which it's projectiles travel is
- ** controlled by this value. The value represents the number of cells the
- ** projectile will travel. Objects outside of this range will not be fired
- ** upon (in normal circumstances).
- */
- LEPTON Range;
- /*
- ** This is the typical sound generated when firing.
- */
- VocType Sound;
- /*
- ** This is the animation to display at the firing coordinate.
- */
- AnimType Anim;
- };
- #endif
|