From 68a3df82b9542efcb9706de557cc0572c639316c Mon Sep 17 00:00:00 2001 From: peter1138 Date: Tue, 15 Jan 2008 10:36:51 +0000 Subject: [PATCH] (svn r11859) -Codechange: Update newgrf station class dropdown to use new method of generating list. --- src/newgrf_station.cpp | 19 ------------------- src/newgrf_station.h | 1 - src/rail_gui.cpp | 15 ++++++++++++++- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index cdbdac87e7..1cee614bba 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -98,25 +98,6 @@ StringID GetStationClassName(StationClassID sclass) return station_classes[sclass].name; } -/** Build a list of station class name StringIDs to use in a dropdown list - * @return Pointer to a (static) array of StringIDs - */ -StringID *BuildStationClassDropdown() -{ - /* Allow room for all station classes, plus a terminator entry */ - static StringID names[STAT_CLASS_MAX + 1]; - uint i; - - /* Add each name */ - for (i = 0; i < STAT_CLASS_MAX && station_classes[i].id != 0; i++) { - names[i] = station_classes[i].name; - } - /* Terminate the list */ - names[i] = INVALID_STRING_ID; - - return names; -} - /** * Get the number of station classes in use. * @return Number of station classes. diff --git a/src/newgrf_station.h b/src/newgrf_station.h index cb969bc868..1bd02818f3 100644 --- a/src/newgrf_station.h +++ b/src/newgrf_station.h @@ -102,7 +102,6 @@ void ResetStationClasses(); StationClassID AllocateStationClass(uint32 cls); void SetStationClassName(StationClassID sclass, StringID name); StringID GetStationClassName(StationClassID sclass); -StringID *BuildStationClassDropdown(); uint GetNumStationClasses(); uint GetNumCustomStations(StationClassID sclass); diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 207c9e1a23..d0a74b4204 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -27,6 +27,7 @@ #include "sound_func.h" #include "player_func.h" #include "settings_type.h" +#include "widgets/dropdown_type.h" #include "widgets/dropdown_func.h" #include "bridge_map.h" @@ -774,6 +775,18 @@ static void CheckSelectedSize(Window *w, const StationSpec *statspec) } } +static DropDownList *BuildStationClassDropDown() +{ + DropDownList *list = new DropDownList(); + + for (uint i = 0; i < GetNumStationClasses(); i++) { + if (i == STAT_CLASS_WAYP) continue; + list->push_back(new DropDownListStringItem(GetStationClassName((StationClassID)i), i, false)); + } + + return list; +} + static void StationBuildWndProc(Window *w, WindowEvent *e) { switch (e->event) { @@ -992,7 +1005,7 @@ static void StationBuildWndProc(Window *w, WindowEvent *e) case BRSW_NEWST_DROPDOWN: case BRSW_NEWST_DROPDOWN_TEXT: - ShowDropDownMenu(w, BuildStationClassDropdown(), _railstation.station_class, 23, 0, 1 << STAT_CLASS_WAYP); + ShowDropDownList(w, BuildStationClassDropDown(), _railstation.station_class, BRSW_NEWST_DROPDOWN_TEXT); break; case BRSW_NEWST_LIST: {