diff options
author | rubidium <rubidium@openttd.org> | 2006-12-26 15:28:11 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2006-12-26 15:28:11 +0000 |
commit | c140ca6f200e48444ccec4320067dd91165d98f0 (patch) | |
tree | d978822803398fab14cfb710a8ad0fa321cc8a3b /economy.c | |
parent | b58c90a07539a15f3f05c5b11ca3bb5ebdda5fe8 (diff) | |
download | openttd-c140ca6f200e48444ccec4320067dd91165d98f0.tar.xz |
(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.
Diffstat (limited to 'economy.c')
-rw-r--r-- | economy.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -848,6 +848,19 @@ Pair SetupSubsidyDecodeParam(const Subsidy* s, bool mode) 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(IndustryID index) 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; } } |