This commit is contained in:
Peter Nelson 2024-04-26 13:50:21 +01:00 committed by GitHub
commit 25ec797d2d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 40 additions and 0 deletions

View File

@ -1334,6 +1334,16 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop
SB(ei->callback_mask, 8, 8, buf->ReadByte());
break;
case 0x80: { // Copy existing train properties
uint16_t sourceid = buf->ReadWord();
Engine *source = GetNewEngine(_cur.grffile, VEH_TRAIN, sourceid, true);
if (source == nullptr) break;
*ei = source->info;
*rvi = source->u.rail;
_gted[e->index] = _gted[source->index];
break;
}
default:
ret = CommonVehicleChangeInfo(ei, prop, buf);
break;
@ -1540,6 +1550,16 @@ static ChangeInfoResult RoadVehicleChangeInfo(uint engine, int numinfo, int prop
SB(ei->callback_mask, 8, 8, buf->ReadByte());
break;
case 0x80: { // Copy existing road vehicle properties
uint16_t sourceid = buf->ReadWord();
Engine *source = GetNewEngine(_cur.grffile, VEH_ROAD, sourceid, true);
if (source == nullptr) break;
*ei = source->info;
*rvi = source->u.road;
_gted[e->index] = _gted[source->index];
break;
}
default:
ret = CommonVehicleChangeInfo(ei, prop, buf);
break;
@ -1732,6 +1752,16 @@ static ChangeInfoResult ShipVehicleChangeInfo(uint engine, int numinfo, int prop
svi->acceleration = std::max<uint8_t>(1, buf->ReadByte());
break;
case 0x80: { // Copy existing ship properties
uint16_t sourceid = buf->ReadWord();
Engine *source = GetNewEngine(_cur.grffile, VEH_SHIP, sourceid, true);
if (source == nullptr) break;
*ei = source->info;
*svi = source->u.ship;
_gted[e->index] = _gted[source->index];
break;
}
default:
ret = CommonVehicleChangeInfo(ei, prop, buf);
break;
@ -1897,6 +1927,16 @@ static ChangeInfoResult AircraftVehicleChangeInfo(uint engine, int numinfo, int
SB(ei->callback_mask, 8, 8, buf->ReadByte());
break;
case 0x80: { // Copy existing aircraft properties
uint16_t sourceid = buf->ReadWord();
Engine *source = GetNewEngine(_cur.grffile, VEH_AIRCRAFT, sourceid, true);
if (source == nullptr) break;
*ei = source->info;
*avi = source->u.air;
_gted[e->index] = _gted[source->index];
break;
}
default:
ret = CommonVehicleChangeInfo(ei, prop, buf);
break;