#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); } } } } }