@Override
    public void paint(Graphics g) {
        super.paint(g);
        map.paint(g, this);

        for (Tower tower : towerList) {
            tower.paintBase(g, this);
        }
        enemyHandler.paint(g, this);

        for (Tower tower : towerList) {
            tower.paintProjectiles(g, this);
        }
        for (Tower tower : towerList) {
            tower.paintTurret(g, this);
        }

        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.RED);
        //g2d.drawString(mouseCoords.x + " " + mouseCoords.y + " " + mode, 0, 15);
        if (!gameOver) {
            paintCursor(g);
        } else {
            paintGameOverScreen(g);
        }


        Toolkit.getDefaultToolkit().sync();
        g.dispose();
    }