/* ===================== Button::MakeHoveredCurrent ===================== */ void Button::MakeHoveredCurrent() { if (sprites[HOVERED]) { current->hidden = true; current = sprites[HOVERED]; current->hidden = false; } else { MakeNormalCurrent(); } }
/* ===================== Button::SetActive ===================== */ void Button::SetActive(bool flag) { activated = flag; if (!activated) { MakeDeactivatedCurrent(); } else { MakeNormalCurrent(); } }
/* ===================== Button::SetActiveState ===================== */ void Button::SetActiveState(ButtonState state) { if (state == NORMAL) { MakeNormalCurrent(); } else if (state == HOVERED) { MakeHoveredCurrent(); } else if (state == PRESSED) { MakePressedCurrent(); } else { MakeDeactivatedCurrent(); } }
/* ===================== Button::MouseEvent ===================== */ void Button::OnMouseEvent(MouseEvent &evt) { if (activated) { if (IsHovered(evt.GetPosition())) { if (!mouseHoverLastFrame) { // The mouse was hovered over if (mouseDownLastFrame) { mouseDownLastFrame = MOUSE_DOWN; } else { mouseFreshWhileHover = false; } MakeHoveredCurrent(); if (callback) callback->ButtonHoverBegin(this); } if (mouseFreshWhileHover && mouseDownLastFrame && !MOUSE_DOWN) { mouseDownLastFrame = false; mouseFreshWhileHover = false; // The mouse was released over the button MakeHoveredCurrent(); if (callback) { callback->ButtonReleased(this); } } if (MOUSE_FRESH || (mouseFreshWhileHover && !mouseHoverLastFrame)) { // The mouse was pressed over the button mouseDownLastFrame = true; mouseFreshWhileHover = true; MakePressedCurrent(); if (callback) callback->ButtonPressed(this); } mouseHoverLastFrame = true; } else if (mouseHoverLastFrame) { // The button is no longer hovered if (mouseDownLastFrame) { mouseDownLastFrame = MOUSE_DOWN; } else { mouseFreshWhileHover = false; } mouseHoverLastFrame = false; MakeNormalCurrent(); if (callback) { callback->ButtonHoverEnd(this); } } else { if (mouseDownLastFrame) { mouseDownLastFrame = MOUSE_DOWN; } else { mouseFreshWhileHover = false; } if (current != sprites[NORMAL]) { MakeNormalCurrent(); } } } }
/* ================== MyButton::MakeDeactivatedCurrent ================== */ void MakeDeactivatedCurrent() { MakeNormalCurrent(); }