(svn r21020) -Add: Use center of waypoint in waypoint gui, if available.

This commit is contained in:
alberth
2010-10-23 20:39:21 +00:00
parent cccbc8f418
commit 83094e5e58
3 changed files with 29 additions and 8 deletions

View File

@@ -34,10 +34,20 @@ enum WaypointWindowWidgets {
WAYPVW_SHOW_VEHICLES,
};
/** GUI for accessing waypoints and buoys. */
struct WaypointWindow : Window {
private:
VehicleType vt;
Waypoint *wp;
VehicleType vt; ///< Vehicle type using the waypoint.
Waypoint *wp; ///< Waypoint displayed by the window.
/**
* Get the center tile of the waypoint.
* @return The center tile if the waypoint exists, otherwise the tile with the waypoint name.
*/
TileIndex GetCenterTile() const
{
return this->wp->IsInUse() ? this->wp->train_station.GetCenterTile() : this->wp->xy;
}
public:
WaypointWindow(const WindowDesc *desc, WindowNumber window_number) : Window()
@@ -57,7 +67,7 @@ public:
this->flags4 |= WF_DISABLE_VP_SCROLL;
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WAYPVW_VIEWPORT);
nvp->InitializeViewport(this, this->wp->xy, ZOOM_LVL_MIN);
nvp->InitializeViewport(this, this->GetCenterTile(), ZOOM_LVL_MIN);
this->OnInvalidateData(0);
}
@@ -84,9 +94,9 @@ public:
switch (widget) {
case WAYPVW_CENTERVIEW: // scroll to location
if (_ctrl_pressed) {
ShowExtraViewPortWindow(this->wp->xy);
ShowExtraViewPortWindow(this->GetCenterTile());
} else {
ScrollMainWindowToTile(this->wp->xy);
ScrollMainWindowToTile(this->GetCenterTile());
}
break;
@@ -108,9 +118,7 @@ public:
/* Disable the widget for waypoints with no use */
this->SetWidgetDisabledState(WAYPVW_SHOW_VEHICLES, !this->wp->IsInUse());
int x = TileX(this->wp->xy) * TILE_SIZE;
int y = TileY(this->wp->xy) * TILE_SIZE;
ScrollWindowTo(x, y, -1, this, true);
ScrollWindowToTile(this->GetCenterTile(), this, true);
}
virtual void OnResize()