More refactoring.
authorSteinar H. Gunderson <sesse@samfundet.no>
Fri, 4 Mar 2005 23:26:22 +0000 (23:26 +0000)
committerSteinar H. Gunderson <sesse@samfundet.no>
Fri, 4 Mar 2005 23:26:22 +0000 (23:26 +0000)
bigscreen/groupscreen.cpp
bigscreen/groupscreen.h

index c5c9020..4b108f5 100644 (file)
@@ -57,6 +57,26 @@ void GroupScreen::draw_main_heading(std::vector<TextDefer> &td)
        my_draw_text_deferred(td, heading, 40.0, LOGICAL_SCREEN_WIDTH/2 - width/2, 60);
 }
 
+// make column headings from the first player's songs
+void GroupScreen::draw_column_headings(std::vector<TextDefer> &td, const Group &group, const std::vector<unsigned> &colwidth)
+{
+       unsigned num_scores = group.players[0].scores.size();
+
+       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);
+                       my_draw_text_deferred(td, i->song.short_title, 12.0, x + colwidth[col] / 2 - this_width / 2, 100);
+               }
+               x += colwidth[col] + 20;
+       }
+
+       my_draw_text_deferred(td, "Total", 12.0, x + colwidth[num_scores + 1] / 2 - my_draw_text("Total", NULL, 12.0) / 2, 100);
+       x += colwidth[num_scores + 1] + 20;
+       my_draw_text_deferred(td, "Rank", 12.0, x + colwidth[num_scores + 2] / 2 - my_draw_text("Rank", NULL, 12.0) / 2, 100);
+}      
+
 /*
  * Find out how wide each column has to be. First try unlimited width (ie.
  * long titles for everything); if that gets too long, try again with short
@@ -157,38 +177,24 @@ void GroupScreen::draw(unsigned char *buf, unsigned width, unsigned height)
        
        draw_main_heading(td);
        find_column_widths(group, colwidth);
+       draw_column_headings(td, group, colwidth);
        
        unsigned max_num_width = my_draw_text("8888", NULL, 22.0);
        unsigned num_scores = group.players[0].scores.size();
 
-       // make column headings from the first player's songs
-       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);
-                       my_draw_text_deferred(td, i->song.short_title, 12.0, x + colwidth[col] / 2 - this_width / 2, 100);
-               }
-               x += colwidth[col] + 20;
-       }
-
-       my_draw_text_deferred(td, "Total", 12.0, x + colwidth[num_scores + 1] / 2 - my_draw_text("Total", NULL, 12.0) / 2, 100);
-       x += colwidth[num_scores + 1] + 20;
-       my_draw_text_deferred(td, "Rank", 12.0, x + colwidth[num_scores + 2] / 2 - my_draw_text("Rank", NULL, 12.0) / 2, 100);
-       
        // show all the players and the scores
        unsigned num_players_this_machine = (group.players.size() + num_machines - machine - 1) / num_machines;
        unsigned show_players = std::min(num_players_this_machine, 9U);
        unsigned y = (show_players <= 7) ? 140 : (140 - (show_players - 7) * 5);
        
-       unsigned row = 0, m = 0;
+       unsigned row = 0, m = 0, x;
        for (std::vector<Player>::const_iterator i = group.players.begin(); i != group.players.end() && row < 9; ++i) {
                if (m++ % num_machines != machine)
                        continue;
 
                my_draw_text_deferred(td, i->nick, 18.0, 20, y);
 
-               unsigned x = 40 + colwidth[0];
+               x = 40 + colwidth[0];
 
                unsigned col = 1;
                for (std::vector<Score>::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j, ++col) {
@@ -255,7 +261,7 @@ void GroupScreen::draw(unsigned char *buf, unsigned width, unsigned height)
        std::vector<unsigned> max_score, min_score;
        for (std::vector<Player>::const_iterator i = group.players.begin(); i != group.players.end(); ++i) {
                unsigned min_score_tp = 0, max_score_tp = 0;
-               for (std::vector<Score>::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j, ++col) {
+               for (std::vector<Score>::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j) {
                        if (j->score != -1) {
                                // already given
                                min_score_tp += j->score;
@@ -332,7 +338,7 @@ void GroupScreen::draw(unsigned char *buf, unsigned width, unsigned height)
        m = 0;
        for (std::vector<Player>::iterator i = group.players.begin(); i != group.players.end(); ++i) {
                unsigned this_played = 0, this_random_songs = 0;
-               for (std::vector<Score>::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j, ++col) {
+               for (std::vector<Score>::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j) {
                        if (j->score != -1)
                                ++this_played;
                        if (!j->chosen)
index 2acb032..b88debe 100644 (file)
@@ -22,6 +22,7 @@ private:
        std::vector<TextDefer> last_text;
 
        void draw_main_heading(std::vector<TextDefer> &td);
+       void draw_column_headings(std::vector<TextDefer> &td, const Group &group, const std::vector<unsigned> &colwidth);
        void find_column_widths(const Group &group, std::vector<unsigned> &colwidth);
        
 public: