示例#1
0
        /// <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();
            }
        }
示例#2
0
        /// <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();
            }
        }