|
@@ -436,22 +436,12 @@ static void VehicleSetTriggers(const Res
|
|
|
assert(object->trigger != 0);
|
|
|
|
|
|
if (v != NULL) v->waiting_triggers = triggers;
|
|
|
}
|
|
|
|
|
|
|
|
|
static uint32 GetGRFParameter(EngineID engine_type, byte parameter)
|
|
|
{
|
|
|
const GRFFile *file = GetEngineGRF(engine_type);
|
|
|
|
|
|
if (file == NULL) return 0;
|
|
|
if (parameter >= file->param_end) return 0;
|
|
|
return file->param[parameter];
|
|
|
}
|
|
|
|
|
|
|
|
|
static uint8 LiveryHelper(EngineID engine, const Vehicle *v)
|
|
|
{
|
|
|
const Livery *l;
|
|
|
|
|
|
if (v == NULL) {
|
|
|
if (!IsValidPlayerID(_current_player)) return 0;
|
|
@@ -476,13 +466,12 @@ static uint32 VehicleGetVariable(const R
|
|
|
case 0x43: return _current_player | (LiveryHelper(object->u.vehicle.self_type, NULL) << 24); // Owner information
|
|
|
case 0x46: return 0; // Motion counter
|
|
|
case 0x48: return GetEngine(object->u.vehicle.self_type)->flags; // Vehicle Type Info
|
|
|
case 0x49: return _cur_year; // 'Long' format build year
|
|
|
case 0xC4: return Clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; // Build year
|
|
|
case 0xDA: return INVALID_VEHICLE; // Next vehicle
|
|
|
case 0x7F: return GetGRFParameter(object->u.vehicle.self_type, parameter); // Read GRF parameter
|
|
|
}
|
|
|
|
|
|
*available = false;
|
|
|
return UINT_MAX;
|
|
|
}
|
|
|
|
|
@@ -629,14 +618,12 @@ static uint32 VehicleGetVariable(const R
|
|
|
for (; v != NULL; v = v->Next()) {
|
|
|
if (GetEngine(v->engine_type)->internal_id == parameter) count++;
|
|
|
}
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
case 0x7F: return GetGRFParameter(v->engine_type, parameter); // Read GRF parameter
|
|
|
|
|
|
case 0xFE:
|
|
|
case 0xFF: {
|
|
|
uint16 modflags = 0;
|
|
|
|
|
|
if (v->type == VEH_TRAIN) {
|
|
|
const Vehicle *u = IsTrainWagon(v) && HasBit(v->vehicle_flags, VRF_POWEREDWAGON) ? v->First() : v;
|
|
@@ -829,12 +816,15 @@ static inline void NewVehicleResolver(Re
|
|
|
res->callback_param1 = 0;
|
|
|
res->callback_param2 = 0;
|
|
|
res->last_value = 0;
|
|
|
res->trigger = 0;
|
|
|
res->reseed = 0;
|
|
|
res->count = 0;
|
|
|
|
|
|
const Engine *e = GetEngine(engine_type);
|
|
|
res->grffile = (e != NULL ? e->grffile : NULL);
|
|
|
}
|
|
|
|
|
|
|
|
|
/** Retrieve the SpriteGroup for the specified vehicle.
|
|
|
* If the vehicle is not specified, the purchase list group for the engine is
|
|
|
* chosen. For trains, an additional engine override lookup is performed.
|