]> git.sesse.net Git - pkanalytics/blobdiff - events.h
Add the beginnings of formation support.
[pkanalytics] / events.h
index caf832ac26ca0180364d8e899dba453beb909c00..545437b16d9f181c998cf707e99307b7c849b87f 100644 (file)
--- a/events.h
+++ b/events.h
@@ -25,7 +25,7 @@ public:
        QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
        QVariant data(const QModelIndex &index, int role) const override;
 
-       unsigned insert_event(uint64_t t, std::optional<int> player_id, const std::string &type = "unknown");  // Returns the row.
+       unsigned insert_event(uint64_t t, std::optional<int> player_id, std::optional<int> formation_id, const std::string &type = "unknown");  // Returns the row.
        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; }
@@ -48,6 +48,7 @@ public:
        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.
+       void set_formation_at(uint64_t t, bool offense, unsigned formation);
 
 private:
        struct Player {
@@ -58,10 +59,17 @@ private:
        std::map<int, Player> players;
        std::map<int, int> player_ordering;  // From id to position.
 
+       struct Formation {
+               int formation_id;
+               std::string name;
+       };
+       std::map<int, Formation> formations;
+
        struct Event {
                int event_id;
                uint64_t t;
                std::optional<int> player_id;
+               std::optional<int> formation_id;
                std::string type;
        };
        std::vector<Event> events;