Added **"scalecvar"** widget command (used by Spearhead and Breakthrough compass)

This commit is contained in:
OM 2023-05-29 20:32:22 +02:00
parent c958bef261
commit 6f1b23ddb8
2 changed files with 48 additions and 6 deletions

View file

@ -401,6 +401,15 @@ Event EV_Widget_EnabledCvar
"Set the cvar to check to see if this button is enabled or not"
);
Event EV_Widget_ScaleCvar
(
"scalecvar",
EV_DEFAULT,
"s",
"cvar_name",
"Set the cvar to check to scale this component"
);
Event EV_Layout_AliasCache
(
"aliascache",
@ -474,6 +483,7 @@ CLASS_DECLARATION( USignal, UIWidget, NULL )
{ &EV_Widget_Enable, &UIWidget::EnableEvent },
{ &EV_Widget_Disable, &UIWidget::DisableEvent },
{ &EV_Widget_EnabledCvar, &UIWidget::SetEnabledCvar },
{ &EV_Widget_ScaleCvar, &UIWidget::SetScaleCvar },
{ NULL, NULL }
};
@ -752,6 +762,13 @@ void UIWidget::PropogateCoordinateSystem
int n;
UIWidget *subview;
if (m_parent)
{
if (m_parent->m_scaleCvar) {
m_scaleCvar = m_parent->m_scaleCvar;
}
}
if( !m_parent || (m_flags & WF_NOPARENTADJUST) )
{
m_screenorigin = m_origin;
@ -997,8 +1014,7 @@ void UIWidget::AlignPosition
{
vec2_t vNewVirtualScale;
vNewVirtualScale[0] = uid.vidWidth / 640.0;
vNewVirtualScale[1] = uid.vidHeight / 480.0;
SetVirtualScale(vNewVirtualScale);
if (!VectorCompare2D(m_vVirtualScale, vNewVirtualScale))
{
@ -1670,6 +1686,26 @@ void UIWidget::SetEnabledCvar
m_enabledCvar = ev->GetString( 1 );
}
void UIWidget::SetScaleCvar
(
Event *ev
)
{
m_scaleCvar = uii.Cvar_Find(ev->GetString(1).c_str());
}
void UIWidget::SetVirtualScale(vec2_t out)
{
out[0] = uid.vidWidth / 640.0;
out[1] = uid.vidHeight / 480.0;
if (m_scaleCvar)
{
out[0] *= m_scaleCvar->value;
out[1] *= m_scaleCvar->value;
}
}
void UIWidget::setParent
(
UIWidget *parent
@ -2619,8 +2655,7 @@ void UIWidget::Realign
{
vec2_t vNewVirtualScale;
vNewVirtualScale[0] = uid.vidWidth / 640.0;
vNewVirtualScale[1] = uid.vidHeight / 480.0;
SetVirtualScale(vNewVirtualScale);
if (!VectorCompare2D(m_vVirtualScale, vNewVirtualScale))
{
@ -3017,8 +3052,7 @@ void UIWidgetContainer::AlignPosition
{
vec2_t vNewVirtualScale;
vNewVirtualScale[0] = uid.vidWidth / 640.0;
vNewVirtualScale[1] = uid.vidHeight / 480.0;
SetVirtualScale(vNewVirtualScale);
if (!VectorCompare2D(m_vVirtualScale, vNewVirtualScale))
{