#pragma once #include "MW4.hpp" #include "Mech.hpp" namespace Adept { class Effect; } namespace MechWarrior4 { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Gyro // typedef Adept::Receiver__ClassData Gyro__ClassData; typedef Adept::Receiver__Message Gyro__Message; class Gyro: public Adept::Receiver { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Inheritance Support // public: typedef Gyro__ClassData ClassData; typedef Gyro__Message Message; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Construction, Destruction, Testing // public: static void InitializeClass(); static void TerminateClass(); Gyro(Mech *parent); ~Gyro(); void Reuse(); void TestInstance(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class Data support // public: static ClassData *DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Simulation support // public: void Execute(); void FallDown( Mech::FallMode fall_mode, Stuff::Scalar delay ); void AbortFall(); Stuff::Scalar GetTimeTillFall(); // Will return -1.0 if not falling protected: Mech *m_parentMech; Stuff::Time m_fallDownTime; Mech::FallMode m_fallMode; }; }