@Override
    public void simpleDraw(Graphics2D g2d) {
        //DRAWING FLAGS
        boolean drawRings = false;
        boolean drawDestinationLine = false;
        boolean drawViewCone = false;


        if (parentCell == null) {
            g2d.setColor(Color.pink);
            g2d.setBackground(Color.pink);
        }

        float w2 = w / 2;
        float h2 = h / 2;
        float radius = w;

        /*
         * Draw green circle around selected cells.
         */
        if (isSelected()) {


            g2d.setColor(new Color(40, 150, 40, 100));
            g2d.fillOval(
                    (int) (currLocation.x - radius + w2),
                    (int) (currLocation.y - radius + h2),
                    (int) (radius * 2),
                    (int) (radius * 2));
        }

        //draw rings around cells. They represent 
        //detection and separation range

        if (drawRings) {//DRAW RINGS?!?!    
            g2d.setColor(new Color(200, 200, 200, 50));
            radius = detectionRange;


            g2d.drawOval(
                    (int) (currLocation.x - radius + w2),
                    (int) (currLocation.y - radius + h2),
                    (int) (radius * 2),
                    (int) (radius * 2));


            radius = separationRange;

            g2d.drawOval(
                    (int) (currLocation.x - radius + w2),
                    (int) (currLocation.y - radius + h2),
                    (int) (radius * 2),
                    (int) (radius * 2));

            g2d.setColor(Color.red);
            g2d.drawString(id + "", (int) currLocation.x, (int) currLocation.y);
        }




        if (drawDestinationLine) {
            g2d.setColor(new Color(200, 200, 200, 50));
            float shift = w / 2;
            g2d.drawLine(
                    (int) (currLocation.x + shift),
                    (int) (currLocation.y + shift),
                    (int) (getDestinationOriginalPoint().x + shift),
                    (int) (getDestinationOriginalPoint().y + shift));
        }


        if (selected) {
            //DRAW DESTINATION POINT        
            g2d.setColor(Color.CYAN);
            if (destinationPoint != null) {
                g2d.fillOval((int) destinationPoint.x - 4, (int) destinationPoint.y - 4, 8, 8);
            }
            g2d.setColor(Color.pink);
            if (originalDestinationPoint != null) {
                g2d.fillOval((int) originalDestinationPoint.x - 4, (int) originalDestinationPoint.y - 4, 8, 8);
            }
        }

        //Draw health based damage on the cell(something like blood to indicate its state)       
        if (health < 80) {
            Image bloodStain = ResourceLoader.loadImageIcon("blood3.png").getImage();
            int healthDeficit = 100 - health;
            int scalar = 5;
            g2d.drawImage(bloodStain,
                    (int) currLocation.x - healthDeficit / 2 / scalar,
                    (int) currLocation.y - healthDeficit / 2 / scalar,
                    w + healthDeficit / scalar,
                    h + healthDeficit / scalar,
                    null);

        }


        //subclasses draw themselves
        draw(g2d);

        //Draw reflection on the cell
        g2d.setColor(new Color(255, 255, 255, 200));
        g2d.fillOval(
                (int) currLocation.x + 2,
                (int) currLocation.y + 2,
                w / 3,
                h / 3);

        if (age >= 800) {
            g2d.setColor(new Color(44, 44, 44, 80));
            g2d.fillOval(
                    (int) currLocation.x,
                    (int) currLocation.y,
                    w,
                    h);

        }
    }