Commit b78f32dc authored by nanahira's avatar nanahira

Merge branch 'multi_search' of https://github.com/purerosefallen/ygopro

parents c6d63cf9 bab8f3f3
...@@ -830,9 +830,9 @@ void DeckBuilder::FilterCards() { ...@@ -830,9 +830,9 @@ void DeckBuilder::FilterCards() {
std::vector<std::wstring> query_elements; std::vector<std::wstring> query_elements;
std::vector<std::vector<std::wstring>::iterator> query_elements_track; std::vector<std::vector<std::wstring>::iterator> query_elements_track;
size_t element_start = 0; size_t element_start = 0;
while (1) { while(1) {
size_t element_end = str.find_first_of(L' ', element_start); size_t element_end = str.find_first_of(L' ', element_start);
if (element_end == std::wstring::npos) if(element_end == std::wstring::npos)
break; break;
size_t length = element_end - element_start; size_t length = element_end - element_start;
if(length > 0) { if(length > 0) {
...@@ -843,18 +843,17 @@ void DeckBuilder::FilterCards() { ...@@ -843,18 +843,17 @@ void DeckBuilder::FilterCards() {
} }
query_elements.push_back(str.substr(element_start)); query_elements.push_back(str.substr(element_start));
std::unordered_map<std::wstring, unsigned int> set_code_map; std::unordered_map<std::wstring, unsigned int> set_code_map;
for (auto elements_iterator = query_elements.begin(); elements_iterator != query_elements.end(); elements_iterator++) { for(auto elements_iterator = query_elements.begin(); elements_iterator != query_elements.end(); elements_iterator++) {
const wchar_t* element_pointer = elements_iterator->c_str(); const wchar_t* element_pointer = elements_iterator->c_str();
if (element_pointer[0] == L'@') if(element_pointer[0] == L'@')
set_code_map[*elements_iterator] = dataManager.GetSetCode(&element_pointer[1]); set_code_map[*elements_iterator] = dataManager.GetSetCode(&element_pointer[1]);
else else
set_code_map[*elements_iterator] = dataManager.GetSetCode(&element_pointer[0]); set_code_map[*elements_iterator] = dataManager.GetSetCode(&element_pointer[0]);
if (element_pointer[0] == 0 || (element_pointer[0] == L'$' && element_pointer[1] == 0) || (element_pointer[0] == L'@' && element_pointer[1] == 0)) if(element_pointer[0] == 0 || (element_pointer[0] == L'$' && element_pointer[1] == 0) || (element_pointer[0] == L'@' && element_pointer[1] == 0))
query_elements_track.push_back(elements_iterator); query_elements_track.push_back(elements_iterator);
} }
for (auto elements_track_iterator = query_elements_track.begin(); elements_track_iterator != query_elements_track.end(); elements_track_iterator++) { for(auto elements_track_iterator = query_elements_track.begin(); elements_track_iterator != query_elements_track.end(); elements_track_iterator++)
query_elements.erase(*elements_track_iterator); query_elements.erase(*elements_track_iterator);
}
auto strpointer = dataManager._strings.begin(); auto strpointer = dataManager._strings.begin();
for(code_pointer ptr = dataManager._datas.begin(); ptr != dataManager._datas.end(); ++ptr, ++strpointer) { for(code_pointer ptr = dataManager._datas.begin(); ptr != dataManager._datas.end(); ++ptr, ++strpointer) {
const CardDataC& data = ptr->second; const CardDataC& data = ptr->second;
...@@ -943,14 +942,14 @@ void DeckBuilder::FilterCards() { ...@@ -943,14 +942,14 @@ void DeckBuilder::FilterCards() {
break; break;
} }
} else { } else {
if (!CardNameContains(text.name.c_str(), elements_iterator->c_str()) && text.text.find(elements_iterator->c_str()) == std::wstring::npos if(!CardNameContains(text.name.c_str(), elements_iterator->c_str()) && text.text.find(elements_iterator->c_str()) == std::wstring::npos
&& (!set_code_map[*elements_iterator] || !check_set_code(data, set_code_map[*elements_iterator]))) { && (!set_code_map[*elements_iterator] || !check_set_code(data, set_code_map[*elements_iterator]))) {
is_target = false; is_target = false;
break; break;
} }
} }
} }
if (is_target) if(is_target)
results.push_back(ptr); results.push_back(ptr);
else else
continue; continue;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment