Use 2 different button for CW and CCW

This commit is contained in:
iota97 committed 2020-03-23 09:24:36 +01:00
1 parent 45da319ce7
commit e7bcf9a4c2
11 files changed
+61 -23

No files matched your search

+2 -1
View File
@@ -700,7 +700,8 @@ const KeyMap_IntStrPair psp_button_names[] = {
{VIRTKEY_TEXTURE_REPLACE, "Texture Replacement"},
{VIRTKEY_SCREENSHOT, "Screenshot"},
{VIRTKEY_MUTE_TOGGLE, "Mute toggle"},
{VIRTKEY_ANALOG_ROTATE, "Auto Rotate Analog"},
{VIRTKEY_ANALOG_ROTATE_CW, "Rotate Analog (CW)"},
{VIRTKEY_ANALOG_ROTATE_CCW, "Rotate Analog (CCW)"},
{CTRL_HOME, "Home"},
{CTRL_HOLD, "Hold"},
+2 -1
View File
@@ -59,7 +59,8 @@ enum {
VIRTKEY_SCREENSHOT = 0x4000001B,
VIRTKEY_MUTE_TOGGLE = 0x4000001C,
VIRTKEY_OPENCHAT = 0x4000001D,
VIRTKEY_ANALOG_ROTATE = 0x4000001E,
VIRTKEY_ANALOG_ROTATE_CW = 0x4000001E,
VIRTKEY_ANALOG_ROTATE_CCW = 0x4000001F,
VIRTKEY_LAST,
VIRTKEY_COUNT = VIRTKEY_LAST - VIRTKEY_FIRST
};
+4 -2
View File
@@ -895,7 +895,8 @@ static ConfigSetting controlSettings[] = {
ConfigSetting("Speed1KeyX", "Speed1KeyY", "Speed1KeyScale", "ShowSpeed1Key", &g_Config.touchSpeed1Key, defaultTouchPosHide, true, true),
ConfigSetting("Speed2KeyX", "Speed2KeyY", "Speed2KeyScale", "ShowSpeed2Key", &g_Config.touchSpeed2Key, defaultTouchPosHide, true, true),
ConfigSetting("RapidFireKeyX", "RapidFireKeyY", "RapidFireKeyScale", "ShowRapidFireKey", &g_Config.touchRapidFireKey, defaultTouchPosHide, true, true),
ConfigSetting("AnalogRotationKeyX", "AnalogRotationKeyY", "AnalogRotationKeyScale", "ShowAnalogRotationKey", &g_Config.touchAnalogRotationKey, defaultTouchPosHide, true, true),
ConfigSetting("AnalogRotationCWKeyX", "AnalogRotationKeyCWY", "AnalogRotationKeyCWScale", "ShowAnalogRotationCWKey", &g_Config.touchAnalogRotationCWKey, defaultTouchPosHide, true, true),
ConfigSetting("AnalogRotationCCWKeyX", "AnalogRotationKeyCCWY", "AnalogRotationKeyCCWScale", "ShowAnalogRotationCCWKey", &g_Config.touchAnalogRotationCCWKey, defaultTouchPosHide, true, true),
#ifdef _WIN32
ConfigSetting("DInputAnalogDeadzone", &g_Config.fDInputAnalogDeadzone, 0.1f, true, true),
@@ -1631,7 +1632,8 @@ void Config::ResetControlLayout() {
reset(g_Config.touchSpeed1Key);
reset(g_Config.touchSpeed2Key);
reset(g_Config.touchRapidFireKey);
reset(g_Config.touchAnalogRotationKey);
reset(g_Config.touchAnalogRotationCWKey);
reset(g_Config.touchAnalogRotationCCWKey);
}
void Config::GetReportingInfo(UrlEncoder &data) {
+2 -1
View File
@@ -327,7 +327,8 @@ public:
ConfigTouchPos touchSpeed1Key;
ConfigTouchPos touchSpeed2Key;
ConfigTouchPos touchRapidFireKey;
ConfigTouchPos touchAnalogRotationKey;
ConfigTouchPos touchAnalogRotationCWKey;
ConfigTouchPos touchAnalogRotationCCWKey;
// Controls Visibility
bool bShowTouchControls;
+20 -5
View File
@@ -665,8 +665,13 @@ void EmuScreen::onVKeyDown(int virtualKeyCode) {
case VIRTKEY_MUTE_TOGGLE:
g_Config.bEnableSound = !g_Config.bEnableSound;
break;
case VIRTKEY_ANALOG_ROTATE:
autoRotatingAnalog_ = true;
case VIRTKEY_ANALOG_ROTATE_CW:
autoRotatingAnalogCW_ = true;
autoRotatingAnalogCCW_ = false;
break;
case VIRTKEY_ANALOG_ROTATE_CCW:
autoRotatingAnalogCW_ = false;
autoRotatingAnalogCCW_ = true;
break;
}
}
@@ -721,8 +726,14 @@ void EmuScreen::onVKeyUp(int virtualKeyCode) {
__CtrlSetRapidFire(false);
break;
case VIRTKEY_ANALOG_ROTATE:
autoRotatingAnalog_ = false;
case VIRTKEY_ANALOG_ROTATE_CW:
autoRotatingAnalogCW_ = false;
__CtrlSetAnalogX(0.0f, 0);
__CtrlSetAnalogY(0.0f, 0);
break;
case VIRTKEY_ANALOG_ROTATE_CCW:
autoRotatingAnalogCCW_ = false;
__CtrlSetAnalogX(0.0f, 0);
__CtrlSetAnalogY(0.0f, 0);
break;
@@ -1172,7 +1183,11 @@ void EmuScreen::update() {
if (invalid_)
return;
if (autoRotatingAnalog_) {
if (autoRotatingAnalogCW_) {
const float now = time_now_d();
__CtrlSetAnalogX(cos(now*-g_Config.fAnalogAutoRotSpeed), 0);
__CtrlSetAnalogY(sin(now*-g_Config.fAnalogAutoRotSpeed), 0);
} else if (autoRotatingAnalogCCW_) {
const float now = time_now_d();
__CtrlSetAnalogX(cos(now*g_Config.fAnalogAutoRotSpeed), 0);
__CtrlSetAnalogY(sin(now*g_Config.fAnalogAutoRotSpeed), 0);
+2 -1
View File
@@ -106,5 +106,6 @@ private:
UI::TextView *loadingTextView_ = nullptr;
UI::Button *cardboardDisableButton_ = nullptr;
bool autoRotatingAnalog_ = false;
bool autoRotatingAnalogCW_ = false;
bool autoRotatingAnalogCCW_ = false;
};
+1 -1
View File
@@ -641,7 +641,7 @@ void GameSettingsScreen::CreateViews() {
#else
controlsSettings->Add(new PopupSliderChoiceFloat(&g_Config.fXInputAnalogSensitivity, 0.0f, 10.0f, co->T("Analog Axis Sensitivity", "Analog Axis Sensitivity"), 0.01f, screenManager(), "x"));
#endif
controlsSettings->Add(new PopupSliderChoiceFloat(&g_Config.fAnalogAutoRotSpeed, -25.0f, 25.0f, co->T("Analog auto-rotation speed"), 1.0f, screenManager()));
controlsSettings->Add(new PopupSliderChoiceFloat(&g_Config.fAnalogAutoRotSpeed, 0.0f, 25.0f, co->T("Analog auto-rotation speed"), 1.0f, screenManager()));
controlsSettings->Add(new ItemHeader(co->T("Keyboard", "Keyboard Control Settings")));
#if defined(USING_WIN_UI)
+13 -5
View File
@@ -201,8 +201,9 @@ void AnalogRotationButton::Update() {
lastFrameTime_ = now;
if (autoRotating_) {
__CtrlSetAnalogX(cos(now*g_Config.fAnalogAutoRotSpeed), 0);
__CtrlSetAnalogY(sin(now*g_Config.fAnalogAutoRotSpeed), 0);
float speed = clockWise_ ? -g_Config.fAnalogAutoRotSpeed : g_Config.fAnalogAutoRotSpeed;
__CtrlSetAnalogX(cos(now*speed), 0);
__CtrlSetAnalogY(sin(now*speed), 0);
}
}
@@ -560,7 +561,8 @@ void InitPadLayout(float xres, float yres, float globalScale) {
initTouchPos(g_Config.touchSpeed1Key, unthrottle_key_X, unthrottle_key_Y - 60 * scale);
initTouchPos(g_Config.touchSpeed2Key, unthrottle_key_X + bottom_key_spacing * scale, unthrottle_key_Y - 60 * scale);
initTouchPos(g_Config.touchRapidFireKey, unthrottle_key_X + 2*bottom_key_spacing * scale, unthrottle_key_Y - 60 * scale);
initTouchPos(g_Config.touchAnalogRotationKey, unthrottle_key_X, unthrottle_key_Y - 120 * scale);
initTouchPos(g_Config.touchAnalogRotationCCWKey, unthrottle_key_X, unthrottle_key_Y - 120 * scale);
initTouchPos(g_Config.touchAnalogRotationCWKey, unthrottle_key_X + bottom_key_spacing * scale, unthrottle_key_Y - 120 * scale);
// L and R------------------------------------------------------------
// Put them above the analog stick / above the buttons to the right.
@@ -689,8 +691,14 @@ UI::ViewGroup *CreatePadLayout(float xres, float yres, bool *pause) {
rapidFire->SetAngle(90.0f, 180.0f);
}
if (g_Config.touchAnalogRotationKey.show) {
auto analogRotation = root->Add(new AnalogRotationButton(rectImage, ImageID("I_RECT"), ImageID("I_R"), g_Config.touchAnalogRotationKey.scale, buttonLayoutParams(g_Config.touchAnalogRotationKey)));
if (g_Config.touchAnalogRotationCWKey.show) {
auto analogRotationCC = root->Add(new AnalogRotationButton(true, rectImage, ImageID("I_RECT"), ImageID("I_ARROW"), g_Config.touchAnalogRotationCWKey.scale, buttonLayoutParams(g_Config.touchAnalogRotationCWKey)));
analogRotationCC->SetAngle(190.0f, 180.0f);
}
if (g_Config.touchAnalogRotationCCWKey.show) {
auto analogRotationCCW = root->Add(new AnalogRotationButton(false, rectImage, ImageID("I_RECT"), ImageID("I_ARROW"), g_Config.touchAnalogRotationCCWKey.scale, buttonLayoutParams(g_Config.touchAnalogRotationCCWKey)));
analogRotationCCW->SetAngle(350.0f, 180.0f);
}
FPSLimitButton *speed1 = addFPSLimitButton(FPSLimit::CUSTOM1, rectImage, ImageID("I_RECT"), ImageID("I_ARROW"), g_Config.touchSpeed1Key);
+3 -2
View File
@@ -108,14 +108,15 @@ public:
class AnalogRotationButton : public MultiTouchButton {
public:
AnalogRotationButton(ImageID bgImg, ImageID bgDownImg, ImageID img, float scale, UI::LayoutParams *layoutParams)
: MultiTouchButton(bgImg, bgDownImg, img, scale, layoutParams) {
AnalogRotationButton(bool clockWise, ImageID bgImg, ImageID bgDownImg, ImageID img, float scale, UI::LayoutParams *layoutParams)
: MultiTouchButton(bgImg, bgDownImg, img, scale, layoutParams), clockWise_(clockWise) {
}
void Touch(const TouchInput &input) override;
void Update() override;
private:
bool autoRotating_ = false;
bool clockWise_;
};
class PSPButton : public MultiTouchButton {
+10 -3
View File
@@ -454,9 +454,16 @@ void TouchControlLayoutScreen::CreateViews() {
controls_.push_back(rapidFire);
}
if (g_Config.touchAnalogRotationKey.show) {
DragDropButton *analogRotation = new DragDropButton(g_Config.touchAnalogRotationKey, rectImage, ImageID("I_R"));
controls_.push_back(analogRotation);
if (g_Config.touchAnalogRotationCWKey.show) {
DragDropButton *analogRotationCW = new DragDropButton(g_Config.touchAnalogRotationCWKey, rectImage, ImageID("I_ARROW"));
analogRotationCW->SetAngle(190.0f, 180.0f);
controls_.push_back(analogRotationCW);
}
if (g_Config.touchAnalogRotationCCWKey.show) {
DragDropButton *analogRotationCCW = new DragDropButton(g_Config.touchAnalogRotationCCWKey, rectImage, ImageID("I_ARROW"));
analogRotationCCW->SetAngle(350.0f, 180.0f);
controls_.push_back(analogRotationCCW);
}
if (g_Config.touchLKey.show) {
+2 -1
View File
@@ -91,7 +91,8 @@ void TouchControlVisibilityScreen::CreateViews() {
toggles_.push_back({ "Alt speed 1", &g_Config.touchSpeed1Key.show, ImageID::invalid() });
toggles_.push_back({ "Alt speed 2", &g_Config.touchSpeed2Key.show, ImageID::invalid() });
toggles_.push_back({ "RapidFire", &g_Config.touchRapidFireKey.show, ImageID::invalid() });
toggles_.push_back({ "Auto Analog Rotation", &g_Config.touchAnalogRotationKey.show, ImageID::invalid() });
toggles_.push_back({ "Auto Analog Rotation (CW)", &g_Config.touchAnalogRotationCWKey.show, ImageID::invalid() });
toggles_.push_back({ "Auto Analog Rotation (CCW)", &g_Config.touchAnalogRotationCCWKey.show, ImageID::invalid() });
auto mc = GetI18NCategory("MappableControls");