Index: lib/ivis_common/piepalette.h =================================================================== --- lib/ivis_common/piepalette.h (revision 4504) +++ lib/ivis_common/piepalette.h (working copy) @@ -61,8 +61,10 @@ #define WZCOL_CONS_TEXT_USER_ALLY psPalette[36] #define WZCOL_CONS_TEXT_USER_ENEMY psPalette[37] #define WZCOL_CONS_TEXT_DEBUG psPalette[38] +#define WZCOL_GREY psPalette[39] +#define WZCOL_MAP_PREVIEW_AIPLAYER psPalette[40] -#define WZCOL_MAX 39 +#define WZCOL_MAX 41 //************************************************************************* Index: lib/ivis_opengl/piepalette.c =================================================================== --- lib/ivis_opengl/piepalette.c (revision 4504) +++ lib/ivis_opengl/piepalette.c (working copy) @@ -27,7 +27,8 @@ void pal_Init(void) { // TODO: Read these from file so that mod-makers can change them - + WZCOL_MAP_PREVIEW_AIPLAYER = pal_Colour(0, 0x7f, 0); + WZCOL_GREY = pal_Colour(0x55, 0x55, 0x55); WZCOL_WHITE = pal_Colour(UBYTE_MAX, UBYTE_MAX, UBYTE_MAX); WZCOL_BLACK = pal_Colour(1, 1, 1); WZCOL_GREEN = pal_Colour(0, UBYTE_MAX, 0); Index: src/game.c =================================================================== --- src/game.c (revision 4504) +++ src/game.c (working copy) @@ -79,7 +79,7 @@ #include "multistat.h" #include "wrappers.h" - +extern PIELIGHT clanColours[MAX_PLAYERS]; #define MAX_SAVE_NAME_SIZE_V19 40 #define MAX_SAVE_NAME_SIZE 60 @@ -11674,8 +11674,10 @@ STRUCT_SAVEHEADER *psHeader; char aFileName[256]; UDWORD xx,yy,x,y,count,fileSize,sizeOfSaveStruture; + UDWORD playerid =0; char *pFileData = NULL; LEVEL_DATASET *psLevel; + PIELIGHT color = WZCOL_BLACK ; levFindDataSet(game.map, &psLevel); strcpy(aFileName,psLevel->apDataFiles[0]); @@ -11765,6 +11767,7 @@ xx = map_coord(psSaveStructure2->x); yy = map_coord(psSaveStructure2->y); + playerid = psSaveStructure2->player; } else if (psHeader->version < VERSION_14) { @@ -11799,6 +11802,7 @@ xx = map_coord(psSaveStructure12->x); yy = map_coord(psSaveStructure12->y); + playerid = psSaveStructure12->player; } else if (psHeader->version <= VERSION_14) { @@ -11834,6 +11838,7 @@ xx = map_coord(psSaveStructure14->x); yy = map_coord(psSaveStructure14->y); + playerid = psSaveStructure14->player; } else if (psHeader->version <= VERSION_16) { @@ -11870,6 +11875,7 @@ xx = map_coord(psSaveStructure15->x); yy = map_coord(psSaveStructure15->y); + playerid = psSaveStructure15->player; } else if (psHeader->version <= VERSION_19) { @@ -11908,6 +11914,7 @@ xx = map_coord(psSaveStructure17->x); yy = map_coord(psSaveStructure17->y); + playerid = psSaveStructure17->player; } else if (psHeader->version <= VERSION_20) { @@ -11943,6 +11950,7 @@ xx = map_coord(psSaveStructure20->x); yy = map_coord(psSaveStructure20->y); + playerid = psSaveStructure20->player; } else { @@ -11981,16 +11989,32 @@ xx = map_coord(psSaveStructure->x); yy = map_coord(psSaveStructure->y); + playerid = psSaveStructure->player; } + // if human player, then use clan color. If AI, then use something else. + if( isHumanPlayer(playerid) ) + { + playerid = (UDWORD) getPlayerColour(playerid); + color.argb = clanColours[playerid].argb; + // kludge to fix black, so you can see it on some maps. + if ( playerid == 3 ) // in this case 3 = pallete entry for black. + { + + color = WZCOL_GREY; + } + } + else + { // Use a dark green color for the AI + color = WZCOL_MAP_PREVIEW_AIPLAYER ; + } for(x = (xx*scale);x < (xx*scale)+scale ;x++) { for(y = (yy*scale);y< (yy*scale)+scale ;y++) { - // 0xff0000 = red. use COL_LIGHTRED instead? - backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX)] = 0xff; - backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX) + 1] = 0x0; - backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX) + 2] = 0x0; + backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX)] = color.byte.r; + backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX) + 1] = color.byte.g; + backDropSprite[3 * (((offY + y) * BACKDROP_HACK_WIDTH) + x + offX) + 2] = color.byte.b; } } } Index: src/multiint.c =================================================================== --- src/multiint.c (revision 4504) +++ src/multiint.c (working copy) @@ -825,6 +825,11 @@ break; } } + addBlueForm(MULTIOP_OPTIONS, MULTIOP_MAP_PREVIEW, _("Map Preview"), MCOL0, MROW9, MULTIOP_BLUEFORMW, 27); + //hilight correct entry + addMultiBut(psWScreen,MULTIOP_MAP_PREVIEW,MULTIOP_MAP_BUT,MCOL4-8,2,MULTIOP_BUTW,MULTIOP_BUTH, + _("Click to see Map"), IMAGE_FOG_OFF,IMAGE_FOG_OFF_HI,true); + widgSetButtonState(psWScreen, MULTIOP_MAP_BUT,0); //1 = OFF 0=ON // cancel addMultiBut(psWScreen,MULTIOP_OPTIONS,CON_CANCEL, @@ -1572,6 +1577,9 @@ strcpy(game.map,widgGetString(psWScreen, MULTIOP_MAP)); addGameOptions(false); break; + case MULTIOP_MAP_BUT: + loadMapPreview(); + break; } } @@ -1827,7 +1835,9 @@ case CON_CANCEL: stopJoining(); break; - + case MULTIOP_MAP_BUT: + loadMapPreview(); + break; default: break; } Index: src/multiint.h =================================================================== --- src/multiint.h (revision 4504) +++ src/multiint.h (working copy) @@ -262,6 +262,9 @@ #define MULTIOP_PLAYCHOOSER 10321 #define MULTIOP_PLAYCHOOSER_END 10330 + +#define MULTIOP_MAP_PREVIEW 920000 +#define MULTIOP_MAP_BUT 920002 // /////////////////////////////// // Many Button Variations.. Index: src/radar.c =================================================================== --- src/radar.c (revision 4504) +++ src/radar.c (working copy) @@ -66,7 +66,7 @@ static PIELIGHT tileColours[MAX_TILES]; static UDWORD *radarBuffer; -static PIELIGHT clanColours[MAX_PLAYERS]= +PIELIGHT clanColours[MAX_PLAYERS]= { // see frontend2.png for team color order. // [r,g,b,a] {{0,255,0,255}}, // green Player 0