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.
182 lines
3.8 KiB
C++
182 lines
3.8 KiB
C++
#include "MW4Headers.hpp"
|
|
#include "hudcomp.hpp"
|
|
#include "huddebug.hpp"
|
|
#include "mwguimanager.hpp"
|
|
|
|
using namespace MechWarrior4;
|
|
|
|
HUDDebug::HUDDebug()
|
|
{
|
|
m_Messages.clear ();
|
|
Location (Point3D (0,0,0.9f));
|
|
Color (0,125,0,250);
|
|
}
|
|
|
|
HUDDebug::~HUDDebug()
|
|
{
|
|
ClearData ();
|
|
}
|
|
|
|
void HUDDebug::ClearData (void)
|
|
{
|
|
stlport::list<DebugData>::iterator iter;
|
|
|
|
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++)
|
|
{
|
|
delete iter->text;
|
|
}
|
|
m_Messages.clear ();
|
|
}
|
|
|
|
void HUDDebug::AddData (char *name,void *data,HUDDEBUG_DATA_TYPE type)
|
|
{
|
|
#ifdef LAB_ONLY
|
|
RemoveData (data);
|
|
HUDText *text;
|
|
text = new HUDText ();
|
|
|
|
text->UpdateText (name);
|
|
text->Color (255,255,255,255);
|
|
text->Justification (HUDText::LEFT_ALIGN);
|
|
m_Messages.push_back (DebugData (text,name,data,type));
|
|
#endif
|
|
}
|
|
|
|
void HUDDebug::RemoveData (void *data)
|
|
{
|
|
stlport::list<DebugData>::iterator iter;
|
|
|
|
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++)
|
|
{
|
|
if (iter->data == data)
|
|
{
|
|
delete iter->text;
|
|
m_Messages.erase (iter);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
void HUDDebug::DrawImplementation(void)
|
|
{
|
|
#ifdef LAB_ONLY
|
|
Point3D loc,size;
|
|
|
|
if (!m_Messages.size ())
|
|
{
|
|
return;
|
|
}
|
|
Size (Point3D (192,m_Messages.size ()*16.0f,0.9f));
|
|
loc = Location ();
|
|
size = Size ();
|
|
|
|
DWORD bcolor = BrighterColor (Color ());
|
|
DrawRect (loc,size,MakeColor (5,15,5,200));
|
|
DrawFrame (loc,size,bcolor);
|
|
|
|
loc.y += 2;
|
|
loc.x += 2;
|
|
size.x -= 4;
|
|
Point3D r,s;
|
|
r.z = 0.0f;
|
|
DWORD chatx,chaty;
|
|
stlport::list<DebugData>::iterator iter;
|
|
|
|
r.x = loc.x;
|
|
r.y = loc.y;
|
|
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++)
|
|
{
|
|
char buf[512];
|
|
switch (iter->datatype)
|
|
{
|
|
case hud_int_type:
|
|
{
|
|
int *temp = (int *) iter->data;
|
|
sprintf (buf,"%s: %d",iter->name,*temp);
|
|
}
|
|
break;
|
|
case hud_float_type:
|
|
{
|
|
float *temp = (float *) iter->data;
|
|
sprintf (buf,"%s: %5.2f",iter->name,*temp);
|
|
}
|
|
break;
|
|
case hud_double_type:
|
|
{
|
|
double *temp = (double *) iter->data;
|
|
sprintf (buf,"%s: %5.2f",iter->name,*temp);
|
|
}
|
|
break;
|
|
case hud_string_type:
|
|
{
|
|
char *temp = (char *) iter->data;
|
|
sprintf (buf,"%s: %s",iter->name,temp);
|
|
}
|
|
break;
|
|
}
|
|
iter->text->UpdateText (buf);
|
|
iter->text->TopLeft (loc.x,loc.y);
|
|
iter->text->BottomRight (loc.x+size.x-2,loc.y+size.y-2);
|
|
iter->text->Color (255,255,255,255);
|
|
iter->text->DrawSize (chatx,chaty);
|
|
iter->text->Draw (r);
|
|
r.y += chaty;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
|
|
namespace MechWarrior4
|
|
{
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void AddDebugData (char *name,void *data,HUDDEBUG_DATA_TYPE datatype) // see huddebug.hpp for data types
|
|
{
|
|
#ifdef LAB_ONLY
|
|
MWGUIManager *gui;
|
|
gui = MWGUIManager::GetInstance ();
|
|
if (!gui)
|
|
return;
|
|
HUDDebug *hud;
|
|
hud = (HUDDebug *) gui->Component (MWGUIManager::HUD_DEBUG);
|
|
if (!hud)
|
|
return;
|
|
hud->AddData (name,data,(HUDDebug::HUDDEBUG_DATA_TYPE) datatype);
|
|
#endif
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void ClearAllDebugData (void)
|
|
{
|
|
#ifdef LAB_ONLY
|
|
MWGUIManager *gui;
|
|
gui = MWGUIManager::GetInstance ();
|
|
if (!gui)
|
|
return;
|
|
HUDDebug *hud;
|
|
hud = (HUDDebug *) gui->Component (MWGUIManager::HUD_DEBUG);
|
|
if (!hud)
|
|
return;
|
|
hud->ClearData ();
|
|
#endif
|
|
}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
void RemoveDebugData (void *data)
|
|
{
|
|
#ifdef LAB_ONLY
|
|
MWGUIManager *gui;
|
|
gui = MWGUIManager::GetInstance ();
|
|
if (!gui)
|
|
return;
|
|
HUDDebug *hud;
|
|
hud = (HUDDebug *) gui->Component (MWGUIManager::HUD_DEBUG);
|
|
if (!hud)
|
|
return;
|
|
hud->RemoveData (data);
|
|
#endif
|
|
}
|
|
}
|