(svn r9688) -Codechange: Created a function to get default cargo type for a cargo type
authorbjarni
Fri, 20 Apr 2007 16:56:55 +0000
changeset 7001 d5f19455d650
parent 7000 58e7f9e4fb17
child 7002 8e0579acba55
(svn r9688) -Codechange: Created a function to get default cargo type for a cargo type
src/autoreplace_cmd.cpp
src/engine.cpp
src/engine.h
--- a/src/autoreplace_cmd.cpp	Fri Apr 20 15:52:07 2007 +0000
+++ b/src/autoreplace_cmd.cpp	Fri Apr 20 16:56:55 2007 +0000
@@ -87,34 +87,9 @@
  */
 static CargoID GetNewCargoTypeForReplace(Vehicle *v, EngineID engine_type)
 {
-	bool new_cargo_capacity = true;
-	CargoID new_cargo_type = CT_INVALID;
-
-	switch (v->type) {
-		case VEH_TRAIN:
-			new_cargo_capacity = (RailVehInfo(engine_type)->capacity > 0);
-			new_cargo_type     = RailVehInfo(engine_type)->cargo_type;
-			break;
+	CargoID new_cargo_type = GetEngineCargoType(engine_type);
 
-		case VEH_ROAD:
-			new_cargo_capacity = (RoadVehInfo(engine_type)->capacity > 0);
-			new_cargo_type     = RoadVehInfo(engine_type)->cargo_type;
-			break;
-		case VEH_SHIP:
-			new_cargo_capacity = (ShipVehInfo(engine_type)->capacity > 0);
-			new_cargo_type     = ShipVehInfo(engine_type)->cargo_type;
-			break;
-
-		case VEH_AIRCRAFT:
-			/* all aircraft starts as passenger planes with cargo capacity
-			 * new_cargo_capacity is always true for aircraft, which is the init value. No need to set it here */
-			new_cargo_type     = CT_PASSENGERS;
-			break;
-
-		default: NOT_REACHED(); break;
-	}
-
-	if (!new_cargo_capacity) return CT_NO_REFIT; // Don't try to refit an engine with no cargo capacity
+	if (new_cargo_type == CT_INVALID) return CT_NO_REFIT; // Don't try to refit an engine with no cargo capacity
 
 	if (v->cargo_type == new_cargo_type || CanRefitTo(engine_type, v->cargo_type)) {
 		if (VerifyAutoreplaceRefitForOrders(v, engine_type)) {
--- a/src/engine.cpp	Fri Apr 20 15:52:07 2007 +0000
+++ b/src/engine.cpp	Fri Apr 20 16:56:55 2007 +0000
@@ -404,6 +404,35 @@
 	return true;
 }
 
+/** Get the default cargo type for a certain engine type
+ * @param engine The ID to get the cargo for
+ * @return The cargo type. CT_INVALID means no cargo capacity
+ */
+CargoID GetEngineCargoType(EngineID engine)
+{
+	assert(IsEngineIndex(engine));
+
+	switch (GetEngine(engine)->type) {
+		case VEH_TRAIN:
+			if (RailVehInfo(engine)->capacity == 0) return CT_INVALID;
+			return RailVehInfo(engine)->cargo_type;
+
+		case VEH_ROAD:
+			if (RoadVehInfo(engine)->capacity == 0) return CT_INVALID;
+			return RoadVehInfo(engine)->cargo_type;
+
+		case VEH_SHIP:
+			if (ShipVehInfo(engine)->capacity == 0) return CT_INVALID;
+			return ShipVehInfo(engine)->cargo_type;
+
+		case VEH_AIRCRAFT:
+			/* all aircraft starts as passenger planes with cargo capacity */
+			return CT_PASSENGERS;
+
+		default: NOT_REACHED(); return CT_INVALID;
+	}
+}
+
 /************************************************************************
  * Engine Replacement stuff
  ************************************************************************/
--- a/src/engine.h	Fri Apr 20 15:52:07 2007 +0000
+++ b/src/engine.h	Fri Apr 20 16:56:55 2007 +0000
@@ -153,6 +153,7 @@
 void DeleteCustomEngineNames();
 
 bool IsEngineBuildable(EngineID engine, byte type, PlayerID player);
+CargoID GetEngineCargoType(EngineID engine);
 
 enum {
 	NUM_NORMAL_RAIL_ENGINES = 54,