mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
(svn r25931) -Fix [FS#5786-ish]: [NoGo] Preserve the relative town growth progress when changing the town growth rate.
This commit is contained in:
parent
403168287e
commit
cef342d57c
@ -2527,7 +2527,20 @@ CommandCost CmdTownGrowthRate(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
|
|||||||
if (t == NULL) return CMD_ERROR;
|
if (t == NULL) return CMD_ERROR;
|
||||||
|
|
||||||
if (flags & DC_EXEC) {
|
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);
|
UpdateTownGrowRate(t);
|
||||||
InvalidateWindowData(WC_TOWN_VIEW, p1);
|
InvalidateWindowData(WC_TOWN_VIEW, p1);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user