#include "client/engine/MouseManager.h" MouseManager::MouseManager() { for(int i = 0; i < NUMBER_OF_BUTTONS; i++) { mappingArray[i] = 0; } } bool MouseManager::isDown(int mapping) { return isInRange(mapping) && mouseArray[mappingArray[mapping]].down; } bool MouseManager::isReleased(int mapping) { return isInRange(mapping) && mouseArray[mappingArray[mapping]].shouldRelease; } unsigned int MouseManager::getDownTime(int mapping) { bool m = isInRange(mapping); return m * mouseArray[mappingArray[mapping * m]].downTime; } void MouseManager::resetDownTime(int mapping) { mouseArray[mappingArray[mapping * isInRange(mapping)]].downTime = 0; } bool MouseManager::map(int mapping, int mouse) { bool b = isInRange(mapping) && isInRange(mouse); mappingArray[mapping * b] = b * mouse; return b; } bool MouseManager::isInRange(int i) { return i >= 0 && i < NUMBER_OF_BUTTONS; } void MouseManager::tick() { for(int i = 0; i < NUMBER_OF_BUTTONS; i++) { mouseArray[i].downTime += mouseArray[i].down; mouseArray[i].down = mouseArray[i].down && !mouseArray[i].shouldRelease; mouseArray[i].downTime *= !mouseArray[i].shouldRelease; mouseArray[i].shouldRelease = false; } } void MouseManager::press(int mouse) { int index = isInRange(mouse) * mouse; mouseArray[index].down = true; mouseArray[index].shouldRelease = false; } void MouseManager::release(int mouse) { int index = isInRange(mouse) * mouse; mouseArray[index].shouldRelease = true; }