summaryrefslogtreecommitdiff
path: root/train_cmd.c
diff options
context:
space:
mode:
authortron <tron@openttd.org>2005-07-21 06:31:02 +0000
committertron <tron@openttd.org>2005-07-21 06:31:02 +0000
commitd71788c40206fa35b792d34769fde7768b4456c1 (patch)
treedc5c9c74cec9bfa29f94932a20193cd902a80f15 /train_cmd.c
parent5c5840417e2f03514c51098f4786c6c1d6030b59 (diff)
downloadopenttd-d71788c40206fa35b792d34769fde7768b4456c1.tar.xz
(svn r2660) Get rid of some more shifting/anding/casting
Diffstat (limited to 'train_cmd.c')
-rw-r--r--train_cmd.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/train_cmd.c b/train_cmd.c
index 35a3c8250..7b38ba072 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -398,7 +398,6 @@ static int32 CmdBuildRailWagon(uint engine, TileIndex tile, uint32 flags)
int32 value;
Vehicle *v;
const RailVehicleInfo *rvi;
- int dir;
const Engine *e;
int x,y;
@@ -417,6 +416,7 @@ static int32 CmdBuildRailWagon(uint engine, TileIndex tile, uint32 flags)
if (flags & DC_EXEC) {
byte img = rvi->image_index;
Vehicle *u, *w;
+ uint dir;
v->spritenum = img;
@@ -432,9 +432,9 @@ static int32 CmdBuildRailWagon(uint engine, TileIndex tile, uint32 flags)
v->engine_type = engine;
- dir = _m[tile].m5 & 3;
+ dir = GB(_m[tile].m5, 0, 2);
- v->direction = (byte)(dir*2+1);
+ v->direction = dir * 2 + 1;
v->tile = tile;
x = TileX(tile) * TILE_SIZE | _vehicle_initial_x_fract[dir];
@@ -570,7 +570,7 @@ void AddRearEngineToMultiheadedTrain(Vehicle *v, Vehicle *u, bool building)
int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{
const RailVehicleInfo *rvi;
- int value,dir;
+ int value;
Vehicle *v, *u;
UnitID unit_num;
Engine *e;
@@ -606,11 +606,13 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
if (flags & DC_EXEC) {
+ uint dir;
+
v->unitnumber = unit_num;
- dir = _m[tile].m5 & 3;
+ dir = GB(_m[tile].m5, 0, 2);
- v->direction = (byte)(dir*2+1);
+ v->direction = dir * 2 + 1;
v->tile = tile;
v->owner = _current_player;
v->x_pos = (x |= _vehicle_initial_x_fract[dir]);
@@ -1126,10 +1128,10 @@ static void UpdateTrainDeltaXY(Vehicle *v, int direction)
uint32 x = _delta_xy_table[direction];
- v->x_offs = (byte)x;
- v->y_offs = (byte)(x>>=8);
- v->sprite_width = (byte)(x>>=8);
- v->sprite_height = (byte)(x>>=8);
+ v->x_offs = GB(x, 0, 8);
+ v->y_offs = GB(x, 8, 8);
+ v->sprite_width = GB(x, 16, 8);
+ v->sprite_height = GB(x, 24, 8);
}
static void UpdateVarsAfterSwap(Vehicle *v)
@@ -2116,7 +2118,7 @@ static bool CheckReverseTrain(Vehicle *v)
/* if we reach this position, there's two paths of equal value so far.
* pick one randomly. */
- r = (byte)Random();
+ r = GB(Random(), 0, 8);
if (_pick_track_table[i] == (v->direction & 3)) r += 80;
if (_pick_track_table[best_track] == (v->direction & 3)) r -= 80;
if (r <= 127) goto bad;
@@ -3095,8 +3097,8 @@ static bool TrainCheckIfLineEnds(Vehicle *v)
tile = v->tile;
// tunnel entrance?
- if (IsTunnelTile(tile) && (byte)((_m[tile].m5 & 3)*2+1) == v->direction)
- return true;
+ if (IsTunnelTile(tile) && GB(_m[tile].m5, 0, 2) * 2 + 1 == v->direction)
+ return true;
// depot?
/* XXX -- When enabled, this makes it possible to crash trains of others