void CBasePanel::OnCursorMoved(int x,int y)
{
	if ( !m_bReflectMouse )
		return;

	if ( !GetParent() )
		return;

	LocalToScreen( x, y );

	vgui::ivgui()->PostMessage( 
		GetParent()->GetVPanel(), 
		new KeyValues( "CursorMoved", "xpos", x, "ypos", y ), 
		GetVPanel() );
}
void SkillAnimPanel::AddParticlesAroundPanel(vgui::Panel* pPanel)
{
	if (!pPanel)
		return;

	// find the target panel's location relative to ours
	int mx, my;
	mx = my = 0;
	LocalToScreen(mx, my);

	int px, py;
	px = py = 0;
	pPanel->LocalToScreen(px, py);

	int x = px - mx;
	int y = py - my;

	x += asw_skill_particle_inset.GetInt();
	y += asw_skill_particle_inset.GetInt();
	int width = pPanel->GetWide() - (asw_skill_particle_inset.GetInt() * 2);
	int height = pPanel->GetTall() - (asw_skill_particle_inset.GetInt() * 2);

	const int particles_per_edge = asw_skill_particle_count.GetInt();	// future todo? could make this scale with wider panels
	float x_interval = float(width) / float(particles_per_edge);
	float y_interval = float(height) / float(particles_per_edge);

	float speed = asw_skill_particle_speed.GetFloat();
		
	for (int i=0;i<particles_per_edge;i++)
	{
		float sidespeed = ((particles_per_edge * 0.5f) - i) / (particles_per_edge * 0.5) * speed;		

		// top edge	
		AddParticle(x + i * x_interval, y, -sidespeed, -speed);

		// bottom edge	
		AddParticle(x + i * x_interval, y + height, -sidespeed, speed);

		// left edge	
		AddParticle(x, y + i * y_interval, -speed, -sidespeed);

		// right edge		
		AddParticle(x + width, y + i * y_interval, speed, -sidespeed);
	}
}
void CASW_Hotbar_Entry::ShowTooltip()
{
	if ( !m_hMarine.Get() )
		return;

	C_ASW_Weapon *pWeapon = m_hMarine->GetASWWeapon( m_iInventoryIndex );
	if ( !pWeapon )
		return;

	const CASW_WeaponInfo* pInfo = pWeapon->GetWeaponInfo();
	if ( !pInfo || !pInfo->m_bOffhandActivate )		// TODO: Fix for sentry guns
		return;

	int x = GetWide() * 0.8f;
	int y = GetTall() * 0.02f;
	LocalToScreen( x, y );
	g_hBriefingTooltip->SetTooltip( this, pInfo->szPrintName, " ", x, y, true );
}
Beispiel #4
0
void CNB_Skill_Panel::OnThink()
{
	BaseClass::OnThink();

	if ( !MarineSkills() || !Briefing() )
		return;

	CASW_Marine_Profile *pProfile = Briefing()->GetMarineProfileByProfileIndex( m_nProfileIndex );
	if ( !pProfile )
		return;

	int nMaxSkillPoints = MarineSkills()->GetMaxSkillPoints( pProfile->GetSkillMapping( m_nSkillSlot ) );
	const char *szImageName = MarineSkills()->GetSkillImage( pProfile->GetSkillMapping( m_nSkillSlot ) );
	if ( Q_strcmp( m_szLastSkillImage, szImageName ) )
	{
		Q_snprintf( m_szLastSkillImage, sizeof( m_szLastSkillImage ), "%s", szImageName );
		char buffer[ 256 ];
		Q_snprintf( buffer, sizeof( buffer ), "vgui/%s", szImageName );
		
		color32 white;
		white.r = 255;
		white.g = 255;
		white.b = 255;
		white.a = 255;

		color32 dull;
		dull.r = 192;
		dull.g = 192;
		dull.b = 192;
		dull.a = 255;

		m_pSkillButton->SetImage( CBitmapButton::BUTTON_ENABLED, buffer, white );
		m_pSkillButton->SetImage( CBitmapButton::BUTTON_DISABLED, buffer, dull );
		m_pSkillButton->SetImage( CBitmapButton::BUTTON_PRESSED, buffer, white );

		Q_snprintf( buffer, sizeof( buffer ), "vgui/%s_over", szImageName );
		m_pSkillButton->SetImage( CBitmapButton::BUTTON_ENABLED_MOUSE_OVER, buffer, white );		
	}
	m_pSkillButton->SetEnabled( m_bSpendPointsMode && CanSpendPoint() );

	m_pSkillLabel->SetText( MarineSkills()->GetSkillName( pProfile->GetSkillMapping( m_nSkillSlot ) ) );

	wchar_t wszPointsBuffer[ 24 ];
	_snwprintf( wszPointsBuffer, sizeof( wszPointsBuffer ), L"%d / %d", m_nSkillPoints, nMaxSkillPoints );
	m_pSkillNumberLabel->SetText( wszPointsBuffer );

	m_pSkillBar->ClearMinMax();
	m_pSkillBar->AddMinMax( 0, nMaxSkillPoints );
	m_pSkillBar->Init( m_nSkillPoints, m_nSkillPoints, 0.1f, true, false );

	if ( IsCursorOver() )
	{
		if (!g_hBriefingTooltip.Get())
		{
			g_hBriefingTooltip = new BriefingTooltip(GetParent(), "MedalsTooltip");
		}	
		else if ( g_hBriefingTooltip->GetParent() != GetParent() )
		{
			g_hBriefingTooltip->SetParent( GetParent() );
		}

		if ( g_hBriefingTooltip.Get() && IsFullyVisible() &&
			g_hBriefingTooltip.Get()->GetTooltipPanel() != this )
		{	
			int tx, ty, w, h;
			tx = ty = 0;
			LocalToScreen(tx, ty);
			GetSize(w, h);
			tx += w * 0.5f;
			ty -= h * 0.01f;

			g_hBriefingTooltip.Get()->SetTooltip( this, MarineSkills()->GetSkillName( pProfile->GetSkillMapping( m_nSkillSlot ) ), MarineSkills()->GetSkillDescription( pProfile->GetSkillMapping( m_nSkillSlot ) ),
				tx, ty );
		}
	}
}