Add tooltip when hovering over any kind of link sign
This commit is contained in:
parent
d67cb4b582
commit
6a88e42580
@ -258,7 +258,8 @@ GameView * GameController::GetView()
|
|||||||
return gameView;
|
return gameView;
|
||||||
}
|
}
|
||||||
|
|
||||||
sign * GameController::GetSignAt(int x, int y){
|
sign * GameController::GetSignAt(int x, int y)
|
||||||
|
{
|
||||||
Simulation * sim = gameModel->GetSimulation();
|
Simulation * sim = gameModel->GetSimulation();
|
||||||
for (std::vector<sign>::reverse_iterator iter = sim->signs.rbegin(), end = sim->signs.rend(); iter != end; ++iter)
|
for (std::vector<sign>::reverse_iterator iter = sim->signs.rbegin(), end = sim->signs.rend(); iter != end; ++iter)
|
||||||
{
|
{
|
||||||
@ -604,7 +605,8 @@ bool GameController::MouseUp(int x, int y, unsigned button)
|
|||||||
if (!gameModel->GetActiveTool(0) || gameModel->GetActiveTool(0)->GetIdentifier() != "DEFAULT_UI_SIGN" || button != BUTTON_LEFT) //If it's not a sign tool or you are right/middle clicking
|
if (!gameModel->GetActiveTool(0) || gameModel->GetActiveTool(0)->GetIdentifier() != "DEFAULT_UI_SIGN" || button != BUTTON_LEFT) //If it's not a sign tool or you are right/middle clicking
|
||||||
{
|
{
|
||||||
sign * foundSign = GetSignAt(x, y);
|
sign * foundSign = GetSignAt(x, y);
|
||||||
if(foundSign) {
|
if (foundSign)
|
||||||
|
{
|
||||||
const char* str = foundSign->text.c_str();
|
const char* str = foundSign->text.c_str();
|
||||||
char type;
|
char type;
|
||||||
int pos = sign::splitsign(str, &type);
|
int pos = sign::splitsign(str, &type);
|
||||||
@ -616,7 +618,7 @@ bool GameController::MouseUp(int x, int y, unsigned button)
|
|||||||
char buff[256];
|
char buff[256];
|
||||||
strcpy(buff, str+3);
|
strcpy(buff, str+3);
|
||||||
buff[pos-3] = 0;
|
buff[pos-3] = 0;
|
||||||
switch (str[1])
|
switch (type)
|
||||||
{
|
{
|
||||||
case 'c':
|
case 'c':
|
||||||
{
|
{
|
||||||
@ -637,7 +639,8 @@ bool GameController::MouseUp(int x, int y, unsigned button)
|
|||||||
OpenSearch(buff);
|
OpenSearch(buff);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (type == 'b')
|
}
|
||||||
|
else if (type == 'b')
|
||||||
{
|
{
|
||||||
Simulation * sim = gameModel->GetSimulation();
|
Simulation * sim = gameModel->GetSimulation();
|
||||||
sim->create_part(-1, foundSign->x, foundSign->y, PT_SPRK);
|
sim->create_part(-1, foundSign->x, foundSign->y, PT_SPRK);
|
||||||
@ -1119,7 +1122,7 @@ void GameController::OpenLocalSaveWindow(bool asCurrent)
|
|||||||
GameController * c;
|
GameController * c;
|
||||||
public:
|
public:
|
||||||
LocalSaveCallback(GameController * _c): c(_c) {}
|
LocalSaveCallback(GameController * _c): c(_c) {}
|
||||||
virtual ~LocalSaveCallback() {};
|
virtual ~LocalSaveCallback() {}
|
||||||
virtual void FileSaved(SaveFile* file)
|
virtual void FileSaved(SaveFile* file)
|
||||||
{
|
{
|
||||||
c->gameModel->SetSaveFile(file);
|
c->gameModel->SetSaveFile(file);
|
||||||
|
@ -59,14 +59,14 @@ public:
|
|||||||
{
|
{
|
||||||
if(toolTip2.length()>0 && GetParentWindow())
|
if(toolTip2.length()>0 && GetParentWindow())
|
||||||
{
|
{
|
||||||
GetParentWindow()->ToolTip(this, ui::Point(x, y), toolTip2);
|
GetParentWindow()->ToolTip(Position, toolTip2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(x < splitPosition)
|
else if(x < splitPosition)
|
||||||
{
|
{
|
||||||
if(toolTip.length()>0 && GetParentWindow())
|
if(toolTip.length()>0 && GetParentWindow())
|
||||||
{
|
{
|
||||||
GetParentWindow()->ToolTip(this, ui::Point(x, y), toolTip);
|
GetParentWindow()->ToolTip(Position, toolTip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1218,9 +1218,10 @@ void GameView::ExitPrompt()
|
|||||||
new ConfirmPrompt("You are about to quit", "Are you sure you want to exit the game?", new ExitConfirmation());
|
new ConfirmPrompt("You are about to quit", "Are you sure you want to exit the game?", new ExitConfirmation());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameView::ToolTip(ui::Component * sender, ui::Point mousePosition, std::string toolTip)
|
void GameView::ToolTip(ui::Point senderPosition, std::string toolTip)
|
||||||
{
|
{
|
||||||
if(sender->Position.Y > Size.Y-17)
|
// buttom button tooltips
|
||||||
|
if (senderPosition.Y > Size.Y-17)
|
||||||
{
|
{
|
||||||
if (selectMode == PlaceSave || selectMode == SelectNone)
|
if (selectMode == PlaceSave || selectMode == SelectNone)
|
||||||
{
|
{
|
||||||
@ -1228,14 +1229,16 @@ void GameView::ToolTip(ui::Component * sender, ui::Point mousePosition, std::str
|
|||||||
isButtonTipFadingIn = true;
|
isButtonTipFadingIn = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(sender->Position.X > Size.X-BARSIZE)// < Size.Y-(quickOptionButtons.size()+1)*16)
|
// quickoption and menu tooltips
|
||||||
|
else if(senderPosition.X > Size.X-BARSIZE)// < Size.Y-(quickOptionButtons.size()+1)*16)
|
||||||
{
|
{
|
||||||
this->toolTip = toolTip;
|
this->toolTip = toolTip;
|
||||||
toolTipPosition = ui::Point(Size.X-27-Graphics::textwidth((char*)toolTip.c_str()), sender->Position.Y+3);
|
toolTipPosition = ui::Point(Size.X-27-Graphics::textwidth((char*)toolTip.c_str()), senderPosition.Y+3);
|
||||||
if(toolTipPosition.Y+10 > Size.Y-MENUSIZE)
|
if(toolTipPosition.Y+10 > Size.Y-MENUSIZE)
|
||||||
toolTipPosition = ui::Point(Size.X-27-Graphics::textwidth((char*)toolTip.c_str()), Size.Y-MENUSIZE-10);
|
toolTipPosition = ui::Point(Size.X-27-Graphics::textwidth((char*)toolTip.c_str()), Size.Y-MENUSIZE-10);
|
||||||
isToolTipFadingIn = true;
|
isToolTipFadingIn = true;
|
||||||
}
|
}
|
||||||
|
// element tooltips
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->toolTip = toolTip;
|
this->toolTip = toolTip;
|
||||||
@ -1635,6 +1638,35 @@ void GameView::OnTick(float dt)
|
|||||||
{
|
{
|
||||||
c->DrawLine(toolIndex, c->PointTranslate(drawPoint1), lineSnapCoords(c->PointTranslate(drawPoint1), currentMouse));
|
c->DrawLine(toolIndex, c->PointTranslate(drawPoint1), lineSnapCoords(c->PointTranslate(drawPoint1), currentMouse));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sign * foundSign = c->GetSignAt(mousePosition.X, mousePosition.Y);
|
||||||
|
if (foundSign)
|
||||||
|
{
|
||||||
|
const char* str = foundSign->text.c_str();
|
||||||
|
char type;
|
||||||
|
int pos = sign::splitsign(str, &type);
|
||||||
|
if (type == 'c' || type == 't' || type == 's')
|
||||||
|
{
|
||||||
|
char buff[256];
|
||||||
|
strcpy(buff, str+3);
|
||||||
|
buff[pos-3] = 0;
|
||||||
|
std::stringstream tooltip;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 'c':
|
||||||
|
tooltip << "Go to save ID:" << buff;
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
tooltip << "Open forum thread " << buff << " in browser";
|
||||||
|
break;
|
||||||
|
case 's':
|
||||||
|
tooltip << "Search for " << buff;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ToolTip(ui::Point(0, Size.Y), tooltip.str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(introText)
|
if(introText)
|
||||||
{
|
{
|
||||||
introText -= int(dt)>0?((int)dt < 5? dt:5):1;
|
introText -= int(dt)>0?((int)dt < 5? dt:5):1;
|
||||||
|
@ -177,7 +177,7 @@ public:
|
|||||||
void NotifyLastToolChanged(GameModel * sender);
|
void NotifyLastToolChanged(GameModel * sender);
|
||||||
|
|
||||||
|
|
||||||
virtual void ToolTip(ui::Component * sender, ui::Point mousePosition, std::string toolTip);
|
virtual void ToolTip(ui::Point senderPosition, std::string toolTip);
|
||||||
|
|
||||||
virtual void OnMouseMove(int x, int y, int dx, int dy);
|
virtual void OnMouseMove(int x, int y, int dx, int dy);
|
||||||
virtual void OnMouseDown(int x, int y, unsigned button);
|
virtual void OnMouseDown(int x, int y, unsigned button);
|
||||||
|
@ -191,7 +191,7 @@ void Button::OnMouseHover(int x, int y)
|
|||||||
{
|
{
|
||||||
if(Enabled && toolTip.length()>0 && GetParentWindow())
|
if(Enabled && toolTip.length()>0 && GetParentWindow())
|
||||||
{
|
{
|
||||||
GetParentWindow()->ToolTip(this, ui::Point(x, y), toolTip);
|
GetParentWindow()->ToolTip(Position, toolTip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ void Checkbox::OnMouseHover(int x, int y)
|
|||||||
{
|
{
|
||||||
if(toolTip.length()>0 && GetParentWindow())
|
if(toolTip.length()>0 && GetParentWindow())
|
||||||
{
|
{
|
||||||
GetParentWindow()->ToolTip(this, ui::Point(x, y), toolTip);
|
GetParentWindow()->ToolTip(Position, toolTip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ enum ChromeStyle
|
|||||||
// Remove a component from state. NOTE: This WILL free component from memory.
|
// Remove a component from state. NOTE: This WILL free component from memory.
|
||||||
void RemoveComponent(unsigned idx);
|
void RemoveComponent(unsigned idx);
|
||||||
|
|
||||||
virtual void ToolTip(Component * sender, ui::Point mousePosition, std::string toolTip) {}
|
virtual void ToolTip(ui::Point senderPosition, std::string toolTip) {}
|
||||||
|
|
||||||
virtual void DoInitialized();
|
virtual void DoInitialized();
|
||||||
virtual void DoExit();
|
virtual void DoExit();
|
||||||
|
@ -410,7 +410,7 @@ void RenderView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderView::ToolTip(ui::Component * sender, ui::Point mousePosition, std::string toolTip)
|
void RenderView::ToolTip(ui::Point senderPosition, std::string toolTip)
|
||||||
{
|
{
|
||||||
this->toolTip = toolTip;
|
this->toolTip = toolTip;
|
||||||
this->isToolTipFadingIn = true;
|
this->isToolTipFadingIn = true;
|
||||||
|
@ -37,7 +37,7 @@ public:
|
|||||||
virtual void OnDraw();
|
virtual void OnDraw();
|
||||||
virtual void OnTick(float dt);
|
virtual void OnTick(float dt);
|
||||||
virtual void OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt);
|
virtual void OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt);
|
||||||
virtual void ToolTip(ui::Component * sender, ui::Point mousePosition, std::string toolTip);
|
virtual void ToolTip(ui::Point senderPosition, std::string toolTip);
|
||||||
virtual ~RenderView();
|
virtual ~RenderView();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user