summaryrefslogtreecommitdiff
path: root/src/newgrf_object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/newgrf_object.cpp')
-rw-r--r--src/newgrf_object.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp
index 8eaff1385..57468d7c7 100644
--- a/src/newgrf_object.cpp
+++ b/src/newgrf_object.cpp
@@ -13,6 +13,7 @@
#include "company_base.h"
#include "company_func.h"
#include "debug.h"
+#include "genworld.h"
#include "newgrf_class_func.h"
#include "newgrf_object.h"
#include "newgrf_sound.h"
@@ -58,7 +59,16 @@ ObjectSpec _object_specs[NUM_OBJECTS];
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;
+ (this->flags & ((_game_mode != GM_EDITOR && !_generating_world) ? OBJECT_FLAG_ONLY_IN_SCENEDIT : OBJECT_FLAG_ONLY_IN_GAME)) == 0;
+}
+
+/**
+ * Check whether the object was available at some point in the past or present in this game with the current game mode.
+ * @return true if it was ever or is available.
+ */
+bool ObjectSpec::WasEverAvailable() const
+{
+ return this->IsEverAvailable() && _date > this->introduction_date;
}
/**
@@ -67,7 +77,7 @@ bool ObjectSpec::IsEverAvailable() const
*/
bool ObjectSpec::IsAvailable() const
{
- return this->IsEverAvailable() && _date > this->introduction_date &&
+ return this->WasEverAvailable() &&
(_date < this->end_of_life_date || this->end_of_life_date < this->introduction_date + 365);
}