//===========================================================================// // File: projweap.hpp // // Project: BattleTech Brick: Mech weapons // // Contents: ProjectileWeapon -- the ballistic (ammo-fed) weapon base // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined(PROJWEAP_HPP) # define PROJWEAP_HPP # if !defined(MECHWEAP_HPP) # include # endif # if !defined(POINT3D_HPP) # include # endif //##################### Forward Class Declarations ####################### class Mech; //########################################################################### //################ ProjectileWeapon Model Resource ##################### //########################################################################### struct ProjectileWeapon__SubsystemResource: public MechWeapon::SubsystemResource { int tracerInterval; int ammoBinIndex; Scalar minTimeOfFlight; Scalar minVoltagePercentToFire; Scalar minJamChance; Scalar muzzleVelocity; int missileCount; }; //########################################################################### //######################### ProjectileWeapon ########################### //########################################################################### class ProjectileWeapon: public MechWeapon { public: static Derivation ClassDerivations; static SharedData DefaultData; static Logical TestClass(Mech &); Logical TestInstance() const; virtual void FireWeapon(); public: typedef ProjectileWeapon__SubsystemResource SubsystemResource; ProjectileWeapon( Mech *owner, int subsystem_ID, SubsystemResource *subsystem_resource, SharedData &shared_data = DefaultData ); ~ProjectileWeapon(); protected: SubsystemConnection ammoBinLink; int tracerInterval; int tracerCounter; int ejectState; Scalar totalTimeToEject; Scalar timeToEject; Scalar percentOfEject; Scalar minJamChance; Scalar minTimeOfFlight; Scalar minVoltagePercentToFire; Vector3D launchVelocity; Vector3D tracerOrigin; Point3D leadPosition; int tracerModelHandle; }; #endif