Files
firestorm/Gameleap/code/mw4/Code/MW4/MODL.hpp
T
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

117 lines
3.2 KiB
C++

//===========================================================================//
// 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;
};
}