public MenuManager() { menu.AddItem( enabled = new MenuItem("enableKey", "Enabled").SetValue(new KeyBind('P', KeyBindType.Toggle, true))) .ValueChanged += OnStateChange; menu.AddItem(new MenuItem("resetKey", "Reset stacks").SetValue(new KeyBind('0', KeyBindType.Press))) .SetTooltip("Set required stacks count to 1") .ValueChanged += StacksReset; menu.AddItem(new MenuItem("heroStack", "Stack with hero").SetValue(new KeyBind('K', KeyBindType.Press))) .SetTooltip("Will stack closest camp with your hero") .ValueChanged += OnHeroStackEabled; menu.AddItem( new MenuItem("forceAdd", "Force add/remove unit").SetValue(new KeyBind('L', KeyBindType.Press))) .SetTooltip( "Will add/remove selected unit to/from controllables. Useful for ally dominated creep with shared control") .ValueChanged += OnMenuForceAdd; menu.AddItem(debug = new MenuItem("debug", "Debug").SetValue(false)) .SetTooltip("Shows more information for debugging") .ValueChanged += OnDebugChange; menu.AddToMainMenu(); }
internal static char sl_select_item(out MenuItem result_ptr, ref int index_ptr, ref bool redrawMenuItems, bool showExit, List<MenuItem> stringList, int endY, int endX, int startY, int startX, MenuColorSet colors, string inputString, string extraTextString) { char ret_val = '\0'; /* Simeon */ result_ptr = null; /*Simeon*/ if (stringList == null) { index_ptr = 0; result_ptr = null; return '\0'; } gbl.menuSelectedWord = 1; int listDisplayWidth = (endX - startX) + 1; int listDisplayHeight = (short)((endY - startY) + 1); int listCount = stringList.Count; if (listCount <= listDisplayHeight) { gbl.menuScreenIndex = 0; } if (gbl.menuScreenIndex > index_ptr) { gbl.menuScreenIndex = index_ptr; redrawMenuItems = true; } if (gbl.menuScreenIndex > listCount) { gbl.menuScreenIndex = 0; redrawMenuItems = true; } index_ptr++; index_ptr = menu_sub_6CDCA(false, index_ptr, stringList, listDisplayHeight); if (redrawMenuItems == true) { sub_6C897(gbl.menuScreenIndex, endY, endX, startY, startX, stringList, colors.foreground, colors.prompt, listDisplayWidth); } redrawMenuItems = false; bool loop_end = false; while (loop_end == false) { ListItemHighlighted(index_ptr, stringList, startY, startX, colors.highlight); string displayString = inputString; bool showNext = false; bool showPrevious = false; if ((listCount - listDisplayHeight) > gbl.menuScreenIndex) { displayString += " Next"; showNext = true; } if (gbl.menuScreenIndex > 0) { displayString += " Prev"; showPrevious = true; } if (showExit == true) { displayString += " Exit"; } bool speical_key; char input_key = displayInput(out speical_key, false, 1, colors, displayString, extraTextString); ListItemNormal(index_ptr, stringList, startY, startX, colors.foreground, colors.prompt); if (speical_key == true) { switch (input_key) { case 'G': index_ptr = menu_sub_6CDCA(false, index_ptr, stringList, listDisplayHeight); break; case 'O': index_ptr = menu_sub_6CDCA(true, index_ptr, stringList, listDisplayHeight); break; case 'I': if (showPrevious == true) { menu_sub_6CD38(false, ref index_ptr, stringList, listDisplayHeight, endY, endX, startY, startX, colors.foreground, colors.prompt, listDisplayWidth); } break; case 'Q': if (showNext == true) { menu_sub_6CD38(true, ref index_ptr, stringList, listDisplayHeight, endY, endX, startY, startX, colors.foreground, colors.prompt, listDisplayWidth); } break; } } else { switch (input_key) { case 'P': menu_sub_6CD38(false, ref index_ptr, stringList, listDisplayHeight, endY, endX, startY, startX, colors.foreground, colors.prompt, listDisplayWidth); break; case 'N': menu_sub_6CD38(true, ref index_ptr, stringList, listDisplayHeight, endY, endX, startY, startX, colors.foreground, colors.prompt, listDisplayWidth); break; case (char)0x1B: case '\0': case 'E': result_ptr = null; ret_val = '\0'; loop_end = true; break; default: result_ptr = getStringListEntry(stringList, index_ptr); ret_val = input_key; loop_end = true; break; } } } return ret_val; }