Deux choses :
1. Beaucoup de lignes de code pour pas grand chose
bool hitTest(sf::FloatRect rect, sf::Vector2i mouse)
{
return (mouse.x > rect.left) && (mouse.x < rect.left + rect.width) &&
(mouse.y > rect.top) && (mouse.y < rect.top + rect.height);
}
2. C'est très exactement ce que fait la fonction contains
if (rect.contains(mouse))
{
...
}
Note que FloatRect et Vector2i ne sont pas directement compatibles, mais de toute façon le fait que tu mixes les deux est une indication que tu fais mal quelque chose -- tu compares deux choses qui sont dans deux espaces différents (pixels pour les int, unités de la scène pour les float). Je pense que ce qu'il te manque, c'est un appel à window.convertCoords(mouse) pour passer des pixels à la scène.