(svn r23075) -Codechange: Add GetGRF() and GetGRFID() methods to Engine and Vehicle to simplify code.
This commit is contained in:
@@ -111,29 +111,6 @@ void SetEngineGRF(EngineID engine, const GRFFile *file)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the GRFFile tied to an engine
|
||||
* @param engine Engine ID to retrieve.
|
||||
* @return Pointer to GRFFile.
|
||||
*/
|
||||
const GRFFile *GetEngineGRF(EngineID engine)
|
||||
{
|
||||
return Engine::Get(engine)->grf_prop.grffile;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the GRF ID of the GRFFile tied to an engine
|
||||
* @param engine Engine ID to retrieve.
|
||||
* @return 32 bit GRFID value.
|
||||
*/
|
||||
uint32 GetEngineGRFID(EngineID engine)
|
||||
{
|
||||
const GRFFile *file = GetEngineGRF(engine);
|
||||
return file == NULL ? 0 : file->grfid;
|
||||
}
|
||||
|
||||
|
||||
static int MapOldSubType(const Vehicle *v)
|
||||
{
|
||||
switch (v->type) {
|
||||
@@ -488,7 +465,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const ResolverObject *object, byte
|
||||
/* Calculated vehicle parameters */
|
||||
switch (variable) {
|
||||
case 0x25: // Get engine GRF ID
|
||||
return GetEngineGRFID(v->engine_type);
|
||||
return v->GetGRFID();
|
||||
|
||||
case 0x40: // Get length of consist
|
||||
if (!HasBit(v->grf_cache.cache_valid, NCVV_POSITION_CONSIST_LENGTH)) {
|
||||
@@ -615,7 +592,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const ResolverObject *object, byte
|
||||
*/
|
||||
const CargoSpec *cs = CargoSpec::Get(v->cargo_type);
|
||||
|
||||
return (cs->classes << 16) | (cs->weight << 8) | GetEngineGRF(v->engine_type)->cargo_map[v->cargo_type];
|
||||
return (cs->classes << 16) | (cs->weight << 8) | v->GetGRF()->cargo_map[v->cargo_type];
|
||||
}
|
||||
|
||||
case 0x48: return v->GetEngine()->flags; // Vehicle Type Info
|
||||
@@ -632,8 +609,7 @@ static uint32 VehicleGetVariable(Vehicle *v, const ResolverObject *object, byte
|
||||
|
||||
/* Variables which use the parameter */
|
||||
case 0x60: // Count consist's engine ID occurance
|
||||
//EngineID engine = GetNewEngineID(GetEngineGRF(v->engine_type), v->type, parameter);
|
||||
if (v->type != VEH_TRAIN) return v->GetEngine()->grf_prop.local_id == parameter;
|
||||
if (v->type != VEH_TRAIN) return v->GetEngine()->grf_prop.local_id == parameter ? 1 : 0;
|
||||
|
||||
{
|
||||
uint count = 0;
|
||||
@@ -875,7 +851,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
||||
CargoID cargo_type = e->GetDefaultCargoType();
|
||||
if (cargo_type != CT_INVALID) {
|
||||
const CargoSpec *cs = CargoSpec::Get(cargo_type);
|
||||
return (cs->classes << 16) | (cs->weight << 8) | GetEngineGRF(e->index)->cargo_map[cargo_type];
|
||||
return (cs->classes << 16) | (cs->weight << 8) | e->GetGRF()->cargo_map[cargo_type];
|
||||
} else {
|
||||
return 0x000000FF;
|
||||
}
|
||||
@@ -941,7 +917,7 @@ static inline void NewVehicleResolver(ResolverObject *res, EngineID engine_type,
|
||||
res->ResetState();
|
||||
|
||||
const Engine *e = Engine::Get(engine_type);
|
||||
res->grffile = (e != NULL ? e->grf_prop.grffile : NULL);
|
||||
res->grffile = (e != NULL ? e->GetGRF() : NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -1199,10 +1175,8 @@ void TriggerVehicle(Vehicle *v, VehicleTrigger trigger)
|
||||
uint ListPositionOfEngine(EngineID engine)
|
||||
{
|
||||
const Engine *e = Engine::Get(engine);
|
||||
if (e->grf_prop.grffile == NULL) return e->list_position;
|
||||
|
||||
/* Crude sorting to group by GRF ID */
|
||||
return (e->grf_prop.grffile->grfid * 256) + e->list_position;
|
||||
return (e->GetGRFID() * 256) + e->list_position;
|
||||
}
|
||||
|
||||
struct ListOrderChange {
|
||||
@@ -1239,7 +1213,7 @@ void CommitVehicleListOrderChanges()
|
||||
/* Populate map with current list positions */
|
||||
Engine *e;
|
||||
FOR_ALL_ENGINES_OF_TYPE(e, source_e->type) {
|
||||
if (!_settings_game.vehicle.dynamic_engines || e->grf_prop.grffile == source_e->grf_prop.grffile) {
|
||||
if (!_settings_game.vehicle.dynamic_engines || e->GetGRF() == source_e->GetGRF()) {
|
||||
if (e->grf_prop.local_id == target) target_e = e;
|
||||
lptr_map[e->list_position] = e;
|
||||
}
|
||||
|
Reference in New Issue
Block a user