(svn r25931) -Fix [FS#5786-ish]: [NoGo] Preserve the relative town growth progress when changing the town growth rate.

This commit is contained in:
frosch 2013-10-30 10:01:49 +00:00
parent 403168287e
commit cef342d57c
1 changed files with 14 additions and 1 deletions

View File

@ -2527,7 +2527,20 @@ CommandCost CmdTownGrowthRate(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
if (t == NULL) return CMD_ERROR;
if (flags & DC_EXEC) {
t->growth_rate = (p2 == 0) ? 0 : p2 | TOWN_GROW_RATE_CUSTOM;
if (p2 == 0) {
/* Clear TOWN_GROW_RATE_CUSTOM, UpdateTownGrowRate will determine a proper value */
t->growth_rate = 0;
} else {
uint old_rate = t->growth_rate & ~TOWN_GROW_RATE_CUSTOM;
if (t->grow_counter >= old_rate) {
/* This also catches old_rate == 0 */
t->grow_counter = p2;
} else {
/* Scale grow_counter, so half finished houses stay half finished */
t->grow_counter = t->grow_counter * p2 / old_rate;
}
t->growth_rate = p2 | TOWN_GROW_RATE_CUSTOM;
}
UpdateTownGrowRate(t);
InvalidateWindowData(WC_TOWN_VIEW, p1);
}