Protected mode

This commit is contained in:
Dejvino
2026-02-22 00:33:13 +01:00
parent 217d8dbacf
commit e6a4711861
4 changed files with 51 additions and 36 deletions
+42 -32
View File
@@ -13,6 +13,7 @@ volatile bool sequenceChangeScheduled = false;
volatile bool needsPanic = false;
UIState currentState = UI_MENU_MAIN;
bool protectedMode = false;
// Menus
MenuItem menuItems[] = {
@@ -37,48 +38,57 @@ MenuItem menuItems[] = {
{ "Theme 7", MENU_ID_THEME_7, false, false, 1 },
{ "Setup", MENU_ID_GROUP_SETUP, true, false, 0 },
{ "Channel", MENU_ID_CHANNEL, false, false, 1 },
{ "Protected", MENU_ID_PROTECTED_MODE, false, false, 1 },
{ "Reset", MENU_ID_RESET, false, false, 1 },
{ "Patches", MENU_ID_GROUP_PATCHES, true, false, 0 },
{ "Bank 1", MENU_ID_BANK_1, true, false, 1 },
{ "Save 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 0), false, false, 2 },
{ "Load 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 1), false, false, 2 },
{ "Save 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 2), false, false, 2 },
{ "Load 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 3), false, false, 2 },
{ "Save 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 4), false, false, 2 },
{ "Load 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 5), false, false, 2 },
{ "Save 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 6), false, false, 2 },
{ "Load 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 7), false, false, 2 },
{ "Load 1.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 0), false, false, 2 },
{ "Load 1.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 1), false, false, 2 },
{ "Load 1.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 2), false, false, 2 },
{ "Load 1.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 3), false, false, 2 },
{ "Save 1.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 4), false, false, 2 },
{ "Save 1.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 5), false, false, 2 },
{ "Save 1.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 6), false, false, 2 },
{ "Save 1.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 7), false, false, 2 },
{ "Bank 2", MENU_ID_BANK_2, true, false, 1 },
{ "Save 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 8), false, false, 2 },
{ "Load 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 9), false, false, 2 },
{ "Save 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 10), false, false, 2 },
{ "Load 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 11), false, false, 2 },
{ "Save 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 12), false, false, 2 },
{ "Load 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 13), false, false, 2 },
{ "Save 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 14), false, false, 2 },
{ "Load 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 15), false, false, 2 },
{ "Load 2.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 8), false, false, 2 },
{ "Load 2.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 9), false, false, 2 },
{ "Load 2.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 10), false, false, 2 },
{ "Load 2.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 11), false, false, 2 },
{ "Save 2.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 12), false, false, 2 },
{ "Save 2.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 13), false, false, 2 },
{ "Save 2.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 14), false, false, 2 },
{ "Save 2.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 15), false, false, 2 },
{ "Bank 3", MENU_ID_BANK_3, true, false, 1 },
{ "Save 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 16), false, false, 2 },
{ "Load 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 17), false, false, 2 },
{ "Save 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 18), false, false, 2 },
{ "Load 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 19), false, false, 2 },
{ "Save 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 20), false, false, 2 },
{ "Load 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 21), false, false, 2 },
{ "Save 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 22), false, false, 2 },
{ "Load 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 23), false, false, 2 },
{ "Load 3.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 16), false, false, 2 },
{ "Load 3.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 17), false, false, 2 },
{ "Load 3.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 18), false, false, 2 },
{ "Load 3.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 19), false, false, 2 },
{ "Save 3.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 20), false, false, 2 },
{ "Save 3.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 21), false, false, 2 },
{ "Save 3.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 22), false, false, 2 },
{ "Save 3.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 23), false, false, 2 },
{ "Bank 4", MENU_ID_BANK_4, true, false, 1 },
{ "Save 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 24), false, false, 2 },
{ "Load 1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 25), false, false, 2 },
{ "Save 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 26), false, false, 2 },
{ "Load 2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 27), false, false, 2 },
{ "Save 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 28), false, false, 2 },
{ "Load 3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 29), false, false, 2 },
{ "Save 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 30), false, false, 2 },
{ "Load 4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 31), false, false, 2 }
{ "Load 4.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 24), false, false, 2 },
{ "Load 4.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 25), false, false, 2 },
{ "Load 4.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 26), false, false, 2 },
{ "Load 4.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 27), false, false, 2 },
{ "Save 4.1", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 28), false, false, 2 },
{ "Save 4.2", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 29), false, false, 2 },
{ "Save 4.3", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 30), false, false, 2 },
{ "Save 4.4", (MenuItemID)(MENU_ID_PATCH_ACTIONS_START + 31), false, false, 2 }
};
extern const int menuItemsCount = sizeof(menuItems) / sizeof(MenuItem);
bool isItemVisible(int index) {
if (protectedMode) {
MenuItemID id = menuItems[index].id;
if (id >= MENU_ID_PATCH_ACTIONS_START) {
int offset = id - MENU_ID_PATCH_ACTIONS_START;
if ((offset % 8) >= 4) return false; // Save options are the last 4 in the block of 8
}
}
if (menuItems[index].indentLevel == 0) return true;
for (int i = index - 1; i >= 0; i--) {
if (menuItems[i].indentLevel < menuItems[index].indentLevel) {