rail_cmd.c
branchcustombridgeheads
changeset 5632 025c3b25f1fd
parent 5623 ef2a8a524a95
child 5636 2f3e7fb56cae
equal deleted inserted replaced
5631:932c1a268feb 5632:025c3b25f1fd
   650 
   650 
   651 	// Same bit, used in different contexts
   651 	// Same bit, used in different contexts
   652 	sigvar = HASBIT(p1, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC;
   652 	sigvar = HASBIT(p1, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC;
   653 	pre_signal = HASBIT(p1, 3);
   653 	pre_signal = HASBIT(p1, 3);
   654 
   654 
   655 	if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || !EnsureNoVehicle(tile))
   655 	if (!ValParamTrackOrientation(track) ||
       
   656 			!(IsTileType(tile, MP_RAILWAY) || IsTileType(tile, MP_RAILWAY_BRIDGE)) ||
       
   657 			!EnsureNoVehicle(tile)) {
   656 		return CMD_ERROR;
   658 		return CMD_ERROR;
       
   659 	}
   657 
   660 
   658 	/* Protect against invalid signal copying */
   661 	/* Protect against invalid signal copying */
   659 	if (p2 != 0 && (p2 & SignalOnTrack(track)) == 0) return CMD_ERROR;
   662 	if (p2 != 0 && (p2 & SignalOnTrack(track)) == 0) return CMD_ERROR;
   660 
   663 
   661 	/* You can only build signals on plain rail tiles, and the selected track must exist */
   664 	/* You can only build signals on plain rail tiles, and the selected track must exist */
   828 int32 CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
   831 int32 CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
   829 {
   832 {
   830 	Track track = (Track)(p1 & 0x7);
   833 	Track track = (Track)(p1 & 0x7);
   831 
   834 
   832 	if (!ValParamTrackOrientation(track) ||
   835 	if (!ValParamTrackOrientation(track) ||
   833 			!IsTileType(tile, MP_RAILWAY) ||
   836 			!(IsTileType(tile, MP_RAILWAY) || IsTileType(tile, MP_RAILWAY_BRIDGE)) ||
   834 			!EnsureNoVehicle(tile) ||
   837 			!EnsureNoVehicle(tile) ||
   835 			!HasSignalOnTrack(tile, track)) {
   838 			!HasSignalOnTrack(tile, track)) {
   836 		return CMD_ERROR;
   839 		return CMD_ERROR;
   837 	}
   840 	}
   838 
   841 
  1252 
  1255 
  1253 	if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
  1256 	if (GetRailType(ti->tile) == RAILTYPE_ELECTRIC) DrawCatenary(ti);
  1254 
  1257 
  1255 }
  1258 }
  1256 
  1259 
  1257 static void DrawSignals(TileIndex tile, TrackBits rails)
  1260 void DrawSignals(TileIndex tile, TrackBits rails)
  1258 {
  1261 {
  1259 #define MAYBE_DRAW_SIGNAL(x,y,z) if (IsSignalPresent(tile, x)) DrawSingleSignal(tile, GetSingleSignalState(tile, x), y - 0x4FB, z)
  1262 #define MAYBE_DRAW_SIGNAL(x,y,z) if (IsSignalPresent(tile, x)) DrawSingleSignal(tile, GetSingleSignalState(tile, x), y - 0x4FB, z)
  1260 
  1263 
  1261 	if (!(rails & TRACK_BIT_Y)) {
  1264 	if (!(rails & TRACK_BIT_Y)) {
  1262 		if (!(rails & TRACK_BIT_X)) {
  1265 		if (!(rails & TRACK_BIT_X)) {