From: Steinar H. Gunderson Date: Fri, 4 Mar 2005 23:26:22 +0000 (+0000) Subject: More refactoring. X-Git-Url: https://git.sesse.net/?p=ccbs;a=commitdiff_plain;h=b8e7570409d3dff7d17bb44da6e3ba8f5861ca29 More refactoring. --- diff --git a/bigscreen/groupscreen.cpp b/bigscreen/groupscreen.cpp index c5c9020..4b108f5 100644 --- a/bigscreen/groupscreen.cpp +++ b/bigscreen/groupscreen.cpp @@ -57,6 +57,26 @@ void GroupScreen::draw_main_heading(std::vector &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 &td, const Group &group, const std::vector &colwidth) +{ + unsigned num_scores = group.players[0].scores.size(); + + unsigned col = 1; + unsigned x = 40 + colwidth[0]; + for (std::vector::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::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::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::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 max_score, min_score; for (std::vector::const_iterator i = group.players.begin(); i != group.players.end(); ++i) { unsigned min_score_tp = 0, max_score_tp = 0; - for (std::vector::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j, ++col) { + for (std::vector::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::iterator i = group.players.begin(); i != group.players.end(); ++i) { unsigned this_played = 0, this_random_songs = 0; - for (std::vector::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j, ++col) { + for (std::vector::const_iterator j = i->scores.begin(); j != i->scores.end(); ++j) { if (j->score != -1) ++this_played; if (!j->chosen) diff --git a/bigscreen/groupscreen.h b/bigscreen/groupscreen.h index 2acb032..b88debe 100644 --- a/bigscreen/groupscreen.h +++ b/bigscreen/groupscreen.h @@ -22,6 +22,7 @@ private: std::vector last_text; void draw_main_heading(std::vector &td); + void draw_column_headings(std::vector &td, const Group &group, const std::vector &colwidth); void find_column_widths(const Group &group, std::vector &colwidth); public: