* Get the position a news-reference is referencing. * @param reference The reference. * @return A tile for the referenced object, or INVALID_TILE if none. */
| 87 | * @return A tile for the referenced object, or INVALID_TILE if none. |
| 88 | */ |
| 89 | static TileIndex GetReferenceTile(const NewsReference &reference) |
| 90 | { |
| 91 | struct visitor { |
| 92 | TileIndex operator()(const std::monostate &) { return INVALID_TILE; } |
| 93 | TileIndex operator()(const TileIndex &t) { return t; } |
| 94 | TileIndex operator()(const VehicleID) { return INVALID_TILE; } |
| 95 | TileIndex operator()(const StationID s) { return Station::Get(s)->xy; } |
| 96 | TileIndex operator()(const IndustryID i) { return Industry::Get(i)->location.tile + TileDiffXY(1, 1); } |
| 97 | TileIndex operator()(const TownID t) { return Town::Get(t)->xy; } |
| 98 | TileIndex operator()(const EngineID) { return INVALID_TILE; } |
| 99 | }; |
| 100 | |
| 101 | return std::visit(visitor{}, reference); |
| 102 | } |
| 103 | |
| 104 | /* Normal news items. */ |
| 105 | static constexpr std::initializer_list<NWidgetPart> _nested_normal_news_widgets = { |
no outgoing calls
no test coverage detected