* @param tile a <code>Tile</code> value
     * @param item a <code>TileItem</code> value
     */
    private void drawItem(Graphics2D g, Tile tile, TileItem item) {

        if (item instanceof Resource) {
            Image bonusImage = lib.getBonusImage(((Resource) item).getType());
            if (bonusImage != null) {
                centerImage(g, bonusImage);
            }
        } else if (item instanceof LostCityRumour) {
            centerImage(g, lib.getMiscImage(ImageLibrary.LOST_CITY_RUMOUR));
        } else {

            TileImprovement improvement = (TileImprovement) item;
            if (improvement.isComplete()) {
                String key = improvement.getType().getId() + ".image";
                if (ResourceManager.hasResource(key)) {
                    // Has its own Overlay Image in Misc, use it
                    Image overlay = ResourceManager.getImage(key, lib.getScalingFactor());
                    g.drawImage(overlay, 0, 0, null);
                } else if (improvement.isRiver() && improvement.getMagnitude() < TileImprovement.FJORD_RIVER) {
                    g.drawImage(lib.getRiverImage(improvement.getStyle()), 0, 0, null);
                } else if (improvement.isRoad()) {
                    drawRoad(g, tile);
                }
            }
        }
    }