mirror of https://github.com/zeldaret/botw.git
ksys: Add Account
This commit is contained in:
parent
72d100323c
commit
89137d9834
|
@ -71165,14 +71165,14 @@
|
|||
0x0000007100d0d730,sub_7100D0D730,8,
|
||||
0x0000007100d0d738,_ZN2nn3nex20PseudoGlobalVariableINS0_38SecureConnectionServiceDDLDeclarationsEE13ResetContextsEv,140,
|
||||
0x0000007100d0d7c4,sub_7100D0D7C4,196,
|
||||
0x0000007100d0d888,sub_7100D0D888,100,
|
||||
0x0000007100d0d8ec,sub_7100D0D8EC,108,
|
||||
0x0000007100d0d958,Account::createInstance,156,
|
||||
0x0000007100d0d9f4,sub_7100D0D9F4,80,
|
||||
0x0000007100d0da44,sub_7100D0DA44,68,
|
||||
0x0000007100d0da88,Account::init,96,
|
||||
0x0000007100d0dae8,Account::__auto0,8,
|
||||
0x0000007100d0daf0,Account::getUserId,28,
|
||||
0x0000007100d0d888,sub_7100D0D888,100,_ZN4ksys7Account18SingletonDisposer_D2Ev
|
||||
0x0000007100d0d8ec,sub_7100D0D8EC,108,_ZN4ksys7Account18SingletonDisposer_D0Ev
|
||||
0x0000007100d0d958,Account::createInstance,156,_ZN4ksys7Account14createInstanceEPN4sead4HeapE
|
||||
0x0000007100d0d9f4,sub_7100D0D9F4,80,_ZN4ksys7AccountD1Ev
|
||||
0x0000007100d0da44,sub_7100D0DA44,68,_ZN4ksys7AccountD0Ev
|
||||
0x0000007100d0da88,Account::init,96,_ZN4ksys7Account4initEPN4sead4HeapE
|
||||
0x0000007100d0dae8,Account::__auto0,8,_ZNK4ksys7Account13getUserHandleEv
|
||||
0x0000007100d0daf0,Account::getUserId,28,_ZNK4ksys7Account9getUserIdEPN2nn7account3UidE
|
||||
0x0000007100d0db0c,ActorAccessor::ctorCopy,144,_ZN4ksys3act20ActorConstDataAccess12acquireActorERKNS0_24ActorLinkConstDataAccessE
|
||||
0x0000007100d0db9c,ActorAccessor::hasActor,16,_ZNK4ksys3act20ActorConstDataAccess7hasProcEPNS0_8BaseProcE
|
||||
0x0000007100d0dbac,act::fieldx8IsEqualToActorFieldx60,144,_ZNK4ksys3act20ActorConstDataAccess7hasProcERKNS0_12BaseProcLinkE
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -1 +1 @@
|
|||
Subproject commit 33613dbdf486d04637351600cfe9eeb434b364a8
|
||||
Subproject commit 3765a6afa665dc9e787a50e46e70614a0b88ff4f
|
|
@ -0,0 +1,43 @@
|
|||
#include "KingSystem/System/Account.h"
|
||||
#include <nn/account.h>
|
||||
|
||||
namespace ksys {
|
||||
|
||||
SEAD_SINGLETON_DISPOSER_IMPL(Account)
|
||||
|
||||
Account::~Account() {
|
||||
if (mFlags.isOn(Flag::HasUserHandle)) {
|
||||
if (mUserHandle) {
|
||||
delete mUserHandle;
|
||||
mUserHandle = nullptr;
|
||||
}
|
||||
mFlags.reset(Flag::HasUserHandle);
|
||||
}
|
||||
}
|
||||
|
||||
void Account::init(sead::Heap* heap) {
|
||||
mUserHandle = new (heap) nn::account::UserHandle{};
|
||||
|
||||
nn::account::Initialize();
|
||||
|
||||
if (mFlags.isOff(Flag::HasOpenedUserSuccessfully)) {
|
||||
const auto result = nn::account::OpenPreselectedUser(mUserHandle);
|
||||
if (result.IsSuccess())
|
||||
mFlags.set(Flag::HasOpenedUserSuccessfully);
|
||||
}
|
||||
|
||||
mFlags.set(Flag::HasUserHandle);
|
||||
}
|
||||
|
||||
nn::account::UserHandle* Account::getUserHandle() const {
|
||||
return mUserHandle;
|
||||
}
|
||||
|
||||
void Account::getUserId(nn::account::Uid* uid) const {
|
||||
if (mUserHandle)
|
||||
nn::account::GetUserId(uid, *mUserHandle);
|
||||
else
|
||||
*uid = {};
|
||||
}
|
||||
|
||||
} // namespace ksys
|
|
@ -0,0 +1,37 @@
|
|||
#pragma once
|
||||
|
||||
#include <heap/seadDisposer.h>
|
||||
#include <prim/seadTypedBitFlag.h>
|
||||
#include "KingSystem/Utils/Types.h"
|
||||
|
||||
namespace nn::account {
|
||||
class Uid;
|
||||
class UserHandle;
|
||||
} // namespace nn::account
|
||||
|
||||
namespace ksys {
|
||||
|
||||
class Account {
|
||||
SEAD_SINGLETON_DISPOSER(Account)
|
||||
Account() = default;
|
||||
virtual ~Account();
|
||||
|
||||
public:
|
||||
void init(sead::Heap* heap);
|
||||
|
||||
nn::account::UserHandle* getUserHandle() const;
|
||||
void getUserId(nn::account::Uid* uid) const;
|
||||
|
||||
private:
|
||||
enum class Flag : u8 {
|
||||
HasUserHandle = 0x1,
|
||||
HasOpenedUserSuccessfully = 0x2,
|
||||
};
|
||||
|
||||
void* _28 = nullptr;
|
||||
sead::TypedBitFlag<Flag> mFlags;
|
||||
nn::account::UserHandle* mUserHandle = nullptr;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(Account, 0x40);
|
||||
|
||||
} // namespace ksys
|
|
@ -1,4 +1,6 @@
|
|||
target_sources(uking PRIVATE
|
||||
Account.cpp
|
||||
Account.h
|
||||
OverlayArena.cpp
|
||||
OverlayArena.h
|
||||
OverlayArenaSystem.cpp
|
||||
|
|
Loading…
Reference in New Issue