(svn r4651) - NewGRF: support loading of catenary sprites from NewGRF files. This actually works by replacing our hardcoded sprites.
authorpeter1138
Mon, 01 May 2006 16:54:18 +0000
changeset 3708 1c548218151c
parent 3707 2999a89e8abd
child 3709 be60bcc248bc
(svn r4651) - NewGRF: support loading of catenary sprites from NewGRF files. This actually works by replacing our hardcoded sprites.
newgrf.c
--- a/newgrf.c	Mon May 01 16:52:43 2006 +0000
+++ b/newgrf.c	Mon May 01 16:54:18 2006 +0000
@@ -21,6 +21,7 @@
 #include "newgrf_engine.h"
 #include "vehicle.h"
 #include "newgrf_text.h"
+#include "table/sprites.h"
 
 #include "newgrf_spritegroup.h"
 
@@ -1890,6 +1891,7 @@
 
 	uint8 type;
 	uint16 num;
+	SpriteID replace = 0;
 
 	check_length(len, 2, "GraphicsNew");
 	buf++;
@@ -1905,16 +1907,28 @@
 			_signal_base = _cur_spriteid;
 			break;
 
+		case 0x05: /* Catenary graphics */
+			if (num != 48) {
+				grfmsg(GMS_WARN, "GraphicsNews: Catenary graphics sprite count must be 48, skipping.");
+				return;
+			}
+			replace = SPR_ELRAIL_BASE + 3;
+			break;
+
 		default:
 			grfmsg(GMS_NOTICE, "GraphicsNew: Custom graphics (type 0x%02X) sprite block of length %u (unimplemented, ignoring).\n",
 					type, num);
 			return;
 	}
 
-	grfmsg(GMS_NOTICE, "GraphicsNew: Loading %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, _cur_spriteid);
+	if (replace == 0) {
+		grfmsg(GMS_NOTICE, "GraphicsNew: Loading %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, _cur_spriteid);
+	} else {
+		grfmsg(GMS_NOTICE, "GraphicsNew: Replacing %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, replace);
+	}
 
 	for (; num > 0; num--) {
-		LoadNextSprite(_cur_spriteid++, _file_index);
+		LoadNextSprite(replace == 0 ? _cur_spriteid++ : replace++, _file_index);
 		_nfo_line++;
 	}
 }