Implemented DontLocalize and FadeSequence from mohaas

This commit is contained in:
smallmodel committed 2023-07-30 00:56:54 +02:00
1 parent a86ed01ba3
commit f3affb3d4c
2 files changed
+166 -33

No files matched your search

+128 -30
View File
@@ -419,6 +419,24 @@ Event EV_Layout_AliasCache
"Create an alias to the specified path and cache the resource"
);
Event EV_Layout_DontLocalize
(
"dontlocalize",
EV_DEFAULT,
NULL,
NULL,
"Disables localization for this widget"
);
Event EV_Layout_FadeSequence
(
"fadesequence",
EV_DEFAULT,
"ffff",
"delay fadein hold fadeout",
"Set up for a delay/fadein/hold/fadeout"
);
Event EV_Layout_BGFill
(
"bgfill",
@@ -484,6 +502,8 @@ CLASS_DECLARATION( USignal, UIWidget, NULL )
{ &EV_Widget_Disable, &UIWidget::DisableEvent },
{ &EV_Widget_EnabledCvar, &UIWidget::SetEnabledCvar },
{ &EV_Widget_ScaleCvar, &UIWidget::SetScaleCvar },
{ &EV_Layout_DontLocalize, &UIWidget::SetDontLocalize },
{ &EV_Layout_FadeSequence, &UIWidget::EventFadeSequence },
{ NULL, NULL }
};
@@ -871,6 +891,10 @@ void UIWidget::FrameInitialized
)
{
if (m_fadeSequenceDelayStart || m_fadeSequenceFadeIn || m_fadeSequenceHold || m_fadeSequenceFadeOut) {
m_fadeSequenceDelayEnd = m_fadeSequenceDelayStart;
m_fadeSequenceState = fadesequence_t::SEQUENCE_FADEIN;
}
}
void UIWidget::DrawTitle
@@ -897,8 +921,62 @@ void UIWidget::Motion
t = uid.time / 1000.0;
if( m_fadetime >= 0.0 )
if (m_fadeSequenceState != fadesequence_t::SEQUENCE_NONE)
{
if (!paused->integer) {
switch (m_fadeSequenceState)
{
case fadesequence_t::SEQUENCE_STARTING:
m_alpha = 0.f;
m_fadeSequenceDelayEnd -= t - m_fadeSequenceAlpha;
if (m_fadeSequenceDelayEnd >= 0.f) {
m_fadeSequenceAlpha = t;
} else {
m_fadeSequenceState = fadesequence_t::SEQUENCE_FADEIN;
m_fadeSequenceAlpha = t;
m_fadeSequenceDelayEnd = m_fadeSequenceFadeIn;
}
break;
case fadesequence_t::SEQUENCE_FADEIN:
m_alpha = 1.f - m_fadeSequenceDelayEnd / m_fadeSequenceFadeIn;
m_fadeSequenceDelayEnd -= t - m_fadeSequenceAlpha;
if (m_fadeSequenceDelayEnd >= 0.f) {
m_fadeSequenceAlpha = t;
} else {
m_fadeSequenceState = fadesequence_t::SEQUENCE_HOLD;
m_fadeSequenceAlpha = t;
m_fadeSequenceDelayEnd = m_fadeSequenceHold;
}
break;
case fadesequence_t::SEQUENCE_HOLD:
m_alpha = 1.f;
m_fadeSequenceDelayEnd -= t - m_fadeSequenceAlpha;
if (m_fadeSequenceDelayEnd >= 0.f) {
m_fadeSequenceAlpha = t;
} else {
m_fadeSequenceState = fadesequence_t::SEQUENCE_FADEOUT;
m_fadeSequenceAlpha = t;
m_fadeSequenceDelayEnd = m_fadeSequenceFadeOut;
}
break;
case fadesequence_t::SEQUENCE_FADEOUT:
m_alpha = m_fadeSequenceDelayEnd / m_fadeSequenceFadeOut;
m_fadeSequenceDelayEnd -= (t - m_fadeSequenceAlpha);
if (m_fadeSequenceDelayEnd >= 0.f) {
m_fadeSequenceAlpha = t;
} else {
m_alpha = 0.f;
m_fadeSequenceState = fadesequence_t::SEQUENCE_NONE;
}
break;
default:
m_fadeSequenceAlpha = t;
break;
}
} else {
m_fadeSequenceAlpha = t;
}
} else if( m_fadetime >= 0.0 ) {
frac = ( t - m_starttime ) / m_fadetime;
m_alpha = frac;
@@ -1677,35 +1755,6 @@ void UIWidget::LayoutAliasCache
}
}
void UIWidget::SetEnabledCvar
(
Event *ev
)
{
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
@@ -3030,6 +3079,55 @@ bool UIWidget::PassEventToWidget
return true;
}
void UIWidget::SetEnabledCvar
(
Event* ev
)
{
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::SetDontLocalize(Event* ev)
{
SetDontLocalize();
}
void UIWidget::EventFadeSequence(Event* ev)
{
m_fadeSequenceDelayStart = ev->GetFloat(1);
m_fadeSequenceFadeIn = ev->GetFloat(2);
m_fadeSequenceHold = ev->GetFloat(3);
m_fadeSequenceFadeOut = ev->GetFloat(4);
m_fadeSequenceDelayEnd = m_fadeSequenceDelayStart;
m_fadeSequenceState = fadesequence_t::SEQUENCE_FADEIN;
}
void UIWidget::SetDontLocalize()
{
m_flags |= WF_DONTLOCALIZE;
}
CLASS_DECLARATION( UIWidget, UIWidgetContainer, NULL )
{
{ &EV_Layout_BGFill, &UIWidgetContainer::SetBGFill },