Fix savegames with incorrect signal always reserve through bits
See: #620
This commit is contained in:
@@ -4347,7 +4347,8 @@ bool AfterLoadGame()
|
|||||||
extern void YapfCheckRailSignalPenalties();
|
extern void YapfCheckRailSignalPenalties();
|
||||||
YapfCheckRailSignalPenalties();
|
YapfCheckRailSignalPenalties();
|
||||||
|
|
||||||
UpdateExtraAspectsVariable();
|
bool update_always_reserve_through = SlXvIsFeaturePresent(XSLFI_REALISTIC_TRAIN_BRAKING, 8, 10);
|
||||||
|
UpdateExtraAspectsVariable(update_always_reserve_through);
|
||||||
|
|
||||||
if (_networking && !_network_server) {
|
if (_networking && !_network_server) {
|
||||||
SlProcessVENC();
|
SlProcessVENC();
|
||||||
|
@@ -1892,7 +1892,7 @@ static bool DetermineExtraAspectsVariable()
|
|||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateExtraAspectsVariable()
|
void UpdateExtraAspectsVariable(bool update_always_reserve_through)
|
||||||
{
|
{
|
||||||
std::array<NewSignalStyleMapping, MAX_NEW_SIGNAL_STYLES> new_mapping;
|
std::array<NewSignalStyleMapping, MAX_NEW_SIGNAL_STYLES> new_mapping;
|
||||||
DetermineSignalStyleMapping(new_mapping);
|
DetermineSignalStyleMapping(new_mapping);
|
||||||
@@ -1915,6 +1915,8 @@ void UpdateExtraAspectsVariable()
|
|||||||
if (_extra_aspects > 0) UpdateAllSignalAspects();
|
if (_extra_aspects > 0) UpdateAllSignalAspects();
|
||||||
UpdateAllBlockSignals();
|
UpdateAllBlockSignals();
|
||||||
MarkWholeScreenDirty();
|
MarkWholeScreenDirty();
|
||||||
|
} else if (update_always_reserve_through) {
|
||||||
|
UpdateAllSignalReserveThroughBits();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -195,7 +195,7 @@ void UpdateLookaheadCombinedNormalShuntSignalDeferred(TileIndex tile, Trackdir t
|
|||||||
void FlushDeferredAspectUpdates();
|
void FlushDeferredAspectUpdates();
|
||||||
void FlushDeferredDetermineCombineNormalShuntMode(Train *v);
|
void FlushDeferredDetermineCombineNormalShuntMode(Train *v);
|
||||||
void UpdateAllSignalAspects();
|
void UpdateAllSignalAspects();
|
||||||
void UpdateExtraAspectsVariable();
|
void UpdateExtraAspectsVariable(bool update_always_reserve_through = false);
|
||||||
void InitialiseExtraAspectsVariable();
|
void InitialiseExtraAspectsVariable();
|
||||||
bool IsRailSpecialSignalAspect(TileIndex tile, Track track);
|
bool IsRailSpecialSignalAspect(TileIndex tile, Track track);
|
||||||
|
|
||||||
|
@@ -157,7 +157,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
|||||||
{ XSLFI_ANIMATED_TILE_EXTRA, XSCF_NULL, 1, 1, "animated_tile_extra", nullptr, nullptr, nullptr },
|
{ XSLFI_ANIMATED_TILE_EXTRA, XSCF_NULL, 1, 1, "animated_tile_extra", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_NEWGRF_INFO_EXTRA, XSCF_NULL, 1, 1, "newgrf_info_extra", nullptr, nullptr, nullptr },
|
{ XSLFI_NEWGRF_INFO_EXTRA, XSCF_NULL, 1, 1, "newgrf_info_extra", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_INDUSTRY_CARGO_ADJ, XSCF_IGNORABLE_UNKNOWN, 1, 1, "industry_cargo_adj", nullptr, nullptr, nullptr },
|
{ XSLFI_INDUSTRY_CARGO_ADJ, XSCF_IGNORABLE_UNKNOWN, 1, 1, "industry_cargo_adj", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_REALISTIC_TRAIN_BRAKING, XSCF_NULL, 10, 10, "realistic_train_braking", nullptr, nullptr, "VLKA" },
|
{ XSLFI_REALISTIC_TRAIN_BRAKING, XSCF_NULL, 11, 11, "realistic_train_braking", nullptr, nullptr, "VLKA" },
|
||||||
{ XSLFI_INFLATION_FIXED_DATES, XSCF_IGNORABLE_ALL, 1, 1, "inflation_fixed_dates", nullptr, nullptr, nullptr },
|
{ XSLFI_INFLATION_FIXED_DATES, XSCF_IGNORABLE_ALL, 1, 1, "inflation_fixed_dates", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_WATER_FLOODING, XSCF_NULL, 2, 2, "water_flooding", nullptr, nullptr, nullptr },
|
{ XSLFI_WATER_FLOODING, XSCF_NULL, 2, 2, "water_flooding", nullptr, nullptr, nullptr },
|
||||||
{ XSLFI_MORE_HOUSES, XSCF_NULL, 2, 2, "more_houses", nullptr, nullptr, nullptr },
|
{ XSLFI_MORE_HOUSES, XSCF_NULL, 2, 2, "more_houses", nullptr, nullptr, nullptr },
|
||||||
|
Reference in New Issue
Block a user