diff options
author | peter1138 <peter1138@openttd.org> | 2005-10-20 15:15:58 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2005-10-20 15:15:58 +0000 |
commit | d5eb4183b8618dbae4a317bd2d8041ae160dad09 (patch) | |
tree | 0e3fed2e5e5d9fbef35e73fb6f09afb9b8093d97 | |
parent | 4253f3d3301d4f0a456b0c2a8da1a7e45901e4ca (diff) | |
download | openttd-d5eb4183b8618dbae4a317bd2d8041ae160dad09.tar.xz |
(svn r3071) -NewGRF: Add support for rail vehicle weight greater than 255 tons.
-rw-r--r-- | engine.h | 2 | ||||
-rw-r--r-- | newgrf.c | 14 |
2 files changed, 13 insertions, 3 deletions
@@ -14,7 +14,7 @@ typedef struct RailVehicleInfo { byte base_cost; uint16 max_speed; uint16 power; - byte weight; + uint16 weight; byte running_cost_base; byte engclass; // 0: steam, 1: diesel, 2: electric byte capacity; @@ -311,7 +311,7 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf FOR_EACH_OBJECT { uint8 weight = grf_load_byte(&buf); - rvi[i].weight = weight; + SB(rvi[i].weight, 0, 8, weight); } } break; case 0x17: { /* Cost factor */ @@ -390,13 +390,23 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf rvi[i].pow_wag_weight = wag_weight; } } break; + case 0x24: { /* High byte of vehicle weight */ + FOR_EACH_OBJECT { + byte weight = grf_load_byte(&buf); + + if (weight < 4) { + grfmsg(GMS_NOTICE, "RailVehicleChangeInfo: Nonsensical weight of %d tons, ignoring.", weight << 8); + } else { + SB(rvi[i].weight, 8, 8, weight); + } + } + } break; /* TODO */ /* Fall-through for unimplemented one byte long properties. */ case 0x1A: /* Sort order */ case 0x1C: /* Refit cost */ case 0x1F: /* Tractive effort */ case 0x20: /* Air drag */ - case 0x24: /* High byte of vehicle weight */ case 0x25: /* User-defined bit mask to set when checking veh. var. 42 */ case 0x26: /* Retire vehicle early */ { |