(svn r8891) -Codechange: Remove remains of global cargo scheme. All cargo mapping is now dealt with only in NewGRF code, on load where possible.
This commit is contained in:
		@@ -16,10 +16,7 @@ static CargoSpec _cargo[NUM_CARGO];
 | 
			
		||||
 | 
			
		||||
static const byte INVALID_CARGO = 0xFF;
 | 
			
		||||
 | 
			
		||||
/* Quick mapping from cargo type 'bitnums' to real cargo IDs */
 | 
			
		||||
static CargoID _cargo_bitnum_map[32];
 | 
			
		||||
 | 
			
		||||
/* Bitmask of cargo type 'bitnums' availabe */
 | 
			
		||||
/* Bitmask of cargo types available */
 | 
			
		||||
uint32 _cargo_mask;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -31,7 +28,6 @@ void SetupCargoForClimate(LandscapeID l)
 | 
			
		||||
	memset(_cargo, 0, sizeof(_cargo));
 | 
			
		||||
	for (CargoID i = 0; i < lengthof(_cargo); i++) _cargo[i].bitnum = INVALID_CARGO;
 | 
			
		||||
 | 
			
		||||
	memset(_cargo_bitnum_map, CT_INVALID, sizeof(_cargo_bitnum_map));
 | 
			
		||||
	_cargo_mask = 0;
 | 
			
		||||
 | 
			
		||||
	for (CargoID i = 0; i < lengthof(_default_climate_cargo[l]); i++) {
 | 
			
		||||
@@ -43,12 +39,8 @@ void SetupCargoForClimate(LandscapeID l)
 | 
			
		||||
			if (_default_cargo[j].label == cl) {
 | 
			
		||||
				_cargo[i] = _default_cargo[j];
 | 
			
		||||
 | 
			
		||||
				/* Populate the bitnum map and masks */
 | 
			
		||||
				byte bitnum = _cargo[i].bitnum;
 | 
			
		||||
				if (bitnum < lengthof(_cargo_bitnum_map)) {
 | 
			
		||||
					_cargo_bitnum_map[bitnum] = i;
 | 
			
		||||
					SETBIT(_cargo_mask, bitnum);
 | 
			
		||||
				}
 | 
			
		||||
				/* Populate the available cargo mask */
 | 
			
		||||
				SETBIT(_cargo_mask, i);
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
@@ -63,14 +55,6 @@ const CargoSpec *GetCargo(CargoID c)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CargoID GetCargoIDByBitnum(byte bitnum)
 | 
			
		||||
{
 | 
			
		||||
	assert(bitnum < lengthof(_cargo_bitnum_map));
 | 
			
		||||
	assert(_cargo_bitnum_map[bitnum] != CT_INVALID);
 | 
			
		||||
	return _cargo_bitnum_map[bitnum];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool CargoSpec::IsValid() const
 | 
			
		||||
{
 | 
			
		||||
	return bitnum != INVALID_CARGO;
 | 
			
		||||
 
 | 
			
		||||
@@ -45,8 +45,6 @@ extern uint32 _cargo_mask;
 | 
			
		||||
void SetupCargoForClimate(LandscapeID l);
 | 
			
		||||
/* Retrieve cargo details for the given cargo ID */
 | 
			
		||||
const CargoSpec *GetCargo(CargoID c);
 | 
			
		||||
/* Get the cargo ID of a cargo bitnum */
 | 
			
		||||
CargoID GetCargoIDByBitnum(byte bitnum);
 | 
			
		||||
/* Get the cargo ID with the cargo label */
 | 
			
		||||
CargoID GetCargoIDByLabel(CargoLabel cl);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1895,8 +1895,8 @@ static void NewSpriteGroup(byte *buf, int len)
 | 
			
		||||
static CargoID TranslateCargo(uint8 feature, uint8 ctype)
 | 
			
		||||
{
 | 
			
		||||
	/* Special cargo types for purchase list and stations */
 | 
			
		||||
	if (feature == GSF_STATION && ctype == 0xFE) return GC_DEFAULT_NA;
 | 
			
		||||
	if (ctype == 0xFF) return GC_PURCHASE;
 | 
			
		||||
	if (feature == GSF_STATION && ctype == 0xFE) return CT_DEFAULT_NA;
 | 
			
		||||
	if (ctype == 0xFF) return CT_PURCHASE;
 | 
			
		||||
 | 
			
		||||
	/* Check if the cargo type is out of bounds of the cargo translation table */
 | 
			
		||||
	if (ctype >= (_cur_grffile->cargo_max == 0 ? _default_cargo_max : _cur_grffile->cargo_max)) {
 | 
			
		||||
@@ -1917,9 +1917,6 @@ static CargoID TranslateCargo(uint8 feature, uint8 ctype)
 | 
			
		||||
		return CT_INVALID;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Remap back to global cargo */
 | 
			
		||||
	ctype = GetCargo(ctype)->bitnum;
 | 
			
		||||
 | 
			
		||||
	grfmsg(6, "FeatureMapSpriteGroup: Cargo '%c%c%c%c' mapped to cargo type %d.", GB(cl, 24, 8), GB(cl, 16, 8), GB(cl, 8, 8), GB(cl, 0, 8), ctype);
 | 
			
		||||
	return ctype;
 | 
			
		||||
}
 | 
			
		||||
@@ -2016,7 +2013,7 @@ static void FeatureMapSpriteGroup(byte *buf, int len)
 | 
			
		||||
				uint8 stid = buf[3 + i];
 | 
			
		||||
				StationSpec *statspec = _cur_grffile->stations[stid];
 | 
			
		||||
 | 
			
		||||
				statspec->spritegroup[GC_DEFAULT] = _cur_grffile->spritegroups[groupid];
 | 
			
		||||
				statspec->spritegroup[CT_DEFAULT] = _cur_grffile->spritegroups[groupid];
 | 
			
		||||
				statspec->grfid = _cur_grffile->grfid;
 | 
			
		||||
				statspec->localidx = stid;
 | 
			
		||||
				SetCustomStationSpec(statspec);
 | 
			
		||||
@@ -2106,10 +2103,10 @@ static void FeatureMapSpriteGroup(byte *buf, int len)
 | 
			
		||||
					SetRotorOverrideSprites(engine, _cur_grffile->spritegroups[groupid]);
 | 
			
		||||
				} else {
 | 
			
		||||
					// TODO: No multiple cargo types per vehicle yet. --pasky
 | 
			
		||||
					SetWagonOverrideSprites(engine, GC_DEFAULT, _cur_grffile->spritegroups[groupid], last_engines, last_engines_count);
 | 
			
		||||
					SetWagonOverrideSprites(engine, CT_DEFAULT, _cur_grffile->spritegroups[groupid], last_engines, last_engines_count);
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				SetCustomEngineSprites(engine, GC_DEFAULT, _cur_grffile->spritegroups[groupid]);
 | 
			
		||||
				SetCustomEngineSprites(engine, CT_DEFAULT, _cur_grffile->spritegroups[groupid]);
 | 
			
		||||
				SetEngineGRF(engine, _cur_grffile);
 | 
			
		||||
				last_engines[i] = engine;
 | 
			
		||||
			}
 | 
			
		||||
@@ -3813,8 +3810,8 @@ static void CalculateRefitMasks(void)
 | 
			
		||||
			// Build up the list of cargo types from the set cargo classes.
 | 
			
		||||
			for (i = 0; i < NUM_CARGO; i++) {
 | 
			
		||||
				const CargoSpec *cs = GetCargo(i);
 | 
			
		||||
				if (cargo_allowed[engine]    & cs->classes) SETBIT(mask,     cs->bitnum);
 | 
			
		||||
				if (cargo_disallowed[engine] & cs->classes) SETBIT(not_mask, cs->bitnum);
 | 
			
		||||
				if (cargo_allowed[engine]    & cs->classes) SETBIT(mask,     i);
 | 
			
		||||
				if (cargo_disallowed[engine] & cs->classes) SETBIT(not_mask, i);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			// Don't apply default refit mask to wagons or engines with no capacity
 | 
			
		||||
@@ -3831,7 +3828,7 @@ static void CalculateRefitMasks(void)
 | 
			
		||||
					CargoID cargo = GetCargoIDByLabel(cl[i]);
 | 
			
		||||
					if (cargo == CT_INVALID) continue;
 | 
			
		||||
 | 
			
		||||
					SETBIT(xor_mask, GetCargo(cargo)->bitnum);
 | 
			
		||||
					SETBIT(xor_mask, cargo);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -15,41 +15,8 @@ enum {
 | 
			
		||||
	CC_REFRIGERATED = 1 << 7,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum GlobalCargo {
 | 
			
		||||
	GC_PASSENGERS   =   0,
 | 
			
		||||
	GC_COAL         =   1,
 | 
			
		||||
	GC_MAIL         =   2,
 | 
			
		||||
	GC_OIL          =   3,
 | 
			
		||||
	GC_LIVESTOCK    =   4,
 | 
			
		||||
	GC_GOODS        =   5,
 | 
			
		||||
	GC_GRAIN        =   6, // GC_WHEAT / GC_MAIZE
 | 
			
		||||
	GC_WOOD         =   7,
 | 
			
		||||
	GC_IRON_ORE     =   8,
 | 
			
		||||
	GC_STEEL        =   9,
 | 
			
		||||
	GC_VALUABLES    =  10, // GC_GOLD / GC_DIAMONDS
 | 
			
		||||
	GC_PAPER        =  11,
 | 
			
		||||
	GC_FOOD         =  12,
 | 
			
		||||
	GC_FRUIT        =  13,
 | 
			
		||||
	GC_COPPER_ORE   =  14,
 | 
			
		||||
	GC_WATER        =  15,
 | 
			
		||||
	GC_RUBBER       =  16,
 | 
			
		||||
	GC_SUGAR        =  17,
 | 
			
		||||
	GC_TOYS         =  18,
 | 
			
		||||
	GC_BATTERIES    =  19,
 | 
			
		||||
	GC_CANDY        =  20,
 | 
			
		||||
	GC_TOFFEE       =  21,
 | 
			
		||||
	GC_COLA         =  22,
 | 
			
		||||
	GC_COTTON_CANDY =  23,
 | 
			
		||||
	GC_BUBBLES      =  24,
 | 
			
		||||
	GC_PLASTIC      =  25,
 | 
			
		||||
	GC_FIZZY_DRINKS =  26,
 | 
			
		||||
	GC_PAPER_TEMP   =  27,
 | 
			
		||||
	GC_UNDEFINED    =  28, // undefined; unused slot in arctic climate
 | 
			
		||||
	GC_DEFAULT      =  29,
 | 
			
		||||
	GC_PURCHASE     =  30,
 | 
			
		||||
	GC_DEFAULT_NA   =  31, // New stations only
 | 
			
		||||
	GC_INVALID      = 255,
 | 
			
		||||
	NUM_GLOBAL_CID  =  32
 | 
			
		||||
};
 | 
			
		||||
static const CargoID CT_DEFAULT      = NUM_CARGO + 0;
 | 
			
		||||
static const CargoID CT_PURCHASE     = NUM_CARGO + 1;
 | 
			
		||||
static const CargoID CT_DEFAULT_NA   = NUM_CARGO + 2;
 | 
			
		||||
 | 
			
		||||
#endif /* NEWGRF_CARGO_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -447,20 +447,20 @@ static const SpriteGroup *StationResolveReal(const ResolverObject *object, const
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch (cargo_type) {
 | 
			
		||||
		case GC_INVALID:
 | 
			
		||||
		case GC_DEFAULT_NA:
 | 
			
		||||
		case GC_PURCHASE:
 | 
			
		||||
		case CT_INVALID:
 | 
			
		||||
		case CT_DEFAULT_NA:
 | 
			
		||||
		case CT_PURCHASE:
 | 
			
		||||
			cargo = 0;
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		case GC_DEFAULT:
 | 
			
		||||
		case CT_DEFAULT:
 | 
			
		||||
			for (cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) {
 | 
			
		||||
				cargo += GB(st->goods[cargo_type].waiting_acceptance, 0, 12);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		default:
 | 
			
		||||
			cargo = GB(st->goods[GetCargoIDByBitnum(cargo_type)].waiting_acceptance, 0, 12);
 | 
			
		||||
			cargo = GB(st->goods[cargo_type].waiting_acceptance, 0, 12);
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -506,18 +506,18 @@ static void NewStationResolver(ResolverObject *res, const StationSpec *statspec,
 | 
			
		||||
static const SpriteGroup *ResolveStation(ResolverObject *object)
 | 
			
		||||
{
 | 
			
		||||
	const SpriteGroup *group;
 | 
			
		||||
	CargoID ctype = GC_DEFAULT_NA;
 | 
			
		||||
	CargoID ctype = CT_DEFAULT_NA;
 | 
			
		||||
 | 
			
		||||
	if (object->u.station.st == NULL) {
 | 
			
		||||
		/* No station, so we are in a purchase list */
 | 
			
		||||
		ctype = GC_PURCHASE;
 | 
			
		||||
		ctype = CT_PURCHASE;
 | 
			
		||||
	} else {
 | 
			
		||||
		/* Pick the first cargo that we have waiting */
 | 
			
		||||
		for (CargoID cargo = 0; cargo < NUM_CARGO; cargo++) {
 | 
			
		||||
			const CargoSpec *cs = GetCargo(cargo);
 | 
			
		||||
			if (cs->IsValid() && object->u.station.statspec->spritegroup[cs->bitnum] != NULL &&
 | 
			
		||||
			if (cs->IsValid() && object->u.station.statspec->spritegroup[cargo] != NULL &&
 | 
			
		||||
					GB(object->u.station.st->goods[cargo].waiting_acceptance, 0, 12) != 0) {
 | 
			
		||||
				ctype = cs->bitnum;
 | 
			
		||||
				ctype = cargo;
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
@@ -525,7 +525,7 @@ static const SpriteGroup *ResolveStation(ResolverObject *object)
 | 
			
		||||
 | 
			
		||||
	group = object->u.station.statspec->spritegroup[ctype];
 | 
			
		||||
	if (group == NULL) {
 | 
			
		||||
		ctype = GC_DEFAULT;
 | 
			
		||||
		ctype = CT_DEFAULT;
 | 
			
		||||
		group = object->u.station.statspec->spritegroup[ctype];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -79,11 +79,11 @@ typedef struct StationSpec {
 | 
			
		||||
	bool copied_layouts;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * NUM_GLOBAL_CID sprite groups.
 | 
			
		||||
	 * NUM_CARGO real cargo plus three pseudo cargo sprite groups.
 | 
			
		||||
	 * Used for obtaining the sprite offset of custom sprites, and for
 | 
			
		||||
	 * evaluating callbacks.
 | 
			
		||||
	 */
 | 
			
		||||
	const struct SpriteGroup *spritegroup[NUM_GLOBAL_CID];
 | 
			
		||||
	const struct SpriteGroup *spritegroup[NUM_CARGO + 3];
 | 
			
		||||
} StationSpec;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -762,8 +762,7 @@ bool CanFillVehicle(Vehicle *v)
 | 
			
		||||
 */
 | 
			
		||||
bool CanRefitTo(EngineID engine_type, CargoID cid_to)
 | 
			
		||||
{
 | 
			
		||||
	CargoID cid = GetCargo(cid_to)->bitnum;
 | 
			
		||||
	return HASBIT(EngInfo(engine_type)->refit_mask, cid);
 | 
			
		||||
	return HASBIT(EngInfo(engine_type)->refit_mask, cid_to);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** Find the first cargo type that an engine can be refitted to.
 | 
			
		||||
@@ -776,7 +775,7 @@ CargoID FindFirstRefittableCargo(EngineID engine_type)
 | 
			
		||||
 | 
			
		||||
	if (refit_mask != 0) {
 | 
			
		||||
		for (CargoID cid = CT_PASSENGERS; cid < NUM_CARGO; cid++) {
 | 
			
		||||
			if (HASBIT(refit_mask, GetCargo(cid)->bitnum)) return cid;
 | 
			
		||||
			if (HASBIT(refit_mask, cid)) return cid;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -210,10 +210,8 @@ static RefitList *BuildRefitList(const Vehicle *v)
 | 
			
		||||
 | 
			
		||||
		/* Loop through all cargos in the refit mask */
 | 
			
		||||
		for (CargoID cid = 0; cid != NUM_CARGO && num_lines < max_lines; cid++) {
 | 
			
		||||
			const CargoSpec *cs = GetCargo(cid);
 | 
			
		||||
 | 
			
		||||
			/* Skip cargo type if it's not listed */
 | 
			
		||||
			if (!HASBIT(cmask, cs->bitnum)) continue;
 | 
			
		||||
			if (!HASBIT(cmask, cid)) continue;
 | 
			
		||||
 | 
			
		||||
			/* Check the vehicle's callback mask for cargo suffixes */
 | 
			
		||||
			if (HASBIT(callbackmask, CBM_CARGO_SUFFIX)) {
 | 
			
		||||
@@ -516,9 +514,7 @@ uint ShowRefitOptionsList(int x, int y, uint w, EngineID engine)
 | 
			
		||||
 | 
			
		||||
		/* Add each cargo type to the list */
 | 
			
		||||
		for (CargoID cid = 0; cid < NUM_CARGO; cid++) {
 | 
			
		||||
			const CargoSpec *cs = GetCargo(cid);
 | 
			
		||||
 | 
			
		||||
			if (!HASBIT(cmask, cs->bitnum)) continue;
 | 
			
		||||
			if (!HASBIT(cmask, cid)) continue;
 | 
			
		||||
 | 
			
		||||
			if (!first) b = strecpy(b, ", ", lastof(_userstring));
 | 
			
		||||
			first = false;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user