Example #1
0
        public void TryAddDetails(object o, int name, int value, Category cat)
        {
            SearchDetail d = Details.FirstOrDefault(det => det.Attribute == o);

            if (o is Layer)
            {
                SearchDetail layer = Details.FirstOrDefault(det => det.Attribute is Layer && (Layer)det.Attribute != (Layer)o);

                if (layer != null)
                {
                    Details.Remove(layer);
                }

                Details.Add(new SearchDetail(o, name, value, cat));
                SearchType = (Layer)o;
            }
            else if (d == null)
            {
                Details.Add(new SearchDetail(o, name, value, cat));
            }
            else if (d.Value != value)
            {
                d.Value = value;
            }
        }
Example #2
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (info.ButtonID != 0)
            {
                TextRelay searchname = info.GetTextEntry(0);

                if (searchname != null && !String.IsNullOrEmpty(searchname.Text))
                {
                    string text = searchname.Text.Trim();

                    if (Criteria.SearchName == null || text.ToLower() != Criteria.SearchName.ToLower())
                    {
                        Criteria.SearchName = searchname.Text;
                    }
                }
            }

            switch (info.ButtonID)
            {
            case 0: break;

            case 1:     // Set Min/Max price
                TextRelay tr1 = info.GetTextEntry(1);
                TextRelay tr2 = info.GetTextEntry(2);

                if (tr1 != null && tr1.Text != null)
                {
                    string text = tr1.Text.Trim();
                    int    min  = 0;

                    if (int.TryParse(text, out min))
                    {
                        Criteria.MinPrice = min;
                    }
                }

                if (tr2 != null && tr2.Text != null)
                {
                    string text = tr2.Text.Trim();
                    int    max  = 0;

                    if (int.TryParse(text, out max))
                    {
                        Criteria.MaxPrice = max;
                    }
                }
                Refresh();
                break;

            case 2:     // Low to High
                Criteria.SortBy = SortBy.LowToHigh;
                Refresh();
                break;

            case 3:     // High to Low
                Criteria.SortBy = SortBy.HighToLow;
                Refresh();
                break;

            case 4:     // Nothing, resend gump
                Criteria.SortBy = SortBy.None;
                Refresh();
                break;

            case 5:     // Clear Criteria
                Criteria.Reset();
                Refresh();
                break;

            case 6:     // Search
                User.CloseGump(typeof(SearchResultsGump));

                if (Criteria.IsEmpty)
                {
                    Refresh(false, true);
                }
                else
                {
                    List <VendorItem> list = VendorSearch.DoSearch(User, Criteria);

                    if (list == null || list.Count == 0)
                    {
                        Refresh(true);
                    }
                    else
                    {
                        Refresh();
                        User.SendGump(new SearchResultsGump(User, list));
                    }
                }
                break;

            case 7:     // remove item name
                Criteria.SearchName = null;
                Refresh();
                break;

            default:
                if (info.ButtonID >= 100 && info.ButtonID < 200)
                {
                    ChosenCategory = info.ButtonID - 100;
                    Refresh();
                }
                else if (info.ButtonID >= 200 && info.ButtonID < 300 && ChosenCategory >= 0 && ChosenCategory < VendorSearch.Categories.Count)
                {
                    int index = info.ButtonID - 200;

                    SearchCategory      category = VendorSearch.Categories[ChosenCategory];
                    Tuple <object, int> data     = category.Objects[index];
                    object o     = data.Item1;
                    int    value = 0;

                    TextRelay valuetext = info.GetTextEntry(index + 400);

                    if (valuetext != null)
                    {
                        value = Math.Max(o is AosAttribute && (AosAttribute)o == AosAttribute.CastSpeed ? -1 : 0, Utility.ToInt32(valuetext.Text));
                    }

                    Criteria.TryAddDetails(o, data.Item2, value, category.Category);
                    Refresh();
                }
                else if (info.ButtonID >= 300 && info.ButtonID - 300 >= 0 && info.ButtonID - 300 < Criteria.Details.Count)
                {
                    SearchDetail toRemove = Criteria.Details[info.ButtonID - 300];

                    if (toRemove.Category == Category.Equipment)
                    {
                        Criteria.SearchType = Layer.Invalid;
                    }

                    Criteria.Details.Remove(toRemove);
                    Refresh();
                }
                break;
            }
        }
Example #3
0
        public int GetValueForDetails(object o)
        {
            SearchDetail detail = Details.FirstOrDefault(d => d.Attribute == o);

            return(detail != null ? detail.Value : 0);
        }