Coverage report for gui


src/
File: src/render/ui/Input.cpp
Date: 2024-06-25 10:57:02
Lines:
0/44
0.0%
Functions:
0/3
0.0%
Branches:
0/88
0.0%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** zappy
4 ** File description:
5 ** button
6 */
7
8 #include "Input.hpp"
9
10 ✗ Input::Input(sf::Vector2f pos, [[maybe_unused]] sf::Vector2f size, std::string text, sf::Font &font, std::string accept)
11 ✗ : _accept(accept)
12 {
13 _placeHolder = text;
14 ✗ _text.setFont(font);
15 ✗ _text.setString(text);
16 ✗ _text.setPosition(pos);
17 ✗ _text.setCharacterSize(24);
18 ✗ _text.setFillColor(sf::Color::White);
19 ✗ }
20
21 ✗ bool Input::update(sf::Event event, sf::RenderWindow &window) {
22 ✗ sf::Vector2f mousePos = window.mapPixelToCoords(sf::Mouse::getPosition(window));
23 bool ret = false;
24
25 ✗ if (!_isFocused)
26 ✗ _hover = _text.getGlobalBounds().contains(mousePos.x, mousePos.y);
27 ✗ if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left)
28 ✗ _isFocused = _text.getGlobalBounds().contains(mousePos.x, mousePos.y);
29 ✗ if (_isFocused) {
30 ✗ if (event.type == sf::Event::TextEntered) {
31 ✗ if (event.text.unicode == 8) {
32 ✗ if (_input.size() > 0)
33 ✗ _input.pop_back();
34 ✗ } else if (event.text.unicode == 13) {
35 ✗ _isFocused = false;
36 ret = true;
37 } else {
38 ✗ if (_accept.find(event.text.unicode) != std::string::npos)
39 ✗ _input += event.text.unicode;
40 }
41 }
42 ✗ if (event.type == sf::Event::KeyPressed &&
43 ✗ sf::Keyboard::isKeyPressed(sf::Keyboard::BackSpace) &&
44 ✗ sf::Keyboard::isKeyPressed(sf::Keyboard::LControl))
45 ✗ _input = "";
46 }
47 ✗ return ret;
48 }
49
50 ✗ void Input::draw(sf::RenderWindow &window, float deltaTime) {
51 ✗ _time += deltaTime;
52 ✗ if (!_isFocused && _input.size() == 0)
53 ✗ _text.setString(_placeHolder + " " + _end);
54 ✗ else if (_isFocused) {
55 ✗ if (_time < 0.5)
56 ✗ _text.setString(_input + "_");
57 else
58 ✗ _text.setString(_input + " ");
59 ✗ if (_time > 1)
60 ✗ _time = 0;
61 } else {
62 ✗ _text.setString(_input + " " + _end);
63 }
64
65 ✗ if (_isFocused || _hover)
66 ✗ _text.setFillColor(sf::Color::Red);
67 else
68 ✗ _text.setFillColor(sf::Color::White);
69 ✗ window.draw(_text);
70 ✗ }
71