diff --git a/src/engine.cpp b/src/engine.cpp index 6f544edf8c..2a6183d7ec 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -144,6 +144,15 @@ Engine::~Engine() free(this->name); } +/** + * Checks whether the engine spec is properly initialised. + * @return true if enabled + */ +bool Engine::IsEnabled() const +{ + return this->info.string_id != STR_NEWGRF_INVALID_ENGINE; +} + /** * Determines whether an engine can carry something. * A vehicle cannot carry anything if its capacity is zero, or none of the possible cargos is available in the climate. @@ -935,7 +944,7 @@ bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company) /* check if it's available */ if (!HasBit(e->company_avail, company)) return false; - if (e->info.string_id == STR_NEWGRF_INVALID_ENGINE) return false; + if (!e->IsEnabled()) return false; if (type == VEH_TRAIN) { /* Check if the rail type is available to this company */ diff --git a/src/engine_base.h b/src/engine_base.h index 78a6471391..a8e09129a2 100644 --- a/src/engine_base.h +++ b/src/engine_base.h @@ -61,6 +61,7 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> { Engine(); Engine(VehicleType type, EngineID base); ~Engine(); + bool IsEnabled() const; /** * Determines the default cargo type of an engine. diff --git a/src/strings.cpp b/src/strings.cpp index 42e0a94508..1edea200b7 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1110,7 +1110,7 @@ static char *FormatString(char *buff, const char *str_arg, int64 *argv, const in assert(e != NULL); - if (e->name != NULL && e->info.string_id != STR_NEWGRF_INVALID_ENGINE) { + if (e->name != NULL && e->IsEnabled()) { buff = strecpy(buff, e->name, last); } else { buff = GetStringWithArgs(buff, e->info.string_id, NULL, NULL, last);