From 4c3b4dab47efc45453edc191b79ee9227cead356 Mon Sep 17 00:00:00 2001 From: RobertBScott Date: Mon, 20 Nov 2017 12:02:21 -0500 Subject: [PATCH] Implemented tooltip element descriptor display in element search. --- .../elementsearch/ElementSearchActivity.cpp | 26 ++++++++++++++++++- src/gui/elementsearch/ElementSearchActivity.h | 6 ++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/gui/elementsearch/ElementSearchActivity.cpp b/src/gui/elementsearch/ElementSearchActivity.cpp index 17b333e227..f9c647c256 100644 --- a/src/gui/elementsearch/ElementSearchActivity.cpp +++ b/src/gui/elementsearch/ElementSearchActivity.cpp @@ -30,7 +30,9 @@ ElementSearchActivity::ElementSearchActivity(GameController * gameController, st shiftPressed(false), ctrlPressed(false), altPressed(false), - exit(false) + exit(false), + toolTip(""), + isToolTipFadingIn(false) { ui::Label * title = new ui::Label(ui::Point(4, 5), ui::Point(Size.X-8, 15), "Element Search"); title->SetTextColour(style::Colour::InformationTitle); @@ -193,12 +195,28 @@ void ElementSearchActivity::OnDraw() g->drawrect(Position.X, Position.Y, Size.X, Size.Y, 255, 255, 255, 255); g->drawrect(Position.X+searchField->Position.X, Position.Y+searchField->Position.Y+searchField->Size.Y+8, searchField->Size.X, Size.Y-(searchField->Position.Y+searchField->Size.Y+8)-23, 255, 255, 255, 180); + if (toolTipPresence && toolTip.length()) + { + g->drawtext(10, Size.Y+70, (char*)toolTip.c_str(), 255, 255, 255, toolTipPresence>51?255:toolTipPresence*5); + } } void ElementSearchActivity::OnTick(float dt) { if (exit) Exit(); + if (isToolTipFadingIn) + { + isToolTipFadingIn = false; + if (toolTipPresence < 120) + toolTipPresence += int(dt*2)>1?int(dt*2):2; + } + if (toolTipPresence>0) + { + toolTipPresence -= int(dt)>0?int(dt):1; + if (toolTipPresence<0) + toolTipPresence = 0; + } } void ElementSearchActivity::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt) @@ -246,6 +264,12 @@ void ElementSearchActivity::OnKeyRelease(int key, Uint16 character, bool shift, } } +void ElementSearchActivity::ToolTip(ui::Point senderPosition, std::string toolTip) +{ + this->toolTip = toolTip; + this->isToolTipFadingIn = true; +} + ElementSearchActivity::~ElementSearchActivity() { } diff --git a/src/gui/elementsearch/ElementSearchActivity.h b/src/gui/elementsearch/ElementSearchActivity.h index 6f852c5bc0..bf9af235a9 100644 --- a/src/gui/elementsearch/ElementSearchActivity.h +++ b/src/gui/elementsearch/ElementSearchActivity.h @@ -18,9 +18,12 @@ class ElementSearchActivity: public WindowActivity std::vector tools; ui::Textbox * searchField; std::vector toolButtons; + std::string toolTip; + int toolTipPresence; bool shiftPressed; bool ctrlPressed; bool altPressed; + bool isToolTipFadingIn; void searchTools(std::string query); public: @@ -30,10 +33,11 @@ class ElementSearchActivity: public WindowActivity ElementSearchActivity(GameController * gameController, std::vector tools); void SetActiveTool(int selectionState, Tool * tool); virtual ~ElementSearchActivity(); - virtual void OnDraw(); virtual void OnTick(float dt); virtual void OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt); virtual void OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt); + virtual void OnDraw(); + virtual void ToolTip(ui::Point senderPosition, std::string ToolTip); }; #endif /* ELEMENTSEARCHACTIVITY_H_ */