QTfrontend/ui/page/pagegamestats.cpp
changeset 6616 f77bb02b669f
parent 6060 fdfc01419815
child 6700 e04da46ee43c
equal deleted inserted replaced
6615:65602f1ef0f8 6616:f77bb02b669f
    60     labelGameStats->setWordWrap(true);
    60     labelGameStats->setWordWrap(true);
    61     gbl->addWidget(l);
    61     gbl->addWidget(l);
    62     gbl->addWidget(labelGameStats);
    62     gbl->addWidget(labelGameStats);
    63     gb->setLayout(gbl);
    63     gb->setLayout(gbl);
    64     pageLayout->addWidget(gb, 1, 1, 1, 2);
    64     pageLayout->addWidget(gb, 1, 1, 1, 2);
    65     
    65 
    66     // graph
    66     // graph
    67     graphic = new FitGraphicsView(gb);
    67     graphic = new FitGraphicsView(gb);
    68     l = new QLabel(this);
    68     l = new QLabel(this);
    69     l->setTextFormat(Qt::RichText);
    69     l->setTextFormat(Qt::RichText);
    70     l->setText("<br><h1><img src=\":/res/StatsH.png\"> " + PageGameStats::tr("Health graph") + "</h1>");
    70     l->setText("<br><h1><img src=\":/res/StatsH.png\"> " + PageGameStats::tr("Health graph") + "</h1>");
    71     l->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    71     l->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    72     gbl->addWidget(l);
    72     gbl->addWidget(l);
    73     gbl->addWidget(graphic);
    73     gbl->addWidget(graphic);
    74     graphic->scale(1.0, -1.0);
    74     graphic->scale(1.0, -1.0);
    75     graphic->setBackgroundBrush(QBrush(Qt::black));
    75     graphic->setBackgroundBrush(QBrush(Qt::black));
    76     
    76 
    77     labelGameWin = new QLabel(this);
    77     labelGameWin = new QLabel(this);
    78     labelGameWin->setTextFormat(Qt::RichText);
    78     labelGameWin->setTextFormat(Qt::RichText);
    79     pageLayout->addWidget(labelGameWin, 0, 0, 1, 2);
    79     pageLayout->addWidget(labelGameWin, 0, 0, 1, 2);
    80 
    80 
    81     // ranking box
    81     // ranking box
   158     graphic->fitInView(graphic->sceneRect());
   158     graphic->fitInView(graphic->sceneRect());
   159 }
   159 }
   160 
   160 
   161 void PageGameStats::GameStats(char type, const QString & info)
   161 void PageGameStats::GameStats(char type, const QString & info)
   162 {
   162 {
   163     switch(type) {
   163     switch(type)
   164         case 'r' : {
   164     {
       
   165         case 'r' :
       
   166         {
   165             labelGameWin->setText(QString("<h1 align=\"center\">%1</h1>").arg(info));
   167             labelGameWin->setText(QString("<h1 align=\"center\">%1</h1>").arg(info));
   166             break;
   168             break;
   167         }
   169         }
   168         case 'D' : {
   170         case 'D' :
       
   171         {
   169             int i = info.indexOf(' ');
   172             int i = info.indexOf(' ');
   170             QString message = "<p><img src=\":/res/StatsBestShot.png\"> " + PageGameStats::tr("The best shot award was won by <b>%1</b> with <b>%2</b> pts.").arg(info.mid(i + 1), info.left(i)) + "</p>";
   173             QString message = "<p><img src=\":/res/StatsBestShot.png\"> " + PageGameStats::tr("The best shot award was won by <b>%1</b> with <b>%2</b> pts.").arg(info.mid(i + 1), info.left(i)) + "</p>";
   171             AddStatText(message);
   174             AddStatText(message);
   172             break;
   175             break;
   173         }
   176         }
   174         case 'k' : {
   177         case 'k' :
       
   178         {
   175             int i = info.indexOf(' ');
   179             int i = info.indexOf(' ');
   176             int num = info.left(i).toInt();
   180             int num = info.left(i).toInt();
   177             QString message = "<p><img src=\":/res/StatsBestKiller.png\"> " + PageGameStats::tr("The best killer is <b>%1</b> with <b>%2</b> kills in a turn.", "", num).arg(info.mid(i + 1), info.left(i)) + "</p>";
   181             QString message = "<p><img src=\":/res/StatsBestKiller.png\"> " + PageGameStats::tr("The best killer is <b>%1</b> with <b>%2</b> kills in a turn.", "", num).arg(info.mid(i + 1), info.left(i)) + "</p>";
   178             AddStatText(message);
   182             AddStatText(message);
   179             break;
   183             break;
   180         }
   184         }
   181         case 'K' : {
   185         case 'K' :
       
   186         {
   182             int num = info.toInt();
   187             int num = info.toInt();
   183             QString message = "<p><img src=\":/res/StatsHedgehogsKilled.png\"> " +  PageGameStats::tr("A total of <b>%1</b> hedgehog(s) were killed during this round.", "", num).arg(num) + "</p>";
   188             QString message = "<p><img src=\":/res/StatsHedgehogsKilled.png\"> " +  PageGameStats::tr("A total of <b>%1</b> hedgehog(s) were killed during this round.", "", num).arg(num) + "</p>";
   184             AddStatText(message);
   189             AddStatText(message);
   185             break;
   190             break;
   186         }
   191         }
   187         case 'H' : {
   192         case 'H' :
       
   193         {
   188             int i = info.indexOf(' ');
   194             int i = info.indexOf(' ');
   189             quint32 clan = info.left(i).toInt();
   195             quint32 clan = info.left(i).toInt();
   190             quint32 hp = info.mid(i + 1).toUInt();
   196             quint32 hp = info.mid(i + 1).toUInt();
   191             healthPoints[clan].append(hp);
   197             healthPoints[clan].append(hp);
   192             break;
   198             break;
   193         }
   199         }
   194         case 'T': { // local team stats
   200         case 'T':   // local team stats
       
   201         {
   195             //AddStatText("<p>local team: " + info + "</p>");
   202             //AddStatText("<p>local team: " + info + "</p>");
   196             QStringList infol = info.split(":");
   203             QStringList infol = info.split(":");
   197             HWTeam team(infol[0]);
   204             HWTeam team(infol[0]);
   198             if(team.fileExists()) // do some better test to avoid influence from scripted/predefined teams?
   205             if(team.fileExists()) // do some better test to avoid influence from scripted/predefined teams?
   199             {
   206             {
   202                 if(infol[1].toInt() > 0) // might require some better test for winning condition (or changed flag) ... WIP!
   209                 if(infol[1].toInt() > 0) // might require some better test for winning condition (or changed flag) ... WIP!
   203                     team.incWins(); // should draws count as wins?
   210                     team.incWins(); // should draws count as wins?
   204                 //team.SaveToFile(); // don't save yet
   211                 //team.SaveToFile(); // don't save yet
   205             }
   212             }
   206             break;
   213             break;
   207             }
   214         }
   208 
   215 
   209         case 'P' : {
   216         case 'P' :
       
   217         {
   210             int i = info.indexOf(' ');
   218             int i = info.indexOf(' ');
   211             playerPosition++;
   219             playerPosition++;
   212             QString color = info.left(i);
   220             QString color = info.left(i);
   213             quint32 c = color.toInt();
   221             quint32 c = color.toInt();
   214             QColor clanColor = QColor(qRgb((c >> 16) & 255, (c >> 8) & 255, c & 255));
   222             QColor clanColor = QColor(qRgb((c >> 16) & 255, (c >> 8) & 255, c & 255));
   225             lastColor = c;
   233             lastColor = c;
   226 
   234 
   227             switch (playerPosition)
   235             switch (playerPosition)
   228             {
   236             {
   229                 case 1:
   237                 case 1:
   230                 image = "<img src=\":/res/StatsMedal1.png\">";
   238                     image = "<img src=\":/res/StatsMedal1.png\">";
   231                 break;
   239                     break;
   232             case 2:
   240                 case 2:
   233                 image = "<img src=\":/res/StatsMedal2.png\">";
   241                     image = "<img src=\":/res/StatsMedal2.png\">";
   234                 break;
   242                     break;
   235             case 3:
   243                 case 3:
   236                 image = "<img src=\":/res/StatsMedal3.png\">";
   244                     image = "<img src=\":/res/StatsMedal3.png\">";
   237                 break;
   245                     break;
   238             default:
   246                 default:
   239                 image = "<img src=\":/res/StatsMedal4.png\">";
   247                     image = "<img src=\":/res/StatsMedal4.png\">";
   240                 break;
   248                     break;
   241             }
   249             }
   242 
   250 
   243             QString message;
   251             QString message;
   244             QString killstring = PageGameStats::tr("(%1 kill)", "", kills).arg(kills);
   252             QString killstring = PageGameStats::tr("(%1 kill)", "", kills).arg(kills);
   245 
   253 
   246             message = QString("<p><h2>%1 %2. <font color=\"%4\">%3</font> ").arg(image, QString::number(playerPosition), playername, clanColor.name()) + killstring + "</h2></p>";
   254             message = QString("<p><h2>%1 %2. <font color=\"%4\">%3</font> ").arg(image, QString::number(playerPosition), playername, clanColor.name()) + killstring + "</h2></p>";
   247 
   255 
   248             labelGameRank->setText(labelGameRank->text() + message);
   256             labelGameRank->setText(labelGameRank->text() + message);
   249                 break;
   257             break;
   250         }
   258         }
   251         case 's' : {
   259         case 's' :
       
   260         {
   252             int i = info.indexOf(' ');
   261             int i = info.indexOf(' ');
   253             int num = info.left(i).toInt();
   262             int num = info.left(i).toInt();
   254             QString message = "<p><img src=\":/res/StatsMostSelfDamage.png\"> " + PageGameStats::tr("<b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.", "", num).arg(info.mid(i + 1)).arg(num) + "</p>";
   263             QString message = "<p><img src=\":/res/StatsMostSelfDamage.png\"> " + PageGameStats::tr("<b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.", "", num).arg(info.mid(i + 1)).arg(num) + "</p>";
   255             AddStatText(message);
   264             AddStatText(message);
   256             break;
   265             break;
   257         }
   266         }
   258         case 'S' : {
   267         case 'S' :
       
   268         {
   259             int i = info.indexOf(' ');
   269             int i = info.indexOf(' ');
   260             int num = info.left(i).toInt();
   270             int num = info.left(i).toInt();
   261             QString message = "<p><img src=\":/res/StatsSelfKilled.png\"> " + PageGameStats::tr("<b>%1</b> killed <b>%2</b> of his own hedgehogs.", "", num).arg(info.mid(i + 1)).arg(num) + "</p>";
   271             QString message = "<p><img src=\":/res/StatsSelfKilled.png\"> " + PageGameStats::tr("<b>%1</b> killed <b>%2</b> of his own hedgehogs.", "", num).arg(info.mid(i + 1)).arg(num) + "</p>";
   262             AddStatText(message);
   272             AddStatText(message);
   263             break;
   273             break;
   264         }
   274         }
   265         case 'B' : {
   275         case 'B' :
       
   276         {
   266             int i = info.indexOf(' ');
   277             int i = info.indexOf(' ');
   267             int num = info.left(i).toInt();
   278             int num = info.left(i).toInt();
   268             QString message = "<p><img src=\":/res/StatsSkipped.png\"> " + PageGameStats::tr("<b>%1</b> was scared and skipped turn <b>%2</b> times.", "", num).arg(info.mid(i + 1)).arg(num) + "</p>";
   279             QString message = "<p><img src=\":/res/StatsSkipped.png\"> " + PageGameStats::tr("<b>%1</b> was scared and skipped turn <b>%2</b> times.", "", num).arg(info.mid(i + 1)).arg(num) + "</p>";
   269             AddStatText(message);
   280             AddStatText(message);
   270             break;
   281             break;