Mercurial > hg > openttd
changeset 16816:beccafceb21c draft
(svn r21549) -Codechange: Unfold the _build_road_button_proc array into a switch.
author | alberth <alberth@openttd.org> |
---|---|
date | Mon, 20 Dec 2010 19:20:38 +0000 |
parents | e1fbd7dc3cfe |
children | afcdc2249860 |
files | src/road_gui.cpp |
diffstat | 1 files changed, 49 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -433,21 +433,7 @@ SndPlayFx(SND_15_BEEP); } -/** Array with the handlers of the button-clicks for the road-toolbar */ -static OnButtonClick * const _build_road_button_proc[] = { - BuildRoadClick_X_Dir, - BuildRoadClick_Y_Dir, - BuildRoadClick_AutoRoad, - BuildRoadClick_Demolish, - BuildRoadClick_Depot, - BuildRoadClick_BusStation, - BuildRoadClick_TruckStation, - BuildRoadClick_OneWay, - BuildRoadClick_Bridge, - BuildRoadClick_Tunnel, - BuildRoadClick_Remove -}; - +/** Road toolbar window handler. */ struct BuildRoadToolbarWindow : Window { BuildRoadToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window() { @@ -529,10 +515,54 @@ virtual void OnClick(Point pt, int widget, int click_count) { - if (widget >= RTW_ROAD_X) { - _remove_button_clicked = false; - _one_way_button_clicked = false; - _build_road_button_proc[widget - RTW_ROAD_X](this); + _remove_button_clicked = false; + _one_way_button_clicked = false; + switch (widget) { + case RTW_ROAD_X: + BuildRoadClick_X_Dir(this); + break; + + case RTW_ROAD_Y: + BuildRoadClick_Y_Dir(this); + break; + + case RTW_AUTOROAD: + BuildRoadClick_AutoRoad(this); + break; + + case RTW_DEMOLISH: + BuildRoadClick_Demolish(this); + break; + + case RTW_DEPOT: + BuildRoadClick_Depot(this); + break; + + case RTW_BUS_STATION: + BuildRoadClick_BusStation(this); + break; + + case RTW_TRUCK_STATION: + BuildRoadClick_TruckStation(this); + break; + + case RTW_ONE_WAY: + BuildRoadClick_OneWay(this); + break; + + case RTW_BUILD_BRIDGE: + BuildRoadClick_Bridge(this); + break; + + case RTW_BUILD_TUNNEL: + BuildRoadClick_Tunnel(this); + break; + + case RTW_REMOVE: + BuildRoadClick_Remove(this); + break; + + default: NOT_REACHED(); } this->UpdateOptionWidgetStatus((RoadToolbarWidgets)widget); if (_ctrl_pressed) RoadToolbar_CtrlChanged(this);