diff options
Diffstat (limited to 'src/newgrf_engine.cpp')
-rw-r--r-- | src/newgrf_engine.cpp | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index 27320ce61..b54251e93 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -44,7 +44,7 @@ void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const SpriteGroup * WagonOverride *wo; assert(engine < TOTAL_NUM_ENGINES); - assert(cargo < NUM_GLOBAL_CID); + assert(cargo < NUM_CARGO + 1); // Include CT_DEFAULT pseudo cargo. CT_PURCHASE does not apply to overrides. wos = &_engine_wagon_overrides[engine]; wos->overrides_count++; @@ -76,7 +76,7 @@ static const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID car int j; for (j = 0; j < wo->trains; j++) { - if (wo->train_id[j] == overriding_engine && (wo->cargo == cargo || wo->cargo == GC_DEFAULT)) return wo->group; + if (wo->train_id[j] == overriding_engine && (wo->cargo == cargo || wo->cargo == CT_DEFAULT)) return wo->group; } } return NULL; @@ -105,17 +105,14 @@ void UnloadWagonOverrides(void) } } -// 0 - 28 are cargos, 29 is default, 30 is the advert (purchase list) -// (It isn't and shouldn't be like this in the GRF files since new cargo types -// may appear in future - however it's more convenient to store it like this in -// memory. --pasky) -static const SpriteGroup *_engine_custom_sprites[TOTAL_NUM_ENGINES][NUM_GLOBAL_CID]; +/* Space for NUM_CARGO real cargos and 2 pseudo cargos, CT_DEFAULT and CT_PURCHASE */ +static const SpriteGroup *_engine_custom_sprites[TOTAL_NUM_ENGINES][NUM_CARGO + 2]; static const GRFFile *_engine_grf[TOTAL_NUM_ENGINES]; void SetCustomEngineSprites(EngineID engine, byte cargo, const SpriteGroup *group) { - assert(engine < TOTAL_NUM_ENGINES); - assert(cargo < NUM_GLOBAL_CID); + assert(engine < lengthof(_engine_custom_sprites)); + assert(cargo < lengthof(*_engine_custom_sprites)); if (_engine_custom_sprites[engine][cargo] != NULL) { grfmsg(6, "SetCustomEngineSprites: engine %d cargo %d already has group -- replacing", engine, cargo); @@ -128,15 +125,8 @@ void SetCustomEngineSprites(EngineID engine, byte cargo, const SpriteGroup *grou */ void UnloadCustomEngineSprites(void) { - EngineID engine; - CargoID cargo; - - for (engine = 0; engine < TOTAL_NUM_ENGINES; engine++) { - for (cargo = 0; cargo < NUM_GLOBAL_CID; cargo++) { - _engine_custom_sprites[engine][cargo] = NULL; - } - _engine_grf[engine] = 0; - } + memset(_engine_custom_sprites, 0, sizeof(_engine_custom_sprites)); + memset(_engine_grf, 0, sizeof(_engine_grf)); } static const SpriteGroup *heli_rotor_custom_sprites[NUM_AIRCRAFT_ENGINES]; @@ -818,12 +808,9 @@ static const SpriteGroup *GetVehicleSpriteGroup(EngineID engine, const Vehicle * CargoID cargo; if (v == NULL) { - cargo = GC_PURCHASE; + cargo = CT_PURCHASE; } else { - const CargoSpec *cs = GetCargo(v->cargo_type); - assert(cs->IsValid()); - - cargo = cs->bitnum; + cargo = v->cargo_type; if (v->type == VEH_Train) { group = GetWagonOverrideSpriteSet(engine, cargo, v->u.rail.first_engine); @@ -836,7 +823,7 @@ static const SpriteGroup *GetVehicleSpriteGroup(EngineID engine, const Vehicle * if (group != NULL) return group; /* Fall back to the default set if the selected cargo type is not defined */ - return _engine_custom_sprites[engine][GC_DEFAULT]; + return _engine_custom_sprites[engine][CT_DEFAULT]; } @@ -888,7 +875,7 @@ SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v, bool info_vie bool UsesWagonOverride(const Vehicle* v) { assert(v->type == VEH_Train); - return GetWagonOverrideSpriteSet(v->engine_type, GetCargo(v->cargo_type)->bitnum, v->u.rail.first_engine) != NULL; + return GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, v->u.rail.first_engine) != NULL; } /** |