mirror of
https://github.com/AquaMorph/Droplets.git
synced 2025-04-30 01:35:34 +00:00
Droplet switch menu names
This commit is contained in:
parent
eb0b312c48
commit
5c5d51354b
@ -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 "";
|
||||
}
|
||||
}
|
||||
|
@ -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_
|
||||
|
12
src/main.cpp
12
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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
16
src/menu.cpp
16
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];
|
||||
}
|
||||
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user