2018-12-31 01:00:38 +00:00
|
|
|
/***
|
|
|
|
*
|
2019-01-16 16:43:50 +00:00
|
|
|
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
|
|
|
|
*
|
|
|
|
* See the file LICENSE attached with the sources for usage details.
|
2018-12-31 01:00:38 +00:00
|
|
|
*
|
|
|
|
****/
|
|
|
|
|
|
|
|
float g_flFadeDuration;
|
|
|
|
float g_flFadeHold;
|
|
|
|
float g_flFadeMaxAlpha;
|
|
|
|
float g_flFadeStyle;
|
|
|
|
float g_flFadeAlpha;
|
|
|
|
float g_flFadeTime;
|
|
|
|
vector g_vecFadeColor;
|
|
|
|
int g_iFadeActive;
|
|
|
|
|
|
|
|
/*enum
|
|
|
|
{
|
|
|
|
DRAWFLAG_NORMAL,
|
|
|
|
DRAWFLAG_ADDITIVE,
|
|
|
|
DRAWFLAG_MODULATE, // FTE doesn't support this
|
|
|
|
DRAWFLAG_2XMODULATE // FTE doesn't support this
|
|
|
|
};*/
|
|
|
|
|
|
|
|
enumflags
|
|
|
|
{
|
|
|
|
EVF_FADEDROM,
|
|
|
|
EVF_MODULATE,
|
|
|
|
EVF_ONLYUSER
|
|
|
|
};
|
|
|
|
|
2019-01-03 01:26:39 +00:00
|
|
|
void Fade_Init(void)
|
2018-12-31 01:00:38 +00:00
|
|
|
{
|
2019-01-03 01:26:39 +00:00
|
|
|
shaderforname("fade_modulate","{\n{\nmap $whiteimage\nrgbGen vertex\nblendFunc GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA\nalphaGen vertex\n}\n}\n");
|
2018-12-31 01:00:38 +00:00
|
|
|
}
|
|
|
|
|
2019-01-03 01:26:39 +00:00
|
|
|
void Fade_Update (int x, int y, int w, int h)
|
2018-12-31 01:00:38 +00:00
|
|
|
{
|
2019-01-03 01:26:39 +00:00
|
|
|
if (g_iFadeActive == FALSE) {
|
2018-12-31 01:00:38 +00:00
|
|
|
return;
|
|
|
|
}
|
2019-01-03 01:26:39 +00:00
|
|
|
if (g_flFadeStyle & EVF_FADEDROM) {
|
|
|
|
if (g_flFadeTime > g_flFadeHold) {
|
|
|
|
g_flFadeAlpha -= (frametime * (1.0f / g_flFadeDuration)) * g_flFadeMaxAlpha;
|
2018-12-31 01:00:38 +00:00
|
|
|
}
|
|
|
|
} else {
|
2019-01-03 01:26:39 +00:00
|
|
|
if (g_flFadeTime < g_flFadeDuration) {
|
|
|
|
g_flFadeAlpha += (frametime * (1.0f / g_flFadeDuration)) * g_flFadeMaxAlpha;
|
2018-12-31 01:00:38 +00:00
|
|
|
} else {
|
2019-01-03 01:26:39 +00:00
|
|
|
g_flFadeAlpha -= (frametime * (1.0f / g_flFadeHold)) * g_flFadeMaxAlpha;
|
2018-12-31 01:00:38 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-01-03 01:26:39 +00:00
|
|
|
if (g_flFadeAlpha > 1.0f) {
|
2018-12-31 01:00:38 +00:00
|
|
|
g_flFadeAlpha = 1.0f;
|
2019-01-03 01:26:39 +00:00
|
|
|
} else if (g_flFadeAlpha < 0.0f) {
|
2018-12-31 01:00:38 +00:00
|
|
|
g_flFadeAlpha = 0.0f;
|
|
|
|
}
|
|
|
|
|
2019-01-03 01:26:39 +00:00
|
|
|
if (g_flFadeAlpha <= 0) {
|
2018-12-31 01:00:38 +00:00
|
|
|
g_iFadeActive = FALSE;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-01-03 01:26:39 +00:00
|
|
|
if (g_flFadeStyle & EVF_MODULATE) {
|
|
|
|
drawpic([x, y], "fade_modulate", [w, h], g_vecFadeColor, g_flFadeAlpha, 0);
|
2018-12-31 01:00:38 +00:00
|
|
|
} else {
|
2019-01-03 01:26:39 +00:00
|
|
|
drawfill([x, y], [w, h], g_vecFadeColor, g_flFadeAlpha, 0);
|
2018-12-31 01:00:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
g_flFadeTime += frametime;
|
|
|
|
}
|
|
|
|
|
2019-01-03 01:26:39 +00:00
|
|
|
void Fade_Parse (void)
|
2018-12-31 01:00:38 +00:00
|
|
|
{
|
|
|
|
g_vecFadeColor[0] = readbyte() / 255;
|
|
|
|
g_vecFadeColor[1] = readbyte() / 255;
|
|
|
|
g_vecFadeColor[2] = readbyte() / 255;
|
|
|
|
g_flFadeMaxAlpha = readbyte() / 255;
|
|
|
|
g_flFadeDuration = readfloat();
|
|
|
|
g_flFadeHold = readfloat();
|
|
|
|
g_flFadeStyle = readbyte();
|
|
|
|
g_flFadeTime = 0.0f;
|
|
|
|
|
2019-01-03 01:26:39 +00:00
|
|
|
if (g_flFadeStyle & EVF_FADEDROM) {
|
2018-12-31 01:00:38 +00:00
|
|
|
g_flFadeAlpha = 1.0f;
|
|
|
|
} else {
|
|
|
|
g_flFadeAlpha = 0.0f;
|
|
|
|
}
|
|
|
|
|
|
|
|
g_iFadeActive = TRUE;
|
|
|
|
}
|