Mercurial > hg > openttd
changeset 6176:863c86137fc1 draft
(svn r8946) -Feature: [NewGRF] Add support for vehicle variables 0xFE and 0xFF bit 10,
which is set when a vehicle was built during the exclusive testing phase.
author | maedhros <maedhros@openttd.org> |
---|---|
date | Wed, 28 Feb 2007 17:59:05 +0000 |
parents | d8e9bbb53e7d |
children | ed54dc50aeaf |
files | src/aircraft_cmd.cpp src/newgrf_engine.cpp src/roadveh_cmd.cpp src/ship_cmd.cpp src/train_cmd.cpp src/vehicle.h |
diffstat | 6 files changed, 28 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -390,6 +390,9 @@ v->random_bits = VehicleRandomBits(); u->random_bits = VehicleRandomBits(); + v->vehicle_flags = 0; + if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SETBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + VehiclePositionChanged(v); VehiclePositionChanged(u);
--- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -601,6 +601,21 @@ } case 0x7F: return GetGRFParameter(v->engine_type, parameter); /* Read GRF parameter */ + + case 0xFE: + case 0xFF: { + uint16 modflags = 0; + + /* TODO: There are some other bits that should be implemented: + * bit 5: Whether the rail vehicle is powered or not (mostly useful for wagons). + * bit 6: This is an electrically powered rail vehicle which is running on normal rail. + * bit 8: (Maybe?) Toggled whenever the train reverses. + */ + + if (HASBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE)) SETBIT(modflags, 10); + + return variable == 0xFE ? modflags : GB(modflags, 8, 8); + } } /* General vehicle properties */
--- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -204,6 +204,9 @@ v->cur_image = 0xC15; v->random_bits = VehicleRandomBits(); + v->vehicle_flags = 0; + if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SETBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + VehiclePositionChanged(v); InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
--- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -913,6 +913,9 @@ v->type = VEH_Ship; v->random_bits = VehicleRandomBits(); + v->vehicle_flags = 0; + if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SETBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + VehiclePositionChanged(v); InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);