mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-01-28 22:57:55 +03:00
Added precaching + logo colors to env_credits
This commit is contained in:
parent
fca05c8be9
commit
b6b0583550
@ -57,6 +57,9 @@ enum
|
|||||||
#define CREDITS_LOGO 1
|
#define CREDITS_LOGO 1
|
||||||
#define CREDITS_INTRO 2
|
#define CREDITS_INTRO 2
|
||||||
#define CREDITS_OUTRO 3
|
#define CREDITS_OUTRO 3
|
||||||
|
#ifdef MAPBASE
|
||||||
|
#define CREDITS_PRECACHE 4
|
||||||
|
#endif
|
||||||
|
|
||||||
bool g_bRollingCredits = false;
|
bool g_bRollingCredits = false;
|
||||||
|
|
||||||
@ -112,6 +115,10 @@ private:
|
|||||||
void PrepareOutroCredits( void );
|
void PrepareOutroCredits( void );
|
||||||
void PrepareIntroCredits( void );
|
void PrepareIntroCredits( void );
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
void PrecacheCredits();
|
||||||
|
#endif
|
||||||
|
|
||||||
float FadeBlend( float fadein, float fadeout, float hold, float localTime );
|
float FadeBlend( float fadein, float fadeout, float hold, float localTime );
|
||||||
|
|
||||||
void PrepareLine( vgui::HFont hFont, char const *pchLine );
|
void PrepareLine( vgui::HFont hFont, char const *pchLine );
|
||||||
@ -162,6 +169,9 @@ private:
|
|||||||
char m_szCreditsFile[MAX_PATH];
|
char m_szCreditsFile[MAX_PATH];
|
||||||
|
|
||||||
char m_szLogoFont[64];
|
char m_szLogoFont[64];
|
||||||
|
char m_szLogo2Font[64];
|
||||||
|
Color m_cLogoColor;
|
||||||
|
Color m_cLogo2Color;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -309,6 +319,10 @@ void CHudCredits::ReadParams( KeyValues *pKeyValue )
|
|||||||
|
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
Q_strncpy( m_szLogoFont, pKeyValue->GetString( "logofont", "" ), sizeof( m_szLogoFont ) );
|
Q_strncpy( m_szLogoFont, pKeyValue->GetString( "logofont", "" ), sizeof( m_szLogoFont ) );
|
||||||
|
Q_strncpy( m_szLogo2Font, pKeyValue->GetString( "logo2font", "" ), sizeof( m_szLogo2Font ) );
|
||||||
|
|
||||||
|
m_cLogoColor = pKeyValue->GetColor( "logocolor" );
|
||||||
|
m_cLogo2Color = pKeyValue->GetColor( "logo2color" );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -650,6 +664,11 @@ void CHudCredits::DrawLogo( void )
|
|||||||
|
|
||||||
Color cColor = m_TextColor;
|
Color cColor = m_TextColor;
|
||||||
cColor[3] = m_Alpha;
|
cColor[3] = m_Alpha;
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
if (m_cLogoColor.a() > 0)
|
||||||
|
cColor = m_cLogoColor;
|
||||||
|
#endif
|
||||||
|
|
||||||
surface()->DrawSetTextFont( m_hTFont );
|
surface()->DrawSetTextFont( m_hTFont );
|
||||||
surface()->DrawSetTextColor( cColor[0], cColor[1], cColor[2], cColor[3] );
|
surface()->DrawSetTextColor( cColor[0], cColor[1], cColor[2], cColor[3] );
|
||||||
@ -664,6 +683,19 @@ void CHudCredits::DrawLogo( void )
|
|||||||
|
|
||||||
if ( Q_strlen( m_szLogo2 ) > 0 )
|
if ( Q_strlen( m_szLogo2 ) > 0 )
|
||||||
{
|
{
|
||||||
|
#ifdef MAPBASE
|
||||||
|
if (m_szLogo2Font[0] != '\0')
|
||||||
|
{
|
||||||
|
m_hTFont = vgui::scheme()->GetIScheme( scheme )->GetFont( m_szLogo2Font );
|
||||||
|
iFontTall = surface()->GetFontTall( m_hTFont );
|
||||||
|
surface()->DrawSetTextFont( m_hTFont );
|
||||||
|
}
|
||||||
|
if (m_cLogo2Color.a() > 0)
|
||||||
|
{
|
||||||
|
surface()->DrawSetTextColor( m_cLogo2Color[0], m_cLogo2Color[1], m_cLogo2Color[2], m_cLogo2Color[3] );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
g_pVGuiLocalize->ConvertANSIToUnicode( m_szLogo2, unicode, sizeof( unicode ) );
|
g_pVGuiLocalize->ConvertANSIToUnicode( m_szLogo2, unicode, sizeof( unicode ) );
|
||||||
|
|
||||||
iStringWidth = GetStringPixelWidth( unicode, m_hTFont );
|
iStringWidth = GetStringPixelWidth( unicode, m_hTFont );
|
||||||
@ -946,7 +978,7 @@ void CHudCredits::PrepareOutroCredits( void )
|
|||||||
|
|
||||||
iHeight += ((float)iFontTall * pCredit->flImageScale * ((float)GetTall() / 900.0f)) + m_flSeparation;
|
iHeight += ((float)iFontTall * pCredit->flImageScale * ((float)GetTall() / 900.0f)) + m_flSeparation;
|
||||||
|
|
||||||
Msg( "'%s' is image type (image scale is %f)\n", pCredit->szCreditName, pCredit->flImageScale );
|
//Msg( "'%s' is image type (image scale is %f)\n", pCredit->szCreditName, pCredit->flImageScale );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1070,6 +1102,49 @@ void CHudCredits::PrepareIntroCredits( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
|
void CHudCredits::PrecacheCredits()
|
||||||
|
{
|
||||||
|
PrepareCredits( "OutroCreditsNames" );
|
||||||
|
|
||||||
|
if ( m_CreditsList.Count() == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
for ( int i = 0; i < m_CreditsList.Count(); i++ )
|
||||||
|
{
|
||||||
|
creditname_t *pCredit = &m_CreditsList[i];
|
||||||
|
|
||||||
|
if ( pCredit == NULL )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (pCredit->szFontName[0] == '$')
|
||||||
|
{
|
||||||
|
if (V_strncmp( pCredit->szFontName + 1, "Image", 5 ) == 0)
|
||||||
|
{
|
||||||
|
if (m_bAllowColumns && V_strstr( pCredit->szCreditName, "\t" ))
|
||||||
|
{
|
||||||
|
CUtlStringList outStrings;
|
||||||
|
V_SplitString( pCredit->szCreditName, "\t", outStrings );
|
||||||
|
FOR_EACH_VEC( outStrings, i )
|
||||||
|
{
|
||||||
|
GetOrAllocateImageID( outStrings[i] );
|
||||||
|
}
|
||||||
|
outStrings.PurgeAndDeleteElements();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GetOrAllocateImageID( pCredit->szCreditName );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Msg( "'%s' is not an image type\n", pCredit->szFontName + 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_CreditsList.RemoveAll();
|
||||||
|
}
|
||||||
|
|
||||||
int CHudCredits::GetOrAllocateImageID( const char *szFileName )
|
int CHudCredits::GetOrAllocateImageID( const char *szFileName )
|
||||||
{
|
{
|
||||||
int iIndex = m_ImageDict.Find( szFileName );
|
int iIndex = m_ImageDict.Find( szFileName );
|
||||||
@ -1112,6 +1187,13 @@ void CHudCredits::MsgFunc_CreditsMsg( bf_read &msg )
|
|||||||
PrepareOutroCredits();
|
PrepareOutroCredits();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifdef MAPBASE
|
||||||
|
case CREDITS_PRECACHE:
|
||||||
|
{
|
||||||
|
PrecacheCredits();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,6 +154,9 @@ public:
|
|||||||
DECLARE_DATADESC();
|
DECLARE_DATADESC();
|
||||||
|
|
||||||
void Spawn( void );
|
void Spawn( void );
|
||||||
|
#ifdef MAPBASE
|
||||||
|
void PrecacheCreditsThink();
|
||||||
|
#endif
|
||||||
void InputRollCredits( inputdata_t &inputdata );
|
void InputRollCredits( inputdata_t &inputdata );
|
||||||
void InputRollOutroCredits( inputdata_t &inputdata );
|
void InputRollOutroCredits( inputdata_t &inputdata );
|
||||||
void InputShowLogo( inputdata_t &inputdata );
|
void InputShowLogo( inputdata_t &inputdata );
|
||||||
@ -186,6 +189,8 @@ BEGIN_DATADESC( CCredits )
|
|||||||
|
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
DEFINE_KEYFIELD( m_iszCreditsFile, FIELD_STRING, "CreditsFile" ),
|
DEFINE_KEYFIELD( m_iszCreditsFile, FIELD_STRING, "CreditsFile" ),
|
||||||
|
|
||||||
|
DEFINE_THINKFUNC( PrecacheCreditsThink ),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DEFINE_FIELD( m_bRolledOutroCredits, FIELD_BOOLEAN ),
|
DEFINE_FIELD( m_bRolledOutroCredits, FIELD_BOOLEAN ),
|
||||||
@ -196,8 +201,35 @@ void CCredits::Spawn( void )
|
|||||||
{
|
{
|
||||||
SetSolid( SOLID_NONE );
|
SetSolid( SOLID_NONE );
|
||||||
SetMoveType( MOVETYPE_NONE );
|
SetMoveType( MOVETYPE_NONE );
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
// Ensures the player has time to spawn
|
||||||
|
SetContextThink( &CCredits::PrecacheCreditsThink, gpGlobals->curtime + 0.5f, "PrecacheCreditsContext" );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
void CCredits::PrecacheCreditsThink()
|
||||||
|
{
|
||||||
|
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
|
||||||
|
if (!pPlayer)
|
||||||
|
{
|
||||||
|
Warning( "%s: No player\n", GetDebugName() );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CSingleUserRecipientFilter user( pPlayer );
|
||||||
|
user.MakeReliable();
|
||||||
|
|
||||||
|
UserMessageBegin( user, "CreditsMsg" );
|
||||||
|
WRITE_BYTE( 4 );
|
||||||
|
WRITE_STRING( STRING(m_iszCreditsFile) );
|
||||||
|
MessageEnd();
|
||||||
|
|
||||||
|
SetContextThink( NULL, TICK_NEVER_THINK, "PrecacheCreditsContext" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void CreditsDone_f( void )
|
static void CreditsDone_f( void )
|
||||||
{
|
{
|
||||||
CCredits *pCredits = (CCredits*)gEntList.FindEntityByClassname( NULL, "env_credits" );
|
CCredits *pCredits = (CCredits*)gEntList.FindEntityByClassname( NULL, "env_credits" );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user