summaryrefslogtreecommitdiff
path: root/src/engine.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2012-08-21 19:53:08 +0000
committerfrosch <frosch@openttd.org>2012-08-21 19:53:08 +0000
commit9f9cad1ac9faa674fc6bafdf3df41c5ea3fa3c15 (patch)
tree4d57c47943c5a4dfd7d94b3692f311ccd3e30ba0 /src/engine.cpp
parent4563c50c91e7a66d90fd35ecb84cebd2560beec5 (diff)
downloadopenttd-9f9cad1ac9faa674fc6bafdf3df41c5ea3fa3c15.tar.xz
(svn r24492) -Add: [NoGo] Useful behaviour for GSEngine::IsValidEngine and GSEngine::IsBuildable when outside GSCompanyMode scope.
Diffstat (limited to 'src/engine.cpp')
-rw-r--r--src/engine.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/engine.cpp b/src/engine.cpp
index 1500b9d89..541c025dd 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -146,12 +146,12 @@ Engine::~Engine()
}
/**
- * Checks whether the engine spec is properly initialised.
+ * Checks whether the engine is a valid (non-articulated part of an) engine.
* @return true if enabled
*/
bool Engine::IsEnabled() const
{
- return this->info.string_id != STR_NEWGRF_INVALID_ENGINE;
+ return this->info.string_id != STR_NEWGRF_INVALID_ENGINE && HasBit(this->info.climates, _settings_game.game_creation.landscape);
}
/**
@@ -998,8 +998,14 @@ bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company)
/* check if it's an engine of specified type */
if (e->type != type) return false;
- /* check if it's available */
- if (company != OWNER_DEITY && !HasBit(e->company_avail, company)) return false;
+ /* check if it's available ... */
+ if (company == OWNER_DEITY) {
+ /* ... for any company (preview does not count) */
+ if (!(e->flags & ENGINE_AVAILABLE) || e->company_avail == 0) return false;
+ } else {
+ /* ... for this company */
+ if (!HasBit(e->company_avail, company)) return false;
+ }
if (!e->IsEnabled()) return false;