Added AsloEngine 0.9.0 to Repository

This commit is contained in:
Aslan2142 2019-08-29 18:42:28 +02:00
parent d017dd84b3
commit 881e6c70f2
60 changed files with 2648 additions and 0 deletions

100
asloengine/clickable.cpp Executable file
View 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;
}
}