Changeset - r16840:afde357f5d45
[Not reviewed]
master
0 1 0
alberth - 14 years ago 2010-12-21 18:04:10
alberth@openttd.org
(svn r21584) -Codechange: Replace the _rail_build_button array by a switch.
1 file changed with 60 insertions and 25 deletions:
0 comments (0 inline, 0 general)
src/rail_gui.cpp
Show inline comments
 
@@ -592,29 +592,6 @@ static void HandleAutoSignalPlacement()
 
}
 

	
 

	
 
typedef void OnButtonClick(Window *w);
 

	
 
/**
 
 * Procedure to call when button in rail toolbar is clicked.
 
 * Offsets match widget order, starting at RTW_BUILD_NS
 
 */
 
static OnButtonClick *_rail_build_button[] = {
 
	BuildRailClick_N,
 
	BuildRailClick_NE,
 
	BuildRailClick_E,
 
	BuildRailClick_NW,
 
	BuildRailClick_AutoRail,
 
	BuildRailClick_Demolish,
 
	BuildRailClick_Depot,
 
	BuildRailClick_Waypoint,
 
	BuildRailClick_Station,
 
	BuildRailClick_AutoSignals,
 
	BuildRailClick_Bridge,
 
	BuildRailClick_Tunnel,
 
	BuildRailClick_Remove,
 
	BuildRailClick_Convert
 
};
 

	
 
/**
 
 * Based on the widget clicked, update the status of the 'remove' button.
 
 * @param w              Rail toolbar window
 
@@ -713,9 +690,67 @@ struct BuildRailToolbarWindow : Window {
 

	
 
	virtual void OnClick(Point pt, int widget, int click_count)
 
	{
 
		if (widget >= RTW_BUILD_NS) {
 
		if (widget < RTW_BUILD_NS) return;
 

	
 
			_remove_button_clicked = false;
 
			_rail_build_button[widget - RTW_BUILD_NS](this);
 
		switch (widget) {
 
			case RTW_BUILD_NS:
 
				BuildRailClick_N(this);
 
				break;
 

	
 
			case RTW_BUILD_X:
 
				BuildRailClick_NE(this);
 
				break;
 

	
 
			case RTW_BUILD_EW:
 
				BuildRailClick_E(this);
 
				break;
 

	
 
			case RTW_BUILD_Y:
 
				BuildRailClick_NW(this);
 
				break;
 

	
 
			case RTW_AUTORAIL:
 
				BuildRailClick_AutoRail(this);
 
				break;
 

	
 
			case RTW_DEMOLISH:
 
				BuildRailClick_Demolish(this);
 
				break;
 

	
 
			case RTW_BUILD_DEPOT:
 
				BuildRailClick_Depot(this);
 
				break;
 

	
 
			case RTW_BUILD_WAYPOINT:
 
				BuildRailClick_Waypoint(this);
 
				break;
 

	
 
			case RTW_BUILD_STATION:
 
				BuildRailClick_Station(this);
 
				break;
 

	
 
			case RTW_BUILD_SIGNALS:
 
				BuildRailClick_AutoSignals(this);
 
				break;
 

	
 
			case RTW_BUILD_BRIDGE:
 
				BuildRailClick_Bridge(this);
 
				break;
 

	
 
			case RTW_BUILD_TUNNEL:
 
				BuildRailClick_Tunnel(this);
 
				break;
 

	
 
			case RTW_REMOVE:
 
				BuildRailClick_Remove(this);
 
				break;
 

	
 
			case RTW_CONVERT_RAIL:
 
				BuildRailClick_Convert(this);
 
				break;
 

	
 
			default: NOT_REACHED();
 
		}
 
		this->UpdateRemoveWidgetStatus(widget);
 
		if (_ctrl_pressed) RailToolbar_CtrlChanged(this);
0 comments (0 inline, 0 general)