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

258 lines
5.5 KiB
C++

#pragma once
#include "MW4.hpp"
#include "Sensor.hpp"
#include "hudcomp.hpp"
namespace MechWarrior4
{
class GUIRadarManager: public HUDComponent
{
typedef HUDComponent inherited;
protected:
Scalar radarRange;
Scalar radarRangeOrg;
// Point3D displayPos;
// Vector3D displaySize;
int radarx,radary,radarw,radarh;
Stuff::SlotOf <Entity*> m_CurrentTarget;
HUDText *m_RangeText;
// void SetDisplayPosition(Stuff::Scalar xloc,Stuff::Scalar yloc) {displayPos.x=xloc; displayPos.y=yloc;}
// void SetDisplaySize(Stuff::Scalar xsize,Stuff::Scalar ysize) {displaySize.x=xsize; displaySize.y=ysize;}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction, Destruction
//
public:
GUIRadarManager();
~GUIRadarManager();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Public Data
//
protected:
struct ShotEntry
{
ObjectID entity;
Stuff::Time timeadded;
ShotEntry (ObjectID p1,Stuff::Time p2)
{
entity = p1;
timeadded = p2;
}
};
void DrawImplementation(void);
Stuff::Time m_RotateTime;
Stuff::Scalar zrot;
Stuff::Scalar m_TorsoTwist;
int m_RadarMode;
stlport::vector<ShotEntry> m_ShotList;
//»óÈÆ ¾Õ
int hsh_fdraw;
//»óÈÆ µÚ
bool OnShotList (ObjectID who);
void ClipLine (Scalar& xpt1,Scalar& ypt1,Scalar& xpt2,Scalar& ypt2,Scalar cx,Scalar cy,Scalar rad);
public:
virtual void Reset (void);
void AddShot (ObjectID who);
void SetVehicle(Vehicle *vehicle);
void SetRange(Stuff::Scalar range);
Stuff::Scalar GetRange(bool bOrg = true) const;
virtual void Update (Stuff::Time till);
void TorsoTwist (Stuff::Scalar value)
{ m_TorsoTwist = value; }
void CurrentTarget (Entity *obj)
{
m_CurrentTarget.Remove ();
if (obj)
m_CurrentTarget.Add (obj);
}
};
class HUDHeat : public HUDComponent
{
protected:
typedef HUDComponent inherited;
int m_Alpha;
Stuff::Time m_AlphaTime;
DWORD m_HeatColor[3];
int m_Heat;
int m_TargetHeat;
int m_BaseBottom;
HUDText *m_HeatText;
void DrawImplementation(void);
public:
HUDHeat();
~HUDHeat();
virtual void Update (Stuff::Time till);
void Heat (int value)
{
if (value != m_TargetHeat)
{
char text[15];
m_TargetHeat = value;
m_Alpha = 255;
// MSL 5.02 Heat Scale Header
sprintf (text,"%5.0f %%",m_TargetHeat*1.0f);
m_HeatText->UpdateText (text);
}
}
};
class HUDCoolant : public HUDComponent
{
protected:
typedef HUDComponent inherited;
int m_Alpha;
Stuff::Time m_AlphaTime;
int m_Cool;
int m_TargetCool;
int m_BaseBottom;
void DrawImplementation(void);
public:
HUDCoolant();
~HUDCoolant();
virtual void Update (Stuff::Time till);
void Coolant (int value)
{
if (value != m_TargetCool)
{
m_TargetCool = value;
m_Alpha = 255;
}
}
};
class HUDJump : public HUDComponent
{
protected:
typedef HUDComponent inherited;
int m_Alpha;
Stuff::Time m_AlphaTime;
Stuff::Scalar m_Jump;
Stuff::Scalar m_MaxJump;
Stuff::Scalar m_TargetJump;
int m_BaseBottom;
void DrawImplementation(void);
public:
HUDJump();
~HUDJump();
virtual void Update (Stuff::Time till);
void Jump (Stuff::Scalar value,Stuff::Scalar maxvalue)
{
m_MaxJump = maxvalue;
if (value > maxvalue)
value = maxvalue;
if (maxvalue != 0)
m_Jump = value/maxvalue;
else
m_Jump = -1.0f;
}
};
class HUDSpeed : public HUDComponent
{
protected:
typedef HUDComponent inherited;
int m_Alpha;
Stuff::Time m_AlphaTime;
Scalar m_Speed;
Scalar m_MaxForwardSpeed,m_MaxReverseSpeed;
Scalar m_TargetSpeed;
int m_BaseBottom;
HUDText *m_SpeedText;
void DrawImplementation(void);
public:
HUDSpeed();
~HUDSpeed();
virtual void Update (Stuff::Time till);
void Speed (Stuff::Scalar value,Stuff::Scalar forwardmin,Stuff::Scalar reversemin,Stuff::Scalar maxforwardspeed,Stuff::Scalar maxreversespeed)
{
char text[15];
if ((value < forwardmin) && (value > reversemin))
value = 0;
if (value != m_TargetSpeed)
{
m_TargetSpeed = value;
m_Alpha = 255;
int temp = (int) m_TargetSpeed;
sprintf (text,"%dkph",temp);
m_SpeedText->UpdateText (text);
}
}
};
class HUDNav : public HUDComponent
{
protected:
typedef HUDComponent inherited;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction, Destruction
//
void DrawImplementation(void);
int m_PlayerFacing;
int m_NavPointFacing;
int m_NavPointRange;
int m_BaseLeft,m_BaseRight;
HUDText *navPointName,*navPointRange;
HUDText *navText[41];
HUDText *playerAngle;
char m_NavPointName[MAX_HUD_TEXT],m_NavPointRangeText[MAX_HUD_TEXT];
DWORD m_NavAlpha;
Stuff::Time m_NavAlphaTime;
public:
HUDNav();
~HUDNav();
virtual void Update (Stuff::Time till);
void PlayerFacing (int value)
{
char text[10];
m_PlayerFacing = value;
itoa (value,text,10);
playerAngle->UpdateText (text);
}
void NavPointFacing (int value)
{ m_NavPointFacing = value; }
void NavPointRange (int value)
{
m_NavPointRange = value;
sprintf (m_NavPointRangeText,"%d",value);
navPointRange->UpdateText (m_NavPointRangeText);
}
void NavPointName (const char *name)
{
Str_Copy (m_NavPointName,name,MAX_HUD_TEXT);
Verify (navPointName);
navPointName->UpdateText (m_NavPointName);
}
};
}