Тема: SpellWork C#
Показать сообщение отдельно
Старый 12.08.2010, 13:46   #91
randle
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от PSZ Посмотреть сообщение
Предложение новой фичи: поиск по диапазону номеров спеллов. Например, вводишь в "ID or Name" 50000-51000 - выдает все спеллы с номерами от 50000 до 51000.
Вот он patch. Пытался сделать поиск по диапазону вида: "123-321" по spell.ID и spell.SpellIconID.

Если понравится - могу развить эту мысль, чтобы можно было задавать диапазоны вида: "123-321, 25, 64, 5550-6891".

Сразу скажу, как реализовывал бы такое. Добавил бы некий класс xCondition, сценарий использования которого выглядел бы приблизительно как:


Код:
        private void AdvancedSearch()
        {
            string name = _tbSearchId.Text;
xCondition id = new xCondition(name);
xCondition ic = new xCondition(_tbSearchIcon.Text);
            uint at = _tbSearchAttributes.Text.ToUInt32();

            _spellList = (from spell in DBC.Spell.Values
                          
                          where (
id.Matches(spell.ID) && ic.Matches(spell.SpellIconID)

                              && (at == 0 || (spell.Attributes    & at) != 0
                                          || (spell.AttributesEx  & at) != 0
                                          || (spell.AttributesEx2 & at) != 0
                                          || (spell.AttributesEx3 & at) != 0
                                          || (spell.AttributesEx4 & at) != 0
                                          || (spell.AttributesEx5 & at) != 0
                                          || (spell.AttributesEx6 & at) != 0
                                          || (spell.AttributesExG & at) != 0))

&& ((id.IsSet || ic.IsSet && at != 0) || spell.SpellName.ContainsText(name))
                          
                          select spell).ToList();

            _lvSpellList.VirtualListSize = _spellList.Count();
            if (_lvSpellList.SelectedIndices.Count > 0)
                _lvSpellList.Items[_lvSpellList.SelectedIndices[0]].Selected = false;
        }
Вложения
Тип файла: patch search-ranges.patch (3.6 Кб, 488 просмотров)

Последний раз редактировалось randle; 12.08.2010 в 14:45.
  Ответить с цитированием
Пользователь сказал cпасибо:
Konctantin (12.08.2010)