MCPcopy Create free account
hub / github.com/XorTroll/Goldleaf / StartDump

Method StartDump

Goldleaf/source/ui/ui_AmiiboDumpLayout.cpp:49–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 }

Callers 1

amiibo_DefaultKeyMethod · 0.80

Calls 15

IsReadyFunction · 0.85
OpenFunction · 0.85
GetAmiiboDataFunction · 0.85
GetCurrentDateFunction · 0.85
ShowKeyboardFunction · 0.85
CloseFunction · 0.85
GetLaunchModeFunction · 0.85
HandleResultFunction · 0.85
ExportAsVirtualAmiiboFunction · 0.85
DisplayDialogMethod · 0.80
ShowNotificationMethod · 0.80

Tested by

no test coverage detected