(svn r11859) -Codechange: Update newgrf station class dropdown to use new method of generating list.
authorpeter1138
Tue, 15 Jan 2008 10:36:51 +0000
changeset 8791 da492894bd1b
parent 8790 7eae7a27e2f6
child 8792 1f062b9f10f6
(svn r11859) -Codechange: Update newgrf station class dropdown to use new method of generating list.
src/newgrf_station.cpp
src/newgrf_station.h
src/rail_gui.cpp
--- a/src/newgrf_station.cpp	Tue Jan 15 08:14:22 2008 +0000
+++ b/src/newgrf_station.cpp	Tue Jan 15 10:36:51 2008 +0000
@@ -98,25 +98,6 @@
 	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.
--- a/src/newgrf_station.h	Tue Jan 15 08:14:22 2008 +0000
+++ b/src/newgrf_station.h	Tue Jan 15 10:36:51 2008 +0000
@@ -102,7 +102,6 @@
 StationClassID AllocateStationClass(uint32 cls);
 void SetStationClassName(StationClassID sclass, StringID name);
 StringID GetStationClassName(StationClassID sclass);
-StringID *BuildStationClassDropdown();
 
 uint GetNumStationClasses();
 uint GetNumCustomStations(StationClassID sclass);
--- a/src/rail_gui.cpp	Tue Jan 15 08:14:22 2008 +0000
+++ b/src/rail_gui.cpp	Tue Jan 15 10:36:51 2008 +0000
@@ -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 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 @@
 
 		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: {