summaryrefslogtreecommitdiff
path: root/vehicle.c
diff options
context:
space:
mode:
authorDarkvater <darkvater@openttd.org>2005-05-05 20:44:52 +0000
committerDarkvater <darkvater@openttd.org>2005-05-05 20:44:52 +0000
commit42eb63a7defffe065d5b945dfbc60e8e2c09d03d (patch)
tree86abda7930692f55f6c6d05dc7bbcf849b6619b9 /vehicle.c
parentdf21566f9ff733db55b379a4b2b4d419524702a0 (diff)
downloadopenttd-42eb63a7defffe065d5b945dfbc60e8e2c09d03d.tar.xz
(svn r2269) - CodeChange: no else after return; exchange some magic 0xffff with INVALID_VEHICLE, vehicle index is of type VehicleID
Diffstat (limited to 'vehicle.c')
-rw-r--r--vehicle.c65
1 files changed, 33 insertions, 32 deletions
diff --git a/vehicle.c b/vehicle.c
index 0f83dbe83..07437ce11 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -207,7 +207,7 @@ static Vehicle *InitializeVehicle(Vehicle *v)
v->left_coord = INVALID_COORD;
v->first = NULL;
v->next = NULL;
- v->next_hash = 0xffff;
+ v->next_hash = INVALID_VEHICLE;
v->string_id = 0;
v->next_shared = NULL;
v->prev_shared = NULL;
@@ -375,15 +375,20 @@ Vehicle *GetFirstVehicleInChain(const Vehicle *v)
Vehicle* u;
if (v->first != NULL) {
- if (v->first->subtype == TS_Front_Engine) {
- return v->first;
- } else {
- DEBUG(misc, 0) ("v->first cache faulty. We shouldn't be here");
- }
+ if (v->first->subtype == TS_Front_Engine) return v->first;
+
+ DEBUG(misc, 0) ("v->first cache faulty. We shouldn't be here, rebuilding cache!");
}
+ /* It is the fact (currently) that newly built vehicles do not have
+ * their ->first pointer set. When this is the case, go up to the
+ * first engine and set the pointers correctly. Also the first pointer
+ * is not saved in a savegame, so this has to be fixed up after loading */
+
+ /* Find the 'locomotive' or the first wagon in a chain */
while ((u = GetPrevVehicleInChain(v)) != NULL) v = u;
+ /* Set the first pointer of all vehicles in that chain to the first wagon */
if (v->subtype == TS_Front_Engine)
for (u = (Vehicle *)v; u != NULL; u = u->next) u->first = (Vehicle *)v;
@@ -402,7 +407,7 @@ void DeleteVehicle(Vehicle *v)
DeleteName(v->string_id);
v->type = 0;
UpdateVehiclePosHash(v, INVALID_COORD, 0);
- v->next_hash = 0xffff;
+ v->next_hash = INVALID_VEHICLE;
if (v->orders != NULL)
DeleteVehicleOrders(v);
@@ -414,7 +419,7 @@ void DeleteVehicleChain(Vehicle *v)
Vehicle *u = v;
v = v->next;
DeleteVehicle(u);
- } while (v);
+ } while (v != NULL);
}
@@ -1716,40 +1721,36 @@ byte GetDirectionTowards(Vehicle *v, int x, int y)
byte GetVehicleTrackdir(const Vehicle* v)
{
- if (v->vehstatus & VS_CRASHED)
- return 0xff;
+ if (v->vehstatus & VS_CRASHED) return 0xFF;
switch(v->type)
{
case VEH_Train:
- if (v->u.rail.track == 0x80)
- /* We'll assume the train is facing outwards */
+ if (v->u.rail.track == 0x80) /* We'll assume the train is facing outwards */
return _dir_to_diag_trackdir[GetDepotDirection(v->tile, TRANSPORT_RAIL)]; /* Train in depot */
- else if (v->u.rail.track == 0x40)
- /* train in tunnel, so just use his direction and assume a diagonal track */
- return _dir_to_diag_trackdir[(v->direction>>1)&3];
- else
- return _track_direction_to_trackdir[FIND_FIRST_BIT(v->u.rail.track)][v->direction];
+
+ if (v->u.rail.track == 0x40) /* train in tunnel, so just use his direction and assume a diagonal track */
+ return _dir_to_diag_trackdir[(v->direction >> 1) & 3];
+
+ return _track_direction_to_trackdir[FIND_FIRST_BIT(v->u.rail.track)][v->direction];
+ break;
case VEH_Ship:
- if (v->u.ship.state == 0x80)
- /* We'll assume the ship is facing outwards */
+ if (v->u.ship.state == 0x80) /* We'll assume the ship is facing outwards */
return _dir_to_diag_trackdir[GetDepotDirection(v->tile, TRANSPORT_WATER)]; /* Ship in depot */
- else
- return _track_direction_to_trackdir[FIND_FIRST_BIT(v->u.ship.state)][v->direction];
+
+ return _track_direction_to_trackdir[FIND_FIRST_BIT(v->u.ship.state)][v->direction];
+ break;
case VEH_Road:
- if (v->u.road.state == 254)
- /* We'll assume the road vehicle is facing outwards */
+ if (v->u.road.state == 254) /* We'll assume the road vehicle is facing outwards */
return _dir_to_diag_trackdir[GetDepotDirection(v->tile, TRANSPORT_ROAD)]; /* Road vehicle in depot */
- else if (IsRoadStationTile(v->tile))
- /* We'll assume the road vehicle is facing outwards */
+
+ if (IsRoadStationTile(v->tile)) /* We'll assume the road vehicle is facing outwards */
return _dir_to_diag_trackdir[GetRoadStationDir(v->tile)]; /* Road vehicle in a station */
- else
- return _dir_to_diag_trackdir[(v->direction>>1)&3];
- case VEH_Aircraft:
- case VEH_Special:
- case VEH_Disaster:
- default:
- return 0xFF;
+
+ return _dir_to_diag_trackdir[(v->direction >> 1) & 3];
+ break;
+ /* case VEH_Aircraft: case VEH_Special: case VEH_Disaster: */
+ default: return 0xFF;
}
}
/* Return value has bit 0x2 set, when the vehicle enters a station. Then,