s.their_score = 0;
s.offense = true;
s.stoppage = false;
+ s.should_pull = true;
uint64_t last_gained_possession = 0;
uint64_t last_stoppage = 0;
uint64_t time_spent_in_stoppage = 0;
if (e.t > t) {
break;
}
+
+ if (e.type == "goal" || e.type == "their_goal") {
+ s.should_pull = true;
+ } 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;
+ }
+
if (e.type == "goal") {
++s.our_score;
s.offense = false;
ui->offensive_soft_minus->setEnabled(s.offense && has_selection_with_player);
// TODO: be stricter
- ui->pull->setEnabled(s.offense && has_selection_with_player);
- ui->pull_landed->setEnabled(s.offense && has_selection_with_player);
+ ui->pull->setEnabled(!s.offense && s.should_pull && has_selection_with_player);
+ ui->pull_landed->setEnabled(!s.offense && has_selection_with_player);
ui->interception->setEnabled(!s.offense && has_selection_with_player);
ui->their_throwaway->setEnabled(!s.offense);
ui->their_goal->setEnabled(!s.offense);
ui->defensive_soft_plus->setEnabled(!s.offense && has_selection_with_player);
ui->defensive_soft_minus->setEnabled(!s.offense && has_selection_with_player);
- ui->their_pull->setEnabled(!s.offense);
+ ui->their_pull->setEnabled(s.offense && s.should_pull);
ui->our_foul->setEnabled(!s.offense && has_selection_with_player);
}