mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 20:21:26 +00:00
- added ability to force internal alternative HUD
Set hud_althud_forceinternal CVAR to disable unwanted HUD customizations
This commit is contained in:
parent
e21c9e0ef8
commit
fdd17403e5
3 changed files with 62 additions and 37 deletions
|
@ -434,6 +434,8 @@ public:
|
|||
virtual void SetMugShotState (const char *state_name, bool wait_till_done=false, bool reset=false);
|
||||
void DrawLog();
|
||||
uint32_t GetTranslation() const;
|
||||
|
||||
void CreateAltHUD();
|
||||
void DrawAltHUD();
|
||||
|
||||
void DrawGraphic(FTextureID texture, double x, double y, int flags, double Alpha, double boxwidth, double boxheight, double scaleX, double scaleY);
|
||||
|
|
|
@ -93,6 +93,65 @@ CVAR (Int, hudcolor_stats, CR_GREEN, CVAR_ARCHIVE) // For the stats values the
|
|||
CVAR(Bool, map_point_coordinates, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) // show player or map coordinates?
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// Create Alternative HUD
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
CUSTOM_CVAR(Bool, hud_althud_forceinternal, false, CVAR_ARCHIVE | CVAR_NOINITCALL)
|
||||
{
|
||||
if (StatusBar)
|
||||
StatusBar->CreateAltHUD();
|
||||
}
|
||||
|
||||
static DObject* DoCreateAltHUD(const FName classname)
|
||||
{
|
||||
if (classname == NAME_None)
|
||||
return nullptr;
|
||||
|
||||
const auto cls = PClass::FindClass(classname);
|
||||
if (!cls)
|
||||
{
|
||||
Printf(TEXTCOLOR_RED "Unknown alternative HUD class \"%s\"\n", classname.GetChars());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!cls->IsDescendantOf(NAME_AltHud))
|
||||
{
|
||||
Printf(TEXTCOLOR_RED "Alternative HUD class \"%s\" is not derived from AltHud\n", classname.GetChars());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const auto althud = cls->CreateNew();
|
||||
|
||||
IFVIRTUALPTRNAME(althud, NAME_AltHud, Init)
|
||||
{
|
||||
VMValue params[] = { althud };
|
||||
VMCall(func, params, countof(params), nullptr, 0);
|
||||
}
|
||||
|
||||
return althud;
|
||||
}
|
||||
|
||||
void DBaseStatusBar::CreateAltHUD()
|
||||
{
|
||||
if (AltHud)
|
||||
{
|
||||
AltHud->Destroy();
|
||||
AltHud = nullptr;
|
||||
}
|
||||
|
||||
if (!hud_althud_forceinternal)
|
||||
AltHud = DoCreateAltHUD(gameinfo.althudclass);
|
||||
|
||||
if (!AltHud)
|
||||
AltHud = DoCreateAltHUD(NAME_AltHud);
|
||||
|
||||
assert(AltHud);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// draw the HUD
|
||||
|
|
|
@ -334,36 +334,6 @@ void ST_CreateStatusBar(bool bTitleLevel)
|
|||
// Constructor
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
static DObject* CreateAltHud(const FName classname)
|
||||
{
|
||||
if (classname == NAME_None)
|
||||
return nullptr;
|
||||
|
||||
auto cls = PClass::FindClass(classname);
|
||||
if (!cls)
|
||||
{
|
||||
Printf(TEXTCOLOR_RED "Unknown alternative HUD class \"%s\"\n", classname.GetChars());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!cls->IsDescendantOf(NAME_AltHud))
|
||||
{
|
||||
Printf(TEXTCOLOR_RED "Alternative HUD class \"%s\" is not derived from AltHud\n", classname.GetChars());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto althud = cls->CreateNew();
|
||||
|
||||
IFVIRTUALPTRNAME(althud, NAME_AltHud, Init)
|
||||
{
|
||||
VMValue params[] = { althud };
|
||||
VMCall(func, params, countof(params), nullptr, 0);
|
||||
}
|
||||
|
||||
return althud;
|
||||
}
|
||||
|
||||
DBaseStatusBar::DBaseStatusBar ()
|
||||
{
|
||||
CompleteBorder = false;
|
||||
|
@ -376,13 +346,7 @@ DBaseStatusBar::DBaseStatusBar ()
|
|||
ShowLog = false;
|
||||
defaultScale = { (double)CleanXfac, (double)CleanYfac };
|
||||
|
||||
// Create the AltHud object.
|
||||
AltHud = CreateAltHud(gameinfo.althudclass);
|
||||
|
||||
if (!AltHud)
|
||||
AltHud = CreateAltHud(NAME_AltHud);
|
||||
|
||||
assert(AltHud);
|
||||
CreateAltHUD();
|
||||
}
|
||||
|
||||
static void ValidateResolution(int &hres, int &vres)
|
||||
|
|
Loading…
Reference in a new issue