Changeset - r6103:436b6b65ad3d
[Not reviewed]
master
0 9 0
maedhros - 17 years ago 2007-02-21 23:18:08
maedhros@openttd.org
(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.
9 files changed with 25 insertions and 4 deletions:
0 comments (0 inline, 0 general)
bin/data/openttd.grf
Show inline comments
 
binary diff not shown
src/gfxinit.cpp
Show inline comments
 
@@ -330,12 +330,13 @@ static const SpriteID _openttd_grf_index
 
	633, 633, // × large
 
	665, 665, // ÷ large
 
	SPR_SELL_TRAIN, SPR_SHARED_ORDERS_ICON,
 
	377, 377, // · small
 
	153, 153, // · medium
 
	601, 601, // · large
 
	SPR_WARNING_SIGN, SPR_WARNING_SIGN,
 
	END
 
};
 

	
 

	
 
static void LoadSpriteTables(void)
 
{
src/lang/english.txt
Show inline comments
 
@@ -2893,12 +2893,13 @@ STR_PERFORMANCE_DETAIL_TOTAL_TIP        
 
STR_NEWGRF_SETTINGS_BUTTON                                      :{BLACK}NewGRF Settings
 
STR_NEWGRF_SETTINGS_CAPTION                                     :{WHITE}NewGRF settings
 
STR_NEWGRF_APPLY_CHANGES                                        :{BLACK}Apply changes
 
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}
 
STR_NEWGRF_CONFIRMATION_TEXT                                    :{YELLOW}You are about to make changes to a running game; this can crash OpenTTD.{}Are you absolutely sure about this?
 

	
 
STR_NEWGRF_ADD                                                  :{BLACK}Add
src/newgrf.cpp
Show inline comments
 
@@ -2709,13 +2709,20 @@ static void GRFError(byte *buf, int len)
 

	
 
	if (len <= 1) {
 
		grfmsg(7, "GRFError: No message data supplied.");
 
		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 */
 
static void GRFComment(byte *buf, int len)
 
{
 
	/* <0C> [<ignored...>]
src/newgrf_config.cpp
Show inline comments
 
@@ -88,12 +88,13 @@ void ClearGRFConfig(GRFConfig **config)
 
{
 
	/* GCF_COPY as in NOT strdupped/alloced the filename, name and info */
 
	if (!HASBIT((*config)->flags, GCF_COPY)) {
 
		free((*config)->filename);
 
		free((*config)->name);
 
		free((*config)->info);
 
		free((*config)->error);
 
	}
 
	free(*config);
 
	*config = NULL;
 
}
 

	
 

	
 
@@ -120,12 +121,13 @@ GRFConfig **CopyGRFConfigList(GRFConfig 
 
	for (; src != NULL; src = src->next) {
 
		GRFConfig *c = CallocT<GRFConfig>(1);
 
		*c = *src;
 
		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;
 
	}
 

	
 
	return dst;
 
@@ -249,12 +251,13 @@ compatible_grf:
 
			if (!HASBIT(c->flags, GCF_COPY)) {
 
				free(c->filename);
 
				c->filename = strdup(f->filename);
 
				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;
 
			}
 
		}
 
	}
 

	
 
	return res;
 
}
src/newgrf_config.h
Show inline comments
 
@@ -21,12 +21,13 @@ typedef struct GRFIdentifier {
 
} GRF;
 

	
 
typedef struct GRFConfig : public GRFIdentifier {
 
	char *filename;
 
	char *name;
 
	char *info;
 
	char *error;
 

	
 
	uint8 flags;
 
	uint32 param[0x80];
 
	uint8 num_params;
 

	
 
	struct GRFConfig *next;
src/newgrf_gui.cpp
Show inline comments
 
@@ -40,12 +40,17 @@ static int parse_intlist(const char *p, 
 

	
 

	
 
static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint w, bool show_params)
 
{
 
	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);
 
		y += DrawStringMultiLine(x, y, STR_NEWGRF_FILENAME, w);
 
	}
 

	
 
@@ -325,13 +330,14 @@ static void NewGRFWndProc(Window *w, Win
 
						pal = PALETTE_TO_GREEN;
 
					} else {
 
						pal = PALETTE_TO_BLUE;
 
					}
 

	
 
					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;
 
				}
 
			}
 

	
 
			if (WP(w, newgrf_d).sel != NULL) {
 
				/* Draw NewGRF file info */
src/table/files.h
Show inline comments
 
@@ -56,10 +56,10 @@ static MD5File files_openttd[] = {
 
	{ "nsignalsw.grf", { 0x65, 0xb9, 0xd7, 0x30, 0x56, 0x06, 0xcc, 0x9e, 0x27, 0x57, 0xc8, 0xe4, 0x9b, 0xb3, 0x66, 0x81 } },
 
	{ "2ccmap.grf",    { 0x20, 0x03, 0x32, 0x1a, 0x43, 0x6c, 0xc1, 0x05, 0x80, 0xbd, 0x43, 0xeb, 0xe1, 0xfd, 0x0c, 0x62 } },
 
	{ "airports.grf",  { 0xfd, 0xa4, 0x38, 0xd6, 0x9c, 0x81, 0x74, 0xfe, 0xa0, 0x98, 0xa2, 0x14, 0x4b, 0x15, 0xb8, 0x4b } },
 
	{ "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 } },
 
};
src/table/sprites.h
Show inline comments
 
@@ -45,13 +45,13 @@ enum Sprites {
 
	/* ASCII */
 
	SPR_ASCII_SPACE       = 2,
 
	SPR_ASCII_SPACE_SMALL = 226,
 
	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,
 
	SPR_AUTORAIL_BASE = SPR_SLOPES_BASE + 78,
 
	SPR_ELRAIL_BASE   = SPR_AUTORAIL_BASE + 55,
 
	SPR_2CCMAP_BASE   = SPR_ELRAIL_BASE + 53,
 
@@ -92,12 +92,14 @@ enum Sprites {
 
	SPR_REPLACE_SHIP      = SPR_OPENTTD_BASE + 106,
 
	SPR_REPLACE_AIRCRAFT  = SPR_OPENTTD_BASE + 107,
 
	SPR_SELL_CHAIN_TRAIN  = SPR_OPENTTD_BASE + 108,
 

	
 
	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)
 
	SPR_FLAGS_BASE = SPR_OPENTTD_BASE + 83, // start of the flags block (in same order as enum NetworkLanguage)
 

	
 
	SPR_AIRPORTX_BASE = SPR_OPENTTD_BASE + OPENTTD_SPRITES_COUNT, // The sprites used for other airport angles
0 comments (0 inline, 0 general)