Skip to content

Commit 46e362d

Browse files
committed
Make sure that cards that exactly match a name are always sorted properly
1 parent c0f0c32 commit 46e362d

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

gframe/deck_con.cpp

+13-11
Original file line numberDiff line numberDiff line change
@@ -1310,27 +1310,29 @@ void DeckBuilder::ClearFilter() {
13101310
mainGame->btnMark[i]->setPressed(false);
13111311
}
13121312
void DeckBuilder::SortList() {
1313-
auto left = results.begin();
1314-
for(auto it = results.begin(); it != results.end(); ++it) {
1315-
if(searched_terms.find(std::wstring{ gDataManager->GetUppercaseName((*it)->code) }) != searched_terms.end()) {
1316-
std::iter_swap(left, it);
1317-
++left;
1318-
}
1319-
}
1313+
auto sort = [&](auto& comparator) {
1314+
std::sort(results.begin(), results.end(), comparator);
1315+
};
13201316
switch(mainGame->cbSortType->getSelected()) {
13211317
case 0:
1322-
std::sort(left, results.end(), DataManager::deck_sort_lv);
1318+
sort(DataManager::deck_sort_lv);
13231319
break;
13241320
case 1:
1325-
std::sort(left, results.end(), DataManager::deck_sort_atk);
1321+
sort( DataManager::deck_sort_atk);
13261322
break;
13271323
case 2:
1328-
std::sort(left, results.end(), DataManager::deck_sort_def);
1324+
sort(DataManager::deck_sort_def);
13291325
break;
13301326
case 3:
1331-
std::sort(left, results.end(), DataManager::deck_sort_name);
1327+
sort(DataManager::deck_sort_name);
13321328
break;
13331329
}
1330+
for(auto it = results.begin(), left = it; it != results.end(); ++it) {
1331+
if(searched_terms.find(gDataManager->GetUppercaseName((*it)->code)) != searched_terms.end()) {
1332+
std::iter_swap(left, it);
1333+
++left;
1334+
}
1335+
}
13341336
}
13351337
void DeckBuilder::ClearDeck() {
13361338
current_deck.main.clear();

gframe/deck_con.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ class DeckBuilder: public irr::IEventReceiver {
136136
uint16_t side_spell_count;
137137
uint16_t side_trap_count;
138138
LFList* filterList;
139-
std::map<std::wstring, std::vector<const CardDataC*>> searched_terms;
139+
std::map<std::wstring, std::vector<const CardDataC*>, std::less<>> searched_terms;
140140
std::vector<const CardDataC*> results;
141141
std::wstring result_string;
142142
};

0 commit comments

Comments
 (0)