feat(glue): persist login state in glue manager

This commit is contained in:
fallenoak 2023-01-09 17:37:24 -06:00 committed by GitHub
parent 85a9f8bde8
commit a0030c85b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 29 additions and 4 deletions

View file

@ -1,5 +1,6 @@
#include "client/ClientServices.hpp" #include "client/ClientServices.hpp"
#include "client/ClientRealmResponseAdapter.hpp" #include "client/ClientRealmResponseAdapter.hpp"
#include "glue/CGlueMgr.hpp"
#include "net/Connection.hpp" #include "net/Connection.hpp"
#include "net/Login.hpp" #include "net/Login.hpp"
#include <storm/Memory.hpp> #include <storm/Memory.hpp>
@ -87,6 +88,10 @@ void ClientServices::Logon(const char* accountName, const char* password) {
ClientServices::s_loginObj->Logon(nullptr, nullptr); ClientServices::s_loginObj->Logon(nullptr, nullptr);
} }
void ClientServices::LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint16_t a7) { void ClientServices::LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags) {
// TODO CGlueMgr::SetLoginStateAndResult(state, result, addrStr, stateStr, resultStr, flags);
if (state == LOGIN_STATE_AUTHENTICATED) {
// TODO
}
} }

View file

@ -24,7 +24,7 @@ class ClientServices : public LoginResponse {
static void Logon(const char* accountName, const char* password); static void Logon(const char* accountName, const char* password);
// Virtual member functions // Virtual member functions
virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint16_t a7); virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags);
}; };
#endif #endif

View file

@ -41,6 +41,7 @@ unsigned char InterfaceKey[256] = {
int32_t CGlueMgr::m_acceptedEULA = 1; // TODO int32_t CGlueMgr::m_acceptedEULA = 1; // TODO
int32_t CGlueMgr::m_acceptedTerminationWithoutNotice; int32_t CGlueMgr::m_acceptedTerminationWithoutNotice;
int32_t CGlueMgr::m_acceptedTOS = 1; // TODO int32_t CGlueMgr::m_acceptedTOS = 1; // TODO
int32_t CGlueMgr::m_accountMsgAvailable;
char CGlueMgr::m_accountName[1280]; char CGlueMgr::m_accountName[1280];
float CGlueMgr::m_aspect; float CGlueMgr::m_aspect;
bool CGlueMgr::m_authenticated; bool CGlueMgr::m_authenticated;
@ -360,6 +361,22 @@ void CGlueMgr::Resume() {
// } // }
} }
void CGlueMgr::SetLoginStateAndResult(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags) {
// TODO
// CGlueMgr::LogConnectionStatus("GRUNT: state: %s result: %s %s", a4);
if (flags & 0x1) {
CGlueMgr::m_accountMsgAvailable = 1;
}
if (state == LOGIN_STATE_AUTHENTICATED) {
CGlueMgr::m_authenticated = true;
}
CGlueMgr::m_loginState = state;
CGlueMgr::m_loginResult = result;
}
void CGlueMgr::SetScreen(const char* screen) { void CGlueMgr::SetScreen(const char* screen) {
FrameScript_SignalEvent(0, "%s", screen); FrameScript_SignalEvent(0, "%s", screen);
} }

View file

@ -2,6 +2,7 @@
#define GLUE_C_GLUE_MGR_HPP #define GLUE_C_GLUE_MGR_HPP
#include "event/Event.hpp" #include "event/Event.hpp"
#include "net/Types.hpp"
#include <cstdint> #include <cstdint>
class CSimpleTop; class CSimpleTop;
@ -30,6 +31,7 @@ class CGlueMgr {
static int32_t m_acceptedEULA; static int32_t m_acceptedEULA;
static int32_t m_acceptedTerminationWithoutNotice; static int32_t m_acceptedTerminationWithoutNotice;
static int32_t m_acceptedTOS; static int32_t m_acceptedTOS;
static int32_t m_accountMsgAvailable;
static char m_accountName[]; static char m_accountName[];
static float m_aspect; static float m_aspect;
static bool m_authenticated; static bool m_authenticated;
@ -57,6 +59,7 @@ class CGlueMgr {
static void LoginServerLogin(const char* accountName, const char* password); static void LoginServerLogin(const char* accountName, const char* password);
static void QuitGame(); static void QuitGame();
static void Resume(); static void Resume();
static void SetLoginStateAndResult(LOGIN_STATE state, LOGIN_RESULT result, char const* addrStr, char const* stateStr, char const* resultStr, uint8_t flags);
static void SetScreen(const char* screen); static void SetScreen(const char* screen);
static void StatusDialogClick(); static void StatusDialogClick();
static void Suspend(); static void Suspend();

View file

@ -10,7 +10,7 @@ class LoginResponse {
LOGIN_RESULT m_loginResult; LOGIN_RESULT m_loginResult;
// Virtual member functions // Virtual member functions
virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint16_t a7) = 0; virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags) = 0;
// Member functions // Member functions
void UpdateLoginStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* a4, uint16_t a5); void UpdateLoginStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* a4, uint16_t a5);