s.our_score = 0;
s.their_score = 0;
s.attack_state = Status::NOT_STARTED;
+ s.offensive_formation = 0;
+ s.defensive_formation = 0;
s.stoppage = false;
s.pull_state = Status::SHOULD_PULL;
uint64_t last_gained_possession = 0;
last_stoppage = 0;
}
}
+ if (e.type == "formation_offense") {
+ if (e.formation_id) {
+ s.offensive_formation = *e.formation_id;
+ } else {
+ s.offensive_formation = 0;
+ }
+ }
+ if (e.type == "formation_defense") {
+ if (e.formation_id) {
+ s.defensive_formation = *e.formation_id;
+ } else {
+ s.defensive_formation = 0;
+ }
+ }
}
if (s.stoppage && last_stoppage != 0) {
time_spent_in_stoppage += (t - last_stoppage);
void EventsModel::set_formation_at(uint64_t t, bool offense, unsigned formation)
{
- // If there's another goal/stoppage no more than 20 seconds ago,
+ // If there's another goal/stoppage/turnover no more than 20 seconds ago,
// we assume that the formation started at that point (it just took
// the operator a bit of time to see it). If not, we assume we
// changed in the middle of a point.
if (e.t > t) {
break;
}
- if (e.type == "goal" || e.type == "their_goal" || e.type == "stoppage" || e.type == "reset" || e.type == "set_offense" || e.type == "set_defense" || e.type == "in" || e.type == "out" || e.type == "pull" || e.type == "their_pull") {
+ if (e.type == "goal" || e.type == "their_goal" ||
+ e.type == "in" || e.type == "out" ||
+ e.type == "stoppage" || e.type == "reset" ||
+ e.type == "set_defense" || e.type == "set_offense" ||
+ e.type == "throwaway" || e.type == "their_throwaway" ||
+ e.type == "drop" || e.type == "defense" || e.type == "interception" ||
+ e.type == "pull" || e.type == "pull_landed" || e.type == "pull_oob" || e.type == "their_pull" ||
+ e.type == "formation_offense" || e.type == "formation_defense") {
backdate_point = e.t + 1;
}
if (e.type == "formation_offense" || e.type == "formation_defense") {