mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
(svn r14307) -Fix: when deleting a station, remove news items regarding it
This commit is contained in:
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…
Reference in New Issue
Block a user