Skip to content

Commit

Permalink
allow favoriting / ctrl+alt selecting elements in element search ui
Browse files Browse the repository at this point in the history
  • Loading branch information
jacob1 committed Jul 25, 2016
1 parent ae247a2 commit 8efe885
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 6 deletions.
54 changes: 50 additions & 4 deletions src/gui/elementsearch/ElementSearchActivity.cpp
Expand Up @@ -5,6 +5,7 @@
#include "gui/interface/Keys.h"
#include "gui/game/Tool.h"
#include "gui/Style.h"
#include "gui/game/Favorite.h"
#include "gui/game/GameController.h"

class ElementSearchActivity::ToolAction: public ui::ButtonAction
Expand All @@ -26,6 +27,9 @@ ElementSearchActivity::ElementSearchActivity(GameController * gameController, st
firstResult(NULL),
gameController(gameController),
tools(tools),
shiftPressed(false),
ctrlPressed(false),
altPressed(false),
exit(false)
{
ui::Label * title = new ui::Label(ui::Point(4, 5), ui::Point(Size.X-8, 15), "Element Search");
Expand Down Expand Up @@ -167,7 +171,18 @@ void ElementSearchActivity::searchTools(std::string query)

void ElementSearchActivity::SetActiveTool(int selectionState, Tool * tool)
{
gameController->SetActiveTool(selectionState, tool);
if (ctrlPressed && shiftPressed && !altPressed)
{
Favorite::Ref().AddFavorite(tool->GetIdentifier());
gameController->RebuildFavoritesMenu();
}
else if (ctrlPressed && altPressed && !shiftPressed &&
tool->GetIdentifier().find("DEFAULT_PT_") != tool->GetIdentifier().npos)
{
gameController->SetActiveTool(3, tool);
}
else
gameController->SetActiveTool(selectionState, tool);
exit = true;
}

Expand All @@ -188,15 +203,46 @@ void ElementSearchActivity::OnTick(float dt)

void ElementSearchActivity::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt)
{
if (key == SDLK_KP_ENTER || key == SDLK_RETURN)
switch (key)
{
case SDLK_KP_ENTER:
case SDLK_RETURN:
if(firstResult)
gameController->SetActiveTool(0, firstResult);
case SDLK_ESCAPE:
exit = true;
break;
case SDLK_LSHIFT:
case SDLK_RSHIFT:
shiftPressed = true;
break;
case SDLK_LCTRL:
case SDLK_RCTRL:
ctrlPressed = true;
break;
case SDLK_LALT:
case SDLK_RALT:
altPressed = true;
break;
}
if (key == SDLK_ESCAPE)
}

void ElementSearchActivity::OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt)
{
switch (key)
{
exit = true;
case SDLK_LSHIFT:
case SDLK_RSHIFT:
shiftPressed = false;
break;
case SDLK_LCTRL:
case SDLK_RCTRL:
ctrlPressed = false;
break;
case SDLK_LALT:
case SDLK_RALT:
altPressed = false;
break;
}
}

Expand Down
9 changes: 7 additions & 2 deletions src/gui/elementsearch/ElementSearchActivity.h
Expand Up @@ -9,16 +9,20 @@
#include "gui/game/ToolButton.h"

class Tool;

class GameController;

class ElementSearchActivity: public WindowActivity {
class ElementSearchActivity: public WindowActivity
{
Tool * firstResult;
GameController * gameController;
std::vector<Tool*> tools;
ui::Textbox * searchField;
std::vector<ToolButton*> toolButtons;
bool shiftPressed;
bool ctrlPressed;
bool altPressed;
void searchTools(std::string query);

public:
class ToolAction;
bool exit;
Expand All @@ -29,6 +33,7 @@ class ElementSearchActivity: public WindowActivity {
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);
};

#endif /* ELEMENTSEARCHACTIVITY_H_ */

0 comments on commit 8efe885

Please sign in to comment.