Browse Source

Clean up gamepad icons code

1. Correctly defined button strings.
2. Clean up the printing code.
3. Use translatable strings for the generic gamepad type.
pull/5407/head
Gleb Mazovetskiy 4 years ago
parent
commit
6150973c1b
  1. 1
      Source/CMakeLists.txt
  2. 113
      Source/controls/controller_buttons.cpp
  3. 221
      Source/controls/controller_buttons.h
  4. 49
      Source/items.cpp

1
Source/CMakeLists.txt

@ -59,6 +59,7 @@ set(libdevilutionx_SRCS
controls/axis_direction.cpp
controls/controller.cpp
controls/controller_buttons.cpp
controls/controller_motion.cpp
controls/devices/joystick.cpp
controls/devices/kbcontroller.cpp

113
Source/controls/controller_buttons.cpp

@ -0,0 +1,113 @@
#include "controller_buttons.h"
namespace devilution {
namespace controller_button_icon {
const string_view Playstation_Triangle = "\uE000";
const string_view Playstation_Square = "\uE001";
const string_view Playstation_X = "\uE002";
const string_view Playstation_Circle = "\uE003";
const string_view Playstation_Options = "\uE004";
const string_view Playstation_Share = "\uE005";
const string_view Playstation_L2 = "\uE006";
const string_view Playstation_R2 = "\uE007";
const string_view Playstation_L1 = "\uE008";
const string_view Playstation_R1 = "\uE009";
const string_view Playstation_DPad_Up = "\uE00A";
const string_view Playstation_DPad_Right = "\uE00B";
const string_view Playstation_DPad_Down = "\uE00C";
const string_view Playstation_DPad_Left = "\uE00D";
const string_view Playstation_LStick_NW = "\uE00E";
const string_view Playstation_LStick_W = "\uE00F";
const string_view Playstation_LStick_SW = "\uE010";
const string_view Playstation_LStick_N = "\uE011";
const string_view Playstation_LStick = "\uE012";
const string_view Playstation_LStick_S = "\uE013";
const string_view Playstation_LStick_NE = "\uE014";
const string_view Playstation_LStick_E = "\uE015";
const string_view Playstation_LStick_SE = "\uE016";
const string_view Playstation_L3 = "\uE017";
const string_view Playstation_RStick_NW = "\uE018";
const string_view Playstation_RStick_W = "\uE019";
const string_view Playstation_RStick_SW = "\uE01A";
const string_view Playstation_RStick_N = "\uE01B";
const string_view Playstation_RStick = "\uE01C";
const string_view Playstation_RStick_S = "\uE01D";
const string_view Playstation_RStick_NE = "\uE01E";
const string_view Playstation_RStick_E = "\uE01F";
const string_view Playstation_RStick_SE = "\uE020";
const string_view Playstation_R3 = "\uE021";
const string_view Playstation_Touchpad = "\uE022";
const string_view Nintendo_X = "\uE023";
const string_view Nintendo_Y = "\uE024";
const string_view Nintendo_B = "\uE025";
const string_view Nintendo_A = "\uE026";
const string_view Nintendo_Plus = "\uE027";
const string_view Nintendo_Minus = "\uE028";
const string_view Nintendo_ZL = "\uE029";
const string_view Nintendo_ZR = "\uE02A";
const string_view Nintendo_L = "\uE02B";
const string_view Nintendo_R = "\uE02C";
const string_view Nintendo_DPad_Up = "\uE02D";
const string_view Nintendo_DPad_Right = "\uE02E";
const string_view Nintendo_DPad_Down = "\uE02F";
const string_view Nintendo_DPad_Left = "\uE030";
const string_view Nintendo_LStick_NW = "\uE031";
const string_view Nintendo_LStick_W = "\uE032";
const string_view Nintendo_LStick_SW = "\uE033";
const string_view Nintendo_LStick_N = "\uE034";
const string_view Nintendo_LStick = "\uE035";
const string_view Nintendoo_LStick_S = "\uE036";
const string_view Nintendo_LStick_NE = "\uE037";
const string_view Nintendo_LStick_E = "\uE038";
const string_view Nintendo_LStick_SE = "\uE039";
const string_view Nintendo_LStick_Click = "\uE03A";
const string_view Nintendo_RStick_NW = "\uE03B";
const string_view Nintendo_RStick_W = "\uE03C";
const string_view Nintendo_RStick_SW = "\uE03D";
const string_view Nintendo_RStick_N = "\uE03E";
const string_view Nintendo_RStick = "\uE03F";
const string_view Nintendo_RStick_S = "\uE040";
const string_view Nintendo_RStick_NE = "\uE041";
const string_view Nintendo_RStick_E = "\uE042";
const string_view Nintendo_RStick_SE = "\uE043";
const string_view Nintendo_RStick_Click = "\uE044";
const string_view Nintendo_Home = "\uE045";
const string_view Nintendo_Screenshot = "\uE046";
const string_view Nintendo_SL = "\uE047";
const string_view Nintendo_SR = "\uE048";
const string_view Xbox_Y = "\uE049";
const string_view Xbox_X = "\uE04A";
const string_view Xbox_A = "\uE04B";
const string_view Xbox_B = "\uE04C";
const string_view Xbox_Menu = "\uE04D";
const string_view Xbox_View = "\uE04E";
const string_view Xbox_LT = "\uE04F";
const string_view Xbox_RT = "\uE050";
const string_view Xbox_LB = "\uE051";
const string_view Xbox_RB = "\uE052";
const string_view Xbox_DPad_Up = "\uE053";
const string_view Xbox_Dpad_Right = "\uE054";
const string_view Xbox_Dpad_Down = "\uE055";
const string_view Xbox_Dpad_Left = "\uE056";
const string_view Xbox_LStick_NW = "\uE057";
const string_view Xbox_LStick_W = "\uE058";
const string_view Xbox_LStick_SW = "\uE059";
const string_view Xbox_LStick_N = "\uE05A";
const string_view Xbox_LStick = "\uE05B";
const string_view Xbox_LStick_NE = "\uE05C";
const string_view Xbox_LStick_E = "\uE05D";
const string_view Xbox_LStick_SE = "\uE05E";
const string_view Xbox_LStick_Click = "\uE05F";
const string_view Xbox_RStick_NW = "\uE060";
const string_view Xbox_RStick_W = "\uE061";
const string_view Xbox_RStick_SW = "\uE062";
const string_view Xbox_RStick_N = "\uE063";
const string_view Xbox_RStick = "\uE064";
const string_view Xbox_RStick_S = "\uE065";
const string_view Xbox_RStick_NE = "\uE066";
const string_view Xbox_RStick_E = "\uE067";
const string_view Xbox_RStick_SE = "\uE068";
const string_view Xbox_RStick_Click = "\uE069";
const string_view Xbox_Xbox = "\uE06A";
} // namespace controller_button_icon
} // namespace devilution

221
Source/controls/controller_buttons.h

@ -2,7 +2,8 @@
// Unifies joystick, gamepad, and keyboard controller APIs.
#include <cstdint>
#include <string>
#include "utils/stdcompat/string_view.hpp"
namespace devilution {
@ -37,113 +38,113 @@ inline bool IsDPadButton(ControllerButton button)
|| button == ControllerButton_BUTTON_DPAD_RIGHT;
}
namespace controllerButtonIcon {
const std::string Playstation_Triangle = "\uE000";
const std::string Playstation_Square = "\uE001";
const std::string Playstation_X = "\uE002";
const std::string Playstation_Circle = "\uE003";
const std::string Playstation_Options = "\uE004";
const std::string Playstation_Share = "\uE005";
const std::string Playstation_L2 = "\uE006";
const std::string Playstation_R2 = "\uE007";
const std::string Playstation_L1 = "\uE008";
const std::string Playstation_R1 = "\uE009";
const std::string Playstation_DPad_Up = "\uE00A";
const std::string Playstation_DPad_Right = "\uE00B";
const std::string Playstation_DPad_Down = "\uE00C";
const std::string Playstation_DPad_Left = "\uE00D";
const std::string Playstation_LStick_NW = "\uE00E";
const std::string Playstation_LStick_W = "\uE00F";
const std::string Playstation_LStick_SW = "\uE010";
const std::string Playstation_LStick_N = "\uE011";
const std::string Playstation_LStick = "\uE012";
const std::string Playstation_LStick_S = "\uE013";
const std::string Playstation_LStick_NE = "\uE014";
const std::string Playstation_LStick_E = "\uE015";
const std::string Playstation_LStick_SE = "\uE016";
const std::string Playstation_L3 = "\uE017";
const std::string Playstation_RStick_NW = "\uE018";
const std::string Playstation_RStick_W = "\uE019";
const std::string Playstation_RStick_SW = "\uE01A";
const std::string Playstation_RStick_N = "\uE01B";
const std::string Playstation_RStick = "\uE01C";
const std::string Playstation_RStick_S = "\uE01D";
const std::string Playstation_RStick_NE = "\uE01E";
const std::string Playstation_RStick_E = "\uE01F";
const std::string Playstation_RStick_SE = "\uE020";
const std::string Playstation_R3 = "\uE021";
const std::string Playstation_Touchpad = "\uE022";
const std::string Nintendo_X = "\uE023";
const std::string Nintendo_Y = "\uE024";
const std::string Nintendo_B = "\uE025";
const std::string Nintendo_A = "\uE026";
const std::string Nintendo_Plus = "\uE027";
const std::string Nintendo_Minus = "\uE028";
const std::string Nintendo_ZL = "\uE029";
const std::string Nintendo_ZR = "\uE02A";
const std::string Nintendo_L = "\uE02B";
const std::string Nintendo_R = "\uE02C";
const std::string Nintendo_DPad_Up = "\uE02D";
const std::string Nintendo_DPad_Right = "\uE02E";
const std::string Nintendo_DPad_Down = "\uE02F";
const std::string Nintendo_DPad_Left = "\uE030";
const std::string Nintendo_LStick_NW = "\uE031";
const std::string Nintendo_LStick_W = "\uE032";
const std::string Nintendo_LStick_SW = "\uE033";
const std::string Nintendo_LStick_N = "\uE034";
const std::string Nintendo_LStick = "\uE035";
const std::string Nintendoo_LStick_S = "\uE036";
const std::string Nintendo_LStick_NE = "\uE037";
const std::string Nintendo_LStick_E = "\uE038";
const std::string Nintendo_LStick_SE = "\uE039";
const std::string Nintendo_LStick_Click = "\uE03A";
const std::string Nintendo_RStick_NW = "\uE03B";
const std::string Nintendo_RStick_W = "\uE03C";
const std::string Nintendo_RStick_SW = "\uE03D";
const std::string Nintendo_RStick_N = "\uE03E";
const std::string Nintendo_RStick = "\uE03F";
const std::string Nintendo_RStick_S = "\uE040";
const std::string Nintendo_RStick_NE = "\uE041";
const std::string Nintendo_RStick_E = "\uE042";
const std::string Nintendo_RStick_SE = "\uE043";
const std::string Nintendo_RStick_Click = "\uE044";
const std::string Nintendo_Home = "\uE045";
const std::string Nintendo_Screenshot = "\uE046";
const std::string Nintendo_SL = "\uE047";
const std::string Nintendo_SR = "\uE048";
const std::string Xbox_Y = "\uE049";
const std::string Xbox_X = "\uE04A";
const std::string Xbox_A = "\uE04B";
const std::string Xbox_B = "\uE04C";
const std::string Xbox_Menu = "\uE04D";
const std::string Xbox_View = "\uE04E";
const std::string Xbox_LT = "\uE04F";
const std::string Xbox_RT = "\uE050";
const std::string Xbox_LB = "\uE051";
const std::string Xbox_RB = "\uE052";
const std::string Xbox_DPad_Up = "\uE053";
const std::string Xbox_Dpad_Right = "\uE054";
const std::string Xbox_Dpad_Down = "\uE055";
const std::string Xbox_Dpad_Left = "\uE056";
const std::string Xbox_LStick_NW = "\uE057";
const std::string Xbox_LStick_W = "\uE058";
const std::string Xbox_LStick_SW = "\uE059";
const std::string Xbox_LStick_N = "\uE05A";
const std::string Xbox_LStick = "\uE05B";
const std::string Xbox_LStick_NE = "\uE05C";
const std::string Xbox_LStick_E = "\uE05D";
const std::string Xbox_LStick_SE = "\uE05E";
const std::string Xbox_LStick_Click = "\uE05F";
const std::string Xbox_RStick_NW = "\uE060";
const std::string Xbox_RStick_W = "\uE061";
const std::string Xbox_RStick_SW = "\uE062";
const std::string Xbox_RStick_N = "\uE063";
const std::string Xbox_RStick = "\uE064";
const std::string Xbox_RStick_S = "\uE065";
const std::string Xbox_RStick_NE = "\uE066";
const std::string Xbox_RStick_E = "\uE067";
const std::string Xbox_RStick_SE = "\uE068";
const std::string Xbox_RStick_Click = "\uE069";
const std::string Xbox_Xbox = "\uE06A";
} // namespace controllerButtonIcon
namespace controller_button_icon {
extern const string_view Playstation_Triangle;
extern const string_view Playstation_Square;
extern const string_view Playstation_X;
extern const string_view Playstation_Circle;
extern const string_view Playstation_Options;
extern const string_view Playstation_Share;
extern const string_view Playstation_L2;
extern const string_view Playstation_R2;
extern const string_view Playstation_L1;
extern const string_view Playstation_R1;
extern const string_view Playstation_DPad_Up;
extern const string_view Playstation_DPad_Right;
extern const string_view Playstation_DPad_Down;
extern const string_view Playstation_DPad_Left;
extern const string_view Playstation_LStick_NW;
extern const string_view Playstation_LStick_W;
extern const string_view Playstation_LStick_SW;
extern const string_view Playstation_LStick_N;
extern const string_view Playstation_LStick;
extern const string_view Playstation_LStick_S;
extern const string_view Playstation_LStick_NE;
extern const string_view Playstation_LStick_E;
extern const string_view Playstation_LStick_SE;
extern const string_view Playstation_L3;
extern const string_view Playstation_RStick_NW;
extern const string_view Playstation_RStick_W;
extern const string_view Playstation_RStick_SW;
extern const string_view Playstation_RStick_N;
extern const string_view Playstation_RStick;
extern const string_view Playstation_RStick_S;
extern const string_view Playstation_RStick_NE;
extern const string_view Playstation_RStick_E;
extern const string_view Playstation_RStick_SE;
extern const string_view Playstation_R3;
extern const string_view Playstation_Touchpad;
extern const string_view Nintendo_X;
extern const string_view Nintendo_Y;
extern const string_view Nintendo_B;
extern const string_view Nintendo_A;
extern const string_view Nintendo_Plus;
extern const string_view Nintendo_Minus;
extern const string_view Nintendo_ZL;
extern const string_view Nintendo_ZR;
extern const string_view Nintendo_L;
extern const string_view Nintendo_R;
extern const string_view Nintendo_DPad_Up;
extern const string_view Nintendo_DPad_Right;
extern const string_view Nintendo_DPad_Down;
extern const string_view Nintendo_DPad_Left;
extern const string_view Nintendo_LStick_NW;
extern const string_view Nintendo_LStick_W;
extern const string_view Nintendo_LStick_SW;
extern const string_view Nintendo_LStick_N;
extern const string_view Nintendo_LStick;
extern const string_view Nintendoo_LStick_S;
extern const string_view Nintendo_LStick_NE;
extern const string_view Nintendo_LStick_E;
extern const string_view Nintendo_LStick_SE;
extern const string_view Nintendo_LStick_Click;
extern const string_view Nintendo_RStick_NW;
extern const string_view Nintendo_RStick_W;
extern const string_view Nintendo_RStick_SW;
extern const string_view Nintendo_RStick_N;
extern const string_view Nintendo_RStick;
extern const string_view Nintendo_RStick_S;
extern const string_view Nintendo_RStick_NE;
extern const string_view Nintendo_RStick_E;
extern const string_view Nintendo_RStick_SE;
extern const string_view Nintendo_RStick_Click;
extern const string_view Nintendo_Home;
extern const string_view Nintendo_Screenshot;
extern const string_view Nintendo_SL;
extern const string_view Nintendo_SR;
extern const string_view Xbox_Y;
extern const string_view Xbox_X;
extern const string_view Xbox_A;
extern const string_view Xbox_B;
extern const string_view Xbox_Menu;
extern const string_view Xbox_View;
extern const string_view Xbox_LT;
extern const string_view Xbox_RT;
extern const string_view Xbox_LB;
extern const string_view Xbox_RB;
extern const string_view Xbox_DPad_Up;
extern const string_view Xbox_Dpad_Right;
extern const string_view Xbox_Dpad_Down;
extern const string_view Xbox_Dpad_Left;
extern const string_view Xbox_LStick_NW;
extern const string_view Xbox_LStick_W;
extern const string_view Xbox_LStick_SW;
extern const string_view Xbox_LStick_N;
extern const string_view Xbox_LStick;
extern const string_view Xbox_LStick_NE;
extern const string_view Xbox_LStick_E;
extern const string_view Xbox_LStick_SE;
extern const string_view Xbox_LStick_Click;
extern const string_view Xbox_RStick_NW;
extern const string_view Xbox_RStick_W;
extern const string_view Xbox_RStick_SW;
extern const string_view Xbox_RStick_N;
extern const string_view Xbox_RStick;
extern const string_view Xbox_RStick_S;
extern const string_view Xbox_RStick_NE;
extern const string_view Xbox_RStick_E;
extern const string_view Xbox_RStick_SE;
extern const string_view Xbox_RStick_Click;
extern const string_view Xbox_Xbox;
} // namespace controller_button_icon
} // namespace devilution

