]> git.sesse.net Git - pkanalytics/blobdiff - events.h
Add a filler SVG to make things line up.
[pkanalytics] / events.h
index 00c5f1d97f52556ae186cd38fd54d46a61687ef5..caf832ac26ca0180364d8e899dba453beb909c00 100644 (file)
--- a/events.h
+++ b/events.h
@@ -12,7 +12,7 @@
 class EventsModel : public QAbstractTableModel
 {
 public:
-       EventsModel(sqlite3 *db);
+       EventsModel(sqlite3 *db, int match_id);
 
        int rowCount(const QModelIndex &parent) const override
        {
@@ -29,13 +29,17 @@ public:
        void delete_event(unsigned row);
        void set_event_type(unsigned row, const std::string &type);
        uint64_t get_time(unsigned row) { return events[row].t; }
+       unsigned get_last_event_pos(uint64_t t) const;  // Last event that happened at or before t.
+       QModelIndex get_last_event_qt(uint64_t t) const {
+               return createIndex(get_last_event_pos(t), 0);
+       }
        std::optional<int> get_player_id(unsigned row) { return events[row].player_id; }
 
        struct Status {
                unsigned our_score, their_score;
                enum { NOT_STARTED, OFFENSE, DEFENSE } attack_state;
                bool stoppage;
-               bool should_pull;
+               enum { NOT_PULLING, SHOULD_PULL, PULL_IN_AIR } pull_state;
                unsigned num_passes;
                unsigned possession_sec;
                unsigned stoppage_sec;
@@ -43,6 +47,7 @@ public:
        Status get_status_at(uint64_t t);
        std::set<int> get_team_at(uint64_t t);
        void set_team_at(uint64_t, const std::set<int> &new_team);
+       std::vector<int> sort_team(const std::set<int> &team) const;  // Ordered first by gender, then by number.
 
 private:
        struct Player {
@@ -51,6 +56,7 @@ private:
                std::string name;
        };
        std::map<int, Player> players;
+       std::map<int, int> player_ordering;  // From id to position.
 
        struct Event {
                int event_id;
@@ -61,6 +67,7 @@ private:
        std::vector<Event> events;
 
        sqlite3 *db;
+       int match_id;
 
        void load_data();
 };