diff src/depot_gui.cpp @ 12114:f020ec6be498 draft

(svn r16527) -Codechange: use static member functions instead of simple casts when converting Vehicle to specialised vehicle types. Includes safety check
author smatz <smatz@openttd.org>
date Sat, 06 Jun 2009 16:54:22 +0000 (2009-06-06)
parents 54dbb2d04329
children 2f16fe37d1b8
line wrap: on
line diff
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -272,7 +272,7 @@
 				DrawTrainImage(v, x + 21, sprite_y, this->sel, this->hscroll.cap + 4, this->hscroll.pos);
 
 				/* Number of wagons relative to a standard length wagon (rounded up) */
-				SetDParam(0, (((const Train *)v)->tcache.cached_total_length + 7) / 8);
+				SetDParam(0, (Train::From(v)->tcache.cached_total_length + 7) / 8);
 				DrawString(this->widget[DEPOT_WIDGET_MATRIX].left, this->widget[DEPOT_WIDGET_MATRIX].right - 1, y + 4, STR_TINY_BLACK, TC_FROMSTRING, SA_RIGHT); // Draw the counter
 				break;
 
@@ -328,7 +328,7 @@
 			hnum = 8;
 			for (uint num = 0; num < this->vehicle_list.Length(); num++) {
 				const Vehicle *v = this->vehicle_list[num];
-				hnum = max(hnum, ((const Train *)v)->tcache.cached_total_length);
+				hnum = max(hnum, Train::From(v)->tcache.cached_total_length);
 			}
 			/* Always have 1 empty row, so people can change the setting of the train */
 			SetVScrollCount(w, this->vehicle_list.Length() + this->wagon_list.Length() + 1);
@@ -450,7 +450,7 @@
 				x += skip;
 
 				/* find the vehicle in this row that was clicked */
-				while (v != NULL && (x -= ((const Train *)v)->tcache.cached_veh_length) >= 0) v = v->Next();
+				while (v != NULL && (x -= Train::From(v)->tcache.cached_veh_length) >= 0) v = v->Next();
 
 				/* if an articulated part was selected, find its parent */
 				while (v != NULL && IsArticulatedPart(v)) v = v->Previous();
@@ -514,11 +514,11 @@
 
 					switch (v->type) {
 						case VEH_TRAIN:
-							_cursor.short_vehicle_offset = 16 - ((const Train *)v)->tcache.cached_veh_length * 2;
+							_cursor.short_vehicle_offset = 16 - Train::From(v)->tcache.cached_veh_length * 2;
 							break;
 
 						case VEH_ROAD:
-							_cursor.short_vehicle_offset = 16 - ((const RoadVehicle *)v)->rcache.cached_veh_length * 2;
+							_cursor.short_vehicle_offset = 16 - RoadVehicle::From(v)->rcache.cached_veh_length * 2;
 							break;
 
 						default: