Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

184 lines
5.4 KiB
C++

//===========================================================================//
// File: mechai.hpp //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 01/14/2000 AHF Created File //
//---------------------------------------------------------------------------//
// Copyright (C) 1999, Microsoft //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#pragma once
#include "mech_AI.hpp"
#include "mech.hpp"
namespace MechWarrior4
{
class NavPoint;
}
namespace MechWarrior4
{
class PlayerAI;
//##########################################################################
//############### PlayerAI::ExecutionStateEngine #####################
//##########################################################################
class PlayerAI__ExecutionStateEngine:
public Entity__ExecutionStateEngine
{
public:
static void InitializeClass();
static void TerminateClass();
typedef Entity__ExecutionStateEngine BaseClass;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Run-time Construction and Destruction Support
//
public:
typedef PlayerAI__ExecutionStateEngine* (*Factory)(PlayerAI *entity,FactoryRequest *request);
static PlayerAI__ExecutionStateEngine* Make(PlayerAI *mover,FactoryRequest *request);
protected:
PlayerAI__ExecutionStateEngine(ClassData *class_data,PlayerAI *mover,FactoryRequest *request);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class Data support
//
public:
static ClassData *DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// State stuff
//
public:
enum {
AutoPilotState = Entity::ExecutionStateEngine::StateCount,
CinemaState,
FieldBaseState,
StateCount
};
// int RequestState(int new_state,void* data = NULL);
protected:
static const StateEntry StateEntries[];
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Support
//
public:
void TestInstance() const;
};
typedef MechAI__CreateMessage PlayerAI__CreateMessage;
//##########################################################################
//########################### MechAI ##################################
//##########################################################################
class PlayerAI
: public MechAI
{
typedef MechAI inherited;
public:
static void InitializeClass();
static void TerminateClass();
static ClassData *DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Inheritance Support
//
public:
typedef PlayerAI__CreateMessage CreateMessage;
typedef PlayerAI__ExecutionStateEngine ExecutionStateEngine;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Run-time Construction and Destruction Support
//
public:
virtual void Save (MemoryStream *stream) {MechAI::Save(stream);}
virtual void Load (MemoryStream *stream) {MechAI::Load(stream);}
static PlayerAI* Make(CreateMessage *message,ReplicatorID *base_id);
protected:
PlayerAI(
ClassData *class_data,
CreateMessage *message,
ReplicatorID *base_id,
ElementRenderer::Element *element
);
public:
virtual ~PlayerAI();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Message Support
//
public:
enum {
DebugTextMessageID = MechWarrior4::MechAI::NextMessageID,
NextMessageID
};
void DebugTextMessageHandler(Adept::ReceiverDataMessageOf<int> *message);
void NotifyHeatShutdownImminent();
bool RequestHeatShutdown() const;
protected:
static const MessageEntry MessageEntries[];
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Execution Support
//
protected:
MechWarrior4::NavPoint *m_AutoPilotDest;
bool m_AutoPilot;
Stuff::Scalar m_AutoPilotSpeed;
public:
virtual void PreCollisionExecute(Stuff::Time till);
void StartCinema (void);
void StartFieldBase (void);
void StopExecuting (void);
virtual bool ShouldRunScript();
virtual void AddTowardGunnery (int value) {} // player version of these cannot increase
virtual void AddTowardPilot (int value) {}
virtual void AddTowardElite (int value) {}
virtual void FinishFieldBase (void);
// virtual bool PilotSkillCheck (Stuff::Scalar damage_amount,bool jump)
// { return true; }
virtual void TurnOn (void);
virtual void TurnOff (void);
void AutoPilot (bool value);
void NavPoint (MechWarrior4::NavPoint *pt);
void ChangeAutoPilotSpeed (Stuff::Scalar newspeed);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Support
//
public:
void TestInstance() const;
};
inline PlayerAI__ExecutionStateEngine::PlayerAI__ExecutionStateEngine( ClassData *class_data, PlayerAI *mover, FactoryRequest *request ):
BaseClass(class_data, mover, request)
{}
}