Changeset - r10123:310b4a36ab6c
[Not reviewed]
master
0 8 0
smatz - 16 years ago 2008-09-13 10:19:51
smatz@openttd.org
(svn r14307) -Fix: when deleting a station, remove news items regarding it
8 files changed with 40 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/aircraft_cmd.cpp
Show inline comments
 
@@ -1402,7 +1402,8 @@ static void AircraftEntersTerminal(Vehic
 
			STR_A033_CITIZENS_CELEBRATE_FIRST,
 
			(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
 
			v->index,
 
			0);
 
			st->index
 
		);
 
	}
 

	
 
	v->BeginLoading();
src/news_func.h
Show inline comments
 
@@ -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_E
 
 */
 
void DeleteVehicleNews(VehicleID, StringID news);
 

	
 
/** Delete news associated with given station */
 
void DeleteStationNews(StationID);
 

	
 
#endif /* NEWS_FUNC_H */
src/news_gui.cpp
Show inline comments
 
@@ -579,6 +579,29 @@ void DeleteVehicleNews(VehicleID vid, St
 
	}
 
}
 

	
 
/** 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;
src/roadveh_cmd.cpp
Show inline comments
 
@@ -807,7 +807,8 @@ static void RoadVehArrivesAt(const Vehic
 
				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 Vehic
 
				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
 
			);
 
		}
 
	}
src/ship_cmd.cpp
Show inline comments
 
@@ -351,7 +351,8 @@ static void ShipArrivesAt(const Vehicle*
 
			STR_9833_CITIZENS_CELEBRATE_FIRST,
 
			(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
 
			v->index,
 
			0);
 
			st->index
 
		);
 
	}
 
}
 

	
src/station.cpp
Show inline comments
 
@@ -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++) {
src/station_cmd.cpp
Show inline comments
 
@@ -411,7 +411,7 @@ static void ShowRejectOrAcceptNews(const
 
	}
 

	
 
	SetDParam(0, st->index);
 
	AddNewsItem(msg, NS_ACCEPTANCE, st->xy, 0);
 
	AddNewsItem(msg, NS_ACCEPTANCE, st->xy, st->index);
 
}
 

	
 
/**
src/train_cmd.cpp
Show inline comments
 
@@ -3251,7 +3251,7 @@ static void TrainEnterStation(Vehicle *v
 
			STR_8801_CITIZENS_CELEBRATE_FIRST,
 
			v->owner == _local_player ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
 
			v->index,
 
			0
 
			st->index
 
		);
 
	}
 

	
0 comments (0 inline, 0 general)