feat(client): implement more of ClientServices::Logon

This commit is contained in:
fallenoak 2025-09-30 16:21:36 -05:00
parent 8f992159f2
commit eccd46684f
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
6 changed files with 32 additions and 9 deletions

View File

@ -52,6 +52,18 @@ ClientConnection* ClientServices::Connection() {
return ClientServices::s_currentConnection; return ClientServices::s_currentConnection;
} }
const char* ClientServices::GetCurrentLoginPortal() {
return ClientServices::s_loginObj->GetLoginServerType() == 1
? ClientServices::s_darkPortalVar->GetString()
: "";
}
const char* ClientServices::GetCurrentLoginServer() {
return ClientServices::s_loginObj->GetLoginServerType() == 1
? ClientServices::s_realmListBNVar->GetString()
: ClientServices::s_realmListVar->GetString();
}
ClientServices* ClientServices::GetInstance() { ClientServices* ClientServices::GetInstance() {
if (ClientServices::s_instance) { if (ClientServices::s_instance) {
return ClientServices::s_instance; return ClientServices::s_instance;
@ -237,9 +249,10 @@ void ClientServices::Logon(const char* accountName, const char* password) {
ClientServices::s_loginObj->SetLogonCreds(accountName, password); ClientServices::s_loginObj->SetLogonCreds(accountName, password);
// TODO ClientServices::s_loginObj->Logon(
ClientServices::GetCurrentLoginServer(),
ClientServices::s_loginObj->Logon(nullptr, nullptr); ClientServices::GetCurrentLoginPortal()
);
} }
void ClientServices::SelectRealm(const char* realmName) { void ClientServices::SelectRealm(const char* realmName) {
@ -281,6 +294,12 @@ int32_t ClientServices::SetSelectedRealmInfo(int32_t a1) {
return 0; return 0;
} }
const char* ClientServices::GetLoginServer() {
return ClientServices::s_loginObj->GetLoginServerType() == 1
? ClientServices::s_realmListBNVar->GetString()
: ClientServices::s_realmListVar->GetString();
}
int32_t ClientServices::GetLoginServerType() { int32_t ClientServices::GetLoginServerType() {
if (!ClientServices::LoginConnection()) { if (!ClientServices::LoginConnection()) {
return 0; return 0;

View File

@ -30,6 +30,8 @@ class ClientServices : public LoginResponse {
// Static functions // Static functions
static void ConnectToSelectedServer(); static void ConnectToSelectedServer();
static ClientConnection* Connection(); static ClientConnection* Connection();
static const char* GetCurrentLoginPortal();
static const char* GetCurrentLoginServer();
static ClientServices* GetInstance(); static ClientServices* GetInstance();
static REALM_INFO* GetRealmInfoByIndex(int32_t index); static REALM_INFO* GetRealmInfoByIndex(int32_t index);
static const char* GetSelectedRealmName(); static const char* GetSelectedRealmName();
@ -44,6 +46,7 @@ class ClientServices : public LoginResponse {
static int32_t SetSelectedRealmInfo(int32_t a1); static int32_t SetSelectedRealmInfo(int32_t a1);
// Virtual member functions // Virtual member functions
virtual const char* GetLoginServer();
virtual int32_t GetLoginServerType(); virtual int32_t GetLoginServerType();
virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags); virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags);
virtual void RealmEnumCallback(uint32_t a2); virtual void RealmEnumCallback(uint32_t a2);

View File

@ -26,7 +26,7 @@ class Grunt::ClientResponse {
virtual const uint8_t* GetVersionChallenge() = 0; virtual const uint8_t* GetVersionChallenge() = 0;
virtual void GetRealmList() = 0; virtual void GetRealmList() = 0;
virtual void Reconnect() = 0; virtual void Reconnect() = 0;
virtual void Logon(const char* a2, const char* a3) = 0; virtual void Logon(const char* loginServer, const char* loginPortal) = 0;
virtual void ProveVersion(const uint8_t* versionChecksum) = 0; virtual void ProveVersion(const uint8_t* versionChecksum) = 0;
virtual void Logoff() = 0; virtual void Logoff() = 0;
virtual void Init(LoginResponse* loginResponse) = 0; virtual void Init(LoginResponse* loginResponse) = 0;

View File

@ -125,7 +125,7 @@ void GruntLogin::Logoff() {
// TODO // TODO
} }
void GruntLogin::Logon(const char* a2, const char* a3) { void GruntLogin::Logon(const char* loginServer, const char* loginPortal) {
if (this->m_loggedOn) { if (this->m_loggedOn) {
return; return;
} }
@ -141,11 +141,11 @@ void GruntLogin::Logon(const char* a2, const char* a3) {
0x0 0x0
); );
if (!a2) { if (!loginServer) {
a2 = "us.logon.worldofwarcraft.com:3724"; loginServer = "us.logon.worldofwarcraft.com:3724";
} }
this->m_clientLink->Connect(a2); this->m_clientLink->Connect(loginServer);
} }
void GruntLogin::LogonResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags) { void GruntLogin::LogonResult(Grunt::Result result, const uint8_t* sessionKey, uint32_t sessionKeyLen, uint16_t flags) {

View File

@ -26,7 +26,7 @@ class GruntLogin : public Login {
virtual const uint8_t* GetVersionChallenge(); virtual const uint8_t* GetVersionChallenge();
virtual void GetRealmList(); virtual void GetRealmList();
virtual void Reconnect(); virtual void Reconnect();
virtual void Logon(const char* a2, const char* a3); virtual void Logon(const char* loginServer, const char* loginPortal);
virtual void ProveVersion(const uint8_t* versionChecksum); virtual void ProveVersion(const uint8_t* versionChecksum);
virtual void Logoff(); virtual void Logoff();
virtual void Init(LoginResponse* loginResponse); virtual void Init(LoginResponse* loginResponse);

View File

@ -16,6 +16,7 @@ class LoginResponse {
LOGIN_RESULT m_loginResult; LOGIN_RESULT m_loginResult;
// Virtual member functions // Virtual member functions
virtual const char* GetLoginServer() = 0;
virtual int32_t GetLoginServerType() = 0; virtual int32_t GetLoginServerType() = 0;
virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags) = 0; virtual void LoginServerStatus(LOGIN_STATE state, LOGIN_RESULT result, const char* addrStr, const char* stateStr, const char* resultStr, uint8_t flags) = 0;
virtual void RealmEnumCallback(uint32_t a2) = 0; virtual void RealmEnumCallback(uint32_t a2) = 0;