| 211 | } |
| 212 | |
| 213 | int CivilianBAIState::selectNearestTarget() |
| 214 | { |
| 215 | int tally = 0; |
| 216 | int closest = 100; |
| 217 | _aggroTarget = 0; |
| 218 | Position origin = _save->getTileEngine()->getSightOriginVoxel(_unit); |
| 219 | origin.z -= 4; |
| 220 | Position target; |
| 221 | for (std::vector<BattleUnit*>::const_iterator i = _save->getUnits()->begin(); i != _save->getUnits()->end(); ++i) |
| 222 | { |
| 223 | if (!(*i)->isOut() && (*i)->getFaction() == FACTION_HOSTILE) |
| 224 | { |
| 225 | if (_save->getTileEngine()->visible(_unit, (*i)->getTile())) |
| 226 | { |
| 227 | tally++; |
| 228 | int dist = _save->getTileEngine()->distance(_unit->getPosition(), (*i)->getPosition()); |
| 229 | if (dist < closest) |
| 230 | { |
| 231 | bool valid = _save->getTileEngine()->canTargetUnit(&origin, (*i)->getTile(), &target, _unit); |
| 232 | if (valid) |
| 233 | { |
| 234 | closest = dist; |
| 235 | _aggroTarget = *i; |
| 236 | } |
| 237 | } |
| 238 | } |
| 239 | } |
| 240 | } |
| 241 | if (_aggroTarget) |
| 242 | return tally; |
| 243 | |
| 244 | return 0; |
| 245 | } |
| 246 | |
| 247 | int CivilianBAIState::getSpottingUnits(Position pos) const |
| 248 | { |
nothing calls this directly
no test coverage detected