(svn r21012) -Codechange: Deduplicate some code. (Hirundo)

This commit is contained in:
frosch 2010-10-22 19:57:56 +00:00
parent 7647101b03
commit b10fbd477d
1 changed files with 6 additions and 9 deletions

View File

@ -1503,17 +1503,16 @@ static VehicleEnterTileStatus VehicleEnter_TunnelBridge(Vehicle *v, TileIndex ti
int z = GetSlopeZ(x, y) - v->z_pos; int z = GetSlopeZ(x, y) - v->z_pos;
if (abs(z) > 2) return VETSB_CANNOT_ENTER; if (abs(z) > 2) return VETSB_CANNOT_ENTER;
/* Direction into the wormhole */
const DiagDirection dir = GetTunnelBridgeDirection(tile); const DiagDirection dir = GetTunnelBridgeDirection(tile);
/* Direction of the vehicle */
const DiagDirection vdir = DirToDiagDir(v->direction);
if (IsTunnel(tile)) { if (IsTunnel(tile)) {
byte fc; byte fc = (x & 0xF) + (y << 4);
DiagDirection vdir;
if (v->type == VEH_TRAIN) { if (v->type == VEH_TRAIN) {
Train *t = Train::From(v); Train *t = Train::From(v);
fc = (x & 0xF) + (y << 4);
vdir = DirToDiagDir(t->direction);
if (t->track != TRACK_BIT_WORMHOLE && dir == vdir) { if (t->track != TRACK_BIT_WORMHOLE && dir == vdir) {
if (t->IsFrontEngine() && fc == _tunnel_fractcoord_1[dir]) { if (t->IsFrontEngine() && fc == _tunnel_fractcoord_1[dir]) {
@ -1540,8 +1539,6 @@ static VehicleEnterTileStatus VehicleEnter_TunnelBridge(Vehicle *v, TileIndex ti
} }
} else if (v->type == VEH_ROAD) { } else if (v->type == VEH_ROAD) {
RoadVehicle *rv = RoadVehicle::From(v); RoadVehicle *rv = RoadVehicle::From(v);
fc = (x & 0xF) + (y << 4);
vdir = DirToDiagDir(v->direction);
/* Enter tunnel? */ /* Enter tunnel? */
if (rv->state != RVSB_WORMHOLE && dir == vdir) { if (rv->state != RVSB_WORMHOLE && dir == vdir) {
@ -1579,7 +1576,7 @@ static VehicleEnterTileStatus VehicleEnter_TunnelBridge(Vehicle *v, TileIndex ti
if (v->cur_speed > spd) v->cur_speed = spd; if (v->cur_speed > spd) v->cur_speed = spd;
} }
if (DirToDiagDir(v->direction) == dir) { if (vdir == dir) {
switch (dir) { switch (dir) {
default: NOT_REACHED(); default: NOT_REACHED();
case DIAGDIR_NE: if ((x & 0xF) != 0) return VETSB_CONTINUE; break; case DIAGDIR_NE: if ((x & 0xF) != 0) return VETSB_CONTINUE; break;
@ -1612,7 +1609,7 @@ static VehicleEnterTileStatus VehicleEnter_TunnelBridge(Vehicle *v, TileIndex ti
default: NOT_REACHED(); default: NOT_REACHED();
} }
return VETSB_ENTERED_WORMHOLE; return VETSB_ENTERED_WORMHOLE;
} else if (DirToDiagDir(v->direction) == ReverseDiagDir(dir)) { } else if (vdir == ReverseDiagDir(dir)) {
v->tile = tile; v->tile = tile;
switch (v->type) { switch (v->type) {
case VEH_TRAIN: { case VEH_TRAIN: {