⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 counterstrikeviewport.cpp

📁 hl2 source code. Do not use it illegal.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -