summaryrefslogtreecommitdiff
path: root/train_cmd.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2005-01-06 22:31:58 +0000
committertruelight <truelight@openttd.org>2005-01-06 22:31:58 +0000
commit63e97754fbf907cfefd277087bfbac5e0d4434e8 (patch)
tree254702245ba43d006f4823111d0c2c592fb701ca /train_cmd.c
parenta4111363c0def2ccec66ef28b5e8169e8a2df2f0 (diff)
downloadopenttd-63e97754fbf907cfefd277087bfbac5e0d4434e8.tar.xz
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
(in prepare of dynamic arrays): - DEREF_XXX is changed into GetXXX - All direct call are directed via GetXXX - struct Industry has now an index-field - ENUM'd some stuff - Replaced home built loops with FOR_ALL_XXX - Added _stations_size, _vehicles_size, ... which gives the length of the array (which will be dynamic in the near future) - Changed lengtof(XXX) to _XXX_size (e.g. _stations_size) - Removed all endof(XXX) (because mostly it was part of a FOR_ALL_XXX) - Made the sort-functions of all 4 dynamic - Made all 4 Initialize functions more of the same - Some minor tab-fixing and stuff (tnx to Tron for proof-reading my 100kb patch ;)) Note for all: please do NOT directly call _stations, _vehicles, _towns and _industries, but use the right wrapper to access them. Thank you. Ps: please also do not use 'v++', where v is of type Vehicle *.
Diffstat (limited to 'train_cmd.c')
-rw-r--r--train_cmd.c42
1 files changed, 19 insertions, 23 deletions
diff --git a/train_cmd.c b/train_cmd.c
index 686ce0bbf..44813fdef 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -245,20 +245,16 @@ static int32 CmdBuildRailWagon(uint engine, uint tile, uint32 flags)
if (flags & DC_EXEC) {
byte img = rvi->image_index;
- Vehicle *u;
+ Vehicle *u, *w;
v->spritenum = img;
- u = _vehicles;
- for(;;) {
- if (u->type == VEH_Train && u->tile == (TileIndex)tile &&
- u->subtype == 4 && u->engine_type == engine) {
- u = GetLastVehicleInChain(u);
- break;
- }
+ u = NULL;
- if (++u == endof(_vehicles)) {
- u = NULL;
+ FOR_ALL_VEHICLES(w) {
+ if (w->type == VEH_Train && w->tile == (TileIndex)tile &&
+ w->subtype == 4 && w->engine_type == engine) {
+ u = GetLastVehicleInChain(w);
break;
}
}
@@ -598,7 +594,7 @@ int32 CmdMoveRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
Vehicle *src, *dst, *src_head, *dst_head;
bool is_loco;
- src = &_vehicles[p1 & 0xffff];
+ src = GetVehicle(p1 & 0xFFFF);
if (src->type != VEH_Train) return CMD_ERROR;
is_loco = !(RailVehInfo(src->engine_type)->flags & RVI_WAGON)
@@ -609,7 +605,7 @@ int32 CmdMoveRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
dst = NULL;
if (!is_loco) dst = FindGoodVehiclePos(src);
} else {
- dst = &_vehicles[((int32)p1 >> 16)];
+ dst = GetVehicle(((int32)p1 >> 16));
}
// don't move the same vehicle..
@@ -746,7 +742,7 @@ int32 CmdStartStopTrain(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
- v = &_vehicles[p1];
+ v = GetVehicle(p1);
if (!CheckOwnership(v->owner))
return CMD_ERROR;
@@ -772,7 +768,7 @@ int32 CmdSellRailWagon(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
- v = &_vehicles[p1];
+ v = GetVehicle(p1);
if (!CheckOwnership(v->owner))
return CMD_ERROR;
@@ -1018,7 +1014,7 @@ int32 CmdReverseTrainDirection(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
- v = &_vehicles[p1];
+ v = GetVehicle(p1);
if (!CheckOwnership(v->owner))
return CMD_ERROR;
@@ -1047,7 +1043,7 @@ int32 CmdForceTrainProceed(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
- v = &_vehicles[p1];
+ v = GetVehicle(p1);
if (!CheckOwnership(v->owner))
return CMD_ERROR;
@@ -1073,7 +1069,7 @@ int32 CmdRefitRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_TRAIN_RUN);
- v = &_vehicles[p1];
+ v = GetVehicle(p1);
if (!CheckOwnership(v->owner) || ((CheckStoppedInDepot(v) < 0) && !(SkipStoppedInDepotCheck)))
return CMD_ERROR;
@@ -1182,7 +1178,7 @@ static TrainFindDepotData FindClosestTrainDepot(Vehicle *v)
int32 CmdTrainGotoDepot(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
- Vehicle *v = &_vehicles[p1];
+ Vehicle *v = GetVehicle(p1);
TrainFindDepotData tfdd;
if (v->current_order.type == OT_GOTO_DEPOT) {
@@ -1219,7 +1215,7 @@ int32 CmdTrainGotoDepot(int x, int y, uint32 flags, uint32 p1, uint32 p2)
*/
int32 CmdChangeTrainServiceInt(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
- Vehicle *v = &_vehicles[p1];
+ Vehicle *v = GetVehicle(p1);
if (!CheckOwnership(v->owner))
return CMD_ERROR;
@@ -1677,7 +1673,7 @@ static bool ProcessTrainOrder(Vehicle *v)
if (order.type == OT_GOTO_STATION) {
if (order.station == v->last_station_visited)
v->last_station_visited = 0xFFFF;
- v->dest_tile = DEREF_STATION(order.station)->xy;
+ v->dest_tile = GetStation(order.station)->xy;
result = CheckReverseTrain(v);
} else if (order.type == OT_GOTO_DEPOT) {
v->dest_tile = _depots[order.station].xy;
@@ -1783,7 +1779,7 @@ static void TrainEnterStation(Vehicle *v, int station)
v->last_station_visited = station;
/* check if a train ever visited this station before */
- st = DEREF_STATION(station);
+ st = GetStation(station);
if (!(st->had_vehicle_of_type & HVOT_TRAIN)) {
st->had_vehicle_of_type |= HVOT_TRAIN;
SetDParam(0, st->index);
@@ -2608,7 +2604,7 @@ static const byte _depot_track_ind[4] = {0,1,0,1};
// Validation for the news item "Train is waiting in depot"
bool ValidateTrainInDepot( uint data_a, uint data_b )
{
- Vehicle *v = &_vehicles[data_a];
+ Vehicle *v = GetVehicle(data_a);
if (v->u.rail.track == 0x80 && (v->vehstatus | VS_STOPPED))
return true;
else
@@ -2752,7 +2748,7 @@ void OnNewDay_Train(Vehicle *v)
/* update destination */
if (v->current_order.type == OT_GOTO_STATION &&
- (tile = DEREF_STATION(v->current_order.station)->train_tile) != 0)
+ (tile = GetStation(v->current_order.station)->train_tile) != 0)
v->dest_tile = tile;
if ((v->vehstatus & VS_STOPPED) == 0) {