Skip to content

Commit f79f07e

Browse files
committed
Support for multiple colors for different outro credits columns on the same row
1 parent 93d586a commit f79f07e

1 file changed

Lines changed: 63 additions & 15 deletions

File tree

sp/src/game/client/hl2/hud_credits.cpp

Lines changed: 63 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ struct creditname_t
3535

3636
#ifdef MAPBASE
3737
// New credits stuff
38-
39-
Color cColorOverride;
38+
CCopyableUtlVector<int> cColorOverride;
4039

4140
// Images
4241
int iImageID = -1;
@@ -408,8 +407,8 @@ void CHudCredits::DrawOutroCreditsName( void )
408407
Color cColor = m_TextColor;
409408

410409
#ifdef MAPBASE
411-
if (pCredit->cColorOverride.a() > 0)
412-
cColor = pCredit->cColorOverride;
410+
if (pCredit->cColorOverride.Count() > 0)
411+
cColor.SetRawColor( pCredit->cColorOverride[0] );
413412

414413
// Some lines should stick around and fade out
415414
if ( i >= m_CreditsList.Count()-m_iEndLines )
@@ -473,6 +472,12 @@ void CHudCredits::DrawOutroCreditsName( void )
473472
{
474473
FOR_EACH_VEC( outStrings, i )
475474
{
475+
if (i < pCredit->cColorOverride.Count())
476+
{
477+
// Change color to this particular column's color
478+
cColor.SetRawColor( pCredit->cColorOverride[i] );
479+
}
480+
476481
int iImageID = GetOrAllocateImageID( outStrings[i] );
477482

478483
// Center the image if needed
@@ -492,6 +497,12 @@ void CHudCredits::DrawOutroCreditsName( void )
492497
{
493498
FOR_EACH_VEC( outStrings, i )
494499
{
500+
if (i < pCredit->cColorOverride.Count())
501+
{
502+
// Change color to this particular column's color
503+
cColor.SetRawColor( pCredit->cColorOverride[i] );
504+
}
505+
495506
DrawOutroCreditFont( outStrings[i], pCredit->flYPos, m_hTFont, cColor, iWidth*(i + 1), iDivisor );
496507
}
497508
}
@@ -768,8 +779,8 @@ void CHudCredits::DrawIntroCreditsName( void )
768779
surface()->DrawSetTextFont( m_hTFont );
769780
#ifdef MAPBASE
770781
Color cColor = m_cColor;
771-
if (pCredit->cColorOverride.a() > 0)
772-
cColor = pCredit->cColorOverride;
782+
if (pCredit->cColorOverride.Count() > 0)
783+
cColor.SetRawColor( pCredit->cColorOverride[0] );
773784

774785
surface()->DrawSetTextColor( cColor[0], cColor[1], cColor[2], FadeBlend( m_flFadeInTime, m_flFadeOutTime, m_flFadeHoldTime + pCredit->flTimeAdd, localTime ) * cColor[3] );
775786
#else
@@ -941,9 +952,25 @@ void CHudCredits::PrepareOutroCredits( void )
941952

942953
// Get color
943954
case 2:
944-
int tmp[4];
945-
UTIL_StringToIntArray( tmp, 4, outStrings[i] );
946-
pCredit->cColorOverride = Color( tmp[0], tmp[1], tmp[2], tmp[3] );
955+
char *pToken = strtok( outStrings[i], "," );
956+
if (pToken)
957+
{
958+
// Multiple colors for multiple columns
959+
while (pToken != NULL)
960+
{
961+
int tmp[4];
962+
UTIL_StringToIntArray( tmp, 4, pToken );
963+
pCredit->cColorOverride.AddToTail( Color( tmp[0], tmp[1], tmp[2], tmp[3] ).GetRawColor() );
964+
965+
pToken = strtok( NULL, "," );
966+
}
967+
}
968+
else
969+
{
970+
int tmp[4];
971+
UTIL_StringToIntArray( tmp, 4, outStrings[i] );
972+
pCredit->cColorOverride.AddToTail( Color( tmp[0], tmp[1], tmp[2], tmp[3] ).GetRawColor() );
973+
}
947974
break;
948975
}
949976
}
@@ -999,9 +1026,25 @@ void CHudCredits::PrepareOutroCredits( void )
9991026
{
10001027
// Get color
10011028
case 1:
1002-
int tmp[4];
1003-
UTIL_StringToIntArray( tmp, 4, outStrings[i] );
1004-
pCredit->cColorOverride = Color( tmp[0], tmp[1], tmp[2], tmp[3] );
1029+
char *pToken = strtok( outStrings[i], "," );
1030+
if (pToken)
1031+
{
1032+
// Multiple colors for multiple columns
1033+
while (pToken != NULL)
1034+
{
1035+
int tmp[4];
1036+
UTIL_StringToIntArray( tmp, 4, pToken );
1037+
pCredit->cColorOverride.AddToTail( Color( tmp[0], tmp[1], tmp[2], tmp[3] ).GetRawColor() );
1038+
1039+
pToken = strtok( NULL, "," );
1040+
}
1041+
}
1042+
else
1043+
{
1044+
int tmp[4];
1045+
UTIL_StringToIntArray( tmp, 4, outStrings[i] );
1046+
pCredit->cColorOverride.AddToTail( Color( tmp[0], tmp[1], tmp[2], tmp[3] ).GetRawColor() );
1047+
}
10051048
break;
10061049
}
10071050
}
@@ -1024,8 +1067,12 @@ void CHudCredits::PrepareOutroCredits( void )
10241067

10251068
#ifdef MAPBASE
10261069
// Check if the last line has a color override. If it does, use that as the alpha for the fadeout
1027-
if (m_CreditsList.Tail().cColorOverride.a() != 0)
1028-
m_Alpha = m_CreditsList.Tail().cColorOverride.a();
1070+
if (m_CreditsList.Tail().cColorOverride.Count() > 0)
1071+
{
1072+
Color clr;
1073+
clr.SetRawColor( m_CreditsList.Tail().cColorOverride[0] );
1074+
m_Alpha = clr.a();
1075+
}
10291076
#endif
10301077

10311078
SetActive( true );
@@ -1057,9 +1104,10 @@ void CHudCredits::PrepareIntroCredits( void )
10571104
{
10581105
// Get color
10591106
case 1:
1107+
// TODO: Columns?
10601108
int tmp[4];
10611109
UTIL_StringToIntArray( tmp, 4, outStrings[i] );
1062-
pCredit->cColorOverride = Color( tmp[0], tmp[1], tmp[2], tmp[3] );
1110+
pCredit->cColorOverride.AddToTail( Color( tmp[0], tmp[1], tmp[2], tmp[3] ).GetRawColor() );
10631111
break;
10641112
}
10651113
}

0 commit comments

Comments
 (0)