changeset 6621:c751437b3bac draft

(svn r9841) -Codechange: add a little more type strictness to the vehicle types.
author rubidium <rubidium@openttd.org>
date Tue, 15 May 2007 11:28:22 +0000 (2007-05-15)
parents 5506bb5ca1b1
children 8bb80527a9e8
files src/depot_gui.cpp src/economy.cpp src/network/network_server.cpp src/newgrf_engine.cpp src/vehicle.cpp src/vehicle.h src/vehicle_gui.cpp
diffstat 7 files changed, 15 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -137,6 +137,7 @@
 		case VEH_ROAD:     CcCloneRoadVeh( true, tile, p1, p2); break;
 		case VEH_SHIP:     CcCloneShip(    true, tile, p1, p2); break;
 		case VEH_AIRCRAFT: CcCloneAircraft(true, tile, p1, p2); break;
+		default: NOT_REACHED();
 	}
 }
 
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -365,6 +365,7 @@
 						case VEH_ROAD:     v->unitnumber = ++num_road; break;
 						case VEH_SHIP:     v->unitnumber = ++num_ship; break;
 						case VEH_AIRCRAFT: if (IsNormalAircraft(v)) v->unitnumber = ++num_aircraft; break;
+						default: NOT_REACHED();
 					}
 				}
 			}
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -1301,9 +1301,7 @@
 				_network_player_info[v->owner].num_vehicle[4]++;
 				break;
 
-			case VEH_SPECIAL:
-			case VEH_DISASTER:
-				break;
+			default: break;
 		}
 	}
 
--- a/src/newgrf_engine.cpp
+++ b/src/newgrf_engine.cpp
@@ -770,6 +770,8 @@
 				case 0x66: return MapAircraftMovementAction(v); // Current movement action
 			}
 			break;
+
+		default: break;
 	}
 
 	DEBUG(grf, 1, "Unhandled vehicle property 0x%X, type 0x%X", variable, v->type);
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -677,6 +677,8 @@
 		_vehicle_tick_procs[v->type](v);
 
 		switch (v->type) {
+			default: break;
+
 			case VEH_TRAIN:
 			case VEH_ROAD:
 			case VEH_AIRCRAFT:
@@ -2850,6 +2852,7 @@
 			case VEH_SPECIAL:  v = new (v) SpecialVehicle();  break;
 			case VEH_DISASTER: v = new (v) DisasterVehicle(); break;
 			case VEH_INVALID:  v = new (v) InvalidVehicle();  break;
+			default: NOT_REACHED();
 		}
 
 		/* Old savegames used 'last_station_visited = 0xFF' */
--- a/src/vehicle.h
+++ b/src/vehicle.h
@@ -64,15 +64,18 @@
 	RVSB_ROAD_STOP_TRACKDIR_MASK = 0x09                       ///< Only bits 0 and 3 are used to encode the trackdir for road stops
 };
 
-enum {
+enum VehicleType {
 	VEH_TRAIN,
 	VEH_ROAD,
 	VEH_SHIP,
 	VEH_AIRCRAFT,
 	VEH_SPECIAL,
 	VEH_DISASTER,
+	VEH_END,
 	VEH_INVALID = 0xFF,
-} ;
+};
+template <> struct EnumPropsT<VehicleType> : MakeEnumPropsT<VehicleType, byte, VEH_TRAIN, VEH_END, VEH_INVALID> {};
+typedef TinyEnumT<VehicleType> VehicleTypeByte;
 
 enum VehStatus {
 	VS_HIDDEN          = 0x01,
@@ -203,7 +206,7 @@
 
 
 struct Vehicle {
-	byte type;               // type, ie roadven,train,ship,aircraft,special
+	VehicleTypeByte type;    ///< Type of vehicle
 	byte subtype;            // subtype (Filled with values from EffectVehicles/TrainSubTypes/AircraftSubTypes)
 
 	VehicleID index;         // NOSAVE: Index in vehicle array
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -377,6 +377,7 @@
 							int command = 0;
 
 							switch (v->type) {
+								default: NOT_REACHED();
 								case VEH_TRAIN:    command = CMD_REFIT_RAIL_VEHICLE | CMD_MSG(STR_RAIL_CAN_T_REFIT_VEHICLE);  break;
 								case VEH_ROAD:     command = CMD_REFIT_ROAD_VEH     | CMD_MSG(STR_REFIT_ROAD_VEHICLE_CAN_T);  break;
 								case VEH_SHIP:     command = CMD_REFIT_SHIP         | CMD_MSG(STR_9841_CAN_T_REFIT_SHIP);     break;