Example #1
0
        public void MenuResponse( GameClient state, PacketReader pvSrc )
        {
            int serial = pvSrc.ReadInt32();
            /*int menuID = */
            pvSrc.ReadInt16(); // unused in our implementation
            int index = pvSrc.ReadInt16();
            /*int itemID = */
            pvSrc.ReadInt16();
            /*int hue = */
            pvSrc.ReadInt16();

            var menu = state.Menus.Where( m => m.Serial == serial ).FirstOrDefault();

            if ( menu != null )
            {
                try
                {
                    if ( index > 0 && index <= menu.EntryLength )
                        menu.OnResponse( state, index - 1 );
                    else
                        menu.OnCancel( state );
                }
                catch ( Exception e )
                {
                    Logger.Error( "Exception disarmed in menu response {0} > {1}[index]: {2}", state.Mobile, menu, e );
                }

                state.RemoveMenu( menu );
            }
        }