Changeset - r17236:40bfbfc512f0
[Not reviewed]
master
0 3 0
frosch - 13 years ago 2011-02-05 20:37:00
frosch@openttd.org
(svn r21986) -Codechange: Add helper function to test whether an engine is still associated to a GRF.
3 files changed with 12 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/engine.cpp
Show inline comments
 
@@ -142,12 +142,21 @@ Engine::~Engine()
 
{
 
	UnloadWagonOverrides(this);
 
	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.
 
 * @return true if the vehicle can carry something.
 
 */
 
bool Engine::CanCarryCargo() const
 
{
 
@@ -932,13 +941,13 @@ bool IsEngineBuildable(EngineID engine, 
 
	/* 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 (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 */
 
		const Company *c = Company::Get(company);
 
		if (((GetRailTypeInfo(e->u.rail.railtype))->compatible_railtypes & c->avail_railtypes) == 0) return false;
 
	}
src/engine_base.h
Show inline comments
 
@@ -58,12 +58,13 @@ struct Engine : EnginePool::PoolItem<&_e
 
	struct WagonOverride *overrides;
 
	uint16 list_position;
 

	
 
	Engine();
 
	Engine(VehicleType type, EngineID base);
 
	~Engine();
 
	bool IsEnabled() const;
 

	
 
	/**
 
	 * Determines the default cargo type of an engine.
 
	 *
 
	 * Usually a valid cargo is returned, even though the vehicle has zero capacity, and can therefore not carry anything. But the cargotype is still used
 
	 * for livery selection etc..
src/strings.cpp
Show inline comments
 
@@ -1107,13 +1107,13 @@ static char *FormatString(char *buff, co
 
			case SCC_ENGINE_NAME: { // {ENGINE}
 
				EngineID engine = (EngineID)GetInt32(&argv, argve, &argt, SCC_ENGINE_NAME);
 
				const Engine *e = Engine::Get(engine);
 

	
 
				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);
 
				}
 
				break;
 
			}
0 comments (0 inline, 0 general)