diff --git a/src/game/client/hud_vote.cpp b/src/game/client/hud_vote.cpp index ca88a831742..3c6548cedc7 100644 --- a/src/game/client/hud_vote.cpp +++ b/src/game/client/hud_vote.cpp @@ -1187,6 +1187,8 @@ void CHudVote::MsgFunc_CallVoteFailed( bf_read &msg ) vote_create_failed_t nReason = (vote_create_failed_t)msg.ReadByte(); int nTime = msg.ReadShort(); + char szCustomText[k_MAX_VOTE_NAME_LENGTH]; + msg.ReadString( szCustomText, sizeof(szCustomText) ); // if we're already drawing a vote, do nothing if ( ShouldDraw() ) @@ -1231,6 +1233,12 @@ void CHudVote::MsgFunc_CallVoteFailed( bf_read &msg ) wchar_t wszHeaderString[k_MAX_VOTE_NAME_LENGTH]; + if ( szCustomText[0] ) + { + pFreeVotePanel->m_pCallVoteFailed->SetControlString( "FailedReason", szCustomText ); + return; + } + switch( nReason ) { case VOTE_FAILED_GENERIC: @@ -1363,6 +1371,8 @@ void CHudVote::MsgFunc_VoteFailed( bf_read &msg ) pVotePanel->m_nVoteTeamIndex = nVoteTeamIndex; vote_create_failed_t nReason = (vote_create_failed_t)msg.ReadByte(); + char szCustomText[k_MAX_VOTE_NAME_LENGTH]; + msg.ReadString( szCustomText, sizeof(szCustomText) ); // Visibility of this error is handled by OnThink() pVotePanel->m_bVotingActive = false; @@ -1371,19 +1381,26 @@ void CHudVote::MsgFunc_VoteFailed( bf_read &msg ) pVotePanel->m_flHideTime = gpGlobals->curtime + 5.f; pVotePanel->m_nVoteIdx = -1; - switch ( nReason ) + if ( szCustomText[0] ) { - case VOTE_FAILED_GENERIC: - pVotePanel->m_pVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed" ); - break; + pVotePanel->m_pVoteFailed->SetControlString( "FailedReason", szCustomText ); + } + else + { + switch ( nReason ) + { + case VOTE_FAILED_GENERIC: + pVotePanel->m_pVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed" ); + break; - case VOTE_FAILED_YES_MUST_EXCEED_NO: - pVotePanel->m_pVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed_yesno" ); - break; + case VOTE_FAILED_YES_MUST_EXCEED_NO: + pVotePanel->m_pVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed_yesno" ); + break; - case VOTE_FAILED_QUORUM_FAILURE: - pVotePanel->m_pVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed_quorum" ); - break; + case VOTE_FAILED_QUORUM_FAILURE: + pVotePanel->m_pVoteFailed->SetControlString( "FailedReason", "#GameUI_vote_failed_quorum" ); + break; + } } IGameEvent *event = gameeventmanager->CreateEvent( "vote_failed" ); diff --git a/src/game/server/vote_controller.cpp b/src/game/server/vote_controller.cpp index 9d4b3acecd2..4643423fa02 100644 --- a/src/game/server/vote_controller.cpp +++ b/src/game/server/vote_controller.cpp @@ -63,6 +63,65 @@ static const int k_nKickWatchListMaxDuration = 300; static int s_nVoteIdx = 0; +CON_COMMAND_F( test_vote_creation_failed, "Test vote UI", FCVAR_CHEAT ) +{ + CBasePlayer *pPlayer = UTIL_GetCommandClient(); + if ( !pPlayer ) + return; + + if ( args.ArgC() <= 2 ) + { + ClientPrint( pPlayer, HUD_PRINTCONSOLE, "Usage: test_vote_creation_failed