]> git.sesse.net Git - pkanalytics/blobdiff - events.cpp
Make SHOULD_PULL into an enum.
[pkanalytics] / events.cpp
index 0e3a62def6ffaa0248bfc24f4af79d254c9caf62..2fca843ad3f904284afa4c9b79b7205366eb6f0b 100644 (file)
@@ -230,17 +230,16 @@ EventsModel::Status EventsModel::get_status_at(uint64_t t)
        Status s;
        s.our_score = 0;
        s.their_score = 0;
-       s.offense = false;
-       s.defense = false;
+       s.attack_state = Status::NOT_STARTED;
        s.stoppage = false;
-       s.should_pull = true;
+       s.pull_state = Status::SHOULD_PULL;
        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.offense = true; s.defense = false; };
-       auto set_defense = [&s] { s.offense = false; s.defense = true; };
+       auto set_offense = [&s] { s.attack_state = Status::OFFENSE; };
+       auto set_defense = [&s] { s.attack_state = Status::DEFENSE; };
 
        for (const Event &e : events) {
                if (e.t > t) {
@@ -248,11 +247,11 @@ EventsModel::Status EventsModel::get_status_at(uint64_t t)
                }
 
                if (e.type == "goal" || e.type == "their_goal") {
-                       s.should_pull = true;
+                       s.pull_state = Status::SHOULD_PULL;
                } else if (e.type == "in" || e.type == "out" || e.type == "stoppage" || e.type == "restart" || e.type == "unknown") {
                        // No effect on pull status.
                } else {
-                       s.should_pull = false;
+                       s.pull_state = Status::NOT_PULLING;
                }
 
                if (e.type == "set_offense") {
@@ -310,8 +309,8 @@ EventsModel::Status EventsModel::get_status_at(uint64_t t)
        }
 
        s.num_passes = (num_touches == 0) ? 0 : num_touches - 1;
-       s.possession_sec = (s.offense && last_gained_possession != 0 && num_touches != 0) ? (t - last_gained_possession - time_spent_in_stoppage) / 1000 : 0;
-       s.stoppage_sec = (s.offense && last_gained_possession != 0 && num_touches != 0) ? time_spent_in_stoppage / 1000 : 0;
+       s.possession_sec = (s.attack_state == Status::OFFENSE && last_gained_possession != 0 && num_touches != 0) ? (t - last_gained_possession - time_spent_in_stoppage) / 1000 : 0;
+       s.stoppage_sec = (s.attack_state == Status::OFFENSE && last_gained_possession != 0 && num_touches != 0) ? time_spent_in_stoppage / 1000 : 0;
        return s;
 }