diff options
-rw-r--r-- | src/industry_gui.cpp | 6 | ||||
-rw-r--r-- | src/tilearea_type.h | 11 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 5cdc04136..962a59532 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -673,7 +673,7 @@ public: this->InitNested(desc, window_number); NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(IVW_VIEWPORT); - nvp->InitializeViewport(this, Industry::Get(window_number)->location.tile + TileDiffXY(1, 1), ZOOM_LVL_INDUSTRY); + nvp->InitializeViewport(this, Industry::Get(window_number)->location.GetCenterTile(), ZOOM_LVL_INDUSTRY); this->InvalidateData(); } @@ -900,9 +900,9 @@ public: case IVW_GOTO: { Industry *i = Industry::Get(this->window_number); if (_ctrl_pressed) { - ShowExtraViewPortWindow(i->location.tile + TileDiffXY(1, 1)); + ShowExtraViewPortWindow(i->location.GetCenterTile()); } else { - ScrollMainWindowToTile(i->location.tile + TileDiffXY(1, 1)); + ScrollMainWindowToTile(i->location.GetCenterTile()); } break; } diff --git a/src/tilearea_type.h b/src/tilearea_type.h index 711ac986d..3207c9e3f 100644 --- a/src/tilearea_type.h +++ b/src/tilearea_type.h @@ -12,7 +12,7 @@ #ifndef TILEAREA_TYPE_H #define TILEAREA_TYPE_H -#include "tile_type.h" +#include "map_func.h" /** Represents the covered area of e.g. a rail station */ struct TileArea { @@ -49,6 +49,15 @@ struct TileArea { bool Intersects(const TileArea &ta) const; void ClampToMap(); + + /** + * Get the center tile. + * @return The tile at the center, or just north of it. + */ + TileIndex GetCenterTile() const + { + return TILE_ADDXY(this->tile, this->w / 2, this->h / 2); + } }; #endif /* TILEAREA_TYPE_H */ |