📄 menumouse.cpp
字号:
// MenuMouse.cpp: implementation of the CMenuMouse class.
//
//////////////////////////////////////////////////////////////////////
#include "MenuBase.h"
#include "MainMenus.h"
#include "MenuCommands.h"
#include "MenuMouse.h"
#include "BloodClientShell.h"
#include "ClientRes.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMenuMouse::CMenuMouse()
{
m_nMouseSensitivity=300;
m_nInputRate=30;
m_pInputRateCtrl=DNULL;
m_bInvertYAxis=DFALSE;
m_bMouseLook=DTRUE;
m_bLookSpring=DFALSE;
m_bUseWheel=DFALSE;
m_bOrigUseWheel=m_bUseWheel;
}
CMenuMouse::~CMenuMouse()
{
}
// Build the menu
void CMenuMouse::Build()
{
// Make sure to call the base class
CMenuBase::Build();
CreateTitle("interface\\mainmenus\\options.pcx", IDS_MENU_TITLE_OPTIONS, m_pMainMenus->GetTitlePos());
SetOptionPos(m_pMainMenus->GetOptionsPos());
SetItemSpacing(5);
SetScrollWrap(DFALSE);
// Load the mouse settings
LoadMouseSettings();
// Add the controls
CLTGUISliderCtrl *pCtrl=AddSliderOption(IDS_MENU_MOUSE_SENSITIVITY, m_pMainMenus->GetSmallFont(), 100, m_pMainMenus->GetSurfaceSliderBar(), m_pMainMenus->GetSurfaceSliderTab(), &m_nMouseSensitivity);
pCtrl->SetSliderRange(100, 1500);
pCtrl->SetSliderIncrement(20);
m_pInputRateCtrl=AddSliderOption(IDS_MENU_MOUSE_INPUTRATE, m_pMainMenus->GetSmallFont(), 100, m_pMainMenus->GetSurfaceSliderBar(), m_pMainMenus->GetSurfaceSliderTab(), &m_nInputRate);
m_pInputRateCtrl->SetSliderIncrement(2);
m_pInputRateCtrl->SetSliderRange(0, 40);
AddOnOffOption(IDS_MENU_MOUSE_INVERT_YAXIS, m_pMainMenus->GetSmallFont(), 100, &m_bInvertYAxis);
AddOnOffOption(IDS_MENU_MOUSE_MOUSELOOK, m_pMainMenus->GetSmallFont(), 100, &m_bMouseLook);
AddOnOffOption(IDS_MENU_MOUSE_LOOKSPRING, m_pMainMenus->GetSmallFont(), 100, &m_bLookSpring);
AddOnOffOption(IDS_MENU_MOUSE_USEWHEEL, m_pMainMenus->GetSmallFont(), 100, &m_bUseWheel);
UpdateData(DFALSE);
SetInputRateText();
}
// Load the mouse settings
void CMenuMouse::LoadMouseSettings()
{
m_nMouseSensitivity=(int)(g_pBloodClientShell->GetMouseSensitivity()*100.0f);
m_bInvertYAxis=g_pBloodClientShell->IsMouseInvertYAxis();
if (!m_pClientDE)
{
return;
}
// Load the InputRate
HCONSOLEVAR hVar=m_pClientDE->GetConsoleVar("InputRate");
if (hVar)
{
m_nInputRate=(int)m_pClientDE->GetVarValueFloat(hVar);
}
//m_pClientDE->CPrint("Sensitivity = %d; inputrate = %d", m_nMouseSensitivity, m_nInputRate);
// Load mouselook
hVar=m_pClientDE->GetConsoleVar("MouseLook");
if (hVar)
{
m_bMouseLook=((int)m_pClientDE->GetVarValueFloat(hVar)) ? DTRUE : DFALSE;
}
//m_pClientDE->CPrint("MouseLook = %d", m_bMouseLook);
// Load lookspring
hVar=m_pClientDE->GetConsoleVar("LookSpring");
if (hVar)
{
m_bLookSpring=((int)m_pClientDE->GetVarValueFloat(hVar)) ? DTRUE : DFALSE;
}
//m_pClientDE->CPrint("LookSpring = %d", m_bLookSpring);
// Load usewheel
hVar=m_pClientDE->GetConsoleVar("UseWheel");
if (hVar)
{
m_bUseWheel=((int)m_pClientDE->GetVarValueFloat(hVar)) ? DTRUE : DFALSE;
m_bOrigUseWheel = m_bUseWheel;
}
//m_pClientDE->CPrint("UseWheel = %d", m_bUseWheel);
// Load mouse axis
hVar=m_pClientDE->GetConsoleVar("MouseInvertYAxis");
if (hVar)
{
m_bInvertYAxis=((int)m_pClientDE->GetVarValueFloat(hVar)) ? DTRUE : DFALSE;
}
//m_pClientDE->CPrint("MouseInvertYAxis = %d", m_bInvertYAxis);
}
// Save the mouse settings
void CMenuMouse::SaveMouseSettings()
{
char strConsole[256];
//m_pClientDE->CPrint("Sensitivity = %d; inputrate = %d", m_nMouseSensitivity, m_nInputRate);
sprintf(strConsole, "+MouseSensitivity %f", (float)m_nMouseSensitivity/100.0f);
m_pClientDE->RunConsoleString(strConsole);
sprintf(strConsole, "+InputRate %f", (float)m_nInputRate);
m_pClientDE->RunConsoleString(strConsole);
sprintf(strConsole, "+MouseInvertYAxis %f", (float)(m_bInvertYAxis ? 1 : 0));
m_pClientDE->RunConsoleString(strConsole);
sprintf(strConsole, "+MouseLook %f", (float)(m_bMouseLook ? 1 : 0));
m_pClientDE->RunConsoleString(strConsole);
sprintf(strConsole, "+LookSpring %f", (float)(m_bLookSpring ? 1 : 0));
m_pClientDE->RunConsoleString(strConsole);
sprintf(strConsole, "+UseWheel %f", (float)(m_bUseWheel ? 1 : 0));
m_pClientDE->RunConsoleString(strConsole);
// save bindings for the wheel setting
if (m_bOrigUseWheel != m_bUseWheel)
{
if (m_bUseWheel)
{
sprintf(strConsole, "rangebind \"##Mouse\" \"Wheel\" 0.1 10000.0 \"NextWeapon\" -0.1 -10000.0 \"PrevWeapon\"");
m_pClientDE->RunConsoleString(strConsole);
}
else
{
sprintf(strConsole, "rangebind \"##Mouse\" \"Wheel\" 0 0");
m_pClientDE->RunConsoleString(strConsole);
}
}
}
void CMenuMouse::OnFocus(DBOOL bFocus)
{
if (!bFocus)
{
UpdateData(DTRUE);
g_pBloodClientShell->SetMouseSensitivity((float)m_nMouseSensitivity/100.0f);
g_pBloodClientShell->SetMouseInvertYAxis(m_bInvertYAxis);
g_pBloodClientShell->SetMouseLook(m_bMouseLook);
g_pBloodClientShell->SetLookSpring(m_bLookSpring);
SaveMouseSettings();
}
}
// Sets the inputrate text based on the current input rate
void CMenuMouse::SetInputRateText()
{
UpdateData();
if (!m_pInputRateCtrl)
{
return;
}
if (m_nInputRate <= 16)
{
m_pInputRateCtrl->SetText(IDS_MENU_MOUSE_INPUT_RESPONSIVE);
}
else if (m_nInputRate <= 26)
{
m_pInputRateCtrl->SetText(IDS_MENU_MOUSE_INPUT_NORMAL);
}
else if (m_nInputRate <= 40)
{
m_pInputRateCtrl->SetText(IDS_MENU_MOUSE_INPUT_SMOOTH);
}
}
// Override left control
void CMenuMouse::OnLeft()
{
CMenuBase::OnLeft();
if (m_listOption.GetControl(m_listOption.GetSelectedItem()) == m_pInputRateCtrl)
{
SetInputRateText();
}
}
// Override right control
void CMenuMouse::OnRight()
{
CMenuBase::OnRight();
if (m_listOption.GetControl(m_listOption.GetSelectedItem()) == m_pInputRateCtrl)
{
SetInputRateText();
}
}
DDWORD CMenuMouse::OnCommand(DDWORD dwCommand, DDWORD dwParam1, DDWORD dwParam2)
{
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -