src/engine.h
branchgamebalance
changeset 9911 0b8b245a2391
parent 9910 0b2aebc8283e
child 9912 1ac8aac92385
--- a/src/engine.h	Wed Jun 13 11:17:30 2007 +0000
+++ b/src/engine.h	Wed Jun 13 11:45:14 2007 +0000
@@ -16,6 +16,14 @@
 	RAILVEH_WAGON,       ///< simple wagon, not motorized
 };
 
+enum EngineClass {
+	EC_STEAM,
+	EC_DIESEL,
+	EC_ELECTRIC,
+	EC_MONORAIL,
+	EC_MAGLEV,
+};
+
 struct RailVehicleInfo {
 	byte image_index;
 	RailVehicleTypes railveh_type;
@@ -26,7 +34,7 @@
 	uint16 weight;
 	byte running_cost_base;
 	byte running_cost_class;
-	byte engclass;         ///< 0: steam, 1: diesel, 2: electric
+	EngineClass engclass;           ///< Class of engine for this vehicle
 	byte capacity;
 	CargoID cargo_type;
 	byte ai_rank;
@@ -97,6 +105,7 @@
 	byte refit_cost;
 	byte misc_flags;
 	byte callbackmask;
+	byte retire_early; ///< Number of years early to retire vehicle
 };
 
 struct Engine {
@@ -111,7 +120,7 @@
 	PlayerByte preview_player;
 	byte preview_wait;
 	byte player_avail;
-	byte type; ///< type, ie VEH_ROAD, VEH_TRAIN, etc. Same as in vehicle.h
+	VehicleType type; ///< type, ie VEH_ROAD, VEH_TRAIN, etc. Same as in vehicle.h
 };
 
 /**
@@ -263,6 +272,7 @@
 	EngineID from;
 	EngineID to;
 	EngineRenew *next;
+	GroupID group_id;
 };
 
 /**
@@ -308,7 +318,7 @@
  * @return The engine type to replace with, or INVALID_ENGINE if no
  * replacement is in the list.
  */
-EngineID EngineReplacement(EngineRenewList erl, EngineID engine);
+EngineID EngineReplacement(EngineRenewList erl, EngineID engine, GroupID group);
 
 /**
  * Add an engine replacement to the given renewlist.
@@ -318,7 +328,7 @@
  * @param flags The calling command flags.
  * @return 0 on success, CMD_ERROR on failure.
  */
-int32 AddEngineReplacement(EngineRenewList* erl, EngineID old_engine, EngineID new_engine, uint32 flags);
+int32 AddEngineReplacement(EngineRenewList* erl, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags);
 
 /**
  * Remove an engine replacement from a given renewlist.
@@ -327,12 +337,12 @@
  * @param flags The calling command flags.
  * @return 0 on success, CMD_ERROR on failure.
  */
-int32 RemoveEngineReplacement(EngineRenewList* erl, EngineID engine, uint32 flags);
+int32 RemoveEngineReplacement(EngineRenewList* erl, EngineID engine, GroupID group, uint32 flags);
 
 /** When an engine is made buildable or is removed from being buildable, add/remove it from the build/autoreplace lists
  * @param type The type of engine
  */
-void AddRemoveEngineFromAutoreplaceAndBuildWindows(byte type);
+void AddRemoveEngineFromAutoreplaceAndBuildWindows(VehicleType type);
 
 /* Engine list manipulators - current implementation is only C wrapper of CBlobT<EngineID> class (helpers.cpp) */
 void EngList_Create(EngineList *el);            ///< Creates engine list