diff options
Diffstat (limited to 'src/crepe')
| -rw-r--r-- | src/crepe/system/InputSystem.cpp | 58 | 
1 files changed, 33 insertions, 25 deletions
| diff --git a/src/crepe/system/InputSystem.cpp b/src/crepe/system/InputSystem.cpp index e746ab0..f590649 100644 --- a/src/crepe/system/InputSystem.cpp +++ b/src/crepe/system/InputSystem.cpp @@ -6,7 +6,6 @@  #include <iostream>  using namespace crepe; -  void InputSystem::update() {  	ComponentManager & mgr = this->component_manager;  	EventManager & event_mgr = EventManager::get_instance(); @@ -21,18 +20,24 @@ void InputSystem::update() {  		break;  	}  	if (!curr_cam_ref) return; -	Camera& current_cam = curr_cam_ref; -	RefVector<Transform> transform_vec = mgr.get_components_by_id<Transform>(current_cam.game_object_id); -	Transform& cam_transform = transform_vec.front().get(); -	int camera_origin_x = cam_transform.position.x + current_cam.offset.x - (current_cam.viewport_size.x / 2); -	int camera_origin_y = cam_transform.position.y + current_cam.offset.y - (current_cam.viewport_size.y / 2); -	 +	Camera & current_cam = curr_cam_ref; +	RefVector<Transform> transform_vec +		= mgr.get_components_by_id<Transform>(current_cam.game_object_id); +	Transform & cam_transform = transform_vec.front().get(); +	int camera_origin_x +		= cam_transform.position.x + current_cam.offset.x - (current_cam.viewport_size.x / 2); +	int camera_origin_y +		= cam_transform.position.y + current_cam.offset.y - (current_cam.viewport_size.y / 2); +  	for (const SDLContext::EventData & event : event_list) {  		int world_mouse_x = event.mouse_position.first + camera_origin_x;  		int world_mouse_y = event.mouse_position.second + camera_origin_y;  		// check if the mouse is within the viewport -		bool mouse_in_viewport = !(world_mouse_x < camera_origin_x || world_mouse_x > camera_origin_x + current_cam.viewport_size.x || -                           world_mouse_y < camera_origin_y || world_mouse_y > camera_origin_y + current_cam.viewport_size.y); +		bool mouse_in_viewport +			= !(world_mouse_x < camera_origin_x +				|| world_mouse_x > camera_origin_x + current_cam.viewport_size.x +				|| world_mouse_y < camera_origin_y +				|| world_mouse_y > camera_origin_y + current_cam.viewport_size.y);  		switch (event.event_type) {  			case SDLContext::EventType::KEYDOWN: @@ -47,7 +52,7 @@ void InputSystem::update() {  				});  				break;  			case SDLContext::EventType::MOUSEDOWN: -				if(!mouse_in_viewport){ +				if (!mouse_in_viewport) {  					break;  				}  				event_mgr.queue_event<MousePressEvent>(MousePressEvent{ @@ -59,7 +64,7 @@ void InputSystem::update() {  				last_mouse_button = event.mouse_button;  				break;  			case SDLContext::EventType::MOUSEUP: { -				if(!mouse_in_viewport){ +				if (!mouse_in_viewport) {  					break;  				}  				event_mgr.queue_event<MouseReleaseEvent>(MouseReleaseEvent{ @@ -84,7 +89,7 @@ void InputSystem::update() {  				}  			} break;  			case SDLContext::EventType::MOUSEMOVE: -				if(!mouse_in_viewport){ +				if (!mouse_in_viewport) {  					break;  				}  				event_mgr.queue_event<MouseMoveEvent>(MouseMoveEvent{ @@ -110,7 +115,8 @@ void InputSystem::update() {  		}  	}  } -void InputSystem::handle_move(const SDLContext::EventData & event_data, const int& world_mouse_x, const int& world_mouse_y) { +void InputSystem::handle_move(const SDLContext::EventData & event_data, +							  const int & world_mouse_x, const int & world_mouse_y) {  	ComponentManager & mgr = this->component_manager;  	RefVector<Button> buttons = mgr.get_components_by_type<Button>(); @@ -122,7 +128,8 @@ void InputSystem::handle_move(const SDLContext::EventData & event_data, const in  		if (!transform) continue;  		bool was_hovering = button.hover; -		if (button.active && is_mouse_inside_button(world_mouse_x, world_mouse_y, button, transform)) { +		if (button.active +			&& is_mouse_inside_button(world_mouse_x, world_mouse_y, button, transform)) {  			button.hover = true;  			if (!was_hovering && button.on_enter) {  				button.on_enter(); @@ -137,7 +144,8 @@ void InputSystem::handle_move(const SDLContext::EventData & event_data, const in  	}  } -void InputSystem::handle_click(const MouseButton& mouse_button, const int& world_mouse_x, const int& world_mouse_y) { +void InputSystem::handle_click(const MouseButton & mouse_button, const int & world_mouse_x, +							   const int & world_mouse_y) {  	ComponentManager & mgr = this->component_manager;  	RefVector<Button> buttons = mgr.get_components_by_type<Button>(); @@ -147,22 +155,22 @@ void InputSystem::handle_click(const MouseButton& mouse_button, const int& world  			= mgr.get_components_by_id<Transform>(button.game_object_id);  		OptionalRef<Transform> transform(transform_vec.front().get()); -		if (button.active && is_mouse_inside_button(world_mouse_x, world_mouse_y, button, transform)) { +		if (button.active +			&& is_mouse_inside_button(world_mouse_x, world_mouse_y, button, transform)) {  			handle_button_press(button);  		}  	}  } -bool InputSystem::is_mouse_inside_button( -    const int& mouse_x, const int& mouse_y,  -    const Button & button, const Transform & transform) { -    int half_width = button.width / 2; -    int half_height = button.height / 2; +bool InputSystem::is_mouse_inside_button(const int & mouse_x, const int & mouse_y, +										 const Button & button, const Transform & transform) { +	int half_width = button.width / 2; +	int half_height = button.height / 2; -    return mouse_x >= transform.position.x - half_width -        && mouse_x <= transform.position.x + half_width -        && mouse_y >= transform.position.y - half_height -        && mouse_y <= transform.position.y + half_height; +	return mouse_x >= transform.position.x - half_width +		   && mouse_x <= transform.position.x + half_width +		   && mouse_y >= transform.position.y - half_height +		   && mouse_y <= transform.position.y + half_height;  }  void InputSystem::handle_button_press(Button & button) { |