Fix #9020: Update station coverage highlight when adding/removing tiles

pull/379/head
Tyler Trahan 2 years ago committed by Michael Lutz
parent c73f578e8c
commit fbbc80f79e

@ -744,9 +744,16 @@ static void DeleteStationIfEmpty(BaseStation *st)
void Station::AfterStationTileSetChange(bool adding, StationType type)
{
this->UpdateVirtCoord();
this->RecomputeCatchment();
DirtyCompanyInfrastructureWindows(this->owner);
if (adding) InvalidateWindowData(WC_STATION_LIST, this->owner, 0);
if (adding) {
this->RecomputeCatchment();
MarkCatchmentTilesDirty();
InvalidateWindowData(WC_STATION_LIST, this->owner, 0);
} else {
MarkCatchmentTilesDirty();
this->RecomputeCatchment();
}
switch (type) {
case STATION_RAIL:
@ -1628,6 +1635,7 @@ CommandCost RemoveFromRailBaseStation(TileArea ta, std::vector<T *> &affected_st
if (st->train_station.tile == INVALID_TILE) {
st->facilities &= ~FACIL_TRAIN;
SetWindowWidgetDirty(WC_STATION_VIEW, st->index, WID_SV_TRAINS);
MarkCatchmentTilesDirty();
st->UpdateVirtCoord();
DeleteStationIfEmpty(st);
}
@ -1662,6 +1670,7 @@ CommandCost CmdRemoveFromRailStation(DoCommandFlag flags, TileIndex start, TileI
if (st->train_station.tile == INVALID_TILE) SetWindowWidgetDirty(WC_STATION_VIEW, st->index, WID_SV_TRAINS);
st->MarkTilesDirty(false);
MarkCatchmentTilesDirty();
st->RecomputeCatchment();
}

@ -3495,7 +3495,7 @@ CommandCost CmdScrollViewport(DoCommandFlag flags, TileIndex tile, ViewportScrol
return CommandCost();
}
static void MarkCatchmentTilesDirty()
void MarkCatchmentTilesDirty()
{
if (_viewport_highlight_town != nullptr) {
MarkWholeScreenDirty();

@ -98,5 +98,6 @@ struct Town;
void SetViewportCatchmentStation(const Station *st, bool sel);
void SetViewportCatchmentTown(const Town *t, bool sel);
void MarkCatchmentTilesDirty();
#endif /* VIEWPORT_FUNC_H */

Loading…
Cancel
Save