mirror of
https://github.com/wiiu-env/ScreenshotWUPS.git
synced 2025-02-18 04:26:20 +01:00
Optimise the WUPSConfigItemButtonCombo implementation
This commit is contained in:
parent
fedf625bdf
commit
5559217d3a
@ -1,4 +1,5 @@
|
|||||||
#include "WUPSConfigItemButtonCombo.h"
|
#include "WUPSConfigItemButtonCombo.h"
|
||||||
|
#include "StringTools.h"
|
||||||
#include "utils/input.h"
|
#include "utils/input.h"
|
||||||
#include <coreinit/debug.h>
|
#include <coreinit/debug.h>
|
||||||
#include <coreinit/thread.h>
|
#include <coreinit/thread.h>
|
||||||
@ -10,7 +11,7 @@
|
|||||||
#include <vpad/input.h>
|
#include <vpad/input.h>
|
||||||
#include <wups.h>
|
#include <wups.h>
|
||||||
|
|
||||||
std::string getButtonChar(VPADButtons value) {
|
const char *getButtonChar(VPADButtons value) {
|
||||||
std::string combo;
|
std::string combo;
|
||||||
if (value & VPAD_BUTTON_A) {
|
if (value & VPAD_BUTTON_A) {
|
||||||
return "\ue000";
|
return "\ue000";
|
||||||
@ -63,66 +64,28 @@ std::string getButtonChar(VPADButtons value) {
|
|||||||
if (value & VPAD_BUTTON_TV) {
|
if (value & VPAD_BUTTON_TV) {
|
||||||
return "\ue089";
|
return "\ue089";
|
||||||
}
|
}
|
||||||
return "?";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string getComboAsString(uint32_t value) {
|
std::string getComboAsString(uint32_t value) {
|
||||||
std::string combo;
|
char comboString[60];
|
||||||
if (value & VPAD_BUTTON_A) {
|
memset(comboString, 0, sizeof(comboString));
|
||||||
combo += getButtonChar(VPAD_BUTTON_A).append("+");
|
|
||||||
|
for (uint32_t i = 0; i < 32; i++) {
|
||||||
|
uint32_t bitMask = 1 << i;
|
||||||
|
if (value & bitMask) {
|
||||||
|
auto val = getButtonChar(static_cast<VPADButtons>(bitMask));
|
||||||
|
if (val[0] != '\0') {
|
||||||
|
strcat(comboString, val);
|
||||||
|
strcat(comboString, "+");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (value & VPAD_BUTTON_B) {
|
std::string res(comboString);
|
||||||
combo += getButtonChar(VPAD_BUTTON_B).append("+");
|
if (res.ends_with("+")) {
|
||||||
|
res.pop_back();
|
||||||
}
|
}
|
||||||
if (value & VPAD_BUTTON_X) {
|
return res;
|
||||||
combo += getButtonChar(VPAD_BUTTON_X).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_Y) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_Y).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_L) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_L).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_R) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_R).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_ZL) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_ZL).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_ZR) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_ZR).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_UP) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_UP).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_DOWN) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_DOWN).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_LEFT) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_LEFT).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_RIGHT) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_RIGHT).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_STICK_L) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_STICK_L).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_STICK_R) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_STICK_R).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_PLUS) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_PLUS).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_MINUS) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_MINUS).append("+");
|
|
||||||
}
|
|
||||||
if (value & VPAD_BUTTON_TV) {
|
|
||||||
combo += getButtonChar(VPAD_BUTTON_TV).append("+");
|
|
||||||
}
|
|
||||||
if (combo.ends_with("+")) {
|
|
||||||
combo.pop_back();
|
|
||||||
}
|
|
||||||
return combo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t WUPSConfigItemButtonCombo_getCurrentValueDisplay(void *context, char *out_buf, int32_t out_size) {
|
int32_t WUPSConfigItemButtonCombo_getCurrentValueDisplay(void *context, char *out_buf, int32_t out_size) {
|
||||||
@ -216,7 +179,7 @@ int32_t WUPSConfigItemButtonCombo_getCurrentValueSelectedDisplay(void *context,
|
|||||||
if (item->state == BUTTON_COMBO_STATE_PREPARE_FOR_HOLD || item->state == BUTTON_COMBO_STATE_WAIT_FOR_HOLD) {
|
if (item->state == BUTTON_COMBO_STATE_PREPARE_FOR_HOLD || item->state == BUTTON_COMBO_STATE_WAIT_FOR_HOLD) {
|
||||||
if (item->state == BUTTON_COMBO_STATE_PREPARE_FOR_HOLD) {
|
if (item->state == BUTTON_COMBO_STATE_PREPARE_FOR_HOLD) {
|
||||||
item->state = BUTTON_COMBO_STATE_WAIT_FOR_HOLD;
|
item->state = BUTTON_COMBO_STATE_WAIT_FOR_HOLD;
|
||||||
snprintf(out_buf, out_size, "<Hold new combo for %dms; hold %s to abort>", item->holdDurationInMs, getButtonChar(item->abortButton).c_str());
|
snprintf(out_buf, out_size, "<Hold new combo for %dms; hold %s to abort>", item->holdDurationInMs, getButtonChar(item->abortButton));
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
checkForHold(item);
|
checkForHold(item);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user