From 92fcc6d15a1bf2f3db4e8409bf751a5ec08fa32e Mon Sep 17 00:00:00 2001 From: David Marcec Date: Wed, 7 Nov 2018 11:45:01 +1100 Subject: Implement acc:TrySelectUserWithoutInteraction Needed for Shantae - Half-Genie Hero - Ultimate Edition! --- src/core/hle/service/acc/acc.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/core/hle/service/acc/acc.cpp') diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index c6437a671..870410476 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -242,6 +242,27 @@ void Module::Interface::GetBaasAccountManagerForApplication(Kernel::HLERequestCo LOG_DEBUG(Service_ACC, "called"); } +void Module::Interface::TrySelectUserWithoutInteraction(Kernel::HLERequestContext& ctx) { + // A u8 is passed into this function which we can safely ignore. It's to determain if we have + // access to use the network or not by the looks of it + IPC::ResponseBuilder rb{ctx, 6}; + if (profile_manager->GetUserCount() != 1) { + rb.Push(RESULT_SUCCESS); + rb.PushRaw(INVALID_UUID); + return; + } + auto user_list = profile_manager->GetAllUsers(); + if (user_list.empty()) { + rb.Push(ResultCode(-1)); // TODO(ogniK): Find the correct error code + rb.PushRaw(INVALID_UUID); + return; + } + + // Select the first user we have + rb.Push(RESULT_SUCCESS); + rb.PushRaw(profile_manager->GetUser(0)->uuid); +} + Module::Interface::Interface(std::shared_ptr module, std::shared_ptr profile_manager, const char* name) : ServiceFramework(name), module(std::move(module)), -- cgit v1.2.3