input_event.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. tracker->selected_param = 0;
  35. tracker->current_digit = 0;
  36. return;
  37. }
  38. if (tracker->mode == INST_EDITOR_VIEW)
  39. {
  40. tracker->mode = PATTERN_VIEW;
  41. tracker->focus = EDIT_PATTERN;
  42. tracker->selected_param = 0;
  43. tracker->current_digit = 0;
  44. return;
  45. }
  46. }
  47. void process_input_event(FlizzerTrackerApp *tracker, FlizzerTrackerEvent *event)
  48. {
  49. if (event->input.key == InputKeyBack && event->input.type == InputTypeShort && event->period > 0 && event->period < 300 && !(tracker->editing))
  50. {
  51. cycle_view(tracker);
  52. return;
  53. }
  54. else if (event->input.key == InputKeyBack && event->input.type == InputTypeShort && !(tracker->editing))
  55. {
  56. cycle_focus(tracker);
  57. return;
  58. }
  59. // Если нажата кнопка "назад", то выходим из цикла, а следовательно и из приложения
  60. if (event->input.key == InputKeyBack && event->input.type == InputTypeLong)
  61. {
  62. tracker->quit = true;
  63. return;
  64. }
  65. switch (tracker->focus)
  66. {
  67. case EDIT_PATTERN:
  68. {
  69. pattern_edit_event(tracker, event);
  70. break;
  71. }
  72. case EDIT_SEQUENCE:
  73. {
  74. sequence_edit_event(tracker, event);
  75. break;
  76. }
  77. case EDIT_SONGINFO:
  78. {
  79. songinfo_edit_event(tracker, event);
  80. break;
  81. }
  82. case EDIT_INSTRUMENT:
  83. {
  84. instrument_edit_event(tracker, event);
  85. break;
  86. }
  87. case EDIT_PROGRAM:
  88. {
  89. instrument_program_edit_event(tracker, event);
  90. break;
  91. }
  92. default:
  93. break;
  94. }
  95. }