(svn r14307) -Fix: when deleting a station, remove news items regarding it

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
smatz 16 years ago
parent fc62d736f7
commit 66be028ad4

@ -1402,7 +1402,8 @@ static void AircraftEntersTerminal(Vehicle *v)
STR_A033_CITIZENS_CELEBRATE_FIRST,
(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
v->index,
0);
st->index
);
}
v->BeginLoading();

@ -7,6 +7,7 @@
#include "news_type.h"
#include "vehicle_type.h"
#include "station_type.h"
void AddNewsItem(StringID string, NewsSubtype subtype, uint data_a, uint data_b, void *free_data = NULL);
void NewsLoop();
@ -24,4 +25,7 @@ extern NewsTypeData _news_type_data[NT_END];
*/
void DeleteVehicleNews(VehicleID, StringID news);
/** Delete news associated with given station */
void DeleteStationNews(StationID);
#endif /* NEWS_FUNC_H */

@ -579,6 +579,29 @@ void DeleteVehicleNews(VehicleID vid, StringID news)
}
}
/** Remove news regarding given station so there are no 'unknown station now accepts Mail'
* or 'First train arrived at unknown station' news items.
* @param sid station to remove news about
*/
void DeleteStationNews(StationID sid)
{
NewsItem *ni = _oldest_news;
while (ni != NULL) {
NewsItem *next = ni->next;
switch (ni->subtype) {
case NS_ARRIVAL_PLAYER:
case NS_ARRIVAL_OTHER:
case NS_ACCEPTANCE:
if (ni->data_b == sid) DeleteNewsItem(ni);
break;
default:
break;
}
ni = next;
}
}
void RemoveOldNewsItems()
{
NewsItem *next;

@ -807,7 +807,8 @@ static void RoadVehArrivesAt(const Vehicle* v, Station* st)
v->u.road.roadtype == ROADTYPE_ROAD ? STR_902F_CITIZENS_CELEBRATE_FIRST : STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM,
(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
v->index,
0);
st->index
);
}
} else {
/* Check if station was ever visited before */
@ -818,7 +819,7 @@ static void RoadVehArrivesAt(const Vehicle* v, Station* st)
v->u.road.roadtype == ROADTYPE_ROAD ? STR_9030_CITIZENS_CELEBRATE_FIRST : STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM,
(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
v->index,
0
st->index
);
}
}

@ -351,7 +351,8 @@ static void ShipArrivesAt(const Vehicle* v, Station* st)
STR_9833_CITIZENS_CELEBRATE_FIRST,
(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
v->index,
0);
st->index
);
}
}

@ -31,6 +31,7 @@
#include "settings_type.h"
#include "command_func.h"
#include "order_func.h"
#include "news_func.h"
#include "table/sprites.h"
#include "table/strings.h"
@ -84,6 +85,9 @@ Station::~Station()
/* Subsidies need removal as well */
DeleteSubsidyWithStation(index);
/* Remove all news items */
DeleteStationNews(this->index);
xy = 0;
for (CargoID c = 0; c < NUM_CARGO; c++) {

@ -411,7 +411,7 @@ static void ShowRejectOrAcceptNews(const Station *st, uint num_items, CargoID *c
}
SetDParam(0, st->index);
AddNewsItem(msg, NS_ACCEPTANCE, st->xy, 0);
AddNewsItem(msg, NS_ACCEPTANCE, st->xy, st->index);
}
/**

@ -3251,7 +3251,7 @@ static void TrainEnterStation(Vehicle *v, StationID station)
STR_8801_CITIZENS_CELEBRATE_FIRST,
v->owner == _local_player ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
v->index,
0
st->index
);
}

Loading…
Cancel
Save