--- freeciv-01-26-02/client/tilespec.c Mon Jan 7 02:03:46 2002 +++ freeciv/client/tilespec.c Thu Feb 21 20:29:41 2002 @@ -419,6 +419,17 @@ assert(sprites.field);\ } while(0) +/* This one lets you pick a sprite *iff* it's there */ +#define SET_SPRITE_ALT(field, tag, alt) do { \ + sprites.field = hash_lookup_data(sprite_hash, tag);\ + if (!sprites.field) { \ + sprites.field = hash_lookup_data(sprite_hash, alt);\ + } + assert(sprites.field);\ + } while(0) + + + /********************************************************************** Initialize 'sprites' structure based on hardwired tags which freeciv always requires. @@ -588,9 +598,7 @@ SET_SPRITE(tx.farmland, "tx.farmland"); SET_SPRITE(tx.irrigation, "tx.irrigation"); SET_SPRITE(tx.mine, "tx.mine"); - if (!is_isometric) { - SET_SPRITE(tx.oil_mine, "tx.oil_mine"); - } + SET_SPRITE_ALT(tx.oil_mine, "tx.oil_mine", "tx.mine"); SET_SPRITE(tx.pollution, "tx.pollution"); SET_SPRITE(tx.village, "tx.village"); SET_SPRITE(tx.fortress, "tx.fortress"); @@ -1217,8 +1225,9 @@ *solid_bg = 1; } - if (tspecial & S_MINE && draw_mines) { - /* We do not have an oil tower in isometric view yet... */ + if (tspecial & S_MINE && draw_mines + && (ttype == T_HILLS || ttype == T_MOUNTAINS)) { + /*Oil mines come later*/ *sprs++ = sprites.tx.mine; } @@ -1236,6 +1245,12 @@ *sprs++ = tile_types[ttype].special[0].sprite; else if (tspecial & S_SPECIAL_2) *sprs++ = tile_types[ttype].special[1].sprite; + } + + if (tspecial & S_MINE && draw_mines + && ttype != T_HILLS && ttype != T_MOUNTAINS) { + /* Must be Glacier or Dessert -- looks better on top of special*/ + *sprs++ = sprites.tx.oil_mine; } if (tspecial & S_RAILROAD && draw_roads_rails) {