]> git.sesse.net Git - pkanalytics/blobdiff - events.h
Make it possible to sub (in/out events only, no real effect).
[pkanalytics] / events.h
index e86d02bf0b1273bc11d05ebd252d5f6b641ef862..946ebb543b2dc7db95a6bb4461f1df3c35cdd205 100644 (file)
--- a/events.h
+++ b/events.h
@@ -7,15 +7,15 @@
 #include <map>
 #include <vector>
 #include <optional>
+#include <set>
 
 class EventsModel : public QAbstractTableModel
 {
 public:
-       EventsModel(sqlite3 *db) : db(db) {}
+       EventsModel(sqlite3 *db);
 
        int rowCount(const QModelIndex &parent) const override
        {
-               refresh_if_needed();
                return events.size();
        }
        int columnCount(const QModelIndex &column) const override
@@ -25,8 +25,19 @@ public:
        QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
        QVariant data(const QModelIndex &index, int role) const override;
 
-       int insert_event(uint64_t t, int player_id);
+       unsigned insert_event(uint64_t t, int player_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; }
+
+       struct Status {
+               unsigned our_score, their_score;
+               bool offense;
+               unsigned num_passes;
+               unsigned possession_sec;
+       };
+       Status get_status_at(uint64_t t);
+       std::set<int> get_team_at(uint64_t t);
 
 private:
        struct Player {
@@ -34,19 +45,19 @@ private:
                std::string number;
                std::string name;
        };
-       mutable std::map<int, Player> players;
+       std::map<int, Player> players;
 
        struct Event {
+               int event_id;
                uint64_t t;
                std::optional<int> player_id;
                std::string type;
        };
-       mutable std::vector<Event> events;
-       mutable bool stale = true;
+       std::vector<Event> events;
 
        sqlite3 *db;
 
-       void refresh_if_needed() const;
+       void load_data();
 };
 
 #endif  // !defined(_EVENTS_H)