Browse Source

Convert UiType to a scoped enum

pull/2480/head
ephphatha 5 years ago committed by Anders Jenbo
parent
commit
bd140142c3
  1. 30
      Source/DiabloUI/diabloui.cpp
  2. 20
      Source/DiabloUI/ui_item.h

30
Source/DiabloUI/diabloui.cpp

@ -102,7 +102,7 @@ void UiInitList(int count, void (*fnFocus)(int value), void (*fnSelect)(int valu
#endif
textInputActive = false;
for (const auto &item : items) {
if (item->m_type == UI_EDIT) {
if (item->m_type == UiType::UI_EDIT) {
auto *pItemUIEdit = static_cast<UiEdit *>(item.get());
SDL_SetTextInputRect(&item->m_rect);
textInputActive = true;
@ -808,28 +808,28 @@ void RenderItem(UiItemBase *item)
if (item->has_flag(UiFlags::UIS_HIDDEN))
return;
switch (item->m_type) {
case UI_TEXT:
case UiType::UI_TEXT:
Render(static_cast<UiText *>(item));
break;
case UI_ART_TEXT:
case UiType::UI_ART_TEXT:
Render(static_cast<UiArtText *>(item));
break;
case UI_IMAGE:
case UiType::UI_IMAGE:
Render(static_cast<UiImage *>(item));
break;
case UI_ART_TEXT_BUTTON:
case UiType::UI_ART_TEXT_BUTTON:
Render(static_cast<UiArtTextButton *>(item));
break;
case UI_BUTTON:
case UiType::UI_BUTTON:
RenderButton(static_cast<UiButton *>(item));
break;
case UI_LIST:
case UiType::UI_LIST:
Render(static_cast<UiList *>(item));
break;
case UI_SCROLLBAR:
case UiType::UI_SCROLLBAR:
Render(static_cast<UiScrollBar *>(item));
break;
case UI_EDIT:
case UiType::UI_EDIT:
Render(static_cast<UiEdit *>(item));
break;
}
@ -914,13 +914,13 @@ bool HandleMouseEvent(const SDL_Event &event, UiItemBase *item)
if (item->has_any_flag(UiFlags::UIS_HIDDEN | UiFlags::UIS_DISABLED) || !IsInsideRect(event, item->m_rect))
return false;
switch (item->m_type) {
case UI_ART_TEXT_BUTTON:
case UiType::UI_ART_TEXT_BUTTON:
return HandleMouseEventArtTextButton(event, static_cast<UiArtTextButton *>(item));
case UI_BUTTON:
case UiType::UI_BUTTON:
return HandleMouseEventButton(event, static_cast<UiButton *>(item));
case UI_LIST:
case UiType::UI_LIST:
return HandleMouseEventList(event, static_cast<UiList *>(item));
case UI_SCROLLBAR:
case UiType::UI_SCROLLBAR:
return HandleMouseEventScrollBar(event, static_cast<UiScrollBar *>(item));
default:
return false;
@ -970,7 +970,7 @@ bool UiItemMouseEvents(SDL_Event *event, const std::vector<UiItemBase *> &items)
if (event->type == SDL_MOUSEBUTTONUP && event->button.button == SDL_BUTTON_LEFT) {
scrollBarState.downArrowPressed = scrollBarState.upArrowPressed = false;
for (const auto &item : items) {
if (item->m_type == UI_BUTTON)
if (item->m_type == UiType::UI_BUTTON)
HandleGlobalMouseUpButton(static_cast<UiButton *>(item));
}
}
@ -1000,7 +1000,7 @@ bool UiItemMouseEvents(SDL_Event *event, const std::vector<std::unique_ptr<UiIte
if (event->type == SDL_MOUSEBUTTONUP && event->button.button == SDL_BUTTON_LEFT) {
scrollBarState.downArrowPressed = scrollBarState.upArrowPressed = false;
for (const auto &item : items) {
if (item->m_type == UI_BUTTON)
if (item->m_type == UiType::UI_BUTTON)
HandleGlobalMouseUpButton(static_cast<UiButton *>(item.get()));
}
}

20
Source/DiabloUI/ui_item.h

@ -11,7 +11,7 @@
namespace devilution {
enum UiType : uint8_t {
enum class UiType {
UI_TEXT,
UI_ART_TEXT,
UI_ART_TEXT_BUTTON,
@ -120,7 +120,7 @@ public:
class UiImage : public UiItemBase {
public:
UiImage(Art *art, SDL_Rect rect, UiFlags flags = UiFlags::NONE, bool animated = false, int frame = 0)
: UiItemBase(UI_IMAGE, rect, flags)
: UiItemBase(UiType::UI_IMAGE, rect, flags)
, m_art(art)
, m_animated(animated)
, m_frame(frame)
@ -146,7 +146,7 @@ public:
* @param flags UiFlags controlling color/alignment/size
*/
UiArtText(const char *text, SDL_Rect rect, UiFlags flags = UiFlags::NONE)
: UiItemBase(UI_ART_TEXT, rect, flags)
: UiItemBase(UiType::UI_ART_TEXT, rect, flags)
, m_text(text)
{
}
@ -158,7 +158,7 @@ public:
* @param flags UiFlags controlling color/alignment/size
*/
UiArtText(const char **ptext, SDL_Rect rect, UiFlags flags = UiFlags::NONE)
: UiItemBase(UI_ART_TEXT, rect, flags)
: UiItemBase(UiType::UI_ART_TEXT, rect, flags)
, m_ptext(ptext)
{
}
@ -182,7 +182,7 @@ private:
class UiScrollBar : public UiItemBase {
public:
UiScrollBar(Art *bg, Art *thumb, Art *arrow, SDL_Rect rect, UiFlags flags = UiFlags::NONE)
: UiItemBase(UI_SCROLLBAR, rect, flags)
: UiItemBase(UiType::UI_SCROLLBAR, rect, flags)
, m_bg(bg)
, m_thumb(thumb)
, m_arrow(arrow)
@ -200,7 +200,7 @@ public:
class UiArtTextButton : public UiItemBase {
public:
UiArtTextButton(const char *text, void (*action)(), SDL_Rect rect, UiFlags flags = UiFlags::NONE)
: UiItemBase(UI_ART_TEXT_BUTTON, rect, flags)
: UiItemBase(UiType::UI_ART_TEXT_BUTTON, rect, flags)
, m_text(text)
, m_action(action)
{
@ -216,7 +216,7 @@ public:
class UiEdit : public UiItemBase {
public:
UiEdit(const char *hint, char *value, std::size_t max_length, SDL_Rect rect, UiFlags flags = UiFlags::NONE)
: UiItemBase(UI_EDIT, rect, flags)
: UiItemBase(UiType::UI_EDIT, rect, flags)
, m_hint(hint)
, m_value(value)
, m_max_length(max_length)
@ -236,7 +236,7 @@ public:
class UiText : public UiItemBase {
public:
UiText(const char *text, SDL_Rect rect, UiFlags flags = UiFlags::NONE, SDL_Color color = { 243, 243, 243, 0 })
: UiItemBase(UI_TEXT, rect, flags)
: UiItemBase(UiType::UI_TEXT, rect, flags)
, m_color(color)
, m_shadow_color({ 0, 0, 0, 0 })
, m_text(text)
@ -260,7 +260,7 @@ public:
class UiButton : public UiItemBase {
public:
UiButton(Art *art, const char *text, void (*action)(), SDL_Rect rect, UiFlags flags = UiFlags::NONE)
: UiItemBase(UI_BUTTON, rect, flags)
: UiItemBase(UiType::UI_BUTTON, rect, flags)
, m_art(art)
, m_text(text)
, m_action(action)
@ -308,7 +308,7 @@ typedef std::vector<std::unique_ptr<UiListItem>> vUiListItem;
class UiList : public UiItemBase {
public:
UiList(const vUiListItem &vItems, Sint16 x, Sint16 y, Uint16 item_width, Uint16 item_height, UiFlags flags = UiFlags::NONE)
: UiItemBase(UI_LIST, { x, y, item_width, static_cast<Uint16>(item_height * vItems.size()) }, flags)
: UiItemBase(UiType::UI_LIST, { x, y, item_width, static_cast<Uint16>(item_height * vItems.size()) }, flags)
, m_x(x)
, m_y(y)
, m_width(item_width)

Loading…
Cancel
Save