diff -ru freeciv-May-28/client/gui-gtk/mapview.c freeciv/client/gui-gtk/mapview.c --- freeciv-May-28/client/gui-gtk/mapview.c Wed May 29 21:59:40 2002 +++ freeciv/client/gui-gtk/mapview.c Thu May 30 00:39:48 2002 @@ -1974,12 +1974,12 @@ static void dither_tile(GdkDrawable *pixmap, struct Sprite **dither, int canvas_x, int canvas_y, int offset_x, int offset_y, - int width, int height, int fog) + int width, int height, int fog, int which) { if (!width || !height) return; - gdk_gc_set_clip_mask(civ_gc, sprites.dither_tile->mask); + gdk_gc_set_clip_mask(civ_gc, sprites.multi_dither_tile[which]->mask); gdk_gc_set_clip_origin(civ_gc, canvas_x, canvas_y); assert(offset_x == 0 || offset_x == NORMAL_TILE_WIDTH/2); assert(offset_y == 0 || offset_y == NORMAL_TILE_HEIGHT/2); @@ -2030,7 +2030,7 @@ if (fog) { gdk_gc_set_clip_origin(fill_tile_gc, canvas_x, canvas_y); - gdk_gc_set_clip_mask(fill_tile_gc, sprites.dither_tile->mask); + gdk_gc_set_clip_mask(fill_tile_gc, sprites.multi_dither_tile[which]->mask); gdk_gc_set_foreground(fill_tile_gc, colors_standard[COLOR_STD_BLACK]); gdk_gc_set_stipple(fill_tile_gc, black50); @@ -2158,7 +2158,7 @@ /*** Dither base terrain ***/ if (draw_terrain) dither_tile(pm, dither, canvas_x, canvas_y, - offset_x, offset_y, width, height, fog); + offset_x, offset_y, width, height, fog, ((x%3) * 3) + (y%3)); } /*** Rest of terrain and specials ***/ diff -ru freeciv-May-28/client/tilespec.c freeciv/client/tilespec.c --- freeciv-May-28/client/tilespec.c Wed May 29 21:59:40 2002 +++ freeciv/client/tilespec.c Thu May 30 00:38:08 2002 @@ -460,6 +460,15 @@ if (is_isometric) { SET_SPRITE(black_tile, "t.black_tile"); SET_SPRITE(dither_tile, "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[0], "t.multi_dither_tile_0x0", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[1], "t.multi_dither_tile_0x1", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[2], "t.multi_dither_tile_0x2", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[3], "t.multi_dither_tile_1x0", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[4], "t.multi_dither_tile_1x1", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[5], "t.multi_dither_tile_1x2", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[6], "t.multi_dither_tile_2x0", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[7], "t.multi_dither_tile_2x1", "t.dither_tile"); + SET_SPRITE_ALT(multi_dither_tile[8], "t.multi_dither_tile_2x2", "t.dither_tile"); SET_SPRITE(coast_color, "t.coast_color"); } @@ -663,6 +672,27 @@ sprites.city.tile_wall = NULL; /* no place to initialize this variable */ sprites.city.tile = NULL; /* no place to initialize this variable */ + + /* These may or may not be here, so we accept NULLs if they're not. + We'll just remember the possibility at runtime */ + for(i=0; i