# HG changeset patch # User maedhros # Date 1181510900 0 # Node ID fcc74271f850be47f23649f3243870d8baa1fa65 # Parent 1da2f9a6bd65cbe20ead25973555ef937c625cc1 (svn r10086) -Codechange: Use more sensible types and functions in GenericPlaceSignals. diff -r 1da2f9a6bd65 -r fcc74271f850 src/rail_gui.cpp --- a/src/rail_gui.cpp Sun Jun 10 20:49:11 2007 +0000 +++ b/src/rail_gui.cpp Sun Jun 10 21:28:20 2007 +0000 @@ -165,32 +165,27 @@ static void GenericPlaceSignals(TileIndex tile) { - byte trackstat; - uint i; - - trackstat = (byte)GetTileTrackStatus(tile, TRANSPORT_RAIL, 0); + TrackBits trackbits = (TrackBits)GB(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0), 0, 6); - if (trackstat & TRACK_BIT_VERT) // N-S direction - trackstat = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT; - - if (trackstat & TRACK_BIT_HORZ) // E-W direction - trackstat = (_tile_fract_coords.x + _tile_fract_coords.y <= 15) ? TRACK_BIT_UPPER : TRACK_BIT_LOWER; - - // Lookup the bit index - i = 0; - if (trackstat != 0) { - for (; !(trackstat & 1); trackstat >>= 1) i++; + if (trackbits & TRACK_BIT_VERT) { // N-S direction + trackbits = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT; } + if (trackbits & TRACK_BIT_HORZ) { // E-W direction + trackbits = (_tile_fract_coords.x + _tile_fract_coords.y <= 15) ? TRACK_BIT_UPPER : TRACK_BIT_LOWER; + } + + Track track = TrackBitsToTrack(trackbits); + if (!_remove_button_clicked) { - uint32 p1 = GB(i, 0, 3); + uint32 p1 = track; SB(p1, 3, 1, _ctrl_pressed); SB(p1, 4, 1, _cur_year < _patches.semaphore_build_before); DoCommandP(tile, p1, 0, CcPlaySound1E, CMD_BUILD_SIGNALS | CMD_AUTO | CMD_MSG(STR_1010_CAN_T_BUILD_SIGNALS_HERE)); } else { - DoCommandP(tile, i, 0, CcPlaySound1E, + DoCommandP(tile, track, 0, CcPlaySound1E, CMD_REMOVE_SIGNALS | CMD_AUTO | CMD_MSG(STR_1013_CAN_T_REMOVE_SIGNALS_FROM)); } }