49
Source/items.cpp

@ -1751,7 +1751,7 @@ void printItemMiscKBM(const Item &item, const bool isOil, const bool isCastOnTar
}
}
void printItemMiscVirtualGamepad(const Item &item, const bool isOil, bool isCastOnTarget)
void printItemMiscGenericGamepad(const Item &item, const bool isOil, bool isCastOnTarget)
{
if (item._iMiscId == IMISC_MAPOFDOOM) {
AddPanelString(_("Activate to view"));
@ -1764,26 +1764,31 @@ void printItemMiscVirtualGamepad(const Item &item, const bool isOil, bool isCast
}
} else if (isCastOnTarget) {
AddPanelString(_("Select from spell book, then\ncast to read"));
} else {
} else if (IsAnyOf(item._iMiscId, IMISC_BOOK, IMISC_NOTE, IMISC_SCROLL, IMISC_SCROLLT)) {
AddPanelString(_("Activate to read"));
}
}
void printItemMiscGamepad(const Item &item, bool isOil, bool isCastOnTarget)
{
using namespace controllerButtonIcon;
std::string activateButton = "Activate";
std::string castButton = "Cast";
if (GamepadType == GamepadLayout::Xbox) {
activateButton = Xbox_Y;
castButton = Xbox_X;
} else if (GamepadType == GamepadLayout::PlayStation) {
activateButton = Playstation_Triangle;
castButton = Playstation_Square;
} else if (GamepadType == GamepadLayout::Nintendo) {
activateButton = Nintendo_Y;
castButton = Nintendo_X;
string_view activateButton;
string_view castButton;
switch (GamepadType) {
case GamepadLayout::Generic:
printItemMiscGenericGamepad(item, isOil, isCastOnTarget);
return;
case GamepadLayout::Xbox:
activateButton = controller_button_icon::Xbox_Y;
castButton = controller_button_icon::Xbox_X;
break;
case GamepadLayout::PlayStation:
activateButton = controller_button_icon::Playstation_Triangle;
castButton = controller_button_icon::Playstation_Square;
break;
case GamepadLayout::Nintendo:
activateButton = controller_button_icon::Nintendo_Y;
castButton = controller_button_icon::Nintendo_X;
break;
}
if (item._iMiscId == IMISC_MAPOFDOOM) {
@ -1818,12 +1823,18 @@ void PrintItemMisc(const Item &item)
const bool isCastOnTarget = (item._iMiscId == IMISC_SCROLLT && item._iSpell != SPL_FLASH)
|| (item._iMiscId == IMISC_SCROLL && IsAnyOf(item._iSpell, SPL_TOWN, SPL_IDENTIFY));
if (ControlMode == ControlTypes::KeyboardAndMouse) {
switch (ControlMode) {
case ControlTypes::None:
break;
case ControlTypes::KeyboardAndMouse:
printItemMiscKBM(item, isOil, isCastOnTarget);
} else if (ControlMode == ControlTypes::VirtualGamepad) {
printItemMiscVirtualGamepad(item, isOil, isCastOnTarget);
} else {
break;
case ControlTypes::VirtualGamepad:
printItemMiscGenericGamepad(item, isOil, isCastOnTarget);
break;
case ControlTypes::Gamepad:
printItemMiscGamepad(item, isOil, isCastOnTarget);
break;
}
}

Loading…
Cancel
Save