#pragma once #include "MW4.hpp" #include "MissileWeapon.hpp" namespace MechWarrior4 { //########################################################################## //########################### ClusterBombWeaponSubsystem ################## //########################################################################## typedef MissileWeapon__GameModel ClusterBombWeaponSubsystem__GameModel; typedef MissileWeapon__CreateMessage ClusterBombWeaponSubsystem__CreateMessage; typedef MissileWeapon__ExecutionStateEngine ClusterBombWeaponSubsystem__ExecutionStateEngine; typedef MissileWeapon__Message ClusterBombWeaponSubsystem__Message; typedef MissileWeapon__ClassData ClusterBombWeaponSubsystem__ClassData; class ClusterBombWeaponSubsystem: public MissileWeapon { public: static void InitializeClass(); static void TerminateClass(); //########################################################################## // Inheritance support // public: typedef ClusterBombWeaponSubsystem__ClassData ClassData; typedef ClusterBombWeaponSubsystem__GameModel GameModel; typedef ClusterBombWeaponSubsystem__Message Message; typedef ClusterBombWeaponSubsystem__ExecutionStateEngine ExecutionStateEngine; typedef ClusterBombWeaponSubsystem__CreateMessage CreateMessage; //auto cluster support private: //the cycle for the cluster enum { ClusterCycle = 4 }; static YawPitchRoll* m_clusterVectors [ClusterCycle]; int m_clusterInc; //Goes through the cluster cycle //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Run-time Construction and Destruction Support // public: static ClusterBombWeaponSubsystem* Make( CreateMessage *message, ReplicatorID *base_id ); protected: ClusterBombWeaponSubsystem( ClassData *class_data, CreateMessage *message, ReplicatorID *base_id, ElementRenderer::Element *element ); ~ClusterBombWeaponSubsystem(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Shared Data support // public: static ClassData *DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Simulation Support // public: void CreateProjectile(Stuff::Time till); Stuff::Scalar GetDistanceWithAngle(Stuff::Scalar angle); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Test Support // public: void TestInstance() const; }; }