diff options
-rw-r--r-- | src/crepe/api/Button.cpp | 6 | ||||
-rw-r--r-- | src/crepe/api/Button.h | 2 | ||||
-rw-r--r-- | src/crepe/api/Event.h | 2 | ||||
-rw-r--r-- | src/crepe/api/UiObject.cpp | 5 | ||||
-rw-r--r-- | src/crepe/api/UiObject.h | 3 | ||||
-rw-r--r-- | src/crepe/system/InputSystem.cpp | 25 | ||||
-rw-r--r-- | src/crepe/system/InputSystem.h | 6 | ||||
-rw-r--r-- | src/example/button.cpp | 3 | ||||
-rw-r--r-- | src/test/InputTest.cpp | 10 |
9 files changed, 30 insertions, 32 deletions
diff --git a/src/crepe/api/Button.cpp b/src/crepe/api/Button.cpp index f179f60..b104329 100644 --- a/src/crepe/api/Button.cpp +++ b/src/crepe/api/Button.cpp @@ -2,9 +2,9 @@ namespace crepe { -Button::Button(game_object_id_t id, vec2 dimensions,vec2 offset, std::function<void()> on_click, - bool is_toggle) - : UIObject(id, dimensions,offset), +Button::Button(game_object_id_t id, vec2 dimensions, vec2 offset, + std::function<void()> on_click, bool is_toggle) + : UIObject(id, dimensions, offset), is_toggle(is_toggle), on_click(on_click) {} diff --git a/src/crepe/api/Button.h b/src/crepe/api/Button.h index 043cc78..5c803ba 100644 --- a/src/crepe/api/Button.h +++ b/src/crepe/api/Button.h @@ -21,7 +21,7 @@ public: * \param is_toggle Optional flag to indicate if the button is a toggle button. Defaults to false. * \param on_click callback function that will be invoked when the button is clicked. */ - Button(game_object_id_t id, vec2 dimensions,vec2 offset, std::function<void()> on_click, + Button(game_object_id_t id, vec2 dimensions, vec2 offset, std::function<void()> on_click, bool is_toggle = false); /** diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index 8083d7c..6298118 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -94,8 +94,6 @@ public: // Movement since last event in y int delta_y = 0; - - }; /** diff --git a/src/crepe/api/UiObject.cpp b/src/crepe/api/UiObject.cpp index 0262d31..2b287b3 100644 --- a/src/crepe/api/UiObject.cpp +++ b/src/crepe/api/UiObject.cpp @@ -2,6 +2,7 @@ using namespace crepe; -UIObject::UIObject(game_object_id_t id, vec2 dimensions,vec2 offset) +UIObject::UIObject(game_object_id_t id, vec2 dimensions, vec2 offset) : Component(id), - dimensions(dimensions),offset(offset){} + dimensions(dimensions), + offset(offset) {} diff --git a/src/crepe/api/UiObject.h b/src/crepe/api/UiObject.h index 1130f99..0634f97 100644 --- a/src/crepe/api/UiObject.h +++ b/src/crepe/api/UiObject.h @@ -16,11 +16,10 @@ public: * \param dimensions width and height of the UIObject * \param offset Offset relative to the GameObject Transform */ - UIObject(game_object_id_t id, vec2 dimensions,vec2 offset); + UIObject(game_object_id_t id, vec2 dimensions, vec2 offset); //! Width and height of the UIObject vec2 dimensions; vec2 offset; - }; } // namespace crepe diff --git a/src/crepe/system/InputSystem.cpp b/src/crepe/system/InputSystem.cpp index bbf2547..21ec24b 100644 --- a/src/crepe/system/InputSystem.cpp +++ b/src/crepe/system/InputSystem.cpp @@ -152,7 +152,7 @@ void InputSystem::handle_click(const MouseButton & mouse_button, const int world for (Button & button : buttons) { RefVector<Transform> transform_vec = mgr.get_components_by_id<Transform>(button.game_object_id); - Transform& transform(transform_vec.front().get()); + Transform & transform(transform_vec.front().get()); if (button.active && this->is_mouse_inside_button(world_mouse_x, world_mouse_y, button, transform)) { @@ -162,20 +162,17 @@ void InputSystem::handle_click(const MouseButton & mouse_button, const int world } bool InputSystem::is_mouse_inside_button(const int mouse_x, const int mouse_y, - const Button &button, const Transform &transform) { - int actual_x = transform.position.x + button.offset.x; - int actual_y = transform.position.y + button.offset.y; - - int half_width = button.dimensions.x / 2; - int half_height = button.dimensions.y / 2; - - // Check if the mouse is within the button's boundaries - return mouse_x >= actual_x - half_width - && mouse_x <= actual_x + half_width - && mouse_y >= actual_y - half_height - && mouse_y <= actual_y + half_height; -} + const Button & button, const Transform & transform) { + int actual_x = transform.position.x + button.offset.x; + int actual_y = transform.position.y + button.offset.y; + int half_width = button.dimensions.x / 2; + int half_height = button.dimensions.y / 2; + + // Check if the mouse is within the button's boundaries + return mouse_x >= actual_x - half_width && mouse_x <= actual_x + half_width + && mouse_y >= actual_y - half_height && mouse_y <= actual_y + half_height; +} void InputSystem::handle_button_press(Button & button) { //checks if the button is a toggle button diff --git a/src/crepe/system/InputSystem.h b/src/crepe/system/InputSystem.h index 557ba47..eafeb91 100644 --- a/src/crepe/system/InputSystem.h +++ b/src/crepe/system/InputSystem.h @@ -31,15 +31,15 @@ public: private: //! Stores the last position of the mouse when the button was pressed. - ivec2 last_mouse_down_position{std::numeric_limits<int>::max(), std::numeric_limits<int>::max()}; + ivec2 last_mouse_down_position{std::numeric_limits<int>::max(), + std::numeric_limits<int>::max()}; //! Stores the last mouse button pressed. MouseButton last_mouse_button = MouseButton::NONE; - + //! The maximum allowable distance between mouse down and mouse up to register as a click. const int click_tolerance = 5; - /** * \brief Handles the mouse click event. * \param mouse_button The mouse button involved in the click. diff --git a/src/example/button.cpp b/src/example/button.cpp index 7efd889..00bdc28 100644 --- a/src/example/button.cpp +++ b/src/example/button.cpp @@ -36,7 +36,8 @@ int main(int argc, char * argv[]) { std::function<void()> on_click = [&]() { std::cout << "button clicked" << std::endl; }; std::function<void()> on_enter = [&]() { std::cout << "enter" << std::endl; }; std::function<void()> on_exit = [&]() { std::cout << "exit" << std::endl; }; - auto & button = button_obj.add_component<Button>(vec2{100,100},vec2{0,0}, on_click, false); + auto & button + = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0}, on_click, false); button.on_mouse_enter = on_enter; button.on_mouse_exit = on_exit; button.is_toggle = true; diff --git a/src/test/InputTest.cpp b/src/test/InputTest.cpp index f7d1059..f9b2fe7 100644 --- a/src/test/InputTest.cpp +++ b/src/test/InputTest.cpp @@ -119,8 +119,8 @@ TEST_F(InputTest, MouseMove) { function_triggered = true; EXPECT_EQ(e.mouse_x, 0); EXPECT_EQ(e.mouse_y, 0); - EXPECT_EQ(e.delta_x , 10); - EXPECT_EQ(e.delta_y , 10); + EXPECT_EQ(e.delta_x, 10); + EXPECT_EQ(e.delta_y, 10); return false; }; event_manager.subscribe<MouseMoveEvent>(on_mouse_move); @@ -223,7 +223,8 @@ TEST_F(InputTest, testButtonClick) { GameObject button_obj = mgr.new_object("body", "person", vec2{0, 0}, 0, 1); bool button_clicked = false; std::function<void()> on_click = [&]() { button_clicked = true; }; - auto & button = button_obj.add_component<Button>(vec2{100,100},vec2{0,0}, on_click, false); + auto & button + = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0}, on_click, false); bool hover = false; button.active = true; @@ -249,7 +250,8 @@ TEST_F(InputTest, testButtonHover) { GameObject button_obj = mgr.new_object("body", "person", vec2{0, 0}, 0, 1); bool button_clicked = false; std::function<void()> on_click = [&]() { button_clicked = true; }; - auto & button = button_obj.add_component<Button>(vec2{100,100},vec2{0,0}, on_click, false); + auto & button + = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0}, on_click, false); button.active = true; button.is_pressed = false; button.is_toggle = false; |