]> git.sesse.net Git - pkanalytics/blobdiff - events.cpp
Make the throwaway behavior more sane.
[pkanalytics] / events.cpp
index 4fd7ff6321ea5050a08e6721adf99d033fe45bb5..1dd7ca1f449dc1a181d0583c850bb34441ef489a 100644 (file)
@@ -471,13 +471,14 @@ EventsModel::Status EventsModel::get_status_at(uint64_t t)
        s.defensive_formation = 0;
        s.stoppage = false;
        s.pull_state = Status::SHOULD_PULL;
+       s.last_catching_player = -1;
        uint64_t last_gained_possession = 0;
        uint64_t last_stoppage = 0;
        uint64_t time_spent_in_stoppage = 0;
        unsigned num_touches = 0;
 
-       auto set_offense = [&s] { s.attack_state = Status::OFFENSE; };
-       auto set_defense = [&s] { s.attack_state = Status::DEFENSE; };
+       auto set_offense = [&s] { s.attack_state = Status::OFFENSE; s.last_catching_player = -1; };
+       auto set_defense = [&s] { s.attack_state = Status::DEFENSE; s.last_catching_player = -1; };
 
        for (const Event &e : events) {
                if (e.t > t) {
@@ -490,6 +491,7 @@ EventsModel::Status EventsModel::get_status_at(uint64_t t)
                        // No effect on pull status.
                } else if (e.type == EventType::PULL) {
                        s.pull_state = Status::PULL_IN_AIR;
+                       s.last_catching_player = -1;  // Just to be sure.
                } else {
                        s.pull_state = Status::NOT_PULLING;  // Includes pull_landed and pull_oob.
                }
@@ -516,10 +518,12 @@ EventsModel::Status EventsModel::get_status_at(uint64_t t)
                                time_spent_in_stoppage = 0;
                        }
                        ++num_touches;
+                       s.last_catching_player = *e.player_id;
                }
                if (e.type == EventType::INTERCEPTION) {
                        num_touches = 1;
                        set_offense();
+                       s.last_catching_player = *e.player_id;
                        last_gained_possession = e.t;
                        time_spent_in_stoppage = 0;
                }