#include "Mouse.h" Mouse::Mouse() { } int Mouse::GetX() { return x; } int Mouse::GetY() { return y; } bool Mouse::IsLeftClicked() { return isLeftClicked; } bool Mouse::IsRightClicked() { return isRightClicked; } int Mouse::GetLeftClickAtX() { return leftClickAtX; } int Mouse::GetLeftClickAtY() { return leftClickAtY; } int Mouse::GetRightClickAtX() { return rightClickAtX; } int Mouse::GetRightClickAtY() { return rightClickAtY; } int Mouse::GetRightDragDeltaX() { return rightDragDeltaX; } int Mouse::GetRightDragDeltaY() { return rightDragDeltaY; } void Mouse::OnMouseMove(int newX, int newY) { x = newX; y = newY; if (rightClickAtX != NULL) { rightDragDeltaX = newX - rightClickAtX; rightDragDeltaY = newY - rightClickAtY; } mouseEvents.push(Mouse::MouseEvent(Mouse::MouseEvent::Type::Move, *this)); TrimEvents(); } void Mouse::OnLeftClick(int newX, int newY) { isLeftClicked = true; leftClickAtX = newX; leftClickAtY = newY; mouseEvents.push(Mouse::MouseEvent(Mouse::MouseEvent::Type::LClick, *this)); TrimEvents(); } void Mouse::OnleftRelease(int newX, int newY) { isLeftClicked = false; leftClickAtX = NULL; leftClickAtY = NULL; mouseEvents.push(Mouse::MouseEvent(Mouse::MouseEvent::Type::LRelease, *this)); TrimEvents(); } void Mouse::OnRightClick(int newX, int newY) { isRightClicked = true; rightClickAtX = newX; rightClickAtY = newY; mouseEvents.push(Mouse::MouseEvent(Mouse::MouseEvent::Type::RClick, *this)); TrimEvents(); } void Mouse::OnRightRelease(int newX, int newY) { isRightClicked = false; rightClickAtX = NULL; rightClickAtY = NULL; mouseEvents.push(Mouse::MouseEvent(Mouse::MouseEvent::Type::RRelease, *this)); TrimEvents(); } Mouse::MouseEvent Mouse::ReadEvent() { if (mouseEvents.size() > 0) { Mouse::MouseEvent mouseEvent = mouseEvents.front(); mouseEvents.pop(); return mouseEvent; } else { return Mouse::MouseEvent(); } } void Mouse::TrimEvents() { while (mouseEvents.size() > bufferSize) { mouseEvents.pop(); } } bool Mouse::IsQueueEmpty() { return mouseEvents.empty(); }