#ifndef _GROUPSCREEN_H
#define _GROUPSCREEN_H 1
+#include <vector>
#include <pqxx/connection>
#include <time.h>
#include <sys/time.h>
#include "screen.h"
#include "flagtrigger.h"
#include "group.h"
+#include "fonts.h"
/* A screen class showing a group in the tournament */
class GroupScreen : public GenericScreen {
private:
- unsigned tournament, round, parallel;
+ unsigned tournament, round, parallel, machine, num_machines, players_per_machine;
FlagTrigger scores_changed;
pqxx::connection &conn;
bool valid;
struct timeval last_updated;
+ std::vector<TextDefer> last_text;
+ unsigned get_show_players(const Group &group);
+ 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 draw_scores(std::vector<TextDefer> &td, const Group &group, unsigned min_player, const std::vector<unsigned> &colwidth);
+ const Player *get_next_player(const Group &group);
+ void draw_next_up_player(unsigned char *buf, const Group &group, const Player &player, const Score &song, bool last_song,
+ std::map<unsigned, unsigned> &song_scores, std::map<unsigned, unsigned> &player_scores,
+ const std::vector<unsigned> &max_score, const std::vector<unsigned> &min_score);
+ void draw_next_up_single(unsigned char *buf, const Group &group,
+ std::map<unsigned, unsigned> &song_scores, std::map<unsigned, unsigned> &player_scores,
+ const std::vector<unsigned> &max_score, const std::vector<unsigned> &min_score);
+ void draw_next_up_versus(unsigned char *buf, const Group &group,
+ std::map<unsigned, unsigned> &song_scores, std::map<unsigned, unsigned> &player_scores,
+ const std::vector<unsigned> &max_score, const std::vector<unsigned> &min_score);
+ void find_column_widths(const Group &group, std::vector<unsigned> &colwidth);
+
public:
- GroupScreen(pqxx::connection &conn, unsigned tournament, unsigned round, unsigned parallel);
+ // the last two parameters should probably not be there, but fetched from GroupScreen itself
+ GroupScreen(pqxx::connection &conn, unsigned tournament, unsigned round, unsigned parallel, unsigned machine, unsigned num_machines, unsigned players_per_machine);
virtual ~GroupScreen();
bool check_invalidated();
- void draw(unsigned char *buf);
+ void draw(unsigned char *buf, unsigned width, unsigned height);
+ int get_priority();
};
#endif /* !defined(_GROUPSCREEN_H) */