* Completes the transfer between bases. */
| 242 | * Completes the transfer between bases. |
| 243 | */ |
| 244 | void TransferItemsState::completeTransfer() |
| 245 | { |
| 246 | int time = (int)floor(6 + _distance / 10.0); |
| 247 | _game->getSavedGame()->setFunds(_game->getSavedGame()->getFunds() - _total); |
| 248 | for (size_t i = 0; i < _transferQty.size(); ++i) |
| 249 | { |
| 250 | if (_transferQty[i] > 0) |
| 251 | { |
| 252 | // Transfer soldiers |
| 253 | if (i < _soldiers.size()) |
| 254 | { |
| 255 | for (std::vector<Soldier*>::iterator s = _baseFrom->getSoldiers()->begin(); s != _baseFrom->getSoldiers()->end(); ++s) |
| 256 | { |
| 257 | if (*s == _soldiers[i]) |
| 258 | { |
| 259 | if((*s)->isInPsiTraining()) |
| 260 | { |
| 261 | (*s)->setPsiTraining(); |
| 262 | } |
| 263 | Transfer *t = new Transfer(time); |
| 264 | t->setSoldier(*s); |
| 265 | _baseTo->getTransfers()->push_back(t); |
| 266 | _baseFrom->getSoldiers()->erase(s); |
| 267 | break; |
| 268 | } |
| 269 | } |
| 270 | } |
| 271 | // Transfer crafts |
| 272 | else if (i >= _soldiers.size() && i < _soldiers.size() + _crafts.size()) |
| 273 | { |
| 274 | Craft *craft = _crafts[i - _soldiers.size()]; |
| 275 | |
| 276 | // Transfer soldiers inside craft |
| 277 | for (std::vector<Soldier*>::iterator s = _baseFrom->getSoldiers()->begin(); s != _baseFrom->getSoldiers()->end();) |
| 278 | { |
| 279 | if ((*s)->getCraft() == craft) |
| 280 | { |
| 281 | if ((*s)->isInPsiTraining()) (*s)->setPsiTraining(); |
| 282 | if (craft->getStatus() == "STR_OUT") _baseTo->getSoldiers()->push_back(*s); |
| 283 | else |
| 284 | { |
| 285 | Transfer *t = new Transfer(time); |
| 286 | t->setSoldier(*s); |
| 287 | _baseTo->getTransfers()->push_back(t); |
| 288 | } |
| 289 | s = _baseFrom->getSoldiers()->erase(s); |
| 290 | } |
| 291 | else |
| 292 | { |
| 293 | ++s; |
| 294 | } |
| 295 | } |
| 296 | |
| 297 | // Transfer craft |
| 298 | for (std::vector<Craft*>::iterator c = _baseFrom->getCrafts()->begin(); c != _baseFrom->getCrafts()->end(); ++c) |
| 299 | { |
| 300 | if (*c == craft) |
| 301 | { |
no test coverage detected