diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -254,6 +254,29 @@ static void InitializeWindowsAndCaches() Object::IncTypeCount(o->type); } + /* Identify owners of persistent storage arrays */ + Industry *i; + FOR_ALL_INDUSTRIES(i) { + if (i->psa != NULL) { + i->psa->feature = GSF_INDUSTRIES; + i->psa->tile = i->location.tile; + } + } + Station *s; + FOR_ALL_STATIONS(s) { + if (s->airport.psa != NULL) { + s->airport.psa->feature = GSF_AIRPORTS; + s->airport.psa->tile = s->airport.tile; + } + } + Town *t; + FOR_ALL_TOWNS(t) { + for (std::list::iterator it = t->psa_list.begin(); it != t->psa_list.end(); ++it) { + (*it)->feature = GSF_FAKE_TOWNS; + (*it)->tile = t->xy; + } + } + RecomputePrices(); GroupStatistics::UpdateAfterLoad();