diff options
author | smatz <smatz@openttd.org> | 2008-04-04 15:10:54 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2008-04-04 15:10:54 +0000 |
commit | 99b2536351f5dcdfaee9022a3460e20b11d84594 (patch) | |
tree | 14e274ea4f6cbf2bc11dc5bdbbd72443fd676085 | |
parent | 42ed287506467b8e3f58e7b909297dec5834c0e1 (diff) | |
download | openttd-99b2536351f5dcdfaee9022a3460e20b11d84594.tar.xz |
(svn r12561) -Fix: do not affect town rating change by the order in which we examine stations
-rw-r--r-- | src/town_cmd.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 777da9c8e..5837b7896 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -2261,16 +2261,23 @@ static void UpdateTownGrowRate(Town *t) if (st->time_since_load <= 20 || st->time_since_unload <= 20) { n++; if (IsValidPlayer(st->owner)) { - t->ratings[st->owner] = min((int)RATING_MAXIMUM, t->ratings[st->owner] + RATING_STATION_UP_STEP); + int new_rating = t->ratings[st->owner] + RATING_STATION_UP_STEP; + t->ratings[st->owner] = min(new_rating, INT16_MAX); // do not let it overflow } } else { if (IsValidPlayer(st->owner)) { - t->ratings[st->owner] = max((int)RATING_MINIMUM, t->ratings[st->owner] + RATING_STATION_DOWN_STEP); + int new_rating = t->ratings[st->owner] + RATING_STATION_DOWN_STEP; + t->ratings[st->owner] = max(new_rating, INT16_MIN); } } } } + /* clamp all ratings to valid values */ + for (uint i = 0; i < MAX_PLAYERS; i++) { + t->ratings[i] = Clamp(t->ratings[i], RATING_MINIMUM, RATING_MAXIMUM); + } + ClrBit(t->flags12, TOWN_IS_FUNDED); if (_patches.town_growth_rate == 0 && t->fund_buildings_months == 0) return; |