summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am/applets/applet_mii_edit.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-12-31 15:40:32 +0100
committerLiam <byteslice@airmail.cc>2024-01-30 00:43:45 +0100
commitdfb9fa0144ca79e596f6f2b1bc960b1a44745aa6 (patch)
treeb90633109392383feaa8420e984c40c9a1799903 /src/core/hle/service/am/applets/applet_mii_edit.cpp
parentam: add new datatypes for per-applet state (diff)
downloadyuzu-dfb9fa0144ca79e596f6f2b1bc960b1a44745aa6.tar
yuzu-dfb9fa0144ca79e596f6f2b1bc960b1a44745aa6.tar.gz
yuzu-dfb9fa0144ca79e596f6f2b1bc960b1a44745aa6.tar.bz2
yuzu-dfb9fa0144ca79e596f6f2b1bc960b1a44745aa6.tar.lz
yuzu-dfb9fa0144ca79e596f6f2b1bc960b1a44745aa6.tar.xz
yuzu-dfb9fa0144ca79e596f6f2b1bc960b1a44745aa6.tar.zst
yuzu-dfb9fa0144ca79e596f6f2b1bc960b1a44745aa6.zip
Diffstat (limited to 'src/core/hle/service/am/applets/applet_mii_edit.cpp')
-rw-r--r--src/core/hle/service/am/applets/applet_mii_edit.cpp181
1 files changed, 0 insertions, 181 deletions
diff --git a/src/core/hle/service/am/applets/applet_mii_edit.cpp b/src/core/hle/service/am/applets/applet_mii_edit.cpp
deleted file mode 100644
index 1576b45c4..000000000
--- a/src/core/hle/service/am/applets/applet_mii_edit.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "common/assert.h"
-#include "common/logging/log.h"
-#include "core/core.h"
-#include "core/frontend/applets/mii_edit.h"
-#include "core/hle/service/am/am.h"
-#include "core/hle/service/am/applets/applet_mii_edit.h"
-#include "core/hle/service/am/storage.h"
-#include "core/hle/service/mii/mii.h"
-#include "core/hle/service/mii/mii_manager.h"
-#include "core/hle/service/sm/sm.h"
-
-namespace Service::AM::Applets {
-
-MiiEdit::MiiEdit(Core::System& system_, LibraryAppletMode applet_mode_,
- const Core::Frontend::MiiEditApplet& frontend_)
- : Applet{system_, applet_mode_}, frontend{frontend_}, system{system_} {}
-
-MiiEdit::~MiiEdit() = default;
-
-void MiiEdit::Initialize() {
- // Note: MiiEdit is not initialized with common arguments.
- // Instead, it is initialized by an AppletInput storage with size 0x100 bytes.
- // Do NOT call Applet::Initialize() here.
-
- const auto storage = broker.PopNormalDataToApplet();
- ASSERT(storage != nullptr);
-
- const auto applet_input_data = storage->GetData();
- ASSERT(applet_input_data.size() >= sizeof(MiiEditAppletInputCommon));
-
- std::memcpy(&applet_input_common, applet_input_data.data(), sizeof(MiiEditAppletInputCommon));
-
- LOG_INFO(Service_AM,
- "Initializing MiiEdit Applet with MiiEditAppletVersion={} and MiiEditAppletMode={}",
- applet_input_common.version, applet_input_common.applet_mode);
-
- switch (applet_input_common.version) {
- case MiiEditAppletVersion::Version3:
- ASSERT(applet_input_data.size() ==
- sizeof(MiiEditAppletInputCommon) + sizeof(MiiEditAppletInputV3));
- std::memcpy(&applet_input_v3, applet_input_data.data() + sizeof(MiiEditAppletInputCommon),
- sizeof(MiiEditAppletInputV3));
- break;
- case MiiEditAppletVersion::Version4:
- ASSERT(applet_input_data.size() ==
- sizeof(MiiEditAppletInputCommon) + sizeof(MiiEditAppletInputV4));
- std::memcpy(&applet_input_v4, applet_input_data.data() + sizeof(MiiEditAppletInputCommon),
- sizeof(MiiEditAppletInputV4));
- break;
- default:
- UNIMPLEMENTED_MSG("Unknown MiiEditAppletVersion={} with size={}",
- applet_input_common.version, applet_input_data.size());
- ASSERT(applet_input_data.size() >=
- sizeof(MiiEditAppletInputCommon) + sizeof(MiiEditAppletInputV4));
- std::memcpy(&applet_input_v4, applet_input_data.data() + sizeof(MiiEditAppletInputCommon),
- sizeof(MiiEditAppletInputV4));
- break;
- }
-
- manager = system.ServiceManager().GetService<Mii::IStaticService>("mii:e")->GetMiiManager();
- if (manager == nullptr) {
- manager = std::make_shared<Mii::MiiManager>();
- }
- manager->Initialize(metadata);
-}
-
-bool MiiEdit::TransactionComplete() const {
- return is_complete;
-}
-
-Result MiiEdit::GetStatus() const {
- return ResultSuccess;
-}
-
-void MiiEdit::ExecuteInteractive() {
- ASSERT_MSG(false, "Attempted to call interactive execution on non-interactive applet.");
-}
-
-void MiiEdit::Execute() {
- if (is_complete) {
- return;
- }
-
- // This is a default stub for each of the MiiEdit applet modes.
- switch (applet_input_common.applet_mode) {
- case MiiEditAppletMode::ShowMiiEdit:
- case MiiEditAppletMode::AppendMiiImage:
- case MiiEditAppletMode::UpdateMiiImage:
- MiiEditOutput(MiiEditResult::Success, 0);
- break;
- case MiiEditAppletMode::AppendMii: {
- Mii::StoreData store_data{};
- store_data.BuildRandom(Mii::Age::All, Mii::Gender::All, Mii::Race::All);
- store_data.SetNickname({u'y', u'u', u'z', u'u'});
- store_data.SetChecksum();
- const auto result = manager->AddOrReplace(metadata, store_data);
-
- if (result.IsError()) {
- MiiEditOutput(MiiEditResult::Cancel, 0);
- break;
- }
-
- s32 index = manager->FindIndex(store_data.GetCreateId(), false);
-
- if (index == -1) {
- MiiEditOutput(MiiEditResult::Cancel, 0);
- break;
- }
-
- MiiEditOutput(MiiEditResult::Success, index);
- break;
- }
- case MiiEditAppletMode::CreateMii: {
- Mii::CharInfo char_info{};
- manager->BuildRandom(char_info, Mii::Age::All, Mii::Gender::All, Mii::Race::All);
-
- const MiiEditCharInfo edit_char_info{
- .mii_info{char_info},
- };
-
- MiiEditOutputForCharInfoEditing(MiiEditResult::Success, edit_char_info);
- break;
- }
- case MiiEditAppletMode::EditMii: {
- const MiiEditCharInfo edit_char_info{
- .mii_info{applet_input_v4.char_info.mii_info},
- };
-
- MiiEditOutputForCharInfoEditing(MiiEditResult::Success, edit_char_info);
- break;
- }
- default:
- UNIMPLEMENTED_MSG("Unknown MiiEditAppletMode={}", applet_input_common.applet_mode);
-
- MiiEditOutput(MiiEditResult::Success, 0);
- break;
- }
-}
-
-void MiiEdit::MiiEditOutput(MiiEditResult result, s32 index) {
- const MiiEditAppletOutput applet_output{
- .result{result},
- .index{index},
- };
-
- LOG_INFO(Input, "called, result={}, index={}", result, index);
-
- std::vector<u8> out_data(sizeof(MiiEditAppletOutput));
- std::memcpy(out_data.data(), &applet_output, sizeof(MiiEditAppletOutput));
-
- is_complete = true;
-
- broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(out_data)));
- broker.SignalStateChanged();
-}
-
-void MiiEdit::MiiEditOutputForCharInfoEditing(MiiEditResult result,
- const MiiEditCharInfo& char_info) {
- const MiiEditAppletOutputForCharInfoEditing applet_output{
- .result{result},
- .char_info{char_info},
- };
-
- std::vector<u8> out_data(sizeof(MiiEditAppletOutputForCharInfoEditing));
- std::memcpy(out_data.data(), &applet_output, sizeof(MiiEditAppletOutputForCharInfoEditing));
-
- is_complete = true;
-
- broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(out_data)));
- broker.SignalStateChanged();
-}
-
-Result MiiEdit::RequestExit() {
- frontend.Close();
- R_SUCCEED();
-}
-
-} // namespace Service::AM::Applets