From 5c5d51354ba011ec0cad79281fd4c0f475c77111 Mon Sep 17 00:00:00 2001 From: Christian Colglazier Date: Fri, 2 Oct 2020 22:10:09 -0400 Subject: [PATCH] Droplet switch menu names --- src/droplets/droplet_manager.cpp | 12 ++++++++++++ src/droplets/droplet_manager.h | 8 ++++++++ src/main.cpp | 12 ++++++------ src/main.h | 6 +++--- src/menu.cpp | 16 ++++++++++------ src/menu.h | 7 +++---- 6 files changed, 42 insertions(+), 19 deletions(-) diff --git a/src/droplets/droplet_manager.cpp b/src/droplets/droplet_manager.cpp index 2b35be9..b122443 100644 --- a/src/droplets/droplet_manager.cpp +++ b/src/droplets/droplet_manager.cpp @@ -15,3 +15,15 @@ void DropletManager::SetSelected(DropletState state) { DropletState DropletManager::GetSelected() { return selected_drop; } + +std::string DropletManager::OtherStateName(DropletState state) { + switch (state) { + case DropletState::kLeft: + return "Right"; + case DropletState::kRight: + return "Left"; + case DropletState::kFull: + default: + return ""; + } +} diff --git a/src/droplets/droplet_manager.h b/src/droplets/droplet_manager.h index ff66b9c..6a7d9ff 100644 --- a/src/droplets/droplet_manager.h +++ b/src/droplets/droplet_manager.h @@ -35,6 +35,14 @@ public: * @return selected droplet */ DropletState GetSelected(); + + /* + * Returns the name of the other droplet + * + * @param state droplat state of the current + * @return other droplet name + */ + std::string OtherStateName(DropletState state); }; #endif // CASCADE_DROPLETS_DROPLET_MANAGER_H_ diff --git a/src/main.cpp b/src/main.cpp index b70f726..4be77a0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,8 +24,8 @@ void ProcessControls() { if (patch.encoder.RisingEdge()) { left_menu.SetInMenu(false); if(left_menu.GetState() == MenuState::kSplit) { - state->ToggleSplit(); - if (state->GetSplitMode()) { + manager->ToggleSplit(); + if (manager->GetSplitMode()) { droplet_left->UpdateState(DropletState::kLeft); droplet_right = GetDroplet(DropletState::kRight); } else { @@ -34,7 +34,7 @@ void ProcessControls() { } } else { delete droplet_left; - if(state->GetSplitMode()) { + if(manager->GetSplitMode()) { droplet_left = GetDroplet(DropletState::kLeft); } else { droplet_left = GetDroplet(DropletState::kFull); @@ -54,7 +54,7 @@ void ProcessControls() { void ProcessOutputs() { if(!left_menu.InMenu()) { droplet_left->Control(); - if (state->GetSplitMode()) { + if (manager->GetSplitMode()) { droplet_right->Control(); } } @@ -66,7 +66,7 @@ void ProcessOled() { left_menu.ProcessMenuOled(); } else { droplet_left->Draw(); - if (state->GetSplitMode()) { + if (manager->GetSplitMode()) { droplet_right->Draw(); } } @@ -77,7 +77,7 @@ static void AudioThrough(float **in, float **out, size_t size) { droplet_left->Process(in, out, size); - if (state->GetSplitMode()) { + if (manager->GetSplitMode()) { droplet_right->Process(in, out, size); } } diff --git a/src/main.h b/src/main.h index 8e58a21..7b3143b 100644 --- a/src/main.h +++ b/src/main.h @@ -16,9 +16,9 @@ #include "droplets/vco_droplet.h" DaisyPatch patch; -DropletManager* state = new DropletManager(); -Menu left_menu(&patch, "Right", state); -Menu right_menu(&patch, "Left", state); +DropletManager* manager = new DropletManager(); +Menu left_menu(&patch, DropletState::kLeft, manager); +Menu right_menu(&patch, DropletState::kRight, manager); Droplet* droplet_left; Droplet* droplet_right; float sample_rate; diff --git a/src/menu.cpp b/src/menu.cpp index 642ad91..2384a45 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -1,10 +1,10 @@ #include "menu.h" Menu::Menu(DaisyPatch* m_patch, - std::string m_name, - DropletManager* m_state) { + DropletState m_state, + DropletManager* m_manager) { patch = m_patch; - name = m_name; + state = m_state; state = m_state; } const std::string MENU_ITEMS[] = {"Split", @@ -38,10 +38,14 @@ std::string Menu::FilterMenuText(int position) { if (position >= MENU_SIZE || position < 0) { return ""; } else { - if (ConvertState(position) == MenuState::kSplit && (*state).GetSplitMode()) { - return "Merge"; + if (ConvertState(position) == MenuState::kSplit) { + if (!manager->GetSplitMode()) { + return "Merge"; + } else { + return "Split"; + } } else if (ConvertState(position) == MenuState::kChange) { - return name; + return manager->OtherStateName(state); } return MENU_ITEMS[position]; } diff --git a/src/menu.h b/src/menu.h index b228dd1..7404889 100644 --- a/src/menu.h +++ b/src/menu.h @@ -16,9 +16,8 @@ enum class MenuState {kSplit, kChange, kVCO, kNoise}; class Menu { private: DaisyPatch* patch; - DropletManager* state; - DropletState menu_droplet; - std::string name; + DropletManager* manager; + DropletState state; /* * Converts a number to the related menu state. @@ -35,7 +34,7 @@ class Menu { * @param m_name name of the menu * @param m_split one or two droplets */ - Menu(DaisyPatch* m_patch, std::string m_name, DropletManager* m_state); + Menu(DaisyPatch* m_patch, DropletState m_state, DropletManager* m_manager); /* * Gives if the user is currently in the menu.