summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2005-01-08 01:05:24 +0000
committerbjarni <bjarni@openttd.org>2005-01-08 01:05:24 +0000
commit2b6e6a38460bdb1ba02b02728b7602747b66d338 (patch)
tree6fb4e7472acb9ee3cbc7b780f2daef511960205e
parent7dfe1c476c265e12de671c3f7cf4789a9494e4f1 (diff)
downloadopenttd-2b6e6a38460bdb1ba02b02728b7602747b66d338.tar.xz
(svn r1421) improved autoreplace multiheaded trains. It now remembers the current heading for an engine instead of turning all of them like the first one and the last the other way
-rw-r--r--vehicle.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/vehicle.c b/vehicle.c
index e5565dcc0..4d3692ee7 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -1488,6 +1488,8 @@ int32 CmdReplaceVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
/* We do not really buy a new vehicle, we upgrade the old one */
if (v->engine_type != new_engine_type) {
+ byte old_engine = v->engine_type;
+ byte sprite = v->spritenum;
byte cargo_type = v->cargo_type;
v->engine_type = new_engine_type;
v->max_age = e->lifelength * 366;
@@ -1498,13 +1500,13 @@ int32 CmdReplaceVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
// using if (true) to declare the const
{
const RailVehicleInfo *rvi = RailVehInfo(new_engine_type);
+ const RailVehicleInfo *rvi2 = RailVehInfo(old_engine);
byte capacity = rvi->capacity;
- if (rvi->flags & RVI_MULTIHEAD && v->next == NULL ) {
- v->spritenum = rvi->image_index + 1; // +1 is the mirrored end of the dualheaded engines
- } else {
- v->spritenum = rvi->image_index;
- }
+ /* rvi->image_index is the new sprite for the engine. Adding +1 makes the engine head the other way
+ if it is a multiheaded engine (rear engine)
+ (sprite - rvi2->image_index) is 1 if the engine is heading the other way, otherwise 0*/
+ v->spritenum = rvi->image_index + (sprite - rvi2->image_index);
v->cargo_type = rvi->cargo_type;
v->cargo_cap = rvi->capacity;