public virtual void Build(string type) { Clear(); var typeList = Items.Select(pair => pair.Key).Cast<dynamic>().ToList(); var typeItem = new UIMenuListItem("Category", typeList, typeList.FindIndex(n => n.ToString() == type)); AddItem(typeItem); typeItem.OnListChanged += (sender, index) => { string newType = ((UIMenuListItem) MenuItems[0]).IndexToItem(((UIMenuListItem) MenuItems[0]).Index).ToString(); Build(newType); SelectionChanged?.Invoke(this, EventArgs.Empty); }; var itemListItem = new UIMenuListItem(ItemName, Items[type].Select(s => (dynamic)s).ToList(), 0); AddItem(itemListItem); CurrentSelectedItem = (string)itemListItem.IndexToItem(0); CurrentSelectedCategory = type; itemListItem.OnListChanged += (sender, index) => { CurrentSelectedItem = (string)itemListItem.IndexToItem(index); SelectionChanged?.Invoke(this, EventArgs.Empty); }; RefreshIndex(); }
public static void OnListChange(UIMenu sender, UIMenuListItem list, int index) { if (sender != mainMenu || list != dishesListItem) return; // We only want to detect changes from our menu. string dish = list.IndexToItem(index).ToString(); Game.DisplayNotification("Preparing ~b~" + dish + "~w~..."); }