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.
220 lines
7.6 KiB
220 lines
7.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
#include "OptionsSubTouch.h" |
|
//#include "CommandCheckButton.h" |
|
#include "KeyToggleCheckButton.h" |
|
#include "CvarNegateCheckButton.h" |
|
#include "CvarToggleCheckButton.h" |
|
#include "cvarslider.h" |
|
|
|
#include "EngineInterface.h" |
|
|
|
#include <KeyValues.h> |
|
#include <vgui/IScheme.h> |
|
#include "tier1/convar.h" |
|
#include <stdio.h> |
|
#include <vgui_controls/TextEntry.h> |
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include <tier0/memdbgon.h> |
|
|
|
using namespace vgui; |
|
|
|
COptionsSubTouch::COptionsSubTouch(vgui::Panel *parent) : PropertyPage(parent, NULL) |
|
{ |
|
m_pTouchEnableCheckBox = new CCvarToggleCheckButton(this, |
|
"EnableTouch", |
|
"Enable touch", |
|
"touch_enable"); |
|
|
|
m_pTouchDrawCheckBox = new CCvarToggleCheckButton(this, |
|
"DrawTouch", |
|
"Draw touch", |
|
"touch_draw"); |
|
|
|
m_pReverseTouchCheckBox = new CCvarToggleCheckButton( |
|
this, |
|
"ReverseTouch", |
|
"Reverse touch", |
|
"touch_reverse" ); |
|
|
|
m_pTouchFilterCheckBox = new CCvarToggleCheckButton( |
|
this, |
|
"TouchFilter", |
|
"Touch filter", |
|
"touch_filter" ); |
|
|
|
m_pTouchAccelerationCheckBox = new CCvarToggleCheckButton( |
|
this, |
|
"TouchAccelerationCheckbox", |
|
"Touch acceleration", |
|
"touch_enable_accel" ); |
|
|
|
m_pTouchSensitivitySlider = new CCvarSlider( this, "Slider", "Touch sensitivity", |
|
0.1f, 6.0f, "touch_sensitivity", true ); |
|
|
|
m_pTouchSensitivityLabel = new TextEntry(this, "SensitivityLabel"); |
|
m_pTouchSensitivityLabel->AddActionSignalTarget(this); |
|
|
|
m_pTouchAccelExponentSlider = new CCvarSlider( this, "TouchAccelerationSlider", "Touch acceleration", |
|
1.0f, 1.5f, "touch_accel", true ); |
|
|
|
m_pTouchAccelExponentLabel = new TextEntry(this, "TouchAccelerationLabel"); |
|
m_pTouchAccelExponentLabel->AddActionSignalTarget(this); |
|
|
|
m_pTouchYawSensitivitySlider = new CCvarSlider( this, "TouchYawSlider", "#GameUI_JoystickYawSensitivity", |
|
50.f, 300.f, "touch_yaw", true ); |
|
m_pTouchYawSensitivityPreLabel = new Label(this, "TouchYawSensitivityPreLabel", "#GameUI_JoystickLookSpeedYaw" ); |
|
m_pTouchYawSensitivityLabel = new TextEntry(this, "TouchYawSensitivityLabel"); |
|
m_pTouchYawSensitivityLabel->AddActionSignalTarget(this); |
|
|
|
m_pTouchPitchSensitivitySlider = new CCvarSlider( this, "TouchPitchSlider", "#GameUI_JoystickPitchSensitivity", |
|
50.f, 300.f, "touch_pitch", true ); |
|
m_pTouchPitchSensitivityPreLabel = new Label(this, "TouchPitchSensitivityPreLabel", "#GameUI_JoystickLookSpeedPitch" ); |
|
m_pTouchPitchSensitivityLabel = new TextEntry(this, "TouchPitchSensitivityLabel"); |
|
m_pTouchPitchSensitivityLabel->AddActionSignalTarget(this); |
|
|
|
LoadControlSettings("Resource\\OptionsSubTouch.res"); |
|
|
|
UpdateLabel(m_pTouchSensitivitySlider, m_pTouchSensitivityLabel); |
|
UpdateLabel(m_pTouchAccelExponentSlider, m_pTouchAccelExponentLabel); |
|
UpdateLabel(m_pTouchYawSensitivitySlider, m_pTouchYawSensitivityLabel); |
|
UpdateLabel(m_pTouchPitchSensitivitySlider, m_pTouchPitchSensitivityLabel); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
COptionsSubTouch::~COptionsSubTouch() |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void COptionsSubTouch::OnResetData() |
|
{ |
|
m_pReverseTouchCheckBox->Reset(); |
|
m_pTouchFilterCheckBox->Reset(); |
|
m_pTouchSensitivitySlider->Reset(); |
|
m_pTouchAccelExponentSlider->Reset(); |
|
m_pTouchYawSensitivitySlider->Reset(); |
|
m_pTouchPitchSensitivitySlider->Reset(); |
|
m_pTouchAccelerationCheckBox->Reset(); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void COptionsSubTouch::OnApplyChanges() |
|
{ |
|
m_pReverseTouchCheckBox->ApplyChanges(); |
|
m_pTouchFilterCheckBox->ApplyChanges(); |
|
m_pTouchSensitivitySlider->ApplyChanges(); |
|
m_pTouchAccelExponentSlider->ApplyChanges(); |
|
m_pTouchYawSensitivitySlider->ApplyChanges(); |
|
m_pTouchPitchSensitivitySlider->ApplyChanges(); |
|
m_pTouchEnableCheckBox->ApplyChanges(); |
|
m_pTouchDrawCheckBox->ApplyChanges(); |
|
m_pTouchAccelerationCheckBox->ApplyChanges(); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: sets background color & border |
|
//----------------------------------------------------------------------------- |
|
void COptionsSubTouch::ApplySchemeSettings(IScheme *pScheme) |
|
{ |
|
BaseClass::ApplySchemeSettings(pScheme); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void COptionsSubTouch::OnControlModified(Panel *panel) |
|
{ |
|
PostActionSignal(new KeyValues("ApplyButtonEnable")); |
|
|
|
// the HasBeenModified() check is so that if the value is outside of the range of the |
|
// slider, it won't use the slider to determine the display value but leave the |
|
// real value that we determined in the constructor |
|
if (panel == m_pTouchSensitivitySlider && m_pTouchSensitivitySlider->HasBeenModified()) |
|
UpdateLabel( m_pTouchSensitivitySlider, m_pTouchSensitivityLabel ); |
|
else if (panel == m_pTouchAccelExponentSlider && m_pTouchAccelExponentSlider->HasBeenModified()) |
|
UpdateLabel( m_pTouchAccelExponentSlider, m_pTouchAccelExponentLabel ); |
|
else if (panel == m_pTouchYawSensitivitySlider && m_pTouchYawSensitivitySlider->HasBeenModified()) |
|
UpdateLabel( m_pTouchYawSensitivitySlider, m_pTouchYawSensitivityLabel ); |
|
else if (panel == m_pTouchPitchSensitivitySlider && m_pTouchPitchSensitivitySlider->HasBeenModified()) |
|
UpdateLabel( m_pTouchPitchSensitivitySlider, m_pTouchPitchSensitivityLabel ); |
|
else if (panel == m_pTouchAccelerationCheckBox) |
|
{ |
|
m_pTouchAccelExponentSlider->SetEnabled(m_pTouchAccelerationCheckBox->IsSelected()); |
|
m_pTouchAccelExponentLabel->SetEnabled(m_pTouchAccelerationCheckBox->IsSelected()); |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void COptionsSubTouch::OnTextChanged(Panel *panel) |
|
{ |
|
if ( panel == m_pTouchSensitivityLabel ) |
|
{ |
|
char buf[64]; |
|
m_pTouchSensitivityLabel->GetText(buf, 64); |
|
|
|
float fValue; |
|
int numParsed = sscanf(buf, "%f", &fValue); |
|
if ( ( numParsed == 1 ) && ( fValue >= 0.0f ) ) |
|
{ |
|
m_pTouchSensitivitySlider->SetSliderValue(fValue); |
|
PostActionSignal(new KeyValues("ApplyButtonEnable")); |
|
} |
|
} |
|
else if ( panel == m_pTouchAccelExponentLabel ) |
|
{ |
|
char buf[64]; |
|
m_pTouchAccelExponentLabel->GetText(buf, 64); |
|
|
|
float fValue = (float) atof(buf); |
|
if (fValue >= 1.0) |
|
{ |
|
m_pTouchAccelExponentSlider->SetSliderValue(fValue); |
|
PostActionSignal(new KeyValues("ApplyButtonEnable")); |
|
} |
|
} |
|
else if( panel == m_pTouchPitchSensitivityLabel ) |
|
{ |
|
char buf[64]; |
|
m_pTouchPitchSensitivityLabel->GetText(buf, 64); |
|
|
|
float fValue = (float) atof(buf); |
|
if (fValue >= 1.0) |
|
{ |
|
m_pTouchPitchSensitivitySlider->SetSliderValue(fValue); |
|
PostActionSignal(new KeyValues("ApplyButtonEnable")); |
|
} |
|
} |
|
else if( panel == m_pTouchYawSensitivityLabel ) |
|
{ |
|
char buf[64]; |
|
m_pTouchYawSensitivityLabel->GetText(buf, 64); |
|
|
|
float fValue = (float) atof(buf); |
|
if (fValue >= 1.0) |
|
{ |
|
m_pTouchYawSensitivitySlider->SetSliderValue(fValue); |
|
PostActionSignal(new KeyValues("ApplyButtonEnable")); |
|
} |
|
} |
|
} |
|
|
|
void COptionsSubTouch::UpdateLabel(CCvarSlider *slider, vgui::TextEntry *label) |
|
{ |
|
char buf[64]; |
|
Q_snprintf(buf, sizeof( buf ), " %.2f", slider->GetSliderValue()); |
|
label->SetText(buf); |
|
}
|
|
|