-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathButton.cpp
40 lines (35 loc) · 1.07 KB
/
Button.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "Button.h"
#include "Espace.h"
#include "Actions/Nothing.h"
Button::Button(std::string texte, sf::Vector2f pos, sf::RenderWindow *parent) :
AbstractButton(texte, pos, parent),
action_(new Default_Action::Nothing()),
pressed_(false),
colorPressed_(sf::Color(250,100,100))
{}
void Button::setAction(Action* action)
{
action_ = action;
}
void Button::update()
{
//Si la souris sort du bouton, sans avoir relâché le clic
if(pressed_ && sf::Mouse::isButtonPressed(sf::Mouse::Left) && !Espace::estDans(sf::Mouse::getPosition(*parent_), zone_))
{
pressed_ = false;
zone_.setOutlineColor(colorDefaut_);
}
//Si on relâche le clic dans le bouton
else if(pressed_ && !sf::Mouse::isButtonPressed(sf::Mouse::Left)) //estDans
{
pressed_ = false;
zone_.setOutlineColor(colorDefaut_);
(*action_)();
}
//Si on presse le clic dans le bouton
else if(!pressed_ && sf::Mouse::isButtonPressed(sf::Mouse::Left) && Espace::estDans(sf::Mouse::getPosition(*parent_), zone_))
{
pressed_ = true;
zone_.setOutlineColor(colorPressed_);
}
}