(svn r9908) -Codechange: prepare the station picker for more road types.
authorrubidium
Thu, 24 May 2007 08:52:28 +0000
changeset 6677 8120427efe01
parent 6676 9e305978401f
child 6678 4d901bc54b74
(svn r9908) -Codechange: prepare the station picker for more road types.
src/rail_gui.cpp
src/road_gui.cpp
src/station.h
src/station_cmd.cpp
--- a/src/rail_gui.cpp	Thu May 24 08:36:11 2007 +0000
+++ b/src/rail_gui.cpp	Thu May 24 08:52:28 2007 +0000
@@ -755,7 +755,7 @@
 			old_dpi = _cur_dpi;
 			_cur_dpi = &tmp_dpi;
 			if (!DrawStationTile(32, 16, _cur_railtype, AXIS_X, _railstation.station_class, _railstation.station_type)) {
-				StationPickerDrawSprite(32, 16, _cur_railtype, 2);
+				StationPickerDrawSprite(32, 16, _cur_railtype, INVALID_ROADTYPE, 2);
 			}
 			_cur_dpi = old_dpi;
 		}
@@ -765,7 +765,7 @@
 			old_dpi = _cur_dpi;
 			_cur_dpi = &tmp_dpi;
 			if (!DrawStationTile(32, 16, _cur_railtype, AXIS_Y, _railstation.station_class, _railstation.station_type)) {
-				StationPickerDrawSprite(32, 16, _cur_railtype, 3);
+				StationPickerDrawSprite(32, 16, _cur_railtype, INVALID_ROADTYPE, 3);
 			}
 			_cur_dpi = old_dpi;
 		}
--- a/src/road_gui.cpp	Thu May 24 08:36:11 2007 +0000
+++ b/src/road_gui.cpp	Thu May 24 08:52:28 2007 +0000
@@ -479,6 +479,12 @@
 {
 	switch (e->event) {
 	case WE_CREATE:
+		/* Trams don't have non-drivethrough stations */
+		if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) {
+			_road_station_picker_orientation = DIAGDIR_END;
+		}
+		SetWindowWidgetsDisabledState(w, _cur_roadtype == ROADTYPE_TRAM, 3, 4, 5, 6, WIDGET_LIST_END);
+
 		LowerWindowWidget(w, _road_station_picker_orientation + 3);
 		LowerWindowWidget(w, _station_show_coverage + 9);
 		break;
@@ -499,15 +505,15 @@
 
 		image = (w->window_class == WC_BUS_STATION) ? GFX_BUS_BASE : GFX_TRUCK_BASE;
 
-		StationPickerDrawSprite(103, 35, RAILTYPE_BEGIN, image);
-		StationPickerDrawSprite(103, 85, RAILTYPE_BEGIN, image + 1);
-		StationPickerDrawSprite(35, 85, RAILTYPE_BEGIN, image + 2);
-		StationPickerDrawSprite(35, 35, RAILTYPE_BEGIN, image + 3);
+		StationPickerDrawSprite(103, 35, RAILTYPE_BEGIN, ROADTYPE_ROAD, image);
+		StationPickerDrawSprite(103, 85, RAILTYPE_BEGIN, ROADTYPE_ROAD, image + 1);
+		StationPickerDrawSprite(35, 85, RAILTYPE_BEGIN, ROADTYPE_ROAD, image + 2);
+		StationPickerDrawSprite(35, 35, RAILTYPE_BEGIN, ROADTYPE_ROAD, image + 3);
 
 		image = (w->window_class == WC_BUS_STATION) ? GFX_BUS_BASE_EXT : GFX_TRUCK_BASE_EXT;
 
-		StationPickerDrawSprite(171, 35, RAILTYPE_BEGIN, image);
-		StationPickerDrawSprite(171, 85, RAILTYPE_BEGIN, image + 1);
+		StationPickerDrawSprite(171, 35, RAILTYPE_BEGIN, _cur_roadtype, image);
+		StationPickerDrawSprite(171, 85, RAILTYPE_BEGIN, _cur_roadtype, image + 1);
 
 		DrawStationCoverageAreaText(2, 146,
 			((w->window_class == WC_BUS_STATION) ? (1 << CT_PASSENGERS) : ~(1 << CT_PASSENGERS)),
--- a/src/station.h	Thu May 24 08:36:11 2007 +0000
+++ b/src/station.h	Thu May 24 08:52:28 2007 +0000
@@ -10,6 +10,7 @@
 #include "oldpool.h"
 #include "sprite.h"
 #include "tile.h"
+#include "road.h"
 #include "newgrf_station.h"
 #include <list>
 
@@ -271,7 +272,7 @@
 
 
 const DrawTileSprites *GetStationTileLayout(byte gfx);
-void StationPickerDrawSprite(int x, int y, RailType railtype, int image);
+void StationPickerDrawSprite(int x, int y, RailType railtype, RoadType roadtype, int image);
 
 RoadStop * GetRoadStopByTile(TileIndex tile, RoadStop::Type type);
 uint GetNumRoadStops(const Station* st, RoadStop::Type type);
--- a/src/station_cmd.cpp	Thu May 24 08:36:11 2007 +0000
+++ b/src/station_cmd.cpp	Thu May 24 08:52:28 2007 +0000
@@ -1253,6 +1253,9 @@
 
 	if (rts == ROADTYPES_NONE || HASBIT(rts, ROADTYPE_HWAY)) return CMD_ERROR;
 
+	/* Trams only have drive through stops */
+	if (!is_drive_through && HASBIT(rts, ROADTYPE_TRAM)) return CMD_ERROR;
+
 	/* Saveguard the parameters */
 	if (!IsValidDiagDirection((DiagDirection)p1)) return CMD_ERROR;
 	/* If it is a drive-through stop check for valid axis */
@@ -2076,7 +2079,7 @@
 	}
 }
 
-void StationPickerDrawSprite(int x, int y, RailType railtype, int image)
+void StationPickerDrawSprite(int x, int y, RailType railtype, RoadType roadtype, int image)
 {
 	const RailtypeInfo *rti = GetRailTypeInfo(railtype);
 	SpriteID pal = PLAYER_SPRITE_COLOR(_local_player);