Added AsloEngine 0.9.0 to Repository
This commit is contained in:
parent
d017dd84b3
commit
881e6c70f2
60 changed files with 2648 additions and 0 deletions
100
asloengine/clickable.cpp
Executable file
100
asloengine/clickable.cpp
Executable file
|
|
@ -0,0 +1,100 @@
|
|||
#include "headers/clickable.hpp"
|
||||
|
||||
namespace asloengine
|
||||
{
|
||||
|
||||
Clickable::Clickable(sf::Mouse::Button _click_button)
|
||||
: click_button(_click_button) {}
|
||||
|
||||
Clickable::~Clickable() {}
|
||||
|
||||
void Clickable::set_clickable(sf::FloatRect rect, sf::RenderWindow *window)
|
||||
{
|
||||
|
||||
clickable_rect = rect;
|
||||
clickable_window = window;
|
||||
|
||||
}
|
||||
|
||||
void Clickable::update_clickable(sf::FloatRect rect)
|
||||
{
|
||||
|
||||
clickable_rect = rect;
|
||||
|
||||
}
|
||||
|
||||
bool Clickable::is_mouse_in() const
|
||||
{
|
||||
|
||||
sf::Vector2i mouse_position = sf::Mouse::getPosition(*clickable_window);
|
||||
|
||||
sf::Vector2f mouse_world_position = clickable_window->mapPixelToCoords(mouse_position);
|
||||
|
||||
return clickable_rect.contains(mouse_world_position.x, mouse_world_position.y);
|
||||
|
||||
}
|
||||
|
||||
Clickable::ClickAction Clickable::get_click_action() const
|
||||
{
|
||||
|
||||
if (pressed)
|
||||
{
|
||||
if (!sf::Mouse::isButtonPressed(click_button))
|
||||
{
|
||||
pressed = false;
|
||||
return ClickAction::Released;
|
||||
}
|
||||
} else {
|
||||
if (sf::Mouse::isButtonPressed(click_button))
|
||||
{
|
||||
pressed = true;
|
||||
return ClickAction::Pressed;
|
||||
}
|
||||
}
|
||||
|
||||
return ClickAction::Nothing;
|
||||
|
||||
}
|
||||
|
||||
bool Clickable::clicked_press() const
|
||||
{
|
||||
|
||||
ClickAction action = get_click_action();
|
||||
|
||||
return action == ClickAction::Pressed && is_mouse_in();
|
||||
|
||||
}
|
||||
|
||||
bool Clickable::clicked_release() const
|
||||
{
|
||||
|
||||
ClickAction action = get_click_action();
|
||||
|
||||
return action == ClickAction::Released && is_mouse_in();
|
||||
|
||||
}
|
||||
|
||||
bool Clickable::clicked_press_and_release() const
|
||||
{
|
||||
|
||||
ClickAction action = get_click_action();
|
||||
|
||||
if (clicking)
|
||||
{
|
||||
if (action == ClickAction::Released)
|
||||
{
|
||||
clicking = false;
|
||||
return is_mouse_in();
|
||||
}
|
||||
} else {
|
||||
if (action == ClickAction::Pressed)
|
||||
{
|
||||
clicking = is_mouse_in();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue