diff options
author | planetmaker <planetmaker@openttd.org> | 2013-10-17 21:37:25 +0000 |
---|---|---|
committer | planetmaker <planetmaker@openttd.org> | 2013-10-17 21:37:25 +0000 |
commit | 2ee9a2b5e70bb52ae08d8d18d94b7e082a12a63f (patch) | |
tree | 4aa8cc9e07c0c324fc198a6e3b6a6b7d72d218b7 /src/newgrf_object.cpp | |
parent | 547b1fba45cb7a877cd4966a6854aeebffef0c71 (diff) | |
download | openttd-2ee9a2b5e70bb52ae08d8d18d94b7e082a12a63f.tar.xz |
(svn r25875) -Change: In scenario editor allow to build all objects which were available at any point in the past to support building scenarios with historic items
Diffstat (limited to 'src/newgrf_object.cpp')
-rw-r--r-- | src/newgrf_object.cpp | 14 |
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); } |