@@ -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