mirror of
https://github.com/CraftyBoss/SuperMarioOdysseyOnline.git
synced 2024-12-04 17:07:29 +00:00
88 lines
No EOL
2.5 KiB
C++
88 lines
No EOL
2.5 KiB
C++
/**
|
|
* @file account.h
|
|
* @brief Account service implementation.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "os.h"
|
|
#include "types.h"
|
|
|
|
#include "logger.hpp"
|
|
|
|
namespace nn
|
|
{
|
|
namespace account
|
|
{
|
|
// typedef char Nickname[0x21];
|
|
// typedef u64 Uid[0x2];
|
|
|
|
struct Nickname {
|
|
char name[0x21] = {};
|
|
};
|
|
struct Uid {
|
|
char data[0x10] = {};
|
|
|
|
bool operator==(const Uid &rhs) const {
|
|
return memcmp(data, rhs.data, 0x10) == 0;
|
|
}
|
|
|
|
Uid& operator=(const Uid& other)
|
|
{
|
|
memcpy(this->data, other.data, 0x10);
|
|
return *this;
|
|
}
|
|
|
|
inline bool isEmpty() const {
|
|
return *this == EmptyId;
|
|
}
|
|
|
|
inline void print() const {
|
|
Logger::log("Player ID: 0x");
|
|
Logger::disableName();
|
|
for (size_t i = 0; i < 0x10; i++) { Logger::log("%02X", data[i]); }
|
|
Logger::log("\n");
|
|
Logger::enableName();
|
|
}
|
|
|
|
inline void print(const char *prefix) const {
|
|
Logger::log("%s: 0x", prefix);
|
|
Logger::disableName();
|
|
for (size_t i = 0; i < 0x10; i++) { Logger::log("%02X", data[i]); }
|
|
Logger::log("\n");
|
|
Logger::enableName();
|
|
}
|
|
|
|
static const Uid EmptyId;
|
|
};
|
|
|
|
typedef u64 NetworkServiceAccountId;
|
|
|
|
class AsyncContext;
|
|
struct UserHandle;
|
|
|
|
void Initialize();
|
|
Result ListAllUsers(s32 *, nn::account::Uid *, s32 numUsers);
|
|
Result OpenUser(nn::account::UserHandle *, nn::account::Uid const &);
|
|
Result IsNetworkServiceAccountAvailable(bool *out, nn::account::UserHandle const &);
|
|
void CloseUser(nn::account::UserHandle const &);
|
|
|
|
Result EnsureNetworkServiceAccountAvailable(nn::account::UserHandle const &userHandle);
|
|
Result EnsureNetworkServiceAccountIdTokenCacheAsync(nn::account::AsyncContext *, nn::account::UserHandle const &);
|
|
Result LoadNetworkServiceAccountIdTokenCache(u64 *, char *, u64, nn::account::UserHandle const &);
|
|
|
|
Result GetLastOpenedUser(nn::account::Uid *);
|
|
Result GetNickname(nn::account::Nickname *nickname, nn::account::Uid const &userID);
|
|
|
|
class AsyncContext
|
|
{
|
|
public:
|
|
AsyncContext();
|
|
|
|
Result HasDone(bool *);
|
|
Result GetResult();
|
|
Result Cancel();
|
|
Result GetSystemEvent(nn::os::SystemEvent *);
|
|
};
|
|
};
|
|
}; |