src/rail_cmd.cpp
changeset 6453 e65715f6e063
parent 6432 8fb778a7f2d7
child 6459 8c66c58bf6cf
equal deleted inserted replaced
6452:fc8ca2b46277 6453:e65715f6e063
   448 		(trdx >= 0 && dx < 0) ||
   448 		(trdx >= 0 && dx < 0) ||
   449 		(trdy <= 0 && dy > 0) ||
   449 		(trdy <= 0 && dy > 0) ||
   450 		(trdy >= 0 && dy < 0)
   450 		(trdy >= 0 && dy < 0)
   451 	) {
   451 	) {
   452 		if (!HASBIT(*trackdir, 3)) { // first direction is invalid, try the other
   452 		if (!HASBIT(*trackdir, 3)) { // first direction is invalid, try the other
   453 			*trackdir = SetBitT(*trackdir, 3); // reverse the direction
   453 			SetBitT(*trackdir, 3); // reverse the direction
   454 			trdx = -trdx;
   454 			trdx = -trdx;
   455 			trdy = -trdy;
   455 			trdy = -trdy;
   456 		} else { // other direction is invalid too, invalid drag
   456 		} else { // other direction is invalid too, invalid drag
   457 			return CMD_ERROR;
   457 			return CMD_ERROR;
   458 		}
   458 		}
   511 		if (tile == end_tile) break;
   511 		if (tile == end_tile) break;
   512 
   512 
   513 		tile += ToTileIndexDiff(_trackdelta[trackdir]);
   513 		tile += ToTileIndexDiff(_trackdelta[trackdir]);
   514 
   514 
   515 		// toggle railbit for the non-diagonal tracks
   515 		// toggle railbit for the non-diagonal tracks
   516 		if (!IsDiagonalTrackdir(trackdir)) trackdir = ToggleBitT(trackdir, 0);
   516 		if (!IsDiagonalTrackdir(trackdir)) ToggleBitT(trackdir, 0);
   517 	}
   517 	}
   518 
   518 
   519 	return (total_cost == 0) ? CMD_ERROR : total_cost;
   519 	return (total_cost == 0) ? CMD_ERROR : total_cost;
   520 }
   520 }
   521 
   521 
   775 
   775 
   776 		tile += ToTileIndexDiff(_trackdelta[trackdir]);
   776 		tile += ToTileIndexDiff(_trackdelta[trackdir]);
   777 		signal_ctr++;
   777 		signal_ctr++;
   778 
   778 
   779 		// toggle railbit for the non-diagonal tracks (|, -- tracks)
   779 		// toggle railbit for the non-diagonal tracks (|, -- tracks)
   780 		if (!IsDiagonalTrackdir(trackdir)) trackdir = ToggleBitT(trackdir, 0);
   780 		if (!IsDiagonalTrackdir(trackdir)) ToggleBitT(trackdir, 0);
   781 	}
   781 	}
   782 
   782 
   783 	return error ? CMD_ERROR : total_cost;
   783 	return error ? CMD_ERROR : total_cost;
   784 }
   784 }
   785 
   785