|
@@ -290,43 +290,34 @@ struct RingsWidget : ModuleWidget { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void appendContextMenu(Menu* menu) override { |
|
|
void appendContextMenu(Menu* menu) override { |
|
|
Rings* rings = dynamic_cast<Rings*>(module); |
|
|
|
|
|
assert(rings); |
|
|
|
|
|
|
|
|
|
|
|
struct RingsModelItem : MenuItem { |
|
|
|
|
|
Rings* rings; |
|
|
|
|
|
rings::ResonatorModel model; |
|
|
|
|
|
void onAction(const event::Action& e) override { |
|
|
|
|
|
rings->resonatorModel = model; |
|
|
|
|
|
} |
|
|
|
|
|
void step() override { |
|
|
|
|
|
rightText = (rings->resonatorModel == model) ? "✔" : ""; |
|
|
|
|
|
MenuItem::step(); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
Rings* module = dynamic_cast<Rings*>(this->module); |
|
|
|
|
|
assert(module); |
|
|
|
|
|
|
|
|
struct RingsEasterEggItem : MenuItem { |
|
|
|
|
|
Rings* rings; |
|
|
|
|
|
void onAction(const event::Action& e) override { |
|
|
|
|
|
rings->easterEgg = !rings->easterEgg; |
|
|
|
|
|
} |
|
|
|
|
|
void step() override { |
|
|
|
|
|
rightText = (rings->easterEgg) ? "✔" : ""; |
|
|
|
|
|
MenuItem::step(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
menu->addChild(new MenuSeparator); |
|
|
|
|
|
|
|
|
|
|
|
menu->addChild(createMenuLabel("Resonator")); |
|
|
|
|
|
|
|
|
|
|
|
static const std::vector<std::string> modelLabels = { |
|
|
|
|
|
"Modal resonator", |
|
|
|
|
|
"Sympathetic strings", |
|
|
|
|
|
"Modulated/inharmonic string", |
|
|
|
|
|
"FM voice", |
|
|
|
|
|
"Quantized sympathetic strings", |
|
|
|
|
|
"Reverb string", |
|
|
}; |
|
|
}; |
|
|
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
|
|
menu->addChild(createCheckMenuItem(modelLabels[i], |
|
|
|
|
|
[=]() {return module->resonatorModel == i;}, |
|
|
|
|
|
[=]() {module->resonatorModel = (rings::ResonatorModel) i;} |
|
|
|
|
|
)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
menu->addChild(new MenuSeparator); |
|
|
menu->addChild(new MenuSeparator); |
|
|
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Resonator")); |
|
|
|
|
|
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Modal resonator", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_MODAL)); |
|
|
|
|
|
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Sympathetic strings", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_SYMPATHETIC_STRING)); |
|
|
|
|
|
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Modulated/inharmonic string", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_STRING)); |
|
|
|
|
|
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "FM voice", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_FM_VOICE)); |
|
|
|
|
|
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Quantized sympathetic strings", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_SYMPATHETIC_STRING_QUANTIZED)); |
|
|
|
|
|
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Reverb string", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_STRING_AND_REVERB)); |
|
|
|
|
|
|
|
|
|
|
|
menu->addChild(new MenuSeparator); |
|
|
|
|
|
menu->addChild(construct<RingsEasterEggItem>(&MenuItem::text, "Disastrous Peace", &RingsEasterEggItem::rings, rings)); |
|
|
|
|
|
|
|
|
menu->addChild(createBoolMenuItem("Disastrous Peace", |
|
|
|
|
|
[=]() {return module->easterEgg;}, |
|
|
|
|
|
[=](bool val) {module->easterEgg = val;} |
|
|
|
|
|
)); |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|