diff --git a/CMake/Assets.cmake b/CMake/Assets.cmake index 7c6227ee1..b1c9b1441 100644 --- a/CMake/Assets.cmake +++ b/CMake/Assets.cmake @@ -76,6 +76,8 @@ set(devilutionx_assets fonts/12-20.bin fonts/12-20.clx fonts/12-26.clx + fonts/12-e0.clx + fonts/12-e0.bin fonts/22-00.bin fonts/22-00.clx fonts/22-01.bin diff --git a/Packaging/resources/assets/fonts/12-e0.bin b/Packaging/resources/assets/fonts/12-e0.bin new file mode 100644 index 000000000..688e324cf Binary files /dev/null and b/Packaging/resources/assets/fonts/12-e0.bin differ diff --git a/Packaging/resources/assets/fonts/12-e0.clx b/Packaging/resources/assets/fonts/12-e0.clx new file mode 100644 index 000000000..f88acdb16 Binary files /dev/null and b/Packaging/resources/assets/fonts/12-e0.clx differ diff --git a/Source/controls/controller_buttons.h b/Source/controls/controller_buttons.h index 32cf84ec6..76cc663f6 100644 --- a/Source/controls/controller_buttons.h +++ b/Source/controls/controller_buttons.h @@ -2,6 +2,7 @@ // Unifies joystick, gamepad, and keyboard controller APIs. #include +#include namespace devilution { @@ -36,4 +37,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 devilution diff --git a/Source/items.cpp b/Source/items.cpp index b2ab64896..2af5060df 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -1745,8 +1745,7 @@ void printItemMiscKBM(const Item &item, const bool isOil, const bool isCastOnTar PrintItemOil(item._iMiscId); AddPanelString(_("Right-click to use")); } else if (isCastOnTarget) { - AddPanelString(_("Right-click to read, then")); - AddPanelString(_("left-click to target")); + AddPanelString(_("Right-click to read, then\nleft-click to target")); } else if (IsAnyOf(item._iMiscId, IMISC_BOOK, IMISC_NOTE, IMISC_SCROLL, IMISC_SCROLLT)) { AddPanelString(_("Right-click to read")); } @@ -1764,27 +1763,27 @@ void printItemMiscVirtualGamepad(const Item &item, const bool isOil, bool isCast AddPanelString(_("Activate to use")); } } else if (isCastOnTarget) { - AddPanelString(_("Select from spell book, then")); - AddPanelString(_("cast to read")); - } else if (IsAnyOf(item._iMiscId, IMISC_BOOK, IMISC_NOTE, IMISC_SCROLL, IMISC_SCROLLT)) { + AddPanelString(_("Select from spell book, then\ncast to read")); + } else { 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 = "Y"; - castButton = "X"; + activateButton = Xbox_Y; + castButton = Xbox_X; } else if (GamepadType == GamepadLayout::PlayStation) { - activateButton = "Triangle"; - castButton = "Square"; + activateButton = Playstation_Triangle; + castButton = Playstation_Square; } else if (GamepadType == GamepadLayout::Nintendo) { - activateButton = "Y"; - castButton = "X"; + activateButton = Nintendo_Y; + castButton = Nintendo_X; } if (item._iMiscId == IMISC_MAPOFDOOM) { @@ -1797,7 +1796,7 @@ void printItemMiscGamepad(const Item &item, bool isOil, bool isCastOnTarget) AddPanelString(fmt::format(fmt::runtime(_("{} to use")), activateButton)); } } else if (isCastOnTarget) { - AddPanelString(fmt::format(fmt::runtime(_("Select from spell book, then {} to read")), castButton)); + AddPanelString(fmt::format(fmt::runtime(_("Select from spell book,\nthen {} to read")), castButton)); } else if (IsAnyOf(item._iMiscId, IMISC_BOOK, IMISC_NOTE, IMISC_SCROLL, IMISC_SCROLLT)) { AddPanelString(fmt::format(fmt::runtime(_("{} to read")), activateButton)); }