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.
185 lines
5.3 KiB
C++
185 lines
5.3 KiB
C++
#pragma once
|
|
|
|
#include "MW4.hpp"
|
|
#include "helicopter.hpp"
|
|
|
|
namespace Adept
|
|
{
|
|
class Effect;
|
|
}
|
|
|
|
namespace MechWarrior4
|
|
{
|
|
class Dropship;
|
|
class Subsystem;
|
|
|
|
|
|
//##########################################################################
|
|
//############### Dropship::ExecutionStateEngine #####################
|
|
//##########################################################################
|
|
|
|
class Dropship__ExecutionStateEngine:
|
|
public Helicopter__ExecutionStateEngine
|
|
{
|
|
public:
|
|
static void InitializeClass();
|
|
static void TerminateClass();
|
|
|
|
typedef Helicopter__ExecutionStateEngine BaseClass;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Run-time Construction and Destruction Support
|
|
//
|
|
public:
|
|
typedef Dropship__ExecutionStateEngine*
|
|
(*Factory)(
|
|
Dropship *entity,
|
|
FactoryRequest *request
|
|
);
|
|
|
|
static Dropship__ExecutionStateEngine* Make(Dropship *mover,FactoryRequest *request);
|
|
|
|
protected:
|
|
Dropship__ExecutionStateEngine(ClassData *class_data,Dropship *mover,FactoryRequest *request);
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Class Data support
|
|
//
|
|
public:
|
|
static ClassData *DefaultData;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// State stuff
|
|
//
|
|
public:
|
|
enum {
|
|
DoorOpenMotionState = Helicopter::ExecutionStateEngine::StateCount,
|
|
DoorCloseMotionState,
|
|
StateCount
|
|
};
|
|
|
|
int
|
|
RequestState(int new_state,void* data = NULL);
|
|
|
|
protected:
|
|
static const StateEntry StateEntries[];
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Test Support
|
|
//
|
|
public:
|
|
void TestInstance() const;
|
|
};
|
|
|
|
//##########################################################################
|
|
//############################ Helicopter #############################
|
|
//##########################################################################
|
|
|
|
//-------------------------------------------------------------------------
|
|
// The following helper classes must always be typedef'd or overriden by an
|
|
// inheritor
|
|
//
|
|
typedef Helicopter__ClassData Dropship__ClassData;
|
|
typedef Helicopter__Message Dropship__Message;
|
|
typedef Helicopter__CreateMessage Dropship__CreateMessage;
|
|
typedef Helicopter__GameModel Dropship__GameModel;
|
|
|
|
//----------------------- End of inheritance stuff ------------------------
|
|
|
|
class Dropship : public Helicopter
|
|
{
|
|
friend class MovementClass;
|
|
|
|
public:
|
|
static void InitializeClass();
|
|
static void TerminateClass();
|
|
|
|
typedef Helicopter BaseClass;
|
|
|
|
//##########################################################################
|
|
// Inheritance support
|
|
//
|
|
public:
|
|
typedef Dropship__ClassData ClassData;
|
|
typedef Dropship__GameModel GameModel;
|
|
typedef Dropship__Message Message;
|
|
typedef Dropship__ExecutionStateEngine ExecutionStateEngine;
|
|
typedef Dropship__CreateMessage CreateMessage;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Run-time Construction and Destruction Support
|
|
//
|
|
public:
|
|
static Dropship* Make(CreateMessage *message,ReplicatorID *base_id);
|
|
|
|
protected:
|
|
Dropship(ClassData *class_data,CreateMessage *message,ReplicatorID *base_id,ElementRenderer::Element *element);
|
|
|
|
~Dropship();
|
|
|
|
void Reuse(const CreateMessage *message,ReplicatorID *base_id);
|
|
|
|
void Respawn(Adept::Entity::CreateMessage *message);
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Class Data support
|
|
//
|
|
public:
|
|
static ClassData *DefaultData;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Execution Support
|
|
//
|
|
public:
|
|
Stuff::Point3D landTargetPosition;
|
|
int m_NumEngines;
|
|
Stuff::Time m_TakeOffStart; // when to start moving up
|
|
|
|
void TakeOff(Stuff::Scalar runway_distance);
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
protected:
|
|
Stuff::Scalar m_DoorAmount;
|
|
MWMover *m_DoorAR,*m_DoorFR,*m_DoorAL,*m_DoorFL;
|
|
bool m_FirstFrame,m_HasDoors;
|
|
Stuff::Scalar m_BaseYDoorAR,m_BaseYDoorFR,m_BaseYDoorAL,m_BaseYDoorFL;
|
|
Stuff::Time m_DeathStart;
|
|
bool m_CanDie; // 2 seconds if on ground to play secondary
|
|
|
|
public:
|
|
|
|
void Land(void);
|
|
void LandingMovementSimulation(Stuff::Time till);
|
|
void TakeOffThrusterSimulation(Stuff::Time till,const Stuff::Vector3D& new_velocity,const Stuff::Vector3D& instantanious_angular_velocity,bool canswitch);
|
|
virtual void EngineDead (void);
|
|
void PreCollisionExecute(Time till);
|
|
void DoorOpenAnim (Stuff::Time slice);
|
|
void DoorCloseAnim (Stuff::Time slice);
|
|
bool orderDoorOpen (void);
|
|
bool orderDoorClose (void);
|
|
void ReactToDestruction(int damage_mode, int damage_type);
|
|
void InitializeArmorArray();
|
|
|
|
// MSL 5.04 Dropship
|
|
//should this dropship be scored?
|
|
bool m_scoreThisDropship;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Test Support
|
|
//
|
|
public:
|
|
void TestInstance() const;
|
|
|
|
};
|
|
|
|
inline Dropship__ExecutionStateEngine::Dropship__ExecutionStateEngine(
|
|
ClassData *class_data,
|
|
Dropship *mover,
|
|
FactoryRequest *request
|
|
):
|
|
BaseClass(class_data, mover, request)
|
|
{}
|
|
|
|
}
|