diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/crepe/api/KeyCodes.h | 1 | ||||
| -rw-r--r-- | src/crepe/facade/SDLContext.cpp | 57 | ||||
| -rw-r--r-- | src/crepe/facade/SDLContext.h | 218 | ||||
| -rw-r--r-- | src/crepe/system/InputSystem.cpp | 57 | ||||
| -rw-r--r-- | src/crepe/system/InputSystem.h | 14 | ||||
| -rw-r--r-- | src/test/EventTest.cpp | 6 | ||||
| -rw-r--r-- | src/test/InputTest.cpp | 9 | 
7 files changed, 175 insertions, 187 deletions
diff --git a/src/crepe/api/KeyCodes.h b/src/crepe/api/KeyCodes.h index a13d1af..dc3219a 100644 --- a/src/crepe/api/KeyCodes.h +++ b/src/crepe/api/KeyCodes.h @@ -155,5 +155,4 @@ enum class Keycode {  	MENU = 348, //!< Menu key.  }; -  } // namespace crepe diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 7c7d58e..7e19ede 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -77,11 +77,11 @@ SDLContext::~SDLContext() {  Keycode SDLContext::sdl_to_keycode(SDL_Scancode sdl_key) {  	auto it = LOOKUP_TABLE.find(sdl_key); -    if (it != LOOKUP_TABLE.end()) { -        return it->second; -    } +	if (it != LOOKUP_TABLE.end()) { +		return it->second; +	} -    return Keycode::NONE; +	return Keycode::NONE;  }  void SDLContext::update_keyboard_state() {  	// Array to hold the key states (true if pressed, false if not) @@ -95,7 +95,6 @@ void SDLContext::update_keyboard_state() {  			this->keyboard_state[key] = current_state[i] != 0;  		}  	} -  }  MouseButton SDLContext::sdl_to_mousebutton(Uint8 sdl_button) { @@ -286,8 +285,7 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {  			case SDL_QUIT:  				event_list.push_back({.event_type = SDLContext::EventType::SHUTDOWN});  				break; -			case SDL_KEYDOWN: -			{ +			case SDL_KEYDOWN: {  				this->update_keyboard_state();  				EventData transfer_event;  				transfer_event.event_type = SDLContext::EventType::KEYDOWN; @@ -296,10 +294,10 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {  					.key_repeat = event.key.repeat != 0,  				};  				event_list.push_back(transfer_event); -			}  				break; -			case SDL_KEYUP: -			{ +			} + +			case SDL_KEYUP: {  				this->update_keyboard_state();  				EventData transfer_event;  				transfer_event.event_type = SDLContext::EventType::KEYUP; @@ -308,10 +306,10 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {  					.key_repeat = false,  				};  				event_list.push_back(transfer_event); -			}  				break; -			case SDL_MOUSEBUTTONDOWN: -			{ +			} + +			case SDL_MOUSEBUTTONDOWN: {  				EventData transfer_event;  				transfer_event.event_type = SDLContext::EventType::MOUSEDOWN;  				transfer_event.data.mouse_data = MouseData{ @@ -319,10 +317,9 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {  					.mouse_position = mouse_pos,  				};  				event_list.push_back(transfer_event); -				 -			} break; -			case SDL_MOUSEBUTTONUP:  -			{ +				break; +			} +			case SDL_MOUSEBUTTONUP: {  				EventData transfer_event;  				transfer_event.event_type = SDLContext::EventType::MOUSEUP;  				transfer_event.data.mouse_data = MouseData{ @@ -330,8 +327,8 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {  					.mouse_position = mouse_pos,  				};  				event_list.push_back(transfer_event); -				 -			} break; +				break; +			}  			case SDL_MOUSEMOTION: {  				EventData transfer_event; @@ -341,7 +338,8 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {  					.rel_mouse_move = {event.motion.xrel, event.motion.yrel},  				};  				event_list.push_back(transfer_event); -			} break; +				break; +			}  			case SDL_MOUSEWHEEL: {  				EventData transfer_event; @@ -352,10 +350,11 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {  					.scroll_delta = event.wheel.preciseY,  				};  				event_list.push_back(transfer_event); -			} break; -            case SDL_WINDOWEVENT: -                handle_window_event(event.window, event_list); -                break; +				break; +			} +			case SDL_WINDOWEVENT: +				handle_window_event(event.window, event_list); +				break;  		}  	} @@ -371,18 +370,16 @@ void SDLContext::handle_window_event(const SDL_WindowEvent & window_event,  		case SDL_WINDOWEVENT_RESIZED: {  			EventData transfer_event;  			transfer_event.event_type = SDLContext::EventType::WINDOW_RESIZE; -			transfer_event.data.window_data = WindowData{ -				.resize_dimension = {window_event.data1, window_event.data2} -			}; +			transfer_event.data.window_data +				= WindowData{.resize_dimension = {window_event.data1, window_event.data2}};  			event_list.push_back(transfer_event);  			break;  		}  		case SDL_WINDOWEVENT_MOVED: {  			EventData transfer_event;  			transfer_event.event_type = SDLContext::EventType::WINDOW_MOVE; -			transfer_event.data.window_data = WindowData{ -				.move_delta = {window_event.data1, window_event.data2} -			}; +			transfer_event.data.window_data +				= WindowData{.move_delta = {window_event.data1, window_event.data2}};  			event_list.push_back(transfer_event);  			break;  		} diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index e56d531..7ccefeb 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -106,16 +106,16 @@ public:  	};  	//! EventData struct for passing event data from facade  	struct EventData { -    SDLContext::EventType event_type = SDLContext::EventType::NONE; +		SDLContext::EventType event_type = SDLContext::EventType::NONE; -    union EventDataUnion { -        KeyData key_data; -        MouseData mouse_data; -        WindowData window_data; +		union EventDataUnion { +			KeyData key_data; +			MouseData mouse_data; +			WindowData window_data; -        EventDataUnion() {} -        ~EventDataUnion() {} -    } data; +			EventDataUnion() {} +			~EventDataUnion() {} +		} data;  	};  	/**  	 * \brief Retrieves the current state of the keyboard. @@ -286,108 +286,108 @@ private:  	 * - this is defined in this class because get_events() needs this information aswell  	 */  	CameraAuxiliaryData cam_aux_data; -private:  + +private:  	std::unordered_map<Keycode, bool> keyboard_state; -	const std::unordered_map<SDL_Scancode, Keycode> LOOKUP_TABLE = { -        {SDL_SCANCODE_SPACE, Keycode::SPACE}, -        {SDL_SCANCODE_APOSTROPHE, Keycode::APOSTROPHE}, -        {SDL_SCANCODE_COMMA, Keycode::COMMA}, -        {SDL_SCANCODE_MINUS, Keycode::MINUS}, -        {SDL_SCANCODE_PERIOD, Keycode::PERIOD}, -        {SDL_SCANCODE_SLASH, Keycode::SLASH}, -        {SDL_SCANCODE_0, Keycode::D0}, -        {SDL_SCANCODE_1, Keycode::D1}, -        {SDL_SCANCODE_2, Keycode::D2}, -        {SDL_SCANCODE_3, Keycode::D3}, -        {SDL_SCANCODE_4, Keycode::D4}, -        {SDL_SCANCODE_5, Keycode::D5}, -        {SDL_SCANCODE_6, Keycode::D6}, -        {SDL_SCANCODE_7, Keycode::D7}, -        {SDL_SCANCODE_8, Keycode::D8}, -        {SDL_SCANCODE_9, Keycode::D9}, -        {SDL_SCANCODE_SEMICOLON, Keycode::SEMICOLON}, -        {SDL_SCANCODE_EQUALS, Keycode::EQUAL}, -        {SDL_SCANCODE_A, Keycode::A}, -        {SDL_SCANCODE_B, Keycode::B}, -        {SDL_SCANCODE_C, Keycode::C}, -        {SDL_SCANCODE_D, Keycode::D}, -        {SDL_SCANCODE_E, Keycode::E}, -        {SDL_SCANCODE_F, Keycode::F}, -        {SDL_SCANCODE_G, Keycode::G}, -        {SDL_SCANCODE_H, Keycode::H}, -        {SDL_SCANCODE_I, Keycode::I}, -        {SDL_SCANCODE_J, Keycode::J}, -        {SDL_SCANCODE_K, Keycode::K}, -        {SDL_SCANCODE_L, Keycode::L}, -        {SDL_SCANCODE_M, Keycode::M}, -        {SDL_SCANCODE_N, Keycode::N}, -        {SDL_SCANCODE_O, Keycode::O}, -        {SDL_SCANCODE_P, Keycode::P}, -        {SDL_SCANCODE_Q, Keycode::Q}, -        {SDL_SCANCODE_R, Keycode::R}, -        {SDL_SCANCODE_S, Keycode::S}, -        {SDL_SCANCODE_T, Keycode::T}, -        {SDL_SCANCODE_U, Keycode::U}, -        {SDL_SCANCODE_V, Keycode::V}, -        {SDL_SCANCODE_W, Keycode::W}, -        {SDL_SCANCODE_X, Keycode::X}, -        {SDL_SCANCODE_Y, Keycode::Y}, -        {SDL_SCANCODE_Z, Keycode::Z}, -        {SDL_SCANCODE_LEFTBRACKET, Keycode::LEFT_BRACKET}, -        {SDL_SCANCODE_BACKSLASH, Keycode::BACKSLASH}, -        {SDL_SCANCODE_RIGHTBRACKET, Keycode::RIGHT_BRACKET}, -        {SDL_SCANCODE_GRAVE, Keycode::GRAVE_ACCENT}, -        {SDL_SCANCODE_ESCAPE, Keycode::ESCAPE}, -        {SDL_SCANCODE_RETURN, Keycode::ENTER}, -        {SDL_SCANCODE_TAB, Keycode::TAB}, -        {SDL_SCANCODE_BACKSPACE, Keycode::BACKSPACE}, -        {SDL_SCANCODE_INSERT, Keycode::INSERT}, -        {SDL_SCANCODE_DELETE, Keycode::DELETE}, -        {SDL_SCANCODE_RIGHT, Keycode::RIGHT}, -        {SDL_SCANCODE_LEFT, Keycode::LEFT}, -        {SDL_SCANCODE_DOWN, Keycode::DOWN}, -        {SDL_SCANCODE_UP, Keycode::UP}, -        {SDL_SCANCODE_PAGEUP, Keycode::PAGE_UP}, -        {SDL_SCANCODE_PAGEDOWN, Keycode::PAGE_DOWN}, -        {SDL_SCANCODE_HOME, Keycode::HOME}, -        {SDL_SCANCODE_END, Keycode::END}, -        {SDL_SCANCODE_CAPSLOCK, Keycode::CAPS_LOCK}, -        {SDL_SCANCODE_SCROLLLOCK, Keycode::SCROLL_LOCK}, -        {SDL_SCANCODE_NUMLOCKCLEAR, Keycode::NUM_LOCK}, -        {SDL_SCANCODE_PRINTSCREEN, Keycode::PRINT_SCREEN}, -        {SDL_SCANCODE_PAUSE, Keycode::PAUSE}, -        {SDL_SCANCODE_F1, Keycode::F1}, -        {SDL_SCANCODE_F2, Keycode::F2}, -        {SDL_SCANCODE_F3, Keycode::F3}, -        {SDL_SCANCODE_F4, Keycode::F4}, -        {SDL_SCANCODE_F5, Keycode::F5}, -        {SDL_SCANCODE_F6, Keycode::F6}, -        {SDL_SCANCODE_F7, Keycode::F7}, -        {SDL_SCANCODE_F8, Keycode::F8}, -        {SDL_SCANCODE_F9, Keycode::F9}, -        {SDL_SCANCODE_F10, Keycode::F10}, -        {SDL_SCANCODE_F11, Keycode::F11}, -        {SDL_SCANCODE_F12, Keycode::F12}, -        {SDL_SCANCODE_KP_0, Keycode::KP0}, -        {SDL_SCANCODE_KP_1, Keycode::KP1}, -        {SDL_SCANCODE_KP_2, Keycode::KP2}, -        {SDL_SCANCODE_KP_3, Keycode::KP3}, -        {SDL_SCANCODE_KP_4, Keycode::KP4}, -        {SDL_SCANCODE_KP_5, Keycode::KP5}, -        {SDL_SCANCODE_KP_6, Keycode::KP6}, -        {SDL_SCANCODE_KP_7, Keycode::KP7}, -        {SDL_SCANCODE_KP_8, Keycode::KP8}, -        {SDL_SCANCODE_KP_9, Keycode::KP9}, -        {SDL_SCANCODE_LSHIFT, Keycode::LEFT_SHIFT}, -        {SDL_SCANCODE_LCTRL, Keycode::LEFT_CONTROL}, -        {SDL_SCANCODE_LALT, Keycode::LEFT_ALT}, -        {SDL_SCANCODE_LGUI, Keycode::LEFT_SUPER}, -        {SDL_SCANCODE_RSHIFT, Keycode::RIGHT_SHIFT}, -        {SDL_SCANCODE_RCTRL, Keycode::RIGHT_CONTROL}, -        {SDL_SCANCODE_RALT, Keycode::RIGHT_ALT}, -        {SDL_SCANCODE_RGUI, Keycode::RIGHT_SUPER}, -        {SDL_SCANCODE_MENU, Keycode::MENU} -    }; +	const std::unordered_map<SDL_Scancode, Keycode> LOOKUP_TABLE +		= {{SDL_SCANCODE_SPACE, Keycode::SPACE}, +		   {SDL_SCANCODE_APOSTROPHE, Keycode::APOSTROPHE}, +		   {SDL_SCANCODE_COMMA, Keycode::COMMA}, +		   {SDL_SCANCODE_MINUS, Keycode::MINUS}, +		   {SDL_SCANCODE_PERIOD, Keycode::PERIOD}, +		   {SDL_SCANCODE_SLASH, Keycode::SLASH}, +		   {SDL_SCANCODE_0, Keycode::D0}, +		   {SDL_SCANCODE_1, Keycode::D1}, +		   {SDL_SCANCODE_2, Keycode::D2}, +		   {SDL_SCANCODE_3, Keycode::D3}, +		   {SDL_SCANCODE_4, Keycode::D4}, +		   {SDL_SCANCODE_5, Keycode::D5}, +		   {SDL_SCANCODE_6, Keycode::D6}, +		   {SDL_SCANCODE_7, Keycode::D7}, +		   {SDL_SCANCODE_8, Keycode::D8}, +		   {SDL_SCANCODE_9, Keycode::D9}, +		   {SDL_SCANCODE_SEMICOLON, Keycode::SEMICOLON}, +		   {SDL_SCANCODE_EQUALS, Keycode::EQUAL}, +		   {SDL_SCANCODE_A, Keycode::A}, +		   {SDL_SCANCODE_B, Keycode::B}, +		   {SDL_SCANCODE_C, Keycode::C}, +		   {SDL_SCANCODE_D, Keycode::D}, +		   {SDL_SCANCODE_E, Keycode::E}, +		   {SDL_SCANCODE_F, Keycode::F}, +		   {SDL_SCANCODE_G, Keycode::G}, +		   {SDL_SCANCODE_H, Keycode::H}, +		   {SDL_SCANCODE_I, Keycode::I}, +		   {SDL_SCANCODE_J, Keycode::J}, +		   {SDL_SCANCODE_K, Keycode::K}, +		   {SDL_SCANCODE_L, Keycode::L}, +		   {SDL_SCANCODE_M, Keycode::M}, +		   {SDL_SCANCODE_N, Keycode::N}, +		   {SDL_SCANCODE_O, Keycode::O}, +		   {SDL_SCANCODE_P, Keycode::P}, +		   {SDL_SCANCODE_Q, Keycode::Q}, +		   {SDL_SCANCODE_R, Keycode::R}, +		   {SDL_SCANCODE_S, Keycode::S}, +		   {SDL_SCANCODE_T, Keycode::T}, +		   {SDL_SCANCODE_U, Keycode::U}, +		   {SDL_SCANCODE_V, Keycode::V}, +		   {SDL_SCANCODE_W, Keycode::W}, +		   {SDL_SCANCODE_X, Keycode::X}, +		   {SDL_SCANCODE_Y, Keycode::Y}, +		   {SDL_SCANCODE_Z, Keycode::Z}, +		   {SDL_SCANCODE_LEFTBRACKET, Keycode::LEFT_BRACKET}, +		   {SDL_SCANCODE_BACKSLASH, Keycode::BACKSLASH}, +		   {SDL_SCANCODE_RIGHTBRACKET, Keycode::RIGHT_BRACKET}, +		   {SDL_SCANCODE_GRAVE, Keycode::GRAVE_ACCENT}, +		   {SDL_SCANCODE_ESCAPE, Keycode::ESCAPE}, +		   {SDL_SCANCODE_RETURN, Keycode::ENTER}, +		   {SDL_SCANCODE_TAB, Keycode::TAB}, +		   {SDL_SCANCODE_BACKSPACE, Keycode::BACKSPACE}, +		   {SDL_SCANCODE_INSERT, Keycode::INSERT}, +		   {SDL_SCANCODE_DELETE, Keycode::DELETE}, +		   {SDL_SCANCODE_RIGHT, Keycode::RIGHT}, +		   {SDL_SCANCODE_LEFT, Keycode::LEFT}, +		   {SDL_SCANCODE_DOWN, Keycode::DOWN}, +		   {SDL_SCANCODE_UP, Keycode::UP}, +		   {SDL_SCANCODE_PAGEUP, Keycode::PAGE_UP}, +		   {SDL_SCANCODE_PAGEDOWN, Keycode::PAGE_DOWN}, +		   {SDL_SCANCODE_HOME, Keycode::HOME}, +		   {SDL_SCANCODE_END, Keycode::END}, +		   {SDL_SCANCODE_CAPSLOCK, Keycode::CAPS_LOCK}, +		   {SDL_SCANCODE_SCROLLLOCK, Keycode::SCROLL_LOCK}, +		   {SDL_SCANCODE_NUMLOCKCLEAR, Keycode::NUM_LOCK}, +		   {SDL_SCANCODE_PRINTSCREEN, Keycode::PRINT_SCREEN}, +		   {SDL_SCANCODE_PAUSE, Keycode::PAUSE}, +		   {SDL_SCANCODE_F1, Keycode::F1}, +		   {SDL_SCANCODE_F2, Keycode::F2}, +		   {SDL_SCANCODE_F3, Keycode::F3}, +		   {SDL_SCANCODE_F4, Keycode::F4}, +		   {SDL_SCANCODE_F5, Keycode::F5}, +		   {SDL_SCANCODE_F6, Keycode::F6}, +		   {SDL_SCANCODE_F7, Keycode::F7}, +		   {SDL_SCANCODE_F8, Keycode::F8}, +		   {SDL_SCANCODE_F9, Keycode::F9}, +		   {SDL_SCANCODE_F10, Keycode::F10}, +		   {SDL_SCANCODE_F11, Keycode::F11}, +		   {SDL_SCANCODE_F12, Keycode::F12}, +		   {SDL_SCANCODE_KP_0, Keycode::KP0}, +		   {SDL_SCANCODE_KP_1, Keycode::KP1}, +		   {SDL_SCANCODE_KP_2, Keycode::KP2}, +		   {SDL_SCANCODE_KP_3, Keycode::KP3}, +		   {SDL_SCANCODE_KP_4, Keycode::KP4}, +		   {SDL_SCANCODE_KP_5, Keycode::KP5}, +		   {SDL_SCANCODE_KP_6, Keycode::KP6}, +		   {SDL_SCANCODE_KP_7, Keycode::KP7}, +		   {SDL_SCANCODE_KP_8, Keycode::KP8}, +		   {SDL_SCANCODE_KP_9, Keycode::KP9}, +		   {SDL_SCANCODE_LSHIFT, Keycode::LEFT_SHIFT}, +		   {SDL_SCANCODE_LCTRL, Keycode::LEFT_CONTROL}, +		   {SDL_SCANCODE_LALT, Keycode::LEFT_ALT}, +		   {SDL_SCANCODE_LGUI, Keycode::LEFT_SUPER}, +		   {SDL_SCANCODE_RSHIFT, Keycode::RIGHT_SHIFT}, +		   {SDL_SCANCODE_RCTRL, Keycode::RIGHT_CONTROL}, +		   {SDL_SCANCODE_RALT, Keycode::RIGHT_ALT}, +		   {SDL_SCANCODE_RGUI, Keycode::RIGHT_SUPER}, +		   {SDL_SCANCODE_MENU, Keycode::MENU}};  };  } // namespace crepe diff --git a/src/crepe/system/InputSystem.cpp b/src/crepe/system/InputSystem.cpp index bb454af..8de700b 100644 --- a/src/crepe/system/InputSystem.cpp +++ b/src/crepe/system/InputSystem.cpp @@ -10,7 +10,7 @@ using namespace crepe;  void InputSystem::update() {  	ComponentManager & mgr = this->mediator.component_manager; -	 +  	SDLContext & context = this->mediator.sdl_context;  	std::vector<SDLContext::EventData> event_list = context.get_events();  	RefVector<Button> buttons = mgr.get_components_by_type<Button>(); @@ -31,31 +31,31 @@ void InputSystem::update() {  	Transform & cam_transform = transform_vec.front().get();  	vec2 camera_origin = cam_transform.position + current_cam.data.postion_offset -						  - (current_cam.viewport_size / 2); +						 - (current_cam.viewport_size / 2);  	for (const SDLContext::EventData & event : event_list) {  		// Only calculate mouse coordinates for relevant events -		if(this->is_mouse_event(event.event_type)) { -			this->handle_mouse_event(event,camera_origin,current_cam); -			 +		if (this->is_mouse_event(event.event_type)) { +			this->handle_mouse_event(event, camera_origin, current_cam); +  		} else {  			this->handle_non_mouse_event(event); -			  		}  	}  } -void InputSystem::handle_mouse_event(const SDLContext::EventData &event, const vec2 &camera_origin,  -                                     const Camera ¤t_cam){ +void InputSystem::handle_mouse_event(const SDLContext::EventData & event, +									 const vec2 & camera_origin, const Camera & current_cam) {  	EventManager & event_mgr = this->mediator.event_manager;  	vec2 adjusted_mouse;  	adjusted_mouse.x = event.data.mouse_data.mouse_position.x + camera_origin.x;  	adjusted_mouse.x = event.data.mouse_data.mouse_position.y + camera_origin.y;  	// Check if the mouse is within the viewport  	if ((adjusted_mouse.x < camera_origin.x -		|| adjusted_mouse.x > camera_origin.x + current_cam.viewport_size.x -		|| adjusted_mouse.y < camera_origin.y -		|| adjusted_mouse.y > camera_origin.y + current_cam.viewport_size.y)) return; +		 || adjusted_mouse.x > camera_origin.x + current_cam.viewport_size.x +		 || adjusted_mouse.y < camera_origin.y +		 || adjusted_mouse.y > camera_origin.y + current_cam.viewport_size.y)) +		return;  	// Handle mouse-specific events  	switch (event.event_type) { @@ -105,14 +105,14 @@ void InputSystem::handle_mouse_event(const SDLContext::EventData &event, const v  		default:  			break; -	}									 +	}  } -void InputSystem::handle_non_mouse_event(const SDLContext::EventData &event){ +void InputSystem::handle_non_mouse_event(const SDLContext::EventData & event) {  	EventManager & event_mgr = this->mediator.event_manager;  	switch (event.event_type) {  		case SDLContext::EventType::KEYDOWN: -			 +  			event_mgr.queue_event<KeyPressEvent>(  				{.repeat = event.data.key_data.key_repeat, .key = event.data.key_data.key});  			break; @@ -150,7 +150,7 @@ void InputSystem::handle_non_mouse_event(const SDLContext::EventData &event){  	}  } -bool InputSystem::is_mouse_event(SDLContext::EventType event_type){ +bool InputSystem::is_mouse_event(SDLContext::EventType event_type) {  	return (event_type == SDLContext::EventType::MOUSEDOWN  			|| event_type == SDLContext::EventType::MOUSEUP  			|| event_type == SDLContext::EventType::MOUSEMOVE @@ -158,29 +158,28 @@ bool InputSystem::is_mouse_event(SDLContext::EventType event_type){  }  void InputSystem::handle_move(const SDLContext::EventData & event_data, -							  const vec2& mouse_pos) { +							  const vec2 & mouse_pos) {  	ComponentManager & mgr = this->mediator.component_manager;  	RefVector<Button> buttons = mgr.get_components_by_type<Button>();  	for (Button & button : buttons) { -		if(!button.active) continue; +		if (!button.active) continue;  		RefVector<Transform> transform_vec  			= mgr.get_components_by_id<Transform>(button.game_object_id);  		Transform & transform(transform_vec.front().get());  		bool was_hovering = button.hover; -		if (this->is_mouse_inside_button(mouse_pos, button, -											transform)) { +		if (this->is_mouse_inside_button(mouse_pos, button, transform)) {  			button.hover = true; -			if(!button.on_mouse_enter) continue; +			if (!button.on_mouse_enter) continue;  			if (!was_hovering) {  				button.on_mouse_enter();  			}  		} else {  			button.hover = false;  			// Trigger the on_exit callback if the hover state just changed to false -			if(!button.on_mouse_exit) continue; +			if (!button.on_mouse_exit) continue;  			if (was_hovering) {  				button.on_mouse_exit();  			} @@ -188,28 +187,27 @@ void InputSystem::handle_move(const SDLContext::EventData & event_data,  	}  } -void InputSystem::handle_click(const MouseButton & mouse_button, const vec2& mouse_pos) { +void InputSystem::handle_click(const MouseButton & mouse_button, const vec2 & mouse_pos) {  	ComponentManager & mgr = this->mediator.component_manager;  	RefVector<Button> buttons = mgr.get_components_by_type<Button>();  	for (Button & button : buttons) { -		if(!button.active) continue; +		if (!button.active) continue;  		if (!button.on_click) continue;  		RefVector<Transform> transform_vec  			= mgr.get_components_by_id<Transform>(button.game_object_id);  		Transform & transform = transform_vec.front().get(); -		 -		if (this->is_mouse_inside_button(mouse_pos, button, -											transform)) { -			  + +		if (this->is_mouse_inside_button(mouse_pos, button, transform)) { +  			button.on_click();  		}  	}  } -bool InputSystem::is_mouse_inside_button(const vec2& mouse_pos, -										 const Button & button, const Transform & transform) { +bool InputSystem::is_mouse_inside_button(const vec2 & mouse_pos, const Button & button, +										 const Transform & transform) {  	int actual_x = transform.position.x + button.offset.x;  	int actual_y = transform.position.y + button.offset.y; @@ -220,4 +218,3 @@ bool InputSystem::is_mouse_inside_button(const vec2& mouse_pos,  	return mouse_pos.x >= actual_x - half_width && mouse_pos.x <= actual_x + half_width  		   && mouse_pos.y >= actual_y - half_height && mouse_pos.y <= actual_y + half_height;  } - diff --git a/src/crepe/system/InputSystem.h b/src/crepe/system/InputSystem.h index 7b8f510..63dfae5 100644 --- a/src/crepe/system/InputSystem.h +++ b/src/crepe/system/InputSystem.h @@ -52,8 +52,8 @@ private:  	 * This method processes mouse events, adjusts the mouse position to world coordinates,  	 * and triggers the appropriate mouse-specific event handling logic.  	 */ -	void handle_mouse_event(const SDLContext::EventData &event, const vec2 &camera_origin,  -							const Camera ¤t_cam); +	void handle_mouse_event(const SDLContext::EventData & event, const vec2 & camera_origin, +							const Camera & current_cam);  	/**  	 * \brief Handles non-mouse-related events.  	 * \param event The event data for the non-mouse event. @@ -61,7 +61,7 @@ private:  	 * This method processes events that do not involve the mouse, such as keyboard events,  	 * window events, and shutdown events, and triggers the corresponding event actions.  	 */ -	void handle_non_mouse_event(const SDLContext::EventData &event); +	void handle_non_mouse_event(const SDLContext::EventData & event);  	/**  	* \brief Handles the mouse click event.  	* \param mouse_button The mouse button involved in the click. @@ -70,7 +70,7 @@ private:  	*  	* This method processes the mouse click event and triggers the corresponding button action.  	*/ -	void handle_click(const MouseButton & mouse_button,const vec2& mouse_pos); +	void handle_click(const MouseButton & mouse_button, const vec2 & mouse_pos);  	/**  	* \brief Handles the mouse movement event. @@ -80,7 +80,7 @@ private:  	*  	* This method processes the mouse movement event and updates the button hover state.  	*/ -	void handle_move(const SDLContext::EventData & event_data, const vec2& mouse_pos); +	void handle_move(const SDLContext::EventData & event_data, const vec2 & mouse_pos);  	/**  	* \brief Checks if the mouse position is inside the bounds of the button. @@ -90,8 +90,8 @@ private:  	* \param transform The transform component of the button.  	* \return True if the mouse is inside the button, false otherwise.  	*/ -	bool is_mouse_inside_button(const vec2& mouse_pos, -								const Button & button, const Transform & transform); +	bool is_mouse_inside_button(const vec2 & mouse_pos, const Button & button, +								const Transform & transform);  	/**  	* \brief Handles the button press event, calling the on_click callback if necessary. diff --git a/src/test/EventTest.cpp b/src/test/EventTest.cpp index f30f15a..f8be3fe 100644 --- a/src/test/EventTest.cpp +++ b/src/test/EventTest.cpp @@ -56,8 +56,7 @@ TEST_F(EventManagerTest, EventManagerTest_trigger_all_channels) {  	event_mgr.subscribe<MouseClickEvent>(mouse_handler, EventManager::CHANNEL_ALL);  	MouseClickEvent click_event{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}; -	event_mgr.trigger_event<MouseClickEvent>(click_event, -																EventManager::CHANNEL_ALL); +	event_mgr.trigger_event<MouseClickEvent>(click_event, EventManager::CHANNEL_ALL);  	EXPECT_TRUE(triggered);  } @@ -74,8 +73,7 @@ TEST_F(EventManagerTest, EventManagerTest_trigger_one_channel) {  	event_mgr.subscribe<MouseClickEvent>(mouse_handler, test_channel);  	MouseClickEvent click_event{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}; -	event_mgr.trigger_event<MouseClickEvent>(click_event, -																EventManager::CHANNEL_ALL); +	event_mgr.trigger_event<MouseClickEvent>(click_event, EventManager::CHANNEL_ALL);  	EXPECT_FALSE(triggered);  	event_mgr.trigger_event<MouseClickEvent>(click_event, test_channel); diff --git a/src/test/InputTest.cpp b/src/test/InputTest.cpp index 7063561..09163a6 100644 --- a/src/test/InputTest.cpp +++ b/src/test/InputTest.cpp @@ -43,8 +43,7 @@ protected:  		//mediator.component_manager = mgr;  		//event_manager.clear();  	} -	void TearDown() override { -    } +	void TearDown() override {}  	void simulate_mouse_click(int mouse_x, int mouse_y, Uint8 mouse_button) {  		SDL_Event event; @@ -210,8 +209,7 @@ 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); +	auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0}, on_click);  	bool hover = false;  	button.active = true; @@ -230,8 +228,7 @@ 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); +	auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0}, on_click);  	button.active = true;  	// Mouse not on button  |