summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2009-10-03 14:46:48 +0000
committerfrosch <frosch@openttd.org>2009-10-03 14:46:48 +0000
commit12a814f487883b291c17bba69a5cd41ebf862708 (patch)
tree66839262ba2a509a285ffbf30c4888307fd1b937 /src
parent539f31f76c73c5c2e10a3f47664184d867416be8 (diff)
downloadopenttd-12a814f487883b291c17bba69a5cd41ebf862708.tar.xz
(svn r17684) -Fix: tcache.first_engine and rcache.first_engine need to be set before first callback/sprite-resolving. For RV fronts it was missing at all, causing livery selection to fail.
Diffstat (limited to 'src')
-rw-r--r--src/articulated_vehicles.cpp4
-rw-r--r--src/roadveh.h2
-rw-r--r--src/roadveh_cmd.cpp1
-rw-r--r--src/train.h4
-rw-r--r--src/train_cmd.cpp2
5 files changed, 7 insertions, 6 deletions
diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp
index f1ce4dc56..04d86aa2a 100644
--- a/src/articulated_vehicles.cpp
+++ b/src/articulated_vehicles.cpp
@@ -318,7 +318,7 @@ void AddArticulatedParts(Vehicle *first, VehicleType type)
t->subtype = 0;
t->track = front->track;
t->railtype = front->railtype;
- t->tcache.first_engine = front->engine_type;
+ t->tcache.first_engine = front->engine_type; // needs to be set before first callback
t->spritenum = e_artic->u.rail.image_index;
if (e_artic->CanCarryCargo()) {
@@ -339,7 +339,7 @@ void AddArticulatedParts(Vehicle *first, VehicleType type)
v = rv;
rv->subtype = 0;
- rv->rcache.first_engine = front->engine_type;
+ rv->rcache.first_engine = front->engine_type; // needs to be set before first callback
rv->rcache.cached_veh_length = 8; // Callback is called when the consist is finished
rv->state = RVSB_IN_DEPOT;
diff --git a/src/roadveh.h b/src/roadveh.h
index 5edd325df..010c3e395 100644
--- a/src/roadveh.h
+++ b/src/roadveh.h
@@ -89,7 +89,7 @@ void RoadVehUpdateCache(RoadVehicle *v);
/** Cached oftenly queried (NewGRF) values */
struct RoadVehicleCache {
byte cached_veh_length;
- EngineID first_engine;
+ EngineID first_engine; ///< cached EngineID of the front vehicle. INVALID_VEHICLE for the front vehicle itself.
};
/**
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index c0b511917..52eb9387a 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -255,6 +255,7 @@ CommandCost CmdBuildRoadVeh(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
v->last_station_visited = INVALID_STATION;
v->max_speed = rvi->max_speed;
v->engine_type = (EngineID)p1;
+ v->rcache.first_engine = INVALID_ENGINE; // needs to be set before first callback
v->reliability = e->reliability;
v->reliability_spd_dec = e->reliability_spd_dec;
diff --git a/src/train.h b/src/train.h
index f75cda11c..e1828297d 100644
--- a/src/train.h
+++ b/src/train.h
@@ -96,9 +96,7 @@ struct TrainCache {
byte cached_vis_effect;
byte user_def_data;
- /* NOSAVE: for wagon override - id of the first engine in train
- * 0xffff == not in train */
- EngineID first_engine;
+ EngineID first_engine; ///< cached EngineID of the front vehicle. INVALID_VEHICLE for the front vehicle itself.
};
/**
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index 684a789b3..acad557a6 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -720,6 +720,7 @@ static CommandCost CmdBuildRailWagon(EngineID engine, TileIndex tile, DoCommandF
v->spritenum = rvi->image_index;
v->engine_type = engine;
+ v->tcache.first_engine = INVALID_ENGINE; // needs to be set before first callback
DiagDirection dir = GetRailDepotDirection(tile);
@@ -900,6 +901,7 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1,
// v->dest_tile = 0;
v->engine_type = p1;
+ v->tcache.first_engine = INVALID_ENGINE; // needs to be set before first callback
v->reliability = e->reliability;
v->reliability_spd_dec = e->reliability_spd_dec;