📄 counterstrikeviewport.cpp
字号:
if ( m_pClassMenu )
{
m_pClassMenu->SetVisible(false);
}
m_pTeamMenu->SetVisible(false);
if ( m_pBuyMenu )
{
m_pBuyMenu->SetVisible(false);
}
}
//-----------------------------------------------------------------------------
// Purpose: process key input
//-----------------------------------------------------------------------------
int CounterStrikeViewport::KeyInput( int down, int keynum, const char *pszCurrentBinding )
{
// DON'T run the base class code here, enter shouldn't bring up the team menu in CS
return 1;
}
//-----------------------------------------------------------------------------
// Purpose: hides a particular vgui menu
//-----------------------------------------------------------------------------
void CounterStrikeViewport::HideVGUIMenu( int iMenu )
{
switch( iMenu )
{
case MENU_TERRORIST:
case MENU_CT:
if ( m_pClassMenu )
{
m_pClassMenu->SetVisible( false );
}
break;
case MENU_TEAM:
if ( m_pTeamMenu )
{
m_pTeamMenu->SetVisible( false );
}
break;
case MENU_BUY:
case MENU_EQUIPMENT:
if ( m_pBuyMenu )
{
m_pBuyMenu->SetVisible( false );
}
break;
default:
BaseClass::HideVGUIMenu( iMenu );
break;
}
}
//-----------------------------------------------------------------------------
// Purpose: returns true if the iMenu is visible
//-----------------------------------------------------------------------------
bool CounterStrikeViewport::IsVGUIMenuActive( int iMenu )
{
switch( iMenu )
{
case MENU_TERRORIST:
case MENU_CT:
if ( m_pClassMenu )
{
return (m_pClassMenu->IsVisible() || m_pClientScoreBoard->IsVisible() ) ;
}
else
{
return false;
}
break;
case MENU_TEAM:
if ( m_pTeamMenu )
{
return (m_pTeamMenu->IsVisible() || m_pClientScoreBoard->IsVisible()) ;
}
else
{
return false;
}
break;
case MENU_BUY:
case MENU_EQUIPMENT:
if ( m_pBuyMenu )
{
return m_pBuyMenu->IsVisible();
}
else
{
return false;
}
break;
default:
return BaseClass::IsVGUIMenuActive( iMenu );
break;
}
}
//-----------------------------------------------------------------------------
// Purpose: displays the menu specified by iMenu
//-----------------------------------------------------------------------------
void CounterStrikeViewport::DisplayVGUIMenu( int iMenu )
{
m_pBackGround->SetVisible( true );
switch( iMenu )
{
case MENU_TERRORIST:
if ( m_pClassMenu )
{
m_pClassMenu->MarkForDeletion(); // kill the old menu
}
g_lastPanel = NULL;
m_pClassMenu = new CCSClassMenu(GetViewPortPanel());
m_pClassMenu->Update(NULL, TEAM_TERRORIST);
m_pClassMenu->Activate();
break;
case MENU_CT:
if ( m_pClassMenu )
{
m_pClassMenu->MarkForDeletion(); // kill the old menu
}
g_lastPanel = NULL;
m_pClassMenu = new CCSClassMenu(GetViewPortPanel());
m_pClassMenu->Update(NULL, TEAM_CT);
m_pClassMenu->Activate();
break;
case MENU_TEAM:
m_pTeamMenu->Update( clientInterface.GetLevelName(), clientInterface.IsSpectatingAllowed(), const_cast<const char **>(m_sTeamNames), BaseClass::GetNumberOfTeams() );
m_pTeamMenu->Activate();
break;
case MENU_BUY:
if ( !m_pBuyMenu )
{
m_pBuyMenu = new CBuyMenu( GetViewPortPanel() );
}
m_pBuyMenu->ActivateBuyMenu();
break;
case MENU_EQUIPMENT:
if ( !m_pBuyMenu )
{
m_pBuyMenu = new CBuyMenu( GetViewPortPanel() );
}
m_pBuyMenu->ActivateEquipmentMenu();
break;
default:
BaseClass::DisplayVGUIMenu( iMenu );
break;
}
}
void CounterStrikeViewport::UpdateSpectatorPanel()
{
BaseClass::UpdateSpectatorPanel();
m_pSpectatorGUI->UpdateTimer();
}
//-----------------------------------------------------------------------------
// Purpose: this gets called each frame, used to update spectator gui label
//-----------------------------------------------------------------------------
void CounterStrikeViewport::OnTick()
{
BaseClass::OnTick();
if ( m_pSpectatorGUI->IsGUIVisible() )
{
m_pSpectatorGUI->UpdateTimer();
}
}
int CounterStrikeViewport::MsgFunc_TeamInfo( const char *pszName, int iSize, void *pbuf )
{
//MIKETODO: team state networking
/*
BEGIN_READ( pbuf, iSize );
short cl = READ_BYTE();
if ( cl > 0 && cl <= MAX_PLAYERS )
{
// set the players team
strncpy( g_PlayerExtraInfo[cl].teamname, READ_STRING(), MAX_TEAM_NAME );
if (!stricmp(g_PlayerExtraInfo[cl].teamname, "TEAM_CT"))
{
g_PlayerExtraInfo[cl].teamnumber = 2;
}
else if (!stricmp(g_PlayerExtraInfo[cl].teamname, "TEAM_TERRORIST"))
{
g_PlayerExtraInfo[cl].teamnumber = 1;
}
else
{
g_PlayerExtraInfo[cl].teamnumber = 0;
}
}
// rebuild the list of teams
GetAllPlayersInfo();
m_pClientScoreBoard->RebuildTeams(GetServerName(),gHUD.m_Teamplay, m_pSpectatorGUI->IsVisible());
*/
return 1;
}
int CounterStrikeViewport::MsgFunc_ScoreInfo( const char *pszName, int iSize, void *pbuf )
{
//MIKETODO: team state networking
/*
BEGIN_READ( pbuf, iSize );
short cl = READ_BYTE();
short frags = READ_SHORT();
short deaths = READ_SHORT();
short playerclass = READ_SHORT();
short teamnumber = READ_SHORT();
if ( cl > 0 && cl <= MAX_PLAYERS )
{
g_PlayerExtraInfo[cl].frags = frags;
g_PlayerExtraInfo[cl].deaths = deaths;
g_PlayerExtraInfo[cl].playerclass = playerclass;
// don't update this as it can be WRONG!,
// g_PlayerExtraInfo[cl].teamnumber = teamnumber;
//Dont go bellow 0!
if ( g_PlayerExtraInfo[cl].teamnumber < 0 )
g_PlayerExtraInfo[cl].teamnumber = 0;
if (m_pTeamMenu)
m_pTeamMenu->Update( BaseClass::GetMapName(), BaseClass::GetAllowSpectators(), const_cast<const char **>(m_sTeamNames), BaseClass::GetNumberOfTeams() );
GetAllPlayersInfo();
m_pClientScoreBoard->Update(GetServerName(),static_cast<bool>(gHUD.m_Teamplay), m_pSpectatorGUI->IsVisible() );
m_pSpectatorGUI->UpdateSpectatorPlayerList();
}
*/
return 1;
}
// Message handler for TeamScore message
// accepts three values:
// string: team name
// short: teams kills
// short: teams deaths
// if this message is never received, then scores will simply be the combined totals of the players.
int CounterStrikeViewport::MsgFunc_TeamScore( const char *pszName, int iSize, void *pbuf )
{
BEGIN_READ( pbuf, iSize );
const char *TeamName = READ_STRING();
// find the team matching the name
for ( int i = 1; i <= BaseClass::GetNumberOfTeams(); i++ )
{
if ( !strnicmp( TeamName, m_pClientScoreBoard->GetTeamName( i ), strlen(TeamName) ) )
break;
}
if ( i >BaseClass::GetNumberOfTeams() && i< MAX_TEAMS) // new team
{
BaseClass::SetNumberOfTeams(GetNumberOfTeams()+1);
if ( !m_sTeamNames[i] || strlen( m_sTeamNames[i] ) < (strlen(TeamName) + 1 ) )
{
if ( m_sTeamNames[i] )
{
free( m_sTeamNames[i] );
}
m_sTeamNames[i] = (char *)malloc( strlen( TeamName ) + 1 );
}
strcpy( m_sTeamNames[i], TeamName );
m_pClientScoreBoard->SetTeamName( i, TeamName );
}
// use this new score data instead of combined player scores
//g_TeamInfo[i].scores_overriden = TRUE;
//g_TeamInfo[i].frags = ;
//g_TeamInfo[i].deaths =
m_pClientScoreBoard->SetTeamDetails( i, READ_SHORT(), 0 );
return 1;
}
/*
==========================
HUD_ChatInputPosition
Sets the location of the input for chat text
==========================
*/
//MIKETODO: positioning of chat text (and other engine output)
/*
#include "Exports.h"
void CL_DLLEXPORT HUD_ChatInputPosition( int *x, int *y )
{
RecClChatInputPosition( x, y );
if ( gViewPortInterface )
{
gViewPortInterface->ChatInputPosition( x, y );
}
}
EXPOSE_SINGLE_INTERFACE(CounterStrikeViewport, IClientVGUI, CLIENTVGUI_INTERFACE_VERSION);
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -