| 199 | }; |
| 200 | |
| 201 | void Flee(AIGroupContext* context) |
| 202 | { |
| 203 | AIGroup* group = context->_group; |
| 204 | AI_ERROR(group); |
| 205 | |
| 206 | // reset radio messages to be able to react quickly |
| 207 | group->GetRadio().CancelAllMessages(); |
| 208 | // reset all commands, join all subgroups |
| 209 | for (int i = 0; i < group->NSubgroups();) |
| 210 | { |
| 211 | AISubgroup* subgrp = group->GetSubgroup(i); |
| 212 | AI_ERROR(subgrp); // RefArray |
| 213 | if (subgrp == group->MainSubgroup()) |
| 214 | { |
| 215 | subgrp->ClearAllCommands(); |
| 216 | i++; |
| 217 | } |
| 218 | else |
| 219 | { |
| 220 | int nSubgroups = group->NSubgroups(); |
| 221 | subgrp->JoinToSubgroup(group->MainSubgroup()); |
| 222 | if (group->NSubgroups() >= nSubgroups) |
| 223 | { |
| 224 | Fail("Subgroup not joined"); |
| 225 | i++; |
| 226 | } |
| 227 | } |
| 228 | } |
| 229 | |
| 230 | context->_fsm->SetState(SArcadeFlee, context); |
| 231 | } |
| 232 | |
| 233 | void Unflee(AIGroupContext* context) |
| 234 | { |
no test coverage detected