diff options
author | frosch <frosch@openttd.org> | 2009-10-03 14:46:48 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2009-10-03 14:46:48 +0000 |
commit | 12a814f487883b291c17bba69a5cd41ebf862708 (patch) | |
tree | 66839262ba2a509a285ffbf30c4888307fd1b937 /src | |
parent | 539f31f76c73c5c2e10a3f47664184d867416be8 (diff) | |
download | openttd-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.cpp | 4 | ||||
-rw-r--r-- | src/roadveh.h | 2 | ||||
-rw-r--r-- | src/roadveh_cmd.cpp | 1 | ||||
-rw-r--r-- | src/train.h | 4 | ||||
-rw-r--r-- | src/train_cmd.cpp | 2 |
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; |