diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp --- a/src/newgrf_object.cpp +++ b/src/newgrf_object.cpp @@ -54,15 +54,23 @@ ObjectSpec _object_specs[NUM_OBJECTS]; } /** + * Check whether the object might be available at some point in this game with the current game mode. + * @return true if it might be available. + */ +bool ObjectSpec::IsEverAvailable() const +{ + return this->enabled && HasBit(this->climate, _settings_game.game_creation.landscape) && + (this->flags & (_game_mode != GM_EDITOR ? OBJECT_FLAG_ONLY_IN_SCENEDIT : OBJECT_FLAG_ONLY_IN_GAME)) == 0; +} + +/** * Check whether the object is available at this time. * @return true if it is available. */ bool ObjectSpec::IsAvailable() const { - return this->enabled && _date > this->introduction_date && - (_date < this->end_of_life_date || this->end_of_life_date < this->introduction_date + 365) && - HasBit(this->climate, _settings_game.game_creation.landscape) && - (flags & (_game_mode != GM_EDITOR ? OBJECT_FLAG_ONLY_IN_SCENEDIT : OBJECT_FLAG_ONLY_IN_GAME)) == 0; + return this->IsEverAvailable() && _date > this->introduction_date && + (_date < this->end_of_life_date || this->end_of_life_date < this->introduction_date + 365); } /** diff --git a/src/newgrf_object.h b/src/newgrf_object.h --- a/src/newgrf_object.h +++ b/src/newgrf_object.h @@ -82,6 +82,7 @@ struct ObjectSpec { */ Money GetClearCost() const { return GetPrice(PR_CLEAR_OBJECT, this->clear_cost_multiplier, this->grf_prop.grffile, 0); } + bool IsEverAvailable() const; bool IsAvailable() const; uint Index() const;