#include "MW4Headers.hpp" #include "Adept\AdeptHeaders.hpp" #include "mw4.hpp" #include "shooterai.hpp" using namespace MechWarrior4; using namespace MW4AI; namespace ABL { extern MechWarrior4::MoverAI* CurMoverAI; }; //############################################################################# //############################### AI ################################## //############################################################################# ShooterAI::ClassData* ShooterAI::DefaultData = NULL; const Receiver::MessageEntry ShooterAI::MessageEntries[]= { MESSAGE_ENTRY(ShooterAI, DebugText), }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void ShooterAI::InitializeClass() { Verify(!DefaultData); DefaultData = new ClassData( ShooterAIClassID, "MechWarrior4::ShooterAI", CombatAI::DefaultData, ELEMENTS(MessageEntries), MessageEntries, (Entity::Factory)Make, (Entity::CreateMessage::Factory)CreateMessage::ConstructCreateMessage, ExecutionStateEngine::DefaultData, (Entity::GameModel::Factory)GameModel::ConstructGameModel, NULL, (Entity::GameModel::ReadAndVerifier)GameModel::ReadAndVerify, (Entity::GameModel::ModelWrite)GameModel::WriteToText, (Entity::GameModel::ModelSave)GameModel::SaveGameModel ); Register_Object(DefaultData); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void ShooterAI::TerminateClass() { Unregister_Object(DefaultData); delete DefaultData; DefaultData = NULL; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ShooterAI* ShooterAI::Make(CreateMessage *message,ReplicatorID *base_id) { AutoHeap local_heap (g_AIHeap); Check_Object(message); ShooterAI *new_entity = new ShooterAI(DefaultData, message, base_id, NULL); Check_Object(new_entity); new_entity->SyncMatrices(true); return new_entity; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ShooterAI::ShooterAI(ClassData *class_data,CreateMessage *message,ReplicatorID *base_id,ElementRenderer::Element *element) : CombatAI(class_data, message, base_id, element) { Check_Pointer(this); Check_Object(message); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ShooterAI::~ShooterAI() { } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void ShooterAI::PreCollisionExecute(Time till) { Check_Object(this); PRECOLLISION_LOGIC("ShooterAI"); CombatAI::Update(till); if ((m_CurMove != 0) && (m_CurMove->MoveType () == MOVE_LOOKOUT)) { MoverAI::PreCollisionExecute(till); } else { ABL::CurMoverAI = this; AI::PreCollisionExecute(till); ABL::CurMoverAI = NULL; } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void ShooterAI::TestInstance() const { Verify(IsDerivedFrom(DefaultData)); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // void ShooterAI::DebugTextMessageHandler(Adept::ReceiverDataMessageOf *message) { inherited::DebugTextMessageHandler(message); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // bool ShooterAI::CanMove() const { return (false); }