input_event.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "input_event.h"
  2. void cycle_focus(FlizzerTrackerApp *tracker)
  3. {
  4. switch (tracker->mode)
  5. {
  6. case PATTERN_VIEW:
  7. {
  8. tracker->focus++;
  9. if (tracker->focus > EDIT_SONGINFO)
  10. {
  11. tracker->focus = EDIT_PATTERN;
  12. }
  13. break;
  14. }
  15. case INST_EDITOR_VIEW:
  16. {
  17. tracker->focus++;
  18. if (tracker->focus > EDIT_PROGRAM)
  19. {
  20. tracker->focus = EDIT_INSTRUMENT;
  21. }
  22. break;
  23. }
  24. default:
  25. break;
  26. }
  27. }
  28. void cycle_view(FlizzerTrackerApp *tracker)
  29. {
  30. if (tracker->mode == PATTERN_VIEW)
  31. {
  32. tracker->mode = INST_EDITOR_VIEW;
  33. tracker->focus = EDIT_INSTRUMENT;
  34. return;
  35. }
  36. if (tracker->mode == INST_EDITOR_VIEW)
  37. {
  38. tracker->mode = PATTERN_VIEW;
  39. tracker->focus = EDIT_PATTERN;
  40. return;
  41. }
  42. }
  43. void process_input_event(FlizzerTrackerApp *tracker, FlizzerTrackerEvent *event)
  44. {
  45. if (event->input.key == InputKeyBack && event->input.type == InputTypeShort && event->period > 0 && event->period < 300 && !(tracker->editing))
  46. {
  47. cycle_view(tracker);
  48. return;
  49. }
  50. else if (event->input.key == InputKeyBack && event->input.type == InputTypeShort && !(tracker->editing))
  51. {
  52. cycle_focus(tracker);
  53. return;
  54. }
  55. // Если нажата кнопка "назад", то выходим из цикла, а следовательно и из приложения
  56. if (event->input.key == InputKeyBack && event->input.type == InputTypeLong)
  57. {
  58. tracker->quit = true;
  59. return;
  60. }
  61. switch (tracker->focus)
  62. {
  63. case EDIT_PATTERN:
  64. {
  65. pattern_edit_event(tracker, event);
  66. break;
  67. }
  68. case EDIT_SEQUENCE:
  69. {
  70. sequence_edit_event(tracker, event);
  71. break;
  72. }
  73. case EDIT_SONGINFO:
  74. {
  75. songinfo_edit_event(tracker, event);
  76. break;
  77. }
  78. case EDIT_INSTRUMENT:
  79. {
  80. instrument_edit_event(tracker, event);
  81. break;
  82. }
  83. case EDIT_PROGRAM:
  84. {
  85. instrument_program_edit_event(tracker, event);
  86. break;
  87. }
  88. default:
  89. break;
  90. }
  91. }