mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 06:15:04 +00:00
(svn r21012) -Codechange: Deduplicate some code. (Hirundo)
This commit is contained in:
parent
7647101b03
commit
b10fbd477d
@ -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: {
|
||||||
|
Loading…
Reference in New Issue
Block a user