| 47 | } |
| 48 | |
| 49 | void AmiiboDumpLayout::StartDump() { |
| 50 | g_MainApplication->LoadCommonIconMenuData(true, cfg::Strings.GetString(283), CommonIconKind::Amiibo, cfg::Strings.GetString(301)); |
| 51 | |
| 52 | this->info_text->SetText(cfg::Strings.GetString(294)); |
| 53 | auto rc = nfp::Initialize(); |
| 54 | if(R_SUCCEEDED(rc)) { |
| 55 | this->info_text->SetText(cfg::Strings.GetString(295)); |
| 56 | // TODO: improve this logic somehow, currently causes a blocking wait if Goldleaf is exited after pressing back here |
| 57 | while(!nfp::IsReady()) { |
| 58 | g_MainApplication->CallForRender(); |
| 59 | } |
| 60 | rc = nfp::Open(); |
| 61 | if(R_SUCCEEDED(rc)) { |
| 62 | nfp::AmiiboData data; |
| 63 | bool has_register_info; |
| 64 | rc = nfp::GetAmiiboData(data, has_register_info); |
| 65 | if(R_SUCCEEDED(rc)) { |
| 66 | if(!has_register_info) { |
| 67 | const auto option = g_MainApplication->DisplayDialog(cfg::Strings.GetString(283), cfg::Strings.GetString(531), { cfg::Strings.GetString(111), cfg::Strings.GetString(112) }, true); |
| 68 | if(option == 0) { |
| 69 | data.register_info.first_write_date = hos::GetCurrentDate(); |
| 70 | data.register_info.font_region = 0; // Default to NTSC-U |
| 71 | const auto amiibo_name = ShowKeyboard(cfg::Strings.GetString(532), "", 10, 100); |
| 72 | if(amiibo_name.empty()) { |
| 73 | g_MainApplication->ShowNotification(cfg::Strings.GetString(533)); |
| 74 | nfp::Close(); |
| 75 | nfp::Exit(); |
| 76 | g_MainApplication->ReturnToParentLayout(); |
| 77 | return; |
| 78 | } |
| 79 | strncpy(data.register_info.amiibo_name, amiibo_name.c_str(), sizeof(data.register_info.amiibo_name) - 1); |
| 80 | |
| 81 | if(GetLaunchMode() != LaunchMode::Application) { |
| 82 | g_MainApplication->ShowNotification(cfg::Strings.GetString(534)); |
| 83 | nfp::Close(); |
| 84 | nfp::Exit(); |
| 85 | g_MainApplication->ReturnToParentLayout(); |
| 86 | return; |
| 87 | } |
| 88 | |
| 89 | rc = miiLaCreateMii(MiiSpecialKeyCode_Normal, &data.register_info.mii); |
| 90 | if(R_FAILED(rc)) { |
| 91 | HandleResult(rc, cfg::Strings.GetString(535)); |
| 92 | nfp::Close(); |
| 93 | nfp::Exit(); |
| 94 | g_MainApplication->ReturnToParentLayout(); |
| 95 | return; |
| 96 | } |
| 97 | } |
| 98 | } |
| 99 | |
| 100 | const auto option = g_MainApplication->DisplayDialog(cfg::Strings.GetString(283), cfg::Strings.GetString(317) + " '" + data.register_info.amiibo_name + "'?", { cfg::Strings.GetString(111), cfg::Strings.GetString(112) }, true); |
| 101 | if(option == 0) { |
| 102 | this->info_text->SetText(cfg::Strings.GetString(296) + " '" + data.register_info.amiibo_name + "' " + cfg::Strings.GetString(297)); |
| 103 | const auto virtual_amiibo_folder = nfp::ExportAsVirtualAmiibo(data); |
| 104 | g_MainApplication->ShowNotification("'" + std::string(data.register_info.amiibo_name) + "' " + cfg::Strings.GetString(298) + " (" + virtual_amiibo_folder + ")"); |
| 105 | } |
| 106 | } |
no test coverage detected