@Override
    public void draw(Graphics2D g) {
        if (!isVisible()) return;
        g.clearRect(0, 0, getWidth(), getHeight());
        super.draw(g);

        g.setFont(INFO_FONT);
        g.setColor(TEXT_COLOR);
        String badTriesStr = "Bad tries left: " + badTriesLeft;
        Rectangle2D bounds = TEXT_FONT.getStringBounds(badTriesStr, g.getFontRenderContext());
        g.drawString(badTriesStr, TEXT_LEFT_MARGIN, (float) bounds.getHeight() + TEXT_TOP_MARGIN);

        int elixirsLeft = 0;
        if (seqSpritesToCheck != null) elixirsLeft = seqSpritesToCheck.size() - nextSeqSprite;

        g.drawString("Elixirs left: " + elixirsLeft, TEXT_LEFT_MARGIN, TEXT_TOP_MARGIN + (float) (2*bounds.getHeight()));

        g.setFont(TEXT_FONT);
        g.drawString("Click on elixirs in the same order as they appeard on the wall:", 2*TEXT_LEFT_MARGIN, 2*TEXT_TOP_MARGIN + (float) (2*bounds.getHeight()));

        int i = 0;
        for (SeqElixirSprite sprite : seqSpritesToView) {
            if (hoverIndex == i) {
                if (clickIndex == hoverIndex) g.setColor(Color.RED);
                else g.setColor(Color.YELLOW);

                Stroke oldStroke = g.getStroke();
                int stroke = 2;
                g.setStroke(new BasicStroke(stroke));
                g.draw(new Rectangle2D.Double(sprite.getX() - stroke / 2, sprite.getY() - stroke / 2,
                                              sprite.getWidth() + stroke / 2, sprite.getHeight() + stroke / 2));
                g.setStroke(oldStroke);
            }
            sprite.draw(g);
            i++;
        }
    }