//===========================================================================// // File: mechweap.hpp // // Project: BattleTech // // Contents: Implementation details for mech weapons // //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #if !defined(MECHWEAP_HPP) # define MECHWEAP_HPP # if !defined(POWERSUB_HPP) # include # endif # if !defined(DAMAGE_HPP) # include # endif //##################### Forward Class Declarations ####################### class Mech; //########################################################################### //###################### MechWeapon Model Resource ###################### //########################################################################### struct MechWeapon__SubsystemResource: public PoweredSubsystem::SubsystemResource { Scalar rechargeRate; Scalar weaponRange; ResourceDescription::ResourceID explosionModelFile; Scalar damageAmount; int damageType; Scalar heatCostToFire; Scalar pipPositionX; Scalar pipPositionY; int rearFiring; }; //########################################################################### //############################ MechWeapon ############################### //########################################################################### class MechWeapon: public PoweredSubsystem { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data Support // public: static Derivation ClassDerivations; static SharedData DefaultData; static MessageHandlerSet MessageHandlers; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Test Class Support // public: static Logical TestClass(Mech &); Logical TestInstance() const; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction and Destruction // public: typedef MechWeapon__SubsystemResource SubsystemResource; MechWeapon( Mech *owner, int subsystem_ID, SubsystemResource *subsystem_resource, SharedData &shared_data = DefaultData ); ~MechWeapon(); static int CreateStreamedSubsystem( ResourceFile *resource_file, NotationFile *model_file, const char *model_name, const char *subsystem_name, SubsystemResource *subsystem_resource, NotationFile *subsystem_file, const ResourceDirectories *directories, int passes = 1 ); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Weapon interface // public: virtual void FireWeapon(); void SendDamage( Entity *target, Damage &damage ); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Local Data // protected: Scalar rechargeRate; Scalar weaponRange; Scalar damageAmount; int damageType; Scalar heatCostToFire; int targetWithinRange; Damage damageData; }; #endif