78 lines
No EOL
2.2 KiB
C++
Executable file
78 lines
No EOL
2.2 KiB
C++
Executable file
#include "headers/text_only_input_field.hpp"
|
|
|
|
namespace asloengine
|
|
{
|
|
|
|
TextOnlyInputField::TextOnlyInputField(sf::String _name, sf::Vector2f _size, sf::Font& _font, uint _text_size, int _max_length, sf::String _default_text)
|
|
: size(_size), max_length(_max_length), TextObject(_name, _default_text, _font, _text_size), GameObject(_name), Clickable(sf::Mouse::Left) {}
|
|
|
|
TextOnlyInputField::~TextOnlyInputField() {}
|
|
|
|
void TextOnlyInputField::draw()
|
|
{
|
|
|
|
//sf::View default_view = crop ? set_crop(position.x, position.y, size.x, size.y * 1.5) : render_window->getView();
|
|
TextObject::draw();
|
|
//render_window->setView(default_view);
|
|
|
|
}
|
|
|
|
void TextOnlyInputField::on_main_property_update()
|
|
{
|
|
|
|
TextObject::on_main_property_update();
|
|
|
|
update_clickable(sf::FloatRect(position, size));
|
|
|
|
}
|
|
|
|
void TextOnlyInputField::on_start()
|
|
{
|
|
|
|
set_clickable(sf::FloatRect(position, size), render_window);
|
|
|
|
}
|
|
|
|
void TextOnlyInputField::on_update(float delta_time)
|
|
{
|
|
|
|
if (editable)
|
|
{
|
|
|
|
if (get_click_action() == ClickAction::Pressed)
|
|
{
|
|
if (is_mouse_in())
|
|
{
|
|
if (!editing)
|
|
{
|
|
signal_on_focus();
|
|
}
|
|
editing = true;
|
|
} else {
|
|
if (editing)
|
|
{
|
|
signal_on_lost_focus();
|
|
}
|
|
editing = false;
|
|
}
|
|
}
|
|
|
|
if (editing && Keyboard::entered_text != 0)
|
|
{
|
|
if (Keyboard::entered_text == 8 || Keyboard::entered_text == 127)
|
|
{
|
|
sf::String tmp_text = get_text();
|
|
set_text(tmp_text.substring(0, tmp_text.getSize() - 1));
|
|
signal_on_text_changed(get_text(), Keyboard::entered_text);
|
|
} else if (get_text_length() < max_length) {
|
|
set_text(get_text() + sf::String(Keyboard::entered_text));
|
|
signal_on_text_changed(get_text(), Keyboard::entered_text);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} |