@@ -745,49 +745,49 @@ CommandCost CmdRenameEngine(TileIndex ti
/** Check if an engine is buildable.
* @param engine index of the engine to check.
* @param type the type the engine should be.
* @param company index of the company.
* @return True if an engine is valid, of the specified type, and buildable by
* the given company.
*/
bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company)
{
const Engine *e = Engine::GetIfValid(engine);
/* check if it's an engine that is in the engine array */
if (e == NULL) return false;
/* check if it's an engine of specified type */
if (e->type != type) return false;
/* check if it's available */
if (!HasBit(e->company_avail, company)) return false;
if (type == VEH_TRAIN) {
/* Check if the rail type is available to this company */
const Company *c = Company::Get(company);
if (!HasBit(c->avail_railtypes, RailVehInfo(engine)->railtype)) return false;
if (((GetRailTypeInfo(RailVehInfo(engine)->railtype))->compatible_railtypes & c->avail_railtypes) == 0) return false;
}
return true;
/**
* Check if an engine is refittable.
* Note: Likely you want to use IsArticulatedVehicleRefittable().
* @return true if the engine is refittable.
bool IsEngineRefittable(EngineID engine)
if (e->type == VEH_SHIP && !e->u.ship.refittable) return false;
if (!e->CanCarryCargo()) return false;
const EngineInfo *ei = &e->info;
if (ei->refit_mask == 0) return false;
Status change: