Author: mir3x Date: Sun Sep 14 20:10:27 2014 New Revision: 26415 URL: http://svn.gna.org/viewcvs/freeciv?rev=26415&view=rev Log: Fixed crash when global observing tried to check technologies Added sorting technologies
See patch #5220 Modified: trunk/client/gui-qt/plrdlg.cpp Modified: trunk/client/gui-qt/plrdlg.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/plrdlg.cpp?rev=26415&r1=26414&r2=26415&view=diff ============================================================================== --- trunk/client/gui-qt/plrdlg.cpp (original) +++ trunk/client/gui-qt/plrdlg.cpp Sun Sep 14 20:10:27 2014 @@ -364,6 +364,8 @@ QString res; QString sp = " "; QString nl = "<br>"; + QStringList sorted_list_a; + QStringList sorted_list_b; struct player *pplayer; int a , b; bool added; @@ -410,7 +412,7 @@ + QString(nation_adjective_for_player(pplayer)) + QString("</td><tr><td><b>") + N_("Ruler:") + QString("</b></td><td>") + QString(ruler_title_for_player(pplayer, tbuf, sizeof(tbuf))) - + QString("</td></tr><tr><td><b>") + N_("Government:") + + QString("</td></tr><tr><td><b>") + N_("Government:") + QString("</b></td><td>") + QString(government_name_for_player(pplayer)) + QString("</td></tr><tr><td><b>") + N_("Capital:") + QString("</b></td><td>") @@ -455,46 +457,68 @@ } me = client_player(); my_research = research_get(me); - if ((player_has_embassy(me, pplayer) || client_is_global_observer()) - && me != pplayer) { - a = 0; - b = 0; - techs_known = QString(_("<b>Techs unknown by %1:</b>")). + if (!client_is_global_observer()) { + if (player_has_embassy(me, pplayer) && me != pplayer) { + a = 0; + b = 0; + techs_known = QString(_("<b>Techs unknown by %1:</b>")). arg(nation_plural_for_player(pplayer)); - techs_unknown = QString(_("<b>Techs unknown by you :</b>")); - + techs_unknown = QString(_("<b>Techs unknown by you :</b>")); + + advance_iterate(A_FIRST, padvance) { + tech_id = advance_number(padvance); + if (research_invention_state(my_research, tech_id) == TECH_KNOWN + && (research_invention_state(research, tech_id) + == TECH_UNKNOWN)) { + a++; + sorted_list_a << research_advance_name_translation(research, + tech_id); + } + if (research_invention_state(my_research, tech_id) == TECH_UNKNOWN + && (research_invention_state(research, tech_id) == TECH_KNOWN)) { + b++; + sorted_list_b << research_advance_name_translation(research, + tech_id); + } + } advance_iterate_end; + sorted_list_a.sort(Qt::CaseInsensitive); + sorted_list_b.sort(Qt::CaseInsensitive); + foreach (res, sorted_list_a) { + techs_known = techs_known + QString("<i>") + res + "," + + QString("</i>") + sp; + } + foreach (res, sorted_list_b) { + techs_unknown = techs_unknown + QString("<i>") + res + "," + + QString("</i>") + sp; + } + if (a == 0) { + techs_known = techs_known + QString("<i>") + sp + + QString(_("None")) + QString("</i>"); + } else { + techs_known.replace(techs_known.lastIndexOf(","), 1, "."); + } + if (b == 0) { + techs_unknown = techs_unknown + QString("<i>") + sp + + QString(_("None")) + QString("</i>"); + } else { + techs_unknown.replace(techs_unknown.lastIndexOf(","), 1, "."); + } + tech_str = techs_known + nl + techs_unknown; + } + } else { + tech_str = QString(_("<b>Techs known by %1:</b>")). + arg(nation_plural_for_player(pplayer)); advance_iterate(A_FIRST, padvance) { tech_id = advance_number(padvance); - if (research_invention_state(my_research, tech_id) == TECH_KNOWN - && (research_invention_state(research, tech_id) == TECH_UNKNOWN)) { - a++; - techs_known = techs_known + QString("<i>") - + research_advance_name_translation(research, tech_id) - + "," + QString("</i>") + sp; - } - if (research_invention_state(my_research, tech_id) == TECH_UNKNOWN - && (research_invention_state(research, tech_id) == TECH_KNOWN)) { - b++; - techs_unknown = techs_unknown + QString("<i>") - + research_advance_name_translation(research, - tech_id) - + "," + QString("</i>") + sp; + if (research_invention_state(research, tech_id) == TECH_KNOWN) { + sorted_list_a << research_advance_name_translation(research, tech_id); } } advance_iterate_end; - - if (a == 0) { - techs_known = techs_known + QString("<i>") + sp - + QString(_("None")) + QString("</i>"); - } else { - techs_known.replace(techs_known.lastIndexOf(","), 1, "."); - } - if (b == 0) { - techs_unknown = techs_unknown + QString("<i>") + sp - + QString(_("None")) + QString("</i>"); - } else { - techs_unknown.replace(techs_unknown.lastIndexOf(","), 1, "."); - } - tech_str = techs_known + nl + techs_unknown; + sorted_list_a.sort(Qt::CaseInsensitive); + foreach (res, sorted_list_a) { + tech_str = tech_str + QString("<i>") + res + "," + + QString("</i>") + sp; + } } plr->update_report(); } _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits