(svn r12932) -Fix [FS#1970]: Articulated engines ignored GRF engine overrides.
authorpeter1138
Wed, 30 Apr 2008 17:42:08 +0000
changeset 9073 0e06e1f08e31
parent 9072 c4126d1e01cf
child 9074 e6716c8260a1
(svn r12932) -Fix [FS#1970]: Articulated engines ignored GRF engine overrides.
src/articulated_vehicles.cpp
src/newgrf.cpp
src/newgrf_engine.h
--- a/src/articulated_vehicles.cpp	Wed Apr 30 07:39:46 2008 +0000
+++ b/src/articulated_vehicles.cpp	Wed Apr 30 17:42:08 2008 +0000
@@ -11,20 +11,6 @@
 #include "newgrf_engine.h"
 #include "vehicle_func.h"
 
-static EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16 internal_id)
-{
-	const Engine *e = NULL;
-	FOR_ALL_ENGINES(e) {
-		if (e->grffile != file) continue;
-		if (e->type != type) continue;
-		if (e->internal_id != internal_id) continue;
-
-		return e->index;
-	}
-
-	return INVALID_ENGINE;
-}
-
 uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
 {
 	if (!HasBit(EngInfo(engine_type)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return 0;
--- a/src/newgrf.cpp	Wed Apr 30 07:39:46 2008 +0000
+++ b/src/newgrf.cpp	Wed Apr 30 17:42:08 2008 +0000
@@ -359,6 +359,28 @@
 	return e;
 }
 
+EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16 internal_id)
+{
+	extern uint32 GetNewGRFOverride(uint32 grfid);
+
+	const GRFFile *grf_match = NULL;
+	if (_patches.dynamic_engines) {
+		uint32 override = _grf_id_overrides[file->grfid];
+		if (override != 0) grf_match = GetFileByGRFID(override);
+	}
+
+	const Engine *e = NULL;
+	FOR_ALL_ENGINES(e) {
+		if (_patches.dynamic_engines && e->grffile != file && (grf_match == NULL || e->grffile != grf_match)) continue;
+		if (e->type != type) continue;
+		if (e->internal_id != internal_id) continue;
+
+		return e->index;
+	}
+
+	return INVALID_ENGINE;
+}
+
 /** Map the colour modifiers of TTDPatch to those that Open is using.
  * @param grf_sprite pointer to the structure been modified
  */
--- a/src/newgrf_engine.h	Wed Apr 30 07:39:46 2008 +0000
+++ b/src/newgrf_engine.h	Wed Apr 30 17:42:08 2008 +0000
@@ -59,4 +59,6 @@
 void AlterRailVehListOrder(EngineID engine, EngineID target);
 void CommitRailVehListOrderChanges();
 
+EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16 internal_id);
+
 #endif /* NEWGRF_ENGINE_H */