//===========================================================================// // File: MODL.hpp //---------------------------------------------------------------------------// // Date Who Modification // // -------- --- ---------------------------------------------------------- // // 05/23/01 JPS Class for the MODL //---------------------------------------------------------------------------// // Copyright (C) 2001, Microsoft // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #pragma once #include "MW4.hpp" #include "Tank.hpp" namespace MechWarrior4 { //########################################################################## //############################ MODL ############################### //## The MODL is a large Tank that will have 3 internal damage zones //##One for the Gun itself, which can be blown off //##One for the main turret which will hold the destruction internal damage object //##One for the treads in the cannon. When the treads internal zone is destroyed the MODL will stop //##In addition, the MODL will have a custom HUD that displayed the damage zones //## //########################################################################## class MODL: public Tank { public: static void InitializeClass(); static void TerminateClass(); typedef Tank BaseClass; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Run-time Construction and Destruction Support // public: static MODL* Make( CreateMessage *message, ReplicatorID *base_id ); void SaveInstanceText(Stuff::Page *page); protected: MODL( ClassData *class_data, CreateMessage *message, ReplicatorID *base_id, ElementRenderer::Element *element ); void Respawn(Adept::Entity::CreateMessage *message); void CommonCreation(CreateMessage *message); void Reuse( const CreateMessage *message, ReplicatorID *base_id ); ~MODL(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class Data support // public: static ClassData *DefaultData; //~~~~~~~~~~~~~~~ //Support for stopping the MODL by blowing out its treads public: virtual void ComputeForwardSpeed(Stuff::Scalar time_slice); virtual void EngineDead (void); //use the eject call to fire the main "laser" virtual void Eject(); void PostCollisionExecute (Stuff::Time time); void InitializeDamageArray(); int damageArray[11]; private: bool m_enginesDead; bool m_fireCannon; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Game Model Support // public: const GameModel* GetGameModel() { Check_Object(this); return Cast_Pointer(const GameModel*,gameModelResource.GetPointer()); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Test Support // public: virtual void TestInstance() const; }; }