Fix ValidateVehicleTileHash for aircraft and multi-part ships

This commit is contained in:
Jonathan G Rennison
2023-04-03 21:04:58 +01:00
parent d82a050365
commit 8ddb9462e6

View File

@@ -854,7 +854,12 @@ void UpdateVehicleTileHash(Vehicle *v, bool remove)
bool ValidateVehicleTileHash(const Vehicle *v)
{
if ((v->type == VEH_TRAIN && Train::From(v)->IsVirtual()) || v->type >= VEH_COMPANY_END) return v->hash_tile_current == nullptr;
if ((v->type == VEH_TRAIN && Train::From(v)->IsVirtual())
|| (v->type == VEH_SHIP && HasBit(v->subtype, GVSF_VIRTUAL))
|| (v->type == VEH_AIRCRAFT && v->tile == 0 && _settings_game.construction.freeform_edges)
|| v->type >= VEH_COMPANY_END) {
return v->hash_tile_current == nullptr;
}
int x = GB(TileX(v->tile), HASH_RES, HASH_BITS);
int y = GB(TileY(v->tile), HASH_RES, HASH_BITS) << HASH_BITS;