Add: A 'class' property 0x1C for ships. Currently has no effect. diff -r b5c43c3d5ba5 src/engine.cpp --- a/src/engine.cpp Tue Sep 14 17:45:13 2010 +0000 +++ b/src/engine.cpp Tue Sep 14 20:16:31 2010 +0200 @@ -85,6 +85,8 @@ this->info.base_life = 0xFF; /* Set road vehicle tractive effort to the default value */ if (type == VEH_ROAD) this->u.road.tractive_effort = 0x4C; + /* Set ship class to the default value */ + if (type == VEH_SHIP) this->u.ship.shipclass = SCL_DIESEL; return; } diff -r b5c43c3d5ba5 src/engine_type.h --- a/src/engine_type.h Tue Sep 14 17:45:13 2010 +0000 +++ b/src/engine_type.h Tue Sep 14 20:16:31 2010 +0200 @@ -59,6 +59,14 @@ byte user_def_data; ///< Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles }; +/** Class of a ship, may be used for colouring / visual effects */ +enum ShipClass { + SCL_STEAM, ///< Steam ship, may emit steam + SCL_DIESEL, ///< Diesel-powered ship, may emit diesel fumes (default) + SCL_SAIL, ///< Sailing ship (no visual effect) + SCL_END, +}; + struct ShipVehicleInfo { byte image_index; byte cost_factor; @@ -67,6 +75,7 @@ byte running_cost; SoundID sfx; bool old_refittable; ///< Is ship refittable; only used during initialisation. Later use EngineInfo::refit_mask. + ShipClass shipclass; ///< Class of the ship (steam / diesel / sail) }; /* AircraftVehicleInfo subtypes, bitmask type. diff -r b5c43c3d5ba5 src/newgrf.cpp --- a/src/newgrf.cpp Tue Sep 14 17:45:13 2010 +0000 +++ b/src/newgrf.cpp Tue Sep 14 20:16:31 2010 +0200 @@ -999,6 +999,12 @@ AlterVehicleListOrder(e->index, buf->ReadExtendedByte()); break; + case 0x1C: { // Ship class (steam / diesel / sail) + ShipClass sc = (ShipClass)buf->ReadByte(); + if (sc < SCL_END) svi->shipclass = sc; + break; + } + default: ret = CommonVehicleChangeInfo(ei, prop, buf); break; diff -r b5c43c3d5ba5 src/table/engines.h --- a/src/table/engines.h Tue Sep 14 17:45:13 2010 +0000 +++ b/src/table/engines.h Tue Sep 14 20:16:31 2010 +0200 @@ -540,8 +540,9 @@ * @param e running_cost * @param f sound effect * @param g refittable + * shipclass is always SCL_DIESEL, since all default ships are diesels. */ -#define SVI(a, b, c, d, e, f, g) { a, b, c, d, e, f, g } +#define SVI(a, b, c, d, e, f, g) { a, b, c, d, e, f, g, SCL_DIESEL } static const ShipVehicleInfo _orig_ship_vehicle_info[] = { /* image_index capacity refittable * | cost_factor running_cost |