]> git.sesse.net Git - ccbs/blobdiff - bigscreen/groupscreen.cpp
There is no freshcolumnheading.
[ccbs] / bigscreen / groupscreen.cpp
index 92618f5cf395760cf28ff230e667441d907e22ec..9f3b17c521eac7ff9c42b406a7511cfd0839ba0c 100644 (file)
@@ -81,6 +81,14 @@ void GroupScreen::draw_column_headings(std::vector<TextDefer> &td, const Group &
        unsigned col = 1;
        unsigned x = 40 + colwidth[0];
        for (std::vector<Score>::const_iterator i = group.players[0].scores.begin(); i != group.players[0].scores.end(); ++i, ++col) {
+               if (!i->chosen) {
+                       unsigned this_width = my_draw_text(i->song.short_title, NULL, 12.0, "columnheading");
+                       my_draw_text_deferred(td, i->song.short_title, 12.0, "columnheading", "columnheading", x + colwidth[col] / 2 - this_width / 2, 100);
+               }
+               x += colwidth[col] + 20;
+       }
+
+       if (num_scores > 1) {
                unsigned this_width = my_draw_text("Total", NULL, 12.0, "columnheading");
                my_draw_text_deferred(td, "Total", 12.0, "columnheading", "columnheading", x + colwidth[num_scores + 1] / 2 - this_width / 2, 100);
                x += colwidth[num_scores + 1] + 20;
@@ -119,7 +127,7 @@ void GroupScreen::draw_scores(std::vector<TextDefer> &td, const Group &group, un
        
                        unsigned this_width = my_draw_text(text, NULL, 22.0, "score" + suffix);
                        if (j->chosen) {
-                               my_draw_text_deferred(td, text, 22.0, "chosensongname" + suffix, "freshchosensongname" + suffix, x + max_num_width - this_width, y);
+                               my_draw_text_deferred(td, text, 22.0, "score" + suffix, "freshscore" + suffix, x + max_num_width - this_width, y);
 
                                // draw the long name if we can, otherwise use the short one
                                if (my_draw_text(j->song.title, NULL, 12.0, "chosensongname") > (colwidth[col] - 10 - max_num_width)) {
@@ -412,12 +420,12 @@ void GroupScreen::draw_next_up_versus(unsigned char *buf, const Group &group,
        
        // OK, we have two players. Draw their nicks and the scores
        widestring text = widestring("Next players: ") + next_player->nick + widestring(" and ") + other_player->nick;
-       unsigned this_width = my_draw_text(text, NULL, 24.0, "nextsonginfo");
-       my_draw_text(text, buf, 24.0, "nextsonginfo", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 420);
+       unsigned this_width = my_draw_text(text, NULL, 24.0, "nextsonginfo.player");
+       my_draw_text(text, buf, 24.0, "nextsonginfo.player", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 420);
 
        if (next_song->song.id != -1) {
-               this_width = my_draw_text(next_song->song.title, NULL, 20.0, "nextsongtitle");
-               my_draw_text(next_song->song.title, buf, 20.0, "nextsonginfo", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 457);
+               this_width = my_draw_text(next_song->song.title, NULL, 20.0, "nextsonginfo.title");
+               my_draw_text(next_song->song.title, buf, 20.0, "nextsonginfo.title", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 457);
 
                Highscore hs;
                conn.perform(FetchHighscore(next_song->song.id, &hs));
@@ -425,8 +433,8 @@ void GroupScreen::draw_next_up_versus(unsigned char *buf, const Group &group,
                if (hs.score != -1) {
                        text = widestring("High score: ") + widestring(pqxx::to_string(hs.score)) +
                                widestring(", by ") + hs.nick + widestring(" in ") + hs.tournament_name;
-                       this_width = my_draw_text(text, NULL, 16.0, "nextsonginfo");
-                       my_draw_text(text, buf, 16.0, "nextsonginfo", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 487);
+                       this_width = my_draw_text(text, NULL, 16.0, "nextsonginfo.highscore");
+                       my_draw_text(text, buf, 16.0, "nextsonginfo.highscore", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 487);
                }
        }
 }
@@ -436,12 +444,12 @@ void GroupScreen::draw_next_up_player(unsigned char *buf, const Group &group, co
        const std::vector<unsigned> &max_score, const std::vector<unsigned> &min_score)
 {
        widestring text = widestring("Next player: ") + player.nick;
-       unsigned this_width = my_draw_text(text, NULL, 24.0, "nextsonginfo");
-       my_draw_text(text, buf, 24.0, "nextsonginfo", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 420);
+       unsigned this_width = my_draw_text(text, NULL, 24.0, "nextsonginfo.player");
+       my_draw_text(text, buf, 24.0, "nextsonginfo.player", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 420);
 
        if (song.song.id != -1) {
-               this_width = my_draw_text(song.song.title, NULL, 20.0, "nextsonginfo");
-               my_draw_text(song.song.title, buf, 20.0, "nextsonginfo", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 457);
+               this_width = my_draw_text(song.song.title, NULL, 20.0, "nextsonginfo.title");
+               my_draw_text(song.song.title, buf, 20.0, "nextsonginfo.title", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 457);
 
                Highscore hs;
                conn.perform(FetchHighscore(song.song.id, &hs));
@@ -449,8 +457,8 @@ void GroupScreen::draw_next_up_player(unsigned char *buf, const Group &group, co
                if (hs.score != -1) {
                        text = widestring("High score: ") + widestring(pqxx::to_string(hs.score)) +
                                widestring(", by ") + hs.nick + widestring(" in ") + hs.tournament_name;
-                       this_width = my_draw_text(text, NULL, 16.0, "nextsonginfo");
-                       my_draw_text(text, buf, 16.0, "nextsonginfo", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 487);
+                       this_width = my_draw_text(text, NULL, 16.0, "nextsonginfo.highscore");
+                       my_draw_text(text, buf, 16.0, "nextsonginfo.highscore", (LOGICAL_SCREEN_WIDTH/2) - this_width/2, 487);
                }
        }
 
@@ -526,7 +534,11 @@ void GroupScreen::draw_next_up_player(unsigned char *buf, const Group &group, co
                                tmp.push_back(max_score[i]);
                        }
                        std::sort(tmp.begin(), tmp.end());
-                       qualify_beat_worst_case = tmp[tmp.size() - group.num_qualifying];
+                       if (tmp.size() > group.num_qualifying) {
+                               qualify_beat_worst_case = tmp[tmp.size() - group.num_qualifying];
+                       } else {
+                               qualify_beat_worst_case = 0;
+                       }
 
                        std::vector<unsigned> tmp2;
                        for (unsigned i = 0; i < group.players.size(); ++i) {
@@ -536,7 +548,11 @@ void GroupScreen::draw_next_up_player(unsigned char *buf, const Group &group, co
                        }
 
                        std::sort(tmp2.begin(), tmp2.end());
-                       qualify_beat_best_case = tmp2[tmp2.size() - group.num_qualifying];
+                       if (tmp2.size() > group.num_qualifying) {
+                               qualify_beat_best_case = tmp2[tmp2.size() - group.num_qualifying];
+                       } else {
+                               qualify_beat_best_case = 0;
+                       }
                }
 
                // print out the lines we can attain
@@ -607,7 +623,7 @@ void GroupScreen::draw(unsigned char *buf, unsigned width, unsigned height)
        conn.perform(FetchGroup(tournament, round, parallel, &group));
        gettimeofday(&last_updated, NULL);
 
-       fill_background(buf, width, height);
+       fill_background(buf, "groupscreen", width, height);
 
        std::vector<unsigned> colwidth;