(svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
authormaedhros
Wed, 21 Feb 2007 23:18:08 +0000
changeset 6103 d38163ddfef9
parent 6102 307c3273b22b
child 6104 addbdb9d898e
(svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
window. GRFs with an error have a warning symbol shown before the name.
bin/data/openttd.grf
src/gfxinit.cpp
src/lang/english.txt
src/newgrf.cpp
src/newgrf_config.cpp
src/newgrf_config.h
src/newgrf_gui.cpp
src/table/files.h
src/table/sprites.h
Binary file bin/data/openttd.grf has changed
--- a/src/gfxinit.cpp	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/gfxinit.cpp	Wed Feb 21 23:18:08 2007 +0000
@@ -333,6 +333,7 @@
 	377, 377, // · small
 	153, 153, // · medium
 	601, 601, // · large
+	SPR_WARNING_SIGN, SPR_WARNING_SIGN,
 	END
 };
 
--- a/src/lang/english.txt	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/lang/english.txt	Wed Feb 21 23:18:08 2007 +0000
@@ -2896,6 +2896,7 @@
 STR_NEWGRF_SET_PARAMETERS                                       :{BLACK}Set parameters
 STR_NEWGRF_TIP                                                  :{BLACK}A list of all the Newgrf sets that you have installed. Click a set to change the settings
 STR_NEWGRF_NO_FILES_INSTALLED                                   :{BLACK}There are currently no newgrf files installed! Please refer to the manual for instructions on installing new graphics
+STR_NEWGRF_ERROR_MSG                                            :{RED}{STRING}
 STR_NEWGRF_FILENAME                                             :{BLACK}Filename: {SILVER}{STRING}
 STR_NEWGRF_GRF_ID                                               :{BLACK}GRF ID: {SILVER}{STRING}
 STR_NEWGRF_MD5SUM                                               :{BLACK}MD5sum: {SILVER}{STRING}
--- a/src/newgrf.cpp	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/newgrf.cpp	Wed Feb 21 23:18:08 2007 +0000
@@ -2712,7 +2712,14 @@
 		return;
 	}
 
-	grfmsg(0,  msgstr[(message_id == 0xFF) ? lengthof(msgstr) - 1 : message_id], sevstr[severity], grf_load_string(&buf, len));
+	char message[512];
+	snprintf(message, lengthof(message), msgstr[(message_id == 0xFF) ? lengthof(msgstr) - 1 : message_id], sevstr[severity], grf_load_string(&buf, len));
+
+	if (_cur_grfconfig->error == NULL) {
+		_cur_grfconfig->error = strdup(message);
+	}
+
+	grfmsg(0, message);
 }
 
 /* Action 0x0C */
--- a/src/newgrf_config.cpp	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/newgrf_config.cpp	Wed Feb 21 23:18:08 2007 +0000
@@ -91,6 +91,7 @@
 		free((*config)->filename);
 		free((*config)->name);
 		free((*config)->info);
+		free((*config)->error);
 	}
 	free(*config);
 	*config = NULL;
@@ -123,6 +124,7 @@
 		if (src->filename != NULL) c->filename = strdup(src->filename);
 		if (src->name     != NULL) c->name     = strdup(src->name);
 		if (src->info     != NULL) c->info     = strdup(src->info);
+		if (src->error    != NULL) c->error    = strdup(src->error);
 
 		*dst = c;
 		dst = &c->next;
@@ -252,6 +254,7 @@
 				memcpy(c->md5sum, f->md5sum, sizeof(c->md5sum));
 				if (c->name == NULL) c->name = strdup(f->name);
 				if (c->info == NULL) c->info = strdup(f->info);
+				c->error = NULL;
 			}
 		}
 	}
--- a/src/newgrf_config.h	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/newgrf_config.h	Wed Feb 21 23:18:08 2007 +0000
@@ -24,6 +24,7 @@
 	char *filename;
 	char *name;
 	char *info;
+	char *error;
 
 	uint8 flags;
 	uint32 param[0x80];
--- a/src/newgrf_gui.cpp	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/newgrf_gui.cpp	Wed Feb 21 23:18:08 2007 +0000
@@ -43,6 +43,11 @@
 {
 	char buff[256];
 
+	if (c->error != NULL) {
+		SetDParamStr(0, c->error);
+		y += DrawStringMultiLine(x, y, STR_NEWGRF_ERROR_MSG, w);
+	}
+
 	/* Draw filename or not if it is not known (GRF sent over internet) */
 	if (c->filename != NULL) {
 		SetDParamStr(0, c->filename);
@@ -328,7 +333,8 @@
 					}
 
 					DrawSprite(SPR_SQUARE, pal, 5, y + 2);
-					DoDrawString(text, 25, y + 3, WP(w, newgrf_d).sel == c ? 0xC : 0x10);
+					if (c->error != NULL) DrawSprite(SPR_WARNING_SIGN, 0, 20, y + 2);
+					DoDrawString(text, c->error != NULL ? 35 : 25, y + 3, WP(w, newgrf_d).sel == c ? 0xC : 0x10);
 					y += 14;
 				}
 			}
--- a/src/table/files.h	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/table/files.h	Wed Feb 21 23:18:08 2007 +0000
@@ -59,7 +59,7 @@
 	{ "autorail.grf",  { 0xed, 0x44, 0x7f, 0xbb, 0x19, 0x44, 0x48, 0x4c, 0x07, 0x8a, 0xb1, 0xc1, 0x5c, 0x12, 0x3a, 0x60 } },
 	{ "canalsw.grf",   { 0x13, 0x9c, 0x98, 0xcf, 0xb8, 0x7c, 0xd7, 0x1f, 0xca, 0x34, 0xa5, 0x6b, 0x65, 0x31, 0xec, 0x0f } },
 	{ "elrailsw.grf",  { 0x4f, 0xf9, 0xac, 0x79, 0x50, 0x28, 0x9b, 0xe2, 0x15, 0x30, 0xa8, 0x1e, 0xd5, 0xfd, 0xe1, 0xda } },
-	{ "openttd.grf",   { 0x59, 0x22, 0x19, 0xe0, 0x6e, 0xe7, 0xb6, 0xa3, 0x55, 0x53, 0xcc, 0x9e, 0xbc, 0xaf, 0xcc, 0x83 } },
+	{ "openttd.grf",   { 0x10, 0xc1, 0x68, 0x56, 0x9e, 0x1e, 0x0e, 0x85, 0x9d, 0xf8, 0x53, 0x27, 0x48, 0x7e, 0x17, 0x58 } },
 	{ "trkfoundw.grf", { 0x12, 0x33, 0x3f, 0xa3, 0xd1, 0x86, 0x8b, 0x04, 0x53, 0x18, 0x9c, 0xee, 0xf9, 0x2d, 0xf5, 0x95 } },
 	{ "roadstops.grf", { 0x8c, 0xd9, 0x45, 0x21, 0x28, 0x82, 0x96, 0x45, 0x33, 0x22, 0x7a, 0xb9, 0x0d, 0xf3, 0x67, 0x4a } },
 };
--- a/src/table/sprites.h	Wed Feb 21 22:02:10 2007 +0000
+++ b/src/table/sprites.h	Wed Feb 21 23:18:08 2007 +0000
@@ -48,7 +48,7 @@
 	SPR_ASCII_SPACE_BIG   = 450,
 
 	/* Extra graphic spritenumbers */
-	OPENTTD_SPRITES_COUNT = 116, // number of gfx-sprites in openttd.grf
+	OPENTTD_SPRITES_COUNT = 117, // number of gfx-sprites in openttd.grf
 	SPR_SIGNALS_BASE  = 4896,
 	SPR_CANALS_BASE   = SPR_SIGNALS_BASE + 486,
 	SPR_SLOPES_BASE   = SPR_CANALS_BASE + 70,
@@ -95,6 +95,8 @@
 
 	SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 115,
 
+	SPR_WARNING_SIGN      = SPR_OPENTTD_BASE + 116, // warning sign (shown if there are any newgrf errors)
+
 	/* Network GUI sprites */
 	SPR_SQUARE = SPR_OPENTTD_BASE + 20,     // colored square (used for newgrf compatibility)
 	SPR_LOCK = SPR_OPENTTD_BASE + 19,       // lock icon (for password protected servers)