/// <summary> /// Handles selection of item in menu by player /// </summary> /// <param name="itemID">ID of selected item</param> /// <param name="extra">additional parameter supplied by user</param> public void HandleSelectedItem(uint itemID, string extra) { var gossipItems = CurrentMenu.GossipItems; if (itemID >= gossipItems.Count) { return; } var item = gossipItems[(int)itemID]; if (item == null) { return; } if (item.Action != null && item.Action.CanUse(this)) { var menu = CurrentMenu; item.Action.OnSelect(this); if (menu != CurrentMenu || item.Action.Navigates) { return; } } if (item.SubMenu != null) { DisplayMenu(item.SubMenu); } else if (StayOpen) { DisplayCurrentMenu(); } else { CurrentMenu.NotifyClose(this); Dispose(); } }
/// <summary>Handles selection of item in menu by player</summary> /// <param name="itemID">ID of selected item</param> /// <param name="extra">additional parameter supplied by user</param> public void HandleSelectedItem(uint itemID, string extra) { IList <GossipMenuItemBase> gossipItems = CurrentMenu.GossipItems; if (itemID >= gossipItems.Count) { return; } GossipMenuItemBase gossipMenuItemBase = gossipItems[(int)itemID]; if (gossipMenuItemBase == null) { return; } if (gossipMenuItemBase.Action != null && gossipMenuItemBase.Action.CanUse(this)) { GossipMenu currentMenu = CurrentMenu; gossipMenuItemBase.Action.OnSelect(this); if (currentMenu != CurrentMenu || gossipMenuItemBase.Action.Navigates) { return; } } if (gossipMenuItemBase.SubMenu != null) { DisplayMenu(gossipMenuItemBase.SubMenu); } else if (StayOpen) { DisplayCurrentMenu(); } else { CurrentMenu.NotifyClose(this); Dispose(); } }