Changeset - r5378:9b037b61f620
[Not reviewed]
master
0 3 0
rubidium - 18 years ago 2006-12-26 15:28:11
rubidium@openttd.org
(svn r7563) -Fix (FS#468): removing towns in the scenario editor could leave subsidies with that town as source/destination, resulting in an assertion when displaying the Subsidies Window.
3 files changed with 18 insertions and 3 deletions:
0 comments (0 inline, 0 general)
economy.c
Show inline comments
 
@@ -848,6 +848,19 @@ Pair SetupSubsidyDecodeParam(const Subsi
 
	return tp;
 
}
 

	
 
void DeleteSubsidyWithTown(TownID index)
 
{
 
	Subsidy *s;
 

	
 
	for (s = _subsidies; s != endof(_subsidies); s++) {
 
		if (s->cargo_type != CT_INVALID && s->age < 12 &&
 
				(((s->cargo_type == CT_PASSENGERS || s->cargo_type == CT_MAIL) && (index == s->from || index == s->to)) ||
 
				((s->cargo_type == CT_GOODS || s->cargo_type == CT_FOOD) && index == s->to))) {
 
			s->cargo_type = CT_INVALID;
 
		}
 
	}
 
}
 

	
 
void DeleteSubsidyWithIndustry(IndustryID index)
 
{
 
	Subsidy *s;
 
@@ -855,7 +868,7 @@ void DeleteSubsidyWithIndustry(IndustryI
 
	for (s = _subsidies; s != endof(_subsidies); s++) {
 
		if (s->cargo_type != CT_INVALID && s->age < 12 &&
 
				s->cargo_type != CT_PASSENGERS && s->cargo_type != CT_MAIL &&
 
				(index == s->from || (s->cargo_type!=CT_GOODS && s->cargo_type!=CT_FOOD && index==s->to))) {
 
				(index == s->from || (s->cargo_type != CT_GOODS && s->cargo_type != CT_FOOD && index == s->to))) {
 
			s->cargo_type = CT_INVALID;
 
		}
 
	}
economy.h
Show inline comments
 
@@ -60,8 +60,9 @@ int UpdateCompanyRatingAndValue(Player *
 

	
 
VARDEF Subsidy _subsidies[MAX_PLAYERS];
 
Pair SetupSubsidyDecodeParam(const Subsidy* s, bool mode);
 
void DeleteSubsidyWithIndustry(uint16 index);
 
void DeleteSubsidyWithStation(uint16 index);
 
void DeleteSubsidyWithTown(TownID index);
 
void DeleteSubsidyWithIndustry(IndustryID index);
 
void DeleteSubsidyWithStation(StationID index);
 

	
 
int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, CargoID cargo_type);
 
uint MoveGoodsToStation(TileIndex tile, int w, int h, int type, uint amount);
town_cmd.c
Show inline comments
 
@@ -79,6 +79,7 @@ void DestroyTown(Town *t)
 
	}
 

	
 
	DeleteName(t->townnametype);
 
	DeleteSubsidyWithTown(t->index);
 

	
 
	MarkWholeScreenDirty();
 
}
0 comments (0 inline, 0 general)