(svn r1091) Fix: Finally station names use 100% the correct color in transparent mode
This commit is contained in:
		
							
								
								
									
										4
									
								
								gfx.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								gfx.c
									
									
									
									
									
								
							@@ -492,7 +492,7 @@ int DoDrawString(const byte *string, int x, int y, uint16 real_color) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if (color != 0xFF) {
 | 
							if (color != 0xFF) {
 | 
				
			||||||
switch_color:;
 | 
					switch_color:;
 | 
				
			||||||
			if (real_color & 0x100) {
 | 
								if (real_color & IS_PALETTE_COLOR) {
 | 
				
			||||||
				_string_colorremap[1] = color;
 | 
									_string_colorremap[1] = color;
 | 
				
			||||||
				_string_colorremap[2] = 215;
 | 
									_string_colorremap[2] = 215;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
@@ -1976,5 +1976,5 @@ uint16 GetDrawStringPlayerColor(byte player)
 | 
				
			|||||||
	//  of the player
 | 
						//  of the player
 | 
				
			||||||
	if (player == OWNER_SPECTATOR || player == OWNER_SPECTATOR - 1)
 | 
						if (player == OWNER_SPECTATOR || player == OWNER_SPECTATOR - 1)
 | 
				
			||||||
			return 1;
 | 
								return 1;
 | 
				
			||||||
	return (_color_list[_player_colors[player]].window_color_1b) | 0x100;
 | 
						return (_color_list[_player_colors[player]].window_color_1b) | IS_PALETTE_COLOR;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								gfx.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								gfx.h
									
									
									
									
									
								
							@@ -111,4 +111,9 @@ enum { NUM_SPRITES = 0x3500 }; // 1500 + space for custom GRF sets
 | 
				
			|||||||
extern byte _palettes[4][256 * 3];
 | 
					extern byte _palettes[4][256 * 3];
 | 
				
			||||||
VARDEF byte _cur_palette[768];
 | 
					VARDEF byte _cur_palette[768];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum StringColorFlags {
 | 
				
			||||||
 | 
						IS_PALETTE_COLOR = 0x100, // color value is already a real palette color index, not an index of a StringColor
 | 
				
			||||||
 | 
					} StringColorFlags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										17
									
								
								viewport.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								viewport.c
									
									
									
									
									
								
							@@ -1111,20 +1111,9 @@ static void ViewportDrawStrings(DrawPixelInfo *dpi, StringSpriteToDraw *ss)
 | 
				
			|||||||
		SetDParam(0, ss->params[0]);
 | 
							SetDParam(0, ss->params[0]);
 | 
				
			||||||
		SetDParam(1, ss->params[1]);
 | 
							SetDParam(1, ss->params[1]);
 | 
				
			||||||
		if (_display_opt & DO_TRANS_BUILDINGS && ss->width != 0) {
 | 
							if (_display_opt & DO_TRANS_BUILDINGS && ss->width != 0) {
 | 
				
			||||||
			/* This is such a frustrating mess - I need to convert
 | 
								/* Real colors need the IS_PALETTE_COLOR flag, otherwise colors from _string_colormap are assumed. */
 | 
				
			||||||
			 * from real color codes to string color codes and guess
 | 
								DrawString(ss->x >> zoom, (ss->y >> zoom) - (ss->width&0x8000?2:0), ss->string, 
 | 
				
			||||||
			 * what, they are completely different. --pasky */
 | 
								           (_color_list[ss->color].window_color_bgb | IS_PALETTE_COLOR));
 | 
				
			||||||
			static const byte ci2sci[17] = {
 | 
					 | 
				
			||||||
				/*  0 */ 16, /*  1 */  0, /*  2 */  5,
 | 
					 | 
				
			||||||
				/*  3X*/  2, /*  4 */  8, /*  5 */  3,
 | 
					 | 
				
			||||||
				/*  6X*/ 14, /*  7 */  7, /*  8 */  9,
 | 
					 | 
				
			||||||
				/*  9 */ 13, /* 10 */ 10, /* 11 */ 15,
 | 
					 | 
				
			||||||
				/* 12 */  4, /* 13 */  6, /* 14 */ 11,
 | 
					 | 
				
			||||||
				/* 15 */  1, /* 16 */ 12
 | 
					 | 
				
			||||||
			};
 | 
					 | 
				
			||||||
			byte color = ci2sci[ss->color + 1];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			DrawString(ss->x >> zoom, (ss->y >> zoom) - (ss->width&0x8000?2:0), ss->string, color);
 | 
					 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			DrawString(ss->x >> zoom, (ss->y >> zoom) - (ss->width&0x8000?2:0), ss->string, 16);
 | 
								DrawString(ss->x >> zoom, (ss->y >> zoom) - (ss->width&0x8000?2:0), ss->string, 16);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user