Mouse.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "Mouse.h"
  2. Mouse Mouse::mouseArray[Mouse::NUMBER_OF_BUTTONS];
  3. int Mouse::mappingArray[Mouse::NUMBER_OF_BUTTONS];
  4. Mouse::Mouse()
  5. {
  6. }
  7. bool Mouse::isDown(int mapping)
  8. {
  9. return isInRange(mapping) && mouseArray[mappingArray[mapping]].down;
  10. }
  11. bool Mouse::isReleased(int mapping)
  12. {
  13. return isInRange(mapping) && mouseArray[mappingArray[mapping]].shouldRelease;
  14. }
  15. unsigned int Mouse::getDownTime(int mapping)
  16. {
  17. bool m = isInRange(mapping);
  18. return m * mouseArray[mappingArray[mapping * m]].downTime;
  19. }
  20. void Mouse::resetDownTime(int mapping)
  21. {
  22. mouseArray[mappingArray[mapping * isInRange(mapping)]].downTime = 0;
  23. }
  24. bool Mouse::map(int mapping, int mouse)
  25. {
  26. bool b = isInRange(mapping) && isInRange(mouse);
  27. mappingArray[mapping * b] = b * mouse;
  28. }
  29. bool Mouse::isInRange(int i)
  30. {
  31. return i >= 0 && i < NUMBER_OF_BUTTONS;
  32. }
  33. void Mouse::init()
  34. {
  35. for(int i = 0; i < NUMBER_OF_BUTTONS; i++)
  36. {
  37. mappingArray[i] = 0;
  38. }
  39. }
  40. void Mouse::tick()
  41. {
  42. for(int i = 0; i < NUMBER_OF_BUTTONS; i++)
  43. {
  44. mouseArray[i].downTime += mouseArray[i].down;
  45. mouseArray[i].down = mouseArray[i].down && !mouseArray[i].shouldRelease;
  46. mouseArray[i].downTime *= !mouseArray[i].shouldRelease;
  47. mouseArray[i].shouldRelease = false;
  48. }
  49. }
  50. bool Mouse::press(int mouse)
  51. {
  52. int index = isInRange(mouse) * mouse;
  53. mouseArray[index].down = true;
  54. mouseArray[index].shouldRelease = false;
  55. }
  56. bool Mouse::release(int mouse)
  57. {
  58. int index = isInRange(mouse) * mouse;
  59. mouseArray[index].shouldRelease = true;
  60. }