@@ -13,6 +13,19 @@ BallPlacementPlayFSM::BallPlacementPlayFSM(
1313{
1414}
1515
16+ // Subtract b from a, or return 0 if b is larger than a
17+ static unsigned int subSat (unsigned int a, unsigned int b)
18+ {
19+ if (b > a)
20+ {
21+ return 0 ;
22+ }
23+ else
24+ {
25+ return a - b;
26+ }
27+ }
28+
1629void BallPlacementPlayFSM::alignWall (const Update &event)
1730{
1831 PriorityTacticVector tactics_to_run = {{align_wall_tactic}};
@@ -25,8 +38,8 @@ void BallPlacementPlayFSM::alignWall(const Update &event)
2538 TbotsProto::MaxAllowedSpeedMode::PHYSICAL_LIMIT ,
2639 TbotsProto::ObstacleAvoidanceMode::AGGRESSIVE );
2740
28- setupMoveTactics (event, event.common .num_tactics -
29- static_cast <unsigned int >(tactics_to_run[0 ].size ()));
41+ setupMoveTactics (event, subSat ( event.common .num_tactics ,
42+ static_cast <unsigned int >(tactics_to_run[0 ].size () )));
3043 tactics_to_run[0 ].insert (tactics_to_run[0 ].end (), move_tactics.begin (),
3144 move_tactics.end ());
3245
@@ -52,8 +65,8 @@ void BallPlacementPlayFSM::pickOffWall(const Update &event)
5265 TbotsProto::MaxAllowedSpeedMode::BALL_PLACEMENT_WALL_DRIBBLE ,
5366 TbotsProto::MaxAllowedSpeedMode::BALL_PLACEMENT_WALL_DRIBBLE );
5467
55- setupMoveTactics (event, event.common .num_tactics -
56- static_cast <unsigned int >(tactics_to_run[0 ].size ()));
68+ setupMoveTactics (event, subSat ( event.common .num_tactics ,
69+ static_cast <unsigned int >(tactics_to_run[0 ].size () )));
5770 tactics_to_run[0 ].insert (tactics_to_run[0 ].end (), move_tactics.begin (),
5871 move_tactics.end ());
5972
@@ -86,8 +99,8 @@ void BallPlacementPlayFSM::alignPlacement(const Update &event)
8699 tactics_to_run[0 ].push_back (align_placement_tactic);
87100 }
88101
89- setupMoveTactics (event, event.common .num_tactics -
90- static_cast <unsigned int >(tactics_to_run[0 ].size ()));
102+ setupMoveTactics (event, subSat ( event.common .num_tactics ,
103+ static_cast <unsigned int >(tactics_to_run[0 ].size () )));
91104 tactics_to_run[0 ].insert (tactics_to_run[0 ].end (), move_tactics.begin (),
92105 move_tactics.end ());
93106
@@ -135,8 +148,8 @@ void BallPlacementPlayFSM::placeBall(const Update &event)
135148 }
136149 }
137150
138- setupMoveTactics (event, event.common .num_tactics -
139- static_cast <unsigned int >(tactics_to_run[0 ].size ()));
151+ setupMoveTactics (event, subSat ( event.common .num_tactics ,
152+ static_cast <unsigned int >(tactics_to_run[0 ].size () )));
140153 tactics_to_run[0 ].insert (tactics_to_run[0 ].end (), move_tactics.begin (),
141154 move_tactics.end ());
142155
@@ -168,8 +181,8 @@ void BallPlacementPlayFSM::releaseBall(const Update &event)
168181 tactics_to_run[0 ].push_back (wait_tactic);
169182 }
170183
171- setupMoveTactics (event, event.common .num_tactics -
172- static_cast <unsigned int >(tactics_to_run[0 ].size ()));
184+ setupMoveTactics (event, subSat ( event.common .num_tactics ,
185+ static_cast <unsigned int >(tactics_to_run[0 ].size () )));
173186 tactics_to_run[0 ].insert (tactics_to_run[0 ].end (), move_tactics.begin (),
174187 move_tactics.end ());
175188
@@ -220,8 +233,8 @@ void BallPlacementPlayFSM::retreat(const Update &event)
220233 tactics_to_run[0 ].push_back (retreat_tactic);
221234 }
222235
223- setupMoveTactics (event, event.common .num_tactics -
224- static_cast <unsigned int >(tactics_to_run[0 ].size ()));
236+ setupMoveTactics (event, subSat ( event.common .num_tactics ,
237+ static_cast <unsigned int >(tactics_to_run[0 ].size () )));
225238 tactics_to_run[0 ].insert (tactics_to_run[0 ].end (), move_tactics.begin (),
226239 move_tactics.end ());
227240
0 commit comments