diff --git a/src/Sequencer.cpp b/src/Sequencer.cpp index eb89a3c..8fb051b 100644 --- a/src/Sequencer.cpp +++ b/src/Sequencer.cpp @@ -63,34 +63,27 @@ Sequencer::handleEvent(const InputEvent& evt) Log.verbose("Starting pattern task %s", pattern); MainLoop::instance()->dispatch(InputEvent{InputEvent::StartThing, pattern}); } - } else if (evt.intent == InputEvent::SetPattern && evt.asString() == m_scenes[m_idx].name) { + } else if (evt.intent == InputEvent::SetScene && evt.asString() == m_scenes[m_idx].name) { return; - } else if (evt.intent == InputEvent::SetPattern || evt.intent == InputEvent::NextPattern || evt.intent == InputEvent::PreviousPattern) { - Log.notice("Switching pattern!"); + } else if (evt.intent == InputEvent::SetScene) { + Log.notice("Switching scene to %s!", evt.asString()); - m_scenes[m_idx].stop(); + int newIdx = 0; + bool found = false; + for(newIdx = 0; newIdx < m_scenes.size(); newIdx++) { + if (!strcmp(evt.asString(), m_scenes[newIdx].name)) { + found = true; + break; + } + } - if (evt.intent == InputEvent::NextPattern) { - m_idx++; - } else if (evt.intent == InputEvent::PreviousPattern) { - m_idx--; + if (found) { + m_scenes[m_idx].stop(); + m_idx = newIdx; + m_scenes[m_idx].start(); } else { - for(m_idx = 0; m_idx < m_scenes.size(); m_idx++) { - if (!strcmp(evt.asString(), m_scenes[m_idx].name)) { - break; - } - } + Log.notice("Scene not found!"); } - - if (m_idx < 0) { - m_idx = m_scenes.size() - 1; - } - - if (m_idx >= m_scenes.size()) { - m_idx = 0; - } - - m_scenes[m_idx].start(); } }