git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3462 c06c8d41-db1a-0410-9941-cceddc491573
3TNMXC6XG723NP5RJDQS3ONETVCXPTZXOG3YTDFT2JKKGLCYL7WAC 3ZNI2YMHYXRVEONY5CGWXSRMFSLOATZMKU7H6HRY3CC2W6OZAM7QC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC 7ISXWQPJNJPE23HHB7JLHYXHEW5QTDULNJIFVNSWONUZXWQJ2L7AC T4IH76FA5TWHFOZUJFHLQXQJENJHWTUZZP4EGNA7D4GTZY7D4ZKAC GACH6PWPGGUBEE7PFEPQMOZKSR7HTQGL2WLGF2AQPJD3FCCSKZNQC Y66ZAXN24E3HLIBOSW4OXUTQ4X4PRGNJII4KVDQH4GQJVA6GO3NAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 2PAHDAPDO6PN4FNGB5N7CQNEGHSE3NOGPXYZMIAOJC4VW34FRVOAC void display_search_results(std::vector<stash_search_result> &results);void show_stash_search_prompt();
bool display_search_results(std::vector<stash_search_result> &results,const char* sort_style);void show_stash_search_prompt();
// helper for search_stashesstruct compare_by_distance{bool operator()(const stash_search_result& lhs,const stash_search_result& rhs){if (lhs.player_distance != rhs.player_distance) {// Sort by increasing distancereturn (lhs.player_distance < rhs.player_distance);} else if (lhs.matches != rhs.matches) {// Then by decreasing number of matchesreturn (lhs.matches > rhs.matches);} else {return false;}}};// helper for search_stashesstruct compare_by_name{bool operator()(const stash_search_result& lhs,const stash_search_result& rhs){if (lhs.match != rhs.match) {// Sort by namereturn (lhs.match < rhs.match);} else if (lhs.player_distance != rhs.player_distance) {// Then sort by increasing distancereturn (lhs.player_distance < rhs.player_distance);} else if (lhs.matches != rhs.matches) {// Then by decreasing number of matchesreturn (lhs.matches > rhs.matches);} else {return false;}}};
display_search_results(results);
bool sort_by_dist = true;while (true){const char* sort_style;if (sort_by_dist) {std::sort(results.begin(), results.end(), compare_by_distance());sort_style = "by dist";} else {std::sort(results.begin(), results.end(), compare_by_name());sort_style = "by name";}const bool again = display_search_results(results, sort_style);if (!again) break;sort_by_dist = !sort_by_dist;}
cprintf("%d %s%s", title->quantity, title->text.c_str(),title->quantity > 1? "es" : "");
cprintf("%d %s%s, sorted %s",title->quantity, title->text.c_str(),title->quantity > 1? "es" : "",sort_style);char buf[200];snprintf(buf, 200," [a-z: %s ?: change action /: change sort]",menu_action == ACT_TRAVEL ? "travel" : "examine");
if (meta_key)draw_title_suffix(" (x - examine)", false);elsedraw_title_suffix(" (x - travel; ? - examine)", false);
draw_title_suffix(buf, false);
void StashTracker::display_search_results(std::vector<stash_search_result> &results)
// Returns true to request redisplay with a different sort methodbool StashTracker::display_search_results(std::vector<stash_search_result> &results,const char* sort_style)