#include <optional>
#include <set>
+enum class EventType {
+ CATCH,
+ DEFENSE,
+ DEFENSIVE_SOFT_MINUS,
+ DEFENSIVE_SOFT_PLUS,
+ FORMATION_DEFENSE,
+ FORMATION_OFFENSE,
+ DROP,
+ GOAL,
+ IN,
+ INTERCEPTION,
+ OFFENSIVE_SOFT_MINUS,
+ OFFENSIVE_SOFT_PLUS,
+ OUT,
+ PULL,
+ PULL_LANDED,
+ PULL_OOB,
+ RESTART,
+ SET_DEFENSE,
+ SET_OFFENSE,
+ STALLOUT,
+ STOPPAGE,
+ THEIR_GOAL,
+ THEIR_PULL,
+ THEIR_THROWAWAY,
+ THROWAWAY,
+ UNKNOWN,
+ WAS_D,
+};
+
class EventsModel : public QAbstractTableModel
{
public:
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);
+ EventType get_event_type(unsigned row) { return events[row].type; }
void set_event_type(unsigned row, const std::string &type);
+ void set_event_formation(unsigned row, int formation_id);
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 {
uint64_t t;
std::optional<int> player_id;
std::optional<int> formation_id;
- std::string type;
+ EventType type;
};
std::vector<Event> events;