MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / completeTransfer

Method completeTransfer

src/Basescape/TransferItemsState.cpp:244–365  ·  view source on GitHub ↗

* Completes the transfer between bases. */

Source from the content-addressed store, hash-verified

242 * Completes the transfer between bases.
243 */
244void 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 {

Callers 1

btnOkClickMethod · 0.80

Calls 15

setFundsMethod · 0.80
getSavedGameMethod · 0.80
getFundsMethod · 0.80
isInPsiTrainingMethod · 0.80
setPsiTrainingMethod · 0.80
setSoldierMethod · 0.80
getTransfersMethod · 0.80
getDestinationMethod · 0.80
getBaseMethod · 0.80
setBaseOnlyMethod · 0.80
getFuelLimitMethod · 0.80
setLowFuelMethod · 0.80

Tested by

no test coverage detected