1
0
Fork 0

Add: [NewGRF] Second vehicle property for additional callback flags.

pull/10435/head
Michael Lutz 2023-01-22 18:56:36 +01:00
parent f5394ed2ef
commit 2d73076056
3 changed files with 25 additions and 8 deletions

View File

@ -150,10 +150,10 @@ struct EngineInfo {
CargoID cargo_type; CargoID cargo_type;
CargoTypes refit_mask; CargoTypes refit_mask;
byte refit_cost; byte refit_cost;
byte misc_flags; ///< Miscellaneous flags. @see EngineMiscFlags byte misc_flags; ///< Miscellaneous flags. @see EngineMiscFlags
byte callback_mask; ///< Bitmask of vehicle callbacks that have to be called uint16 callback_mask; ///< Bitmask of vehicle callbacks that have to be called
int8 retire_early; ///< Number of years early to retire vehicle int8 retire_early; ///< Number of years early to retire vehicle
StringID string_id; ///< Default name of engine StringID string_id; ///< Default name of engine
uint16 cargo_age_period; ///< Number of ticks before carried cargo is aged. uint16 cargo_age_period; ///< Number of ticks before carried cargo is aged.
EngineID variant_id; ///< Engine variant ID. If set, will be treated specially in purchase lists. EngineID variant_id; ///< Engine variant ID. If set, will be treated specially in purchase lists.
ExtraEngineFlags extra_flags; ExtraEngineFlags extra_flags;

View File

@ -1237,7 +1237,7 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop
} }
case 0x1E: // Callback case 0x1E: // Callback
ei->callback_mask = buf->ReadByte(); SB(ei->callback_mask, 0, 8, buf->ReadByte());
break; break;
case PROP_TRAIN_TRACTIVE_EFFORT: // 0x1F Tractive effort coefficient case PROP_TRAIN_TRACTIVE_EFFORT: // 0x1F Tractive effort coefficient
@ -1336,6 +1336,10 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop
ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord()); ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord());
break; break;
case 0x31: // Callback additional mask
SB(ei->callback_mask, 8, 8, buf->ReadByte());
break;
default: default:
ret = CommonVehicleChangeInfo(ei, prop, buf); ret = CommonVehicleChangeInfo(ei, prop, buf);
break; break;
@ -1454,7 +1458,7 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop
} }
case 0x17: // Callback mask case 0x17: // Callback mask
ei->callback_mask = buf->ReadByte(); SB(ei->callback_mask, 0, 8, buf->ReadByte());
break; break;
case PROP_ROADVEH_TRACTIVE_EFFORT: // Tractive effort coefficient in 1/256. case PROP_ROADVEH_TRACTIVE_EFFORT: // Tractive effort coefficient in 1/256.
@ -1538,6 +1542,10 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop
ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord()); ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord());
break; break;
case 0x28: // Callback additional mask
SB(ei->callback_mask, 8, 8, buf->ReadByte());
break;
default: default:
ret = CommonVehicleChangeInfo(ei, prop, buf); ret = CommonVehicleChangeInfo(ei, prop, buf);
break; break;
@ -1638,7 +1646,7 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop
} }
case 0x12: // Callback mask case 0x12: // Callback mask
ei->callback_mask = buf->ReadByte(); SB(ei->callback_mask, 0, 8, buf->ReadByte());
break; break;
case 0x13: // Refit cost case 0x13: // Refit cost
@ -1718,6 +1726,10 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop
ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord()); ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord());
break; break;
case 0x22: // Callback additional mask
SB(ei->callback_mask, 8, 8, buf->ReadByte());
break;
default: default:
ret = CommonVehicleChangeInfo(ei, prop, buf); ret = CommonVehicleChangeInfo(ei, prop, buf);
break; break;
@ -1814,7 +1826,7 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int
} }
case 0x14: // Callback mask case 0x14: // Callback mask
ei->callback_mask = buf->ReadByte(); SB(ei->callback_mask, 0, 8, buf->ReadByte());
break; break;
case 0x15: // Refit cost case 0x15: // Refit cost
@ -1880,6 +1892,10 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int
ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord()); ei->extra_flags = static_cast<ExtraEngineFlags>(buf->ReadDWord());
break; break;
case 0x22: // Callback additional mask
SB(ei->callback_mask, 8, 8, buf->ReadByte());
break;
default: default:
ret = CommonVehicleChangeInfo(ei, prop, buf); ret = CommonVehicleChangeInfo(ei, prop, buf);
break; break;

View File

@ -42,6 +42,7 @@ static const NICallback _nic_vehicles[] = {
NICV(CBID_VEHICLE_SOUND_EFFECT, CBM_VEHICLE_SOUND_EFFECT), NICV(CBID_VEHICLE_SOUND_EFFECT, CBM_VEHICLE_SOUND_EFFECT),
NICV(CBID_VEHICLE_AUTOREPLACE_SELECTION, CBM_NO_BIT), NICV(CBID_VEHICLE_AUTOREPLACE_SELECTION, CBM_NO_BIT),
NICV(CBID_VEHICLE_MODIFY_PROPERTY, CBM_NO_BIT), NICV(CBID_VEHICLE_MODIFY_PROPERTY, CBM_NO_BIT),
NICV(CBID_VEHICLE_NAME, CBM_VEHICLE_NAME),
NIC_END() NIC_END()
}; };