Changeset - r6207:96b7c174b945
[Not reviewed]
master
0 1 0
rubidium - 17 years ago 2007-03-03 20:43:50
rubidium@openttd.org
(svn r8999) -Fix [FS#450]: do not select a disabled platform length/number of track count when going out of drag-drop mode.
1 file changed with 32 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/rail_gui.cpp
Show inline comments
 
@@ -796,16 +796,31 @@ static void StationBuildWndProc(Window *
 
		case 8:
 
		case 9:
 
		case 10:
 
		case 11:
 
		case 11: {
 
			RaiseWindowWidget(w, _railstation.numtracks + 4);
 
			RaiseWindowWidget(w, 19);
 

	
 
			_railstation.numtracks = (e->we.click.widget - 5) + 1;
 
			_railstation.dragdrop = false;
 

	
 
			const StationSpec *statspec = _railstation.newstations ? GetCustomStationSpec(_railstation.station_class, _railstation.station_type) : NULL;
 
			if (statspec != NULL && HASBIT(statspec->disallowed_lengths, _railstation.platlength - 1)) {
 
				/* The previously selected number of platforms in invalid */
 
				for (uint i = 0; i < 7; i++) {
 
					if (!HASBIT(statspec->disallowed_lengths, i)) {
 
						RaiseWindowWidget(w, _railstation.platlength + 11);
 
						_railstation.platlength = i + 1;
 
						break;
 
					}
 
				}
 
			}
 

	
 
			LowerWindowWidget(w, _railstation.platlength + 11);
 
			LowerWindowWidget(w, _railstation.numtracks + 4);
 
			SndPlayFx(SND_15_BEEP);
 
			SetWindowDirty(w);
 
			break;
 
		}
 

	
 
		case 12:
 
		case 13:
 
@@ -813,16 +828,31 @@ static void StationBuildWndProc(Window *
 
		case 15:
 
		case 16:
 
		case 17:
 
		case 18:
 
		case 18: {
 
			RaiseWindowWidget(w, _railstation.platlength + 11);
 
			RaiseWindowWidget(w, 19);
 

	
 
			_railstation.platlength = (e->we.click.widget - 12) + 1;
 
			_railstation.dragdrop = false;
 

	
 
			const StationSpec *statspec = _railstation.newstations ? GetCustomStationSpec(_railstation.station_class, _railstation.station_type) : NULL;
 
			if (statspec != NULL && HASBIT(statspec->disallowed_platforms, _railstation.numtracks - 1)) {
 
				/* The previously selected number of tracks in invalid */
 
				for (uint i = 0; i < 7; i++) {
 
					if (!HASBIT(statspec->disallowed_platforms, i)) {
 
						RaiseWindowWidget(w, _railstation.numtracks + 4);
 
						_railstation.numtracks = i + 1;
 
						break;
 
					}
 
				}
 
			}
 

	
 
			LowerWindowWidget(w, _railstation.platlength + 11);
 
			LowerWindowWidget(w, _railstation.numtracks + 4);
 
			SndPlayFx(SND_15_BEEP);
 
			SetWindowDirty(w);
 
			break;
 
		}
 

	
 
		case 19:
 
			_railstation.dragdrop ^= true;
0 comments (0 inline, 0 general)