Scriptified DBaseStatusBar::Draw

This commit is contained in:
DyNaM1Kk 2025-05-05 23:49:49 +04:00 committed by Ricardo Luís Vaz Silva
parent 3bb716c414
commit 31cd741cb0
4 changed files with 30 additions and 56 deletions

View file

@ -388,7 +388,6 @@ public:
void SetScale(); void SetScale();
virtual void Tick (); virtual void Tick ();
void CallTick(); void CallTick();
virtual void Draw (EHudState state, double ticFrac);
void CallDraw(EHudState state, double ticFrac); void CallDraw(EHudState state, double ticFrac);
void DrawBottomStuff (EHudState state); void DrawBottomStuff (EHudState state);
void DrawTopStuff (EHudState state); void DrawTopStuff (EHudState state);

View file

@ -1088,44 +1088,6 @@ void DBaseStatusBar::DrawMessages (int layer, int bottom)
// //
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void DBaseStatusBar::Draw (EHudState state, double ticFrac)
{
// HUD_AltHud state is for popups only
if (state == HUD_AltHud)
return;
if (state == HUD_StatusBar)
{
RefreshBackground ();
}
if (idmypos)
{
// Draw current coordinates
IFVIRTUAL(DBaseStatusBar, DrawMyPos)
{
VMValue params[] = { (DObject*)this };
VMCall(func, params, countof(params), nullptr, 0);
}
}
if (viewactive)
{
if (CPlayer && CPlayer->camera && CPlayer->camera->player)
{
DrawCrosshair (ticFrac);
}
}
else if (automapactive)
{
IFVIRTUAL(DBaseStatusBar, DrawAutomapHUD)
{
VMValue params[] = { (DObject*)this, r_viewpoint.TicFrac };
VMCall(func, params, countof(params), nullptr, 0);
}
}
}
void DBaseStatusBar::CallDraw(EHudState state, double ticFrac) void DBaseStatusBar::CallDraw(EHudState state, double ticFrac)
{ {
IFVIRTUAL(DBaseStatusBar, Draw) IFVIRTUAL(DBaseStatusBar, Draw)
@ -1133,7 +1095,6 @@ void DBaseStatusBar::CallDraw(EHudState state, double ticFrac)
VMValue params[] = { (DObject*)this, state, ticFrac }; VMValue params[] = { (DObject*)this, state, ticFrac };
VMCall(func, params, countof(params), nullptr, 0); VMCall(func, params, countof(params), nullptr, 0);
} }
else Draw(state, ticFrac);
twod->ClearClipRect(); // make sure the scripts don't leave a valid clipping rect behind. twod->ClearClipRect(); // make sure the scripts don't leave a valid clipping rect behind.
BeginStatusBar(BaseSBarHorizontalResolution, BaseSBarVerticalResolution, BaseRelTop, false); BeginStatusBar(BaseSBarHorizontalResolution, BaseSBarVerticalResolution, BaseRelTop, false);
} }

View file

@ -2108,21 +2108,6 @@ DEFINE_ACTION_FUNCTION_NATIVE(DBaseStatusBar, DetachAllMessages, SBar_DetachAllM
return 0; return 0;
} }
static void SBar_Draw(DBaseStatusBar *self, int state, double ticFrac)
{
self->Draw((EHudState)state, ticFrac);
}
DEFINE_ACTION_FUNCTION_NATIVE(DBaseStatusBar, Draw, SBar_Draw)
{
PARAM_SELF_PROLOGUE(DBaseStatusBar);
PARAM_INT(state);
PARAM_FLOAT(ticFrac);
self->Draw((EHudState)state, ticFrac);
return 0;
}
static void SetMugshotState(DBaseStatusBar *self, const FString &statename, bool wait, bool reset) static void SetMugshotState(DBaseStatusBar *self, const FString &statename, bool wait, bool reset)
{ {
self->mugshot.SetState(statename.GetChars(), wait, reset); self->mugshot.SetState(statename.GetChars(), wait, reset);

View file

@ -216,8 +216,37 @@ class BaseStatusBar : StatusBarCore native
{ {
} }
virtual void Draw (int state, double TicFrac)
{
// HUD_AltHud state is for popups only
if (state == HUD_AltHud)
return;
if (state == HUD_StatusBar)
{
RefreshBackground();
}
if (idmypos)
{
// Draw current coordinates
DrawMyPos();
}
if (viewactive)
{
if (CPlayer && CPlayer.camera && CPlayer.camera.player)
{
DrawCrosshair(TicFrac);
}
}
else if (automapactive)
{
DrawAutomapHUD(TicFrac);
}
}
native virtual void Tick (); native virtual void Tick ();
native virtual void Draw (int state, double TicFrac);
native virtual void ScreenSizeChanged (); native virtual void ScreenSizeChanged ();
native virtual clearscope void ReceivedWeapon (Weapon weapn); native virtual clearscope void ReceivedWeapon (Weapon weapn);
native virtual clearscope void SetMugShotState (String state_name, bool wait_till_done=false, bool reset=false); native virtual clearscope void SetMugShotState (String state_name, bool wait_till_done=false, bool reset=false);