You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
5.2 KiB
189 lines
5.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
|
|
#include "cbase.h"
|
|
|
|
#include <convar.h>
|
|
#include "cdll_int.h"
|
|
#include <ienginevgui.h>
|
|
#include "filesystem.h"
|
|
#include <vgui/ISystem.h>
|
|
#include "career_button.h"
|
|
|
|
#include <vgui_controls/Label.h>
|
|
#include <vgui_controls/URLLabel.h>
|
|
#include <vgui_controls/ComboBox.h>
|
|
#include <vgui/ISurface.h>
|
|
#include <vgui/ILocalize.h>
|
|
#include <vgui_controls/ScrollBar.h>
|
|
#include <vgui_controls/BuildGroup.h>
|
|
#include <vgui_controls/ImageList.h>
|
|
#include <vgui_controls/TextImage.h>
|
|
#include <vgui_controls/Button.h>
|
|
|
|
#include "KeyValues.h"
|
|
|
|
using namespace vgui;
|
|
|
|
#ifndef _DEBUG
|
|
#define PROPORTIONAL_CAREER_FRAMES 1
|
|
#endif
|
|
|
|
//--------------------------------------------------------------------------------------------------------------
|
|
//--------------------------------------------------------------------------------------------------------------
|
|
CCareerButton::CCareerButton(vgui::Panel *parent, const char *buttonName, const char *buttonText, const char *image, bool textFirst) : BaseClass( parent, buttonName, "" )
|
|
{
|
|
m_armedBorder = NULL;
|
|
|
|
m_textImage = new TextImage(buttonText);
|
|
m_image = scheme()->GetImage(image, true);
|
|
m_textFirst = textFirst;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------------
|
|
void CCareerButton::SetImage( const char *image )
|
|
{
|
|
m_image = scheme()->GetImage(image, true);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------------
|
|
void CCareerButton::Paint()
|
|
{
|
|
int buttonWide, buttonTall;
|
|
GetSize(buttonWide, buttonTall);
|
|
|
|
int imageWide, imageTall;
|
|
if ( m_image )
|
|
{
|
|
m_image->GetSize(imageWide, imageTall);
|
|
}
|
|
else
|
|
{
|
|
imageWide = imageTall = 0;
|
|
}
|
|
|
|
int textOffset = m_textPad;
|
|
|
|
if (m_textFirst)
|
|
{
|
|
if ( m_image )
|
|
{
|
|
m_image->SetPos(buttonWide - imageWide - m_imagePad, (buttonTall - imageTall)/2);
|
|
m_image->Paint();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( m_image )
|
|
{
|
|
m_image->SetPos(m_imagePad, (buttonTall - imageTall)/2);
|
|
m_image->Paint();
|
|
}
|
|
textOffset += imageWide + m_imagePad;
|
|
}
|
|
|
|
int textTall, textWide;
|
|
m_textImage->GetSize(textWide, textTall);
|
|
|
|
int textSpace = buttonWide - imageWide - m_imagePad - 2*m_textPad;
|
|
|
|
if ( IsEnabled() )
|
|
{
|
|
m_textImage->SetColor( m_textNormalColor );
|
|
}
|
|
else
|
|
{
|
|
m_textImage->SetColor( m_textDisabledColor );
|
|
}
|
|
m_textImage->SetPos(textOffset + (textSpace - textWide)/2, (buttonTall - textTall)/2);
|
|
m_textImage->Paint();
|
|
|
|
if (HasFocus() && IsEnabled() )
|
|
{
|
|
int x0, y0, x1, y1;
|
|
x0 = 3, y0 = 3, x1 = buttonWide - 4 , y1 = buttonTall - 2;
|
|
DrawFocusBorder(x0, y0, x1, y1);
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------------
|
|
void CCareerButton::SetArmedBorder(IBorder *border)
|
|
{
|
|
m_armedBorder = border;
|
|
InvalidateLayout(false);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------------
|
|
IBorder* CCareerButton::GetBorder(bool depressed, bool armed, bool selected, bool keyfocus)
|
|
{
|
|
if ( /*_buttonBorderEnabled &&*/ armed && !depressed && IsEnabled() )
|
|
{
|
|
return m_armedBorder;
|
|
}
|
|
|
|
return BaseClass::GetBorder( depressed, armed, selected, keyfocus );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------------
|
|
void CCareerButton::ApplySchemeSettings( vgui::IScheme *pScheme )
|
|
{
|
|
BaseClass::ApplySchemeSettings( pScheme );
|
|
|
|
SetDefaultBorder( pScheme->GetBorder("CareerButtonBorder") );
|
|
SetDepressedBorder( pScheme->GetBorder("CareerButtonDepressedBorder") );
|
|
m_armedBorder = pScheme->GetBorder("CareerButtonArmedBorder");
|
|
|
|
m_textNormalColor = pScheme->GetColor( "Label.TextBrightColor", Color(255, 255, 255, 255) );
|
|
m_textDisabledColor = pScheme->GetColor( "Label.DisabledFgColor2", Color(128, 128, 128, 255) );
|
|
m_textImage->SetColor( m_textNormalColor );
|
|
if ( m_image )
|
|
{
|
|
m_image->SetColor( GetFgColor() );
|
|
}
|
|
|
|
m_textImage->SetFont( pScheme->GetFont( "Default", IsProportional() ) );
|
|
|
|
m_textPad = atoi(pScheme->GetResourceString( "CareerButtonTextPad" ));
|
|
m_imagePad = atoi(pScheme->GetResourceString( "CareerButtonImagePad" ));
|
|
if (IsProportional())
|
|
{
|
|
m_textPad = scheme()->GetProportionalScaledValueEx( GetScheme(),m_textPad);
|
|
m_imagePad = scheme()->GetProportionalScaledValueEx( GetScheme(),m_imagePad);
|
|
}
|
|
|
|
const int BufLen = 128;
|
|
char buf[BufLen];
|
|
GetText(buf, BufLen);
|
|
m_textImage->SetText(buf);
|
|
m_textImage->ResizeImageToContent();
|
|
|
|
int buttonWide, buttonTall;
|
|
GetSize(buttonWide, buttonTall);
|
|
|
|
int imageWide, imageTall;
|
|
if ( m_image )
|
|
{
|
|
m_image->GetSize(imageWide, imageTall);
|
|
}
|
|
else
|
|
{
|
|
imageWide = imageTall = 0;
|
|
}
|
|
|
|
int textSpace = buttonWide - imageWide - m_imagePad - 2*m_textPad;
|
|
|
|
int textWide, textTall;
|
|
m_textImage->GetContentSize(textWide, textTall);
|
|
if (textSpace < textWide)
|
|
m_textImage->SetSize(textSpace, textTall);
|
|
|
|
Color bgColor = pScheme->GetColor( "CareerButtonBG", Color(0, 0, 0, 0) );
|
|
SetDefaultColor( bgColor, bgColor );
|
|
SetArmedColor( bgColor, bgColor );
|
|
SetDepressedColor( bgColor, bgColor );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------------------
|