private readonly MenuManager[] menus;
menus = new MenuManager[]
() => Console.WriteLine("menu 0 button 0")
() => Console.WriteLine("menu 1 button 0"),
() => Console.WriteLine("menu 1 button 1")
public void OnUpdate(string keyPress)
menuIndex = (menuIndex-1) % menus.Length;
menuIndex = (menuIndex+1) % menus.Length;
buttonIndex = (buttonIndex-1) % menus[menuIndex].Buttons.Length;
buttonIndex = (buttonIndex+1) % menus[menuIndex].Buttons.Length;
menus[menuIndex].Buttons[buttonIndex].Invoke();
public static class TestProgram
public static void Main()
var input = new InputTracker();
input.OnUpdate("right arrow");
input.OnUpdate("right arrow");
input.OnUpdate("right arrow");
input.OnUpdate("down arrow");
input.OnUpdate("return/enter");