MCPcopy Create free account
hub / github.com/FlagBrew/PKSM / swapBoxWithStorage

Method swapBoxWithStorage

3ds/source/gui/screen/StorageScreen.cpp:1643–1720  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1641}
1642
1643bool StorageScreen::swapBoxWithStorage()
1644{
1645 u8 maxPkmInBox = (TitleLoader::save->generation() <= pksm::Generation::TWO &&
1646 TitleLoader::save->language() != pksm::Language::JPN)
1647 ? 20
1648 : 30;
1649
1650 std::vector<int> unswappedPkm;
1651 bool acceptGenChange = Configuration::getInstance().transferEdit();
1652 bool checkedWithUser = Configuration::getInstance().transferEdit();
1653 for (int i = 0; i < maxPkmInBox; i++)
1654 {
1655 if (boxBox * maxPkmInBox + i >= TitleLoader::save->maxSlot())
1656 {
1657 break;
1658 }
1659 std::unique_ptr<pksm::PKX> temPkm = Banks::bank->pkm(storageBox, i);
1660 if (temPkm->species() == pksm::Species::None)
1661 {
1662 temPkm = TitleLoader::save->emptyPkm();
1663 }
1664 if (!checkedWithUser && temPkm->generation() != TitleLoader::save->generation())
1665 {
1666 checkedWithUser = true;
1667 acceptGenChange = Gui::showChoiceMessage(
1668 i18n::localize("GEN_CHANGE_1") + '\n' + i18n::localize("GEN_CHANGE_2"));
1669 }
1670 if (acceptGenChange || temPkm->generation() == TitleLoader::save->generation())
1671 {
1672 // Check for transfer path
1673 if (temPkm->species() == pksm::Species::None || isValidTransfer(*temPkm, true))
1674 {
1675 temPkm = TitleLoader::save->transfer(*temPkm);
1676 if (temPkm)
1677 {
1678 std::unique_ptr<pksm::PKX> otherTemPkm = TitleLoader::save->pkm(boxBox, i);
1679 TitleLoader::save->pkm(
1680 *temPkm, boxBox, i, Configuration::getInstance().transferEdit());
1681 TitleLoader::save->dex(*temPkm);
1682 Banks::bank->pkm(*otherTemPkm, storageBox, i);
1683 }
1684 else
1685 {
1686 unswappedPkm.push_back(i + 1);
1687 }
1688 }
1689 else
1690 {
1691 unswappedPkm.push_back(i + 1);
1692 }
1693 }
1694 else
1695 {
1696 unswappedPkm.push_back(i + 1);
1697 }
1698 }
1699 if (!acceptGenChange && !unswappedPkm.empty())
1700 {

Callers 1

StorageScreenMethod · 0.95

Calls 6

to_stringFunction · 0.85
generationMethod · 0.80
languageMethod · 0.80
transferEditMethod · 0.80
pkmMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected