/* ** Command & Conquer Renegade(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ /****************************************************************************** * * FILE * $Archive: /Commando/Code/Commando/WOLLogonMgr.h $ * * DESCRIPTION * * PROGRAMMER * Denzil E. Long, Jr. * $Author: Denzil_l $ * * VERSION INFO * $Revision: 25 $ * $Modtime: 1/14/02 2:04p $ * ******************************************************************************/ #ifndef __WOLLOGONMGR_H__ #define __WOLLOGONMGR_H__ #include "DlgWOLLogon.h" #include #include #include #include class DlgWOLWaitEvent; class DlgMsgBoxEvent; typedef enum { WOLLOGON_FAILED = 0, WOLLOGON_SUCCESS, WOLLOGON_CANCEL, WOLLOGON_PATCHREQUIRED } WOLLogonAction; class WOLLogonMgr : public RefCountClass, public Notifier, public Observer, public Observer, public Observer, public Observer, public Observer, public Observer { public: // Log onto Westwood Online static void Logon(Observer* observer); // Log the current user off of Westwood Online. static void Logoff(void); // Get the name of the logged in user. static bool GetLoginName(WideStringClass& name); // Get the name of the server logged onto. static bool GetServerName(WideStringClass& name); static RefPtr GetDefaultServer(void); static void ConfigureSession(void); static void Set_Quiet_Mode(bool mode) {mQuietMode = mode;} protected: typedef enum {DISCONNECTED = 0, DETECTING_BANDWIDTH, FETCHING_SERVERLIST, WAITING_PINGS, WAITING_BANDWIDTH_DIALOG_OKAY, CONNECTING, CONNECTED} LogonState; WOLLogonMgr(); ~WOLLogonMgr(); WOLLogonMgr(const WOLLogonMgr&); const WOLLogonMgr& operator=(const WOLLogonMgr&); RefPtr GetPreferredServer(const wchar_t* loginname); // Check if the user is connected to a server. bool IsConnectedToServer(const wchar_t* loginname, RefPtr& server); bool IsUserLoggedIn(const wchar_t* loginname); bool IsAutoLogin(const wchar_t* loginname); bool HasServerList(void); bool HasValidPings(void); void InitiateLogon(bool forced); void RememberLogin(void); DECLARE_NOTIFIER(WOLLogonAction) void HandleNotification(DlgWOLLogonEvent&); void HandleNotification(DlgWOLWaitEvent&); void HandleNotification(DlgMsgBoxEvent&); void HandleNotification(WWOnline::ServerError&); void HandleNotification(WWOnline::ConnectionStatus&); void HandleNotification(WWOnline::MessageOfTheDayEvent&); private: static bool mQuietMode; RefPtr mWOLSession; LogonState mState; WideStringClass mLoginName; WideStringClass mPassword; bool mPasswordEncrypted; bool mRememberLogin; }; #endif // __WOLLOGONMGR_H__