#pragma once #include "MW4.hpp" #include "StickyMover.hpp" namespace MechWarrior4 { //########################################################################## //########################### ArtilleryMark::GameModel ################ //########################################################################## class ArtilleryMark__GameModel: public StickyMover__GameModel { public: Adept::ResourceID artilleryModelResource; Stuff::Vector3D initialLinearVelocity; Stuff::Vector3D initialLinearAcceleration; Stuff::Scalar damageAmount; enum { ArtilleryModelResourceAttributeID = StickyMover__GameModel::NextAttributeID, InitialLinearVelocityAttributeID, InitialLinearAccelerationAttributeID, DamageAmountAttributeID, NextAttributeID }; static bool ReadAndVerify( ArtilleryMark__GameModel *model, ModelAttributeEntry *attribute_entry, const char *data, char **error, int error_buffer = 128 ); static void ConstructGameModel(Script *script); }; //------------------------------------------------------------------------- // The following helper classes must always be typedef'd or overriden by an // inheritor // typedef StickyMover__ExecutionStateEngine ArtilleryMark__ExecutionStateEngine; typedef StickyMover__ClassData ArtilleryMark__ClassData; typedef StickyMover__Message ArtilleryMark__Message; typedef StickyMover__CreateMessage ArtilleryMark__CreateMessage; //########################################################################## //############################ ArtilleryMark ######################### //########################################################################## //----------------------- End of inheritance stuff ------------------------ class ArtilleryMark: public StickyMover { public: static void InitializeClass(); static void TerminateClass(); typedef StickyMover BaseClass; //########################################################################## // Inheritance support // public: typedef ArtilleryMark__ClassData ClassData; typedef ArtilleryMark__GameModel GameModel; typedef ArtilleryMark__Message Message; typedef ArtilleryMark__ExecutionStateEngine ExecutionStateEngine; typedef ArtilleryMark__CreateMessage CreateMessage; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Run-time Construction and Destruction Support // public: static ArtilleryMark* Make( CreateMessage *message, ReplicatorID *base_id ); ArtilleryMark( ClassData *class_data, CreateMessage *message, ReplicatorID *base_id, ElementRenderer::Element *element ); ~ArtilleryMark(); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class Data support // public: static ClassData *DefaultData; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Game Model support // public: const GameModel* GetGameModel() {return Cast_Pointer(const GameModel*, gameModelResource.GetPointer());} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Execution Support // public: void PostCollisionExecute(Stuff::Time till); void OnActiveTimeStart(); void OnActiveTimeEnd(); void CallDownTheFury(); bool callDownTheFury; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Test Support // public: void TestInstance() const; }; }