Fix changing town zone settings not updating town zone radii

This could cause MP desyncs
pull/451/head
Jonathan G Rennison 2 years ago
parent 95a646d09b
commit 94de25ec10

@ -1265,11 +1265,6 @@ static void SpriteZoomMinChanged(int32 new_value)
MarkWholeScreenDirty();
}
static void InvalidateSettingsWindow(int32 new_value)
{
InvalidateWindowClassesData(WC_GAME_OPTIONS);
}
static void DeveloperModeChanged(int32 new_value)
{
DebugReconsiderSendRemoteMessages();
@ -1695,6 +1690,17 @@ static void DayLengthChanged(int32 new_value)
MarkWholeScreenDirty();
}
static void TownZoneModeChanged(int32 new_value)
{
InvalidateWindowClassesData(WC_GAME_OPTIONS);
UpdateTownRadii();
}
static void TownZoneCustomValueChanged(int32 new_value)
{
if (_settings_game.economy.town_zone_calc_mode) UpdateTownRadii();
}
/**
* Replace a passwords that are a literal asterisk with an empty string.
* @param newval The new string value for this password field.

@ -49,7 +49,6 @@ static void InvalidateCompanyLiveryWindow(int32 new_value);
static void InvalidateNewGRFChangeWindows(int32 new_value);
static void ZoomMinMaxChanged(int32 new_value);
static void SpriteZoomMinChanged(int32 new_value);
static void InvalidateSettingsWindow(int32 new_value);
static void MaxVehiclesChanged(int32 new_value);
static void InvalidateShipPathCache(int32 new_value);
static void ImprovedBreakdownsSettingChanged(int32 new_value);
@ -70,6 +69,8 @@ static void SharingRailChanged(int32 new_value);
static bool CheckSharingRoad(int32 &new_value);
static bool CheckSharingWater(int32 &new_value);
static bool CheckSharingAir(int32 &new_value);
static void TownZoneModeChanged(int32 new_value);
static void TownZoneCustomValueChanged(int32 new_value);
/* End - Callback Functions for the various settings */
@ -2564,8 +2565,8 @@ var = economy.town_zone_calc_mode
def = false
str = STR_CONFIG_SETTING_TOWN_ZONE_CALC_MODE
strhelp = STR_CONFIG_SETTING_TOWN_ZONE_CALC_MODE_HELPTEXT
post_cb = InvalidateSettingsWindow
cat = SC_EXPERT
post_cb = TownZoneModeChanged
patxname = ""town_zone.economy.town_zone_calc_mode""
[SDT_VAR]
@ -2579,6 +2580,7 @@ str = STR_CONFIG_SETTING_TOWN_ZONE_0_MULT
strhelp = STR_CONFIG_SETTING_TOWN_ZONE_0_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_0_mult""
[SDT_VAR]
@ -2592,6 +2594,7 @@ str = STR_CONFIG_SETTING_TOWN_ZONE_1_MULT
strhelp = STR_CONFIG_SETTING_TOWN_ZONE_1_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_1_mult""
[SDT_VAR]
@ -2605,6 +2608,7 @@ str = STR_CONFIG_SETTING_TOWN_ZONE_2_MULT
strhelp = STR_CONFIG_SETTING_TOWN_ZONE_2_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_2_mult""
[SDT_VAR]
@ -2618,6 +2622,7 @@ str = STR_CONFIG_SETTING_TOWN_ZONE_3_MULT
strhelp = STR_CONFIG_SETTING_TOWN_ZONE_3_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_3_mult""
[SDT_VAR]
@ -2631,6 +2636,7 @@ str = STR_CONFIG_SETTING_TOWN_ZONE_4_MULT
strhelp = STR_CONFIG_SETTING_TOWN_ZONE_4_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.town_zone_4_mult""
[SDT_VAR]
@ -2644,6 +2650,7 @@ str = STR_CONFIG_SETTING_CITY_ZONE_0_MULT
strhelp = STR_CONFIG_SETTING_CITY_ZONE_0_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_0_mult""
[SDT_VAR]
@ -2657,6 +2664,7 @@ str = STR_CONFIG_SETTING_CITY_ZONE_1_MULT
strhelp = STR_CONFIG_SETTING_CITY_ZONE_1_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_1_mult""
[SDT_VAR]
@ -2670,6 +2678,7 @@ str = STR_CONFIG_SETTING_CITY_ZONE_2_MULT
strhelp = STR_CONFIG_SETTING_CITY_ZONE_2_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_2_mult""
[SDT_VAR]
@ -2683,6 +2692,7 @@ str = STR_CONFIG_SETTING_CITY_ZONE_3_MULT
strhelp = STR_CONFIG_SETTING_CITY_ZONE_3_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_3_mult""
[SDT_VAR]
@ -2696,6 +2706,7 @@ str = STR_CONFIG_SETTING_CITY_ZONE_4_MULT
strhelp = STR_CONFIG_SETTING_CITY_ZONE_4_MULT_HELPTEXT
strval = STR_JUST_COMMA
cat = SC_EXPERT
post_cb = TownZoneCustomValueChanged
patxname = ""town_zone.economy.city_zone_4_mult""
[SDT_VAR]

@ -271,6 +271,7 @@ void ResetHouses();
void ClearTownHouse(Town *t, TileIndex tile);
void UpdateTownMaxPass(Town *t);
void UpdateTownRadius(Town *t);
void UpdateTownRadii();
CommandCost CheckIfAuthorityAllowsNewStation(TileIndex tile, DoCommandFlag flags);
Town *ClosestTownFromTile(TileIndex tile, uint threshold);
void ChangeTownRating(Town *t, int add, int max, DoCommandFlag flags);

@ -2081,6 +2081,13 @@ void UpdateTownRadius(Town *t)
}
}
void UpdateTownRadii()
{
for (Town *town : Town::Iterate()) {
UpdateTownRadius(town);
}
}
void UpdateTownMaxPass(Town *t)
{
t->supplied[CT_PASSENGERS].old_max = t->cache.population >> 3;

Loading…
Cancel
Save