void Tooltip::updateSelf(float elapsed) { // base class processing. Window::updateSelf(elapsed); // do something based upon current Tooltip state. switch (d_state) { case Inactive: doInactiveState(elapsed); break; case Active: doActiveState(elapsed); break; case FadeIn: doFadeInState(elapsed); break; case FadeOut: doFadeOutState(elapsed); break; default: // This should never happen. Logger::getSingleton().logEvent("Tooltip (Name: " + getName() + "of Class: " + getType() + ") is in an unknown state. Switching to Inactive state.", Errors); switchToInactiveState(); } }
void Tooltip::doActiveState(float elapsed) { // if no target, switch immediately to inactive state. if (!d_target || d_target->getTooltipText().empty()) { // hide immediately since the text is empty hide(); switchToInactiveState(); } // else see if display timeout has been reached else if ((d_displayTime > 0) && ((d_elapsed += elapsed) >= d_displayTime)) { // display time is up, switch states switchToInactiveState(); } }
void Tooltip::doFadeOutState(float elapsed) { // if no target, switch immediately to inactive state. if (!d_target || d_target->getTooltipText().empty()) { switchToInactiveState(); } else { if ((d_elapsed += elapsed) >= d_fadeTime) { setAlpha(0.0f); switchToInactiveState(); } else { setAlpha(1.0f - (1.0f / d_fadeTime) * d_elapsed); } } }
Tooltip::Tooltip(const String& type, const String& name) : Window(type, name) { d_hoverTime = 0.4f; d_displayTime = 7.5f; d_fadeTime = 0.33f; addTooltipProperties(); setClippedByParent(false); setDestroyedByParent(false); setAlwaysOnTop(true); switchToInactiveState(); }