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

350 lines
8.7 KiB
C++

#pragma once
#include "MW4.hpp"
#include <Adept\GUIManager.hpp>
#include <gosScript\gosScriptHeaders.hpp>
namespace ElementRenderer
{
class Element;
}
namespace Adept
{
class ScoreObject;
class CameraComponent;
}
namespace MidLevelRenderer
{
class MLRClipper;
}
namespace MechWarrior4
{
class GUIWeaponManager;
class GUIRadarManager;
class GUILightAmp;
class GUIStaticView;
class VehicleInterface;
class Vehicle;
class HUDComponent;
class HUDNav;
class HUDTargetArrow;
class HUDTorsoBar;
class HUDZoom;
class HUDHeat;
class HUDJump;
class HUDCoolant;
class HUDSpeed;
class HUDDamage;
class HUDTargetDamage;
class HUDWeapon;
class HUDReticle;
class HUDChat;
class HUDComm;
class HUDHelp;
class HUDMap;
class HUDObjective;
class HUDScore;
class HUDTimer;
class HUDHelpArrow;
class HUDDebug;
class HUDMP;
class HUDCamera;
//####################################################################
//########################### MWGUIManager ######################
//####################################################################
class MWGUIManager:
public GUIManager
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction, Destruction
//
public:
MWGUIManager();
~MWGUIManager();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Initialize Functions
//
public:
//Target System Stuff
void InitializeTargetSystem();
void Reset();
void Hide();
void Show();
void ShowReticle();
void ReshowHud (void);
void Toggle();
void ToggleScoring();
void ShowScoring();
void HideScoring();
void ShowDebug (bool value);
void InitializeNewVehicle(Vehicle *vehicle);
void DisplayTargetSystem(bool locked);
void DisplayTargetSystemLRM(bool locked);
void DisplayTargetSystemMRM(bool locked);
void DisplayTargetSystemSRM(bool locked);
void DisplayTargetSystemSSRM(bool locked);
void ShowLightAmplification();
void HideLightAmplification();
void ShowStaticView();
void HideStaticView();
void AnimateStaticView();
void SetWeaponMode(int weapon_mode,Weapon *weap);
void Execute();
void ClearGUIChain();
//GOS Script calls
void SetSpeedBar(Stuff::Scalar value,Stuff::Scalar minForward,Stuff::Scalar minReverse,Stuff::Scalar maxForward,Stuff::Scalar maxReverse);
void SetTorsoTwist(Stuff::Scalar value);
void SetTorsoPitch(Stuff::Scalar value);
void SetReticleName(const char *object_name);
// MSL 5.02 SubSystems
void SetReticleIFFJammer(bool exists) { IFF_Jammer = exists; }
bool GetReticleIFFJammer() { return IFF_Jammer; }
void SetReticleAlignment(int alignment)
{reticleAlignment = alignment;}
void SetReticleDistance(Stuff::Scalar distance)
{reticleDistance = distance;}
void SetNavSystem(Stuff::Scalar facing_angle,
Stuff::Scalar nav_point_angle,
Stuff::Scalar range,
int nav_point_id
);
void SetLeftTargetIndicator();
void SetRightTargetIndicator();
void SetTopTargetIndicator();
void SetBottomTargetIndicator();
void SetTargetIndicatorInZoom();
void ClearTargetIndicator();
void SetTargetPosition(Adept::CameraComponent *camera, const Stuff::Point3D& target_world, const Point3D& target_size, Stuff::Scalar cameraWidth, Stuff::Scalar cameraHeight, Stuff::Scalar cameraOffsetX, Stuff::Scalar cameraOffsetY);
void FindTargetBoxSize(MidLevelRenderer::MLRClipper *clipper, const Point3D & target_world, const Point3D & target_size, Stuff::Scalar & targetWidth, Stuff::Scalar & targetHeight);
enum
{
MaxStringLength = 128
};
enum {
HIDE_ALL,
SHOW_RETICLE,
SHOW_ALL
};
int m_currentWidthRes;
int m_isShown;
int m_ShowLevel; // used to reset the hud
SlotOf <ElementRenderer::Element *> m_targetElement;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Public Data
//
public:
GUIWeaponManager * weaponManager;
GUILightAmp *lightAmp;
// GUILightAmp *zoomLightAmp;
GUIStaticView *staticViewManager;
VehicleInterface* vehicleInterface;
SlotOf <Entity *> m_CurrentTarget;
// HGOSFONT3D font;
void SetNewTargetWindowEntity(Entity *new_target);
static MWGUIManager*
GetInstance()
{
return reinterpret_cast<MWGUIManager *>( GlobalPointers::GetGlobalPointer(MWGUIManagerGlobalPointerIndex));
};
protected:
Stuff::Scalar maxTorsoTwist,maxTorsoPitch,maxSpeed;
Stuff::Scalar currentSpeedValue;
int torsoTwistValue,torsoPitchValue;
int isReticleLocked;
int isReticleLockedLRM;
int isReticleLockedMRM;
int isReticleLockedSRM;
int isReticleLockedSSRM;
int *damageArray;
Scalar *armorArray;
int *heatValue;
int *coolantValue;
Stuff::Scalar *jumpValue;
Stuff::Scalar maxJumpValue;
// int *isCoolantDirty;
// int *isHeatDirty;
char *reticleName;
// MSL 5.02 SubSystems
bool IFF_Jammer; //set if the thing under the reticle has an IFF_Jammer
int reticleAlignment;
Stuff::Scalar reticleDistance;
//Nav System variables
int m_playerFacing;
int m_navPointFacing;
Stuff::Scalar m_navPointRange;
char *m_navPointName;
//Target Indicator Variables
int m_leftTargetIndicator;
int m_rightTargetIndicator;
int m_topTargetIndicator;
int m_bottomTargetIndicator;
int m_targetIndicatorInZoom;
Stuff::Scalar m_targetXLocation;
Stuff::Scalar m_targetYLocation;
Stuff::Scalar m_targetHeight;
Stuff::Scalar m_targetWidth;
//Torso Roation Vaules
int m_torsoRotation;
// int m_zoomOn;
//Target Window Information
int *m_targetDamageArray;
Scalar *m_targetArmorArray;
Stuff::Scalar m_targetTonage;
char *m_targetWindowName;
int m_targetWindowAlignment;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// New HUD system
//
protected:
stlport::vector <HUDComponent *> m_Components;
HUDMP *hudmp;
HUDNav *hudnav;
HUDTargetArrow *hudTargetArrow;
HUDTorsoBar *hudTorsoBar;
HUDZoom *hudZoom;
HUDHeat *hudHeat;
HUDCoolant *hudCoolant;
HUDJump *hudJump;
HUDSpeed *hudSpeed;
HUDDamage *hudDamage;
HUDTargetDamage *hudTargetDamage;
HUDWeapon *hudWeapon;
HUDReticle *hudReticle;
HUDChat *hudChat;
HUDComm *hudComm;
HUDHelp *hudHelp;
HUDMap *hudMap;
HUDObjective *hudObjective;
HUDScore *hudScore;
HUDTimer *hudTimer;
HUDHelpArrow *hudHelpArrow;
HUDDebug *hudDebug;
HUDCamera *hudCamera;
GUIRadarManager *radarManager;
Vehicle *m_Vehicle;
bool InterfaceZoomMode;
bool m_ShutdownMode;
bool m_ZoomVisible;
bool m_MapShowing;
bool m_drawScoring; // true for full score
bool m_TimerShowing;
bool m_HelpArrowShowing;
bool m_LightAmpShowing;
bool m_DebugShowing;
void ClearComponents (void);
void CreateComponents (void);
public:
void ToggleDebug (void)
{ ShowDebug (!m_DebugShowing); }
// NOTE: the HUDELEMENTS members must EXACTLY match those in MWCONST.ABI!
enum HUDELEMENTS {
HUD_NAV = 0,
HUD_TARGETARROW,
HUD_TORSOBAR,
HUD_ZOOM,
HUD_HEAT,
HUD_COOLANT,
HUD_JUMP,
HUD_SPEED,
HUD_DAMAGE,
HUD_TARGETDAMAGE,
HUD_WEAPON,
HUD_RETICLE,
HUD_RADAR,
HUD_CHAT,
HUD_COMM,
HUD_HELP,
HUD_MAP,
HUD_OBJECTIVE,
HUD_SCORE,
HUD_TIMER,
HUD_HELPARROW,
HUD_DEBUG,
HUD_MP,
HUD_CAMERA
};
char gametype[256];
void ShowShutDown (void)
{ m_ShutdownMode = false; }
void HideShutDown (void)
{ m_ShutdownMode = true; }
void HeatLevel (Scalar level);
void AddPPCLevel (Scalar level);
void AddComponent (HUDComponent *);
void RenderComponents (void);
void UpdateComponents (void);
void HideShutdown ()
{
m_ShutdownMode = true;
}
void ShowShutdown ()
{
m_ShutdownMode = false;
}
void ShowHudComponent (HUDELEMENTS which);
void HideHudComponent (HUDELEMENTS which);
bool HudComponentVisible (HUDELEMENTS which);
HUDObjective *ObjectiveComponent (void)
{ return hudObjective; }
HUDComponent *Component (HUDELEMENTS which);
// MSL 5.03 Ammo Bay Fire Indicator
void ShowFIRE (bool value);
// MSL 5.03 Jam Indicator
void ShowJAM (bool value);
void ShowFlag (bool value);
void ShowKOTF (bool value);
void MPName (const char *name);
void MPTimeLeft (Stuff::Time value);
void SetReticuleTarget (Entity *target_entity);
void ShowHelpArrow (bool value);
void ShowTimer (bool value);
void ShowZoom (bool value);
void SetZoomDisplayLevel (int level);
void ShowMap (bool value);
void ToggleMap (void)
{
m_MapShowing = !m_MapShowing;
ShowMap (m_MapShowing);
}
// jcem
bool IsDrawingScoring() const { return m_drawScoring; }
};
}