mirror of https://github.com/OpenTTD/OpenTTD.git
Change: Only resort industry directory window on production change if necessary
This commit is contained in:
parent
22ba048c89
commit
f1734e7815
|
@ -197,4 +197,12 @@ struct IndustryBuildData {
|
|||
|
||||
extern IndustryBuildData _industry_builder;
|
||||
|
||||
|
||||
/** Special values for the industry list window for the data parameter of #InvalidateWindowData. */
|
||||
enum IndustryDirectoryInvalidateWindowData {
|
||||
IDIWD_FORCE_REBUILD,
|
||||
IDIWD_PRODUCTION_CHANGE,
|
||||
IDIWD_FORCE_RESORT,
|
||||
};
|
||||
|
||||
#endif /* INDUSTRY_H */
|
||||
|
|
|
@ -204,7 +204,7 @@ Industry::~Industry()
|
|||
*/
|
||||
void Industry::PostDestructor(size_t index)
|
||||
{
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 0);
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, IDIWD_FORCE_REBUILD);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1900,7 +1900,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type,
|
|||
if (GetIndustrySpec(i->type)->behaviour & INDUSTRYBEH_PLANT_ON_BUILT) {
|
||||
for (uint j = 0; j != 50; j++) PlantRandomFarmField(i);
|
||||
}
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 0);
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, IDIWD_FORCE_REBUILD);
|
||||
|
||||
if (!_generating_world) PopulateStationsNearby(i);
|
||||
}
|
||||
|
@ -2829,7 +2829,7 @@ void IndustryDailyLoop()
|
|||
cur_company.Restore();
|
||||
|
||||
/* production-change */
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 1);
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, IDIWD_PRODUCTION_CHANGE);
|
||||
}
|
||||
|
||||
void IndustryMonthlyLoop()
|
||||
|
@ -2851,7 +2851,7 @@ void IndustryMonthlyLoop()
|
|||
cur_company.Restore();
|
||||
|
||||
/* production-change */
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 1);
|
||||
InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, IDIWD_PRODUCTION_CHANGE);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1708,11 +1708,19 @@ public:
|
|||
*/
|
||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override
|
||||
{
|
||||
if (data == 0) {
|
||||
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
||||
this->industries.ForceRebuild();
|
||||
} else {
|
||||
this->industries.ForceResort();
|
||||
switch (data) {
|
||||
case IDIWD_FORCE_REBUILD:
|
||||
/* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */
|
||||
this->industries.ForceRebuild();
|
||||
break;
|
||||
|
||||
case IDIWD_PRODUCTION_CHANGE:
|
||||
if (this->industries.SortType() == 2) this->industries.ForceResort();
|
||||
break;
|
||||
|
||||
default:
|
||||
this->industries.ForceResort();
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue