SigninDialog ABI

This commit is contained in:
nmzik
2026-07-17 18:26:28 +02:00
parent 5ed447818f
commit 043545d4c4
3 changed files with 139 additions and 0 deletions

View File

@@ -199,6 +199,114 @@ void KYTY_SYSV_ABI LoginDialogParamInitialize(void* param) {
} // namespace LoginDialog
namespace SigninDialog {
LIB_NAME("SigninDialog", "SigninDialog");
constexpr int SIGNIN_STATUS_NONE = 0;
constexpr int SIGNIN_STATUS_INITIALIZED = 1;
constexpr int SIGNIN_STATUS_RUNNING = 2;
constexpr int SIGNIN_STATUS_FINISHED = 3;
constexpr int SIGNIN_RESULT_USER_CANCELED = 1;
constexpr int SIGNIN_ERROR_NOT_INITIALIZED = static_cast<int>(0x81350001u);
constexpr int SIGNIN_ERROR_ALREADY_INITIALIZED = static_cast<int>(0x81350002u);
constexpr int SIGNIN_ERROR_PARAM_INVALID = static_cast<int>(0x81350003u);
constexpr int SIGNIN_ERROR_INVALID_STATE = static_cast<int>(0x81350005u);
struct SigninDialogResult {
int32_t result;
int32_t reserved[3];
};
struct SigninDialogParam {
int32_t size;
int32_t user_id;
int32_t reserved[2];
};
static_assert(sizeof(SigninDialogResult) == 16);
static_assert(sizeof(SigninDialogParam) == 16);
static int g_signin_status = SIGNIN_STATUS_NONE;
int KYTY_SYSV_ABI SigninDialogInitialize() {
PRINT_NAME();
if (g_signin_status != SIGNIN_STATUS_NONE) {
return SIGNIN_ERROR_ALREADY_INITIALIZED;
}
g_signin_status = SIGNIN_STATUS_INITIALIZED;
return OK;
}
int KYTY_SYSV_ABI SigninDialogTerminate() {
PRINT_NAME();
if (g_signin_status == SIGNIN_STATUS_NONE) {
return SIGNIN_ERROR_NOT_INITIALIZED;
}
g_signin_status = SIGNIN_STATUS_NONE;
return OK;
}
int KYTY_SYSV_ABI SigninDialogOpen(const void* param) {
PRINT_NAME();
if (g_signin_status != SIGNIN_STATUS_INITIALIZED && g_signin_status != SIGNIN_STATUS_FINISHED) {
return SIGNIN_ERROR_INVALID_STATE;
}
if (param == nullptr ||
static_cast<const SigninDialogParam*>(param)->size != sizeof(SigninDialogParam)) {
return SIGNIN_ERROR_PARAM_INVALID;
}
g_signin_status = SIGNIN_STATUS_RUNNING;
return OK;
}
int KYTY_SYSV_ABI SigninDialogClose() {
PRINT_NAME();
if (g_signin_status == SIGNIN_STATUS_NONE) {
return SIGNIN_ERROR_NOT_INITIALIZED;
}
if (g_signin_status != SIGNIN_STATUS_RUNNING && g_signin_status != SIGNIN_STATUS_FINISHED) {
return SIGNIN_ERROR_INVALID_STATE;
}
g_signin_status = SIGNIN_STATUS_FINISHED;
return OK;
}
int KYTY_SYSV_ABI SigninDialogUpdateStatus() {
PRINT_NAME();
if (g_signin_status == SIGNIN_STATUS_RUNNING) {
g_signin_status = SIGNIN_STATUS_FINISHED;
}
return g_signin_status;
}
int KYTY_SYSV_ABI SigninDialogGetStatus() {
PRINT_NAME();
return g_signin_status;
}
int KYTY_SYSV_ABI SigninDialogGetResult(void* result) {
PRINT_NAME();
if (g_signin_status == SIGNIN_STATUS_NONE) {
return SIGNIN_ERROR_NOT_INITIALIZED;
}
if (g_signin_status != SIGNIN_STATUS_FINISHED) {
return SIGNIN_ERROR_INVALID_STATE;
}
if (result == nullptr) {
return SIGNIN_ERROR_PARAM_INVALID;
}
auto* r = static_cast<SigninDialogResult*>(result);
r->result = SIGNIN_RESULT_USER_CANCELED;
r->reserved[0] = 0;
r->reserved[1] = 0;
r->reserved[2] = 0;
return OK;
}
} // namespace SigninDialog
namespace SaveDataDialog {
LIB_NAME("SaveDataDialog", "SaveDataDialog");

View File

@@ -31,6 +31,18 @@ void KYTY_SYSV_ABI LoginDialogParamInitialize(void* param);
} // namespace LoginDialog
namespace SigninDialog {
int KYTY_SYSV_ABI SigninDialogInitialize();
int KYTY_SYSV_ABI SigninDialogTerminate();
int KYTY_SYSV_ABI SigninDialogOpen(const void* param);
int KYTY_SYSV_ABI SigninDialogClose();
int KYTY_SYSV_ABI SigninDialogUpdateStatus();
int KYTY_SYSV_ABI SigninDialogGetStatus();
int KYTY_SYSV_ABI SigninDialogGetResult(void* result);
} // namespace SigninDialog
namespace SaveDataDialog {
int KYTY_SYSV_ABI SaveDataDialogInitialize();

View File

@@ -48,6 +48,24 @@ LIB_DEFINE(InitDialog_1_LoginDialog) {
} // namespace LibLoginDialog
namespace LibSigninDialog {
LIB_VERSION("SigninDialog", 1, "SigninDialog", 1, 1);
namespace SigninDialog = Dialog::SigninDialog;
LIB_DEFINE(InitDialog_1_SigninDialog) {
LIB_FUNC("mlYGfmqE3fQ", SigninDialog::SigninDialogInitialize);
LIB_FUNC("LXlmS6PvJdU", SigninDialog::SigninDialogTerminate);
LIB_FUNC("JlpJVoRWv7U", SigninDialog::SigninDialogOpen);
LIB_FUNC("M3OkENHcyiU", SigninDialog::SigninDialogClose);
LIB_FUNC("Bw31liTFT3A", SigninDialog::SigninDialogUpdateStatus);
LIB_FUNC("2m077aeC+PA", SigninDialog::SigninDialogGetStatus);
LIB_FUNC("nqG7rqnYw1U", SigninDialog::SigninDialogGetResult);
}
} // namespace LibSigninDialog
namespace LibSaveDataDialog {
LIB_VERSION("SaveDataDialog", 1, "SaveDataDialog", 1, 1);
@@ -127,6 +145,7 @@ LIB_DEFINE(InitDialog_1) {
LibCommonDialog::InitDialog_1_CommonDialog(s);
LibImeDialog::InitDialog_1_ImeDialog(s);
LibLoginDialog::InitDialog_1_LoginDialog(s);
LibSigninDialog::InitDialog_1_SigninDialog(s);
LibSaveDataDialog::InitDialog_1_SaveDataDialog(s);
LibSaveDataDialogNative::InitDialog_1_SaveDataDialogNative(s);
LibMsgDialog::InitDialog_1_MsgDialog(s);