//============================================================================// // File: mislanch.hh // // Project: BattleTech // // Contents: Weapon Which Lanches a missile // // Derived From Projectile Weapon // //----------------------------------------------------------------------------// // Date Who Modification // // -------- --- ------------------------------------------------------------// // 04/13/95 JM Initial coding. // //----------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // // PROPRIETARY AND CONFIDENTIAL // //============================================================================// #if !defined (MISLANCH_HPP) # define MISLANCH_HPP # if !defined(PROJWEAP_HPP) # include # endif class Missile; //################# MissileLauncher SubsystemResource ################### struct MissileLauncher__SubsystemResource: public ProjectileWeapon::SubsystemResource { int missileCount; Vector3D muzzleVelocity; }; //########################################################################### //################# CLASS -- MissileLauncher ########################## //########################################################################### class MissileLauncher: public ProjectileWeapon { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Messaging Support // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data Support // public: static Derivation ClassDerivations; static SharedData DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Attribute Support // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Damage Support // public: void TakeDamage(Damage &damage); void DeathReset(Logical full_reset); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Model Support // public: typedef void (MissileLauncher::*Performance)(Scalar time_slice); void SetPerformance(Performance performance) { Check(this); activePerformance = (Simulation::Performance)performance; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction and Destruction // public: typedef MissileLauncher__SubsystemResource SubsystemResource; MissileLauncher( Mech *owner, int subsystem_ID, SubsystemResource *subsystem_resource, SharedData &default_data = DefaultData ); ~MissileLauncher(); Logical TestInstance() const; static Logical 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 ); // local stuff protected: void FireWeapon(); int missileCount; // how many individual missiles get fired at once }; #endif