| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /*
- ** 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 <http://www.gnu.org/licenses/>.
- */
- /******************************************************************************
- *
- * FILE
- * $Archive: /Commando/Code/Commando/WOLChatMgr.h $
- *
- * DESCRIPTION
- *
- * PROGRAMMER
- * Denzil E. Long, Jr.
- * $Author: Denzil_l $
- *
- * VERSION INFO
- * $Revision: 18 $
- * $Modtime: 11/08/01 2:31p $
- *
- ******************************************************************************/
- #ifndef __WOLCHATMGR_H__
- #define __WOLCHATMGR_H__
- #include <WWLib\RefCount.h>
- #include <WWLib\Notify.h>
- #include <WWLib\WideString.h>
- #include <WWOnline\RefPtr.h>
- #include <WWOnline\WOLSession.h>
- #include <WWOnline\WOLChatMsg.h>
- typedef std::vector< RefPtr<WWOnline::ChannelData> > LobbyList;
- enum WOLChatMgrEvent
- {
- LobbyListChanged = 1,
- LobbyChanged,
- UserInListChanged,
- UserOutListChanged,
- MessageListChanged,
- KickedFromChannel,
- BannedFromChannel
- };
- class WOLChatMgr :
- public RefCountClass,
- public Notifier<WOLChatMgrEvent>,
- public Observer<WWOnline::ServerError>,
- public Observer<WWOnline::ChannelListEvent>,
- public Observer<WWOnline::ChannelEvent>,
- public Observer<WWOnline::UserEvent>,
- public Observer<WWOnline::UserList>,
- public Observer<WWOnline::ChatMessage>
- {
- public:
- static WOLChatMgr* GetInstance(bool createOK);
- void Start(void);
- void Stop(void);
- // Lobby Methods
- void RefreshLobbyList(void);
- const LobbyList& GetLobbyList(void);
-
- const RefPtr<WWOnline::ChannelData>& GetCurrentLobby(void);
- const RefPtr<WWOnline::ChannelData> FindLobby(const wchar_t* name);
- void CreateLobby(const wchar_t* name, const wchar_t* password);
- void JoinLobby(const RefPtr<WWOnline::ChannelData>& channel);
- void LeaveLobby(void);
- void GetLobbyDisplayName(const RefPtr<WWOnline::ChannelData>& lobby, WideStringClass& outName);
- // User Methods
- const RefPtr<WWOnline::UserData> FindUser(const wchar_t* name);
- inline const WWOnline::UserList& GetUserInList(void)
- {return mUserInList;}
- void ClearUserInList(void);
- inline const WWOnline::UserList& GetUserOutList(void)
- {return mUserOutList;}
- void ClearUserOutList(void);
- bool SquelchUser(const RefPtr<WWOnline::UserData>& user, bool onoff);
- void LocateUser(const wchar_t* name);
- // Message Methods
- inline const WWOnline::ChatMessageList& GetMessageList(void)
- {return mMessageList;}
- void ClearMessageList(void);
- void SendPublicMessage(const wchar_t* message, bool isAction);
- void SendPrivateMessage(const RefPtr<WWOnline::UserData>& user, const wchar_t* message, bool isAction);
- void SendPrivateMessage(WWOnline::UserList& users, const wchar_t* message, bool isAction);
- protected:
- WOLChatMgr();
- ~WOLChatMgr();
- // Delcare here to prevent copy and assignment
- WOLChatMgr(const WOLChatMgr&);
- const WOLChatMgr& operator=(const WOLChatMgr&);
- bool FinalizeCreate(void);
- bool IsLobbyValid(const RefPtr<WWOnline::ChannelData>& lobby);
- void AddMessage(const wchar_t* sender, const wchar_t* message, bool isPrivate, bool isAction);
- bool PassesFilters(const WWOnline::ChatMessage& msg);
- void HandleNotification(WWOnline::ServerError&);
- void HandleNotification(WWOnline::ChannelListEvent&);
- void HandleNotification(WWOnline::ChannelEvent&);
- void HandleNotification(WWOnline::UserEvent&);
- void HandleNotification(WWOnline::UserList&);
- void HandleNotification(WWOnline::ChatMessage&);
- bool ProcessCommand(const wchar_t* message);
- private:
- static WOLChatMgr* _mInstance;
- RefPtr<WWOnline::Session> mWOLSession;
- WideStringClass mLobbyPrefix;
- LobbyList mLobbyList;
- WWOnline::UserList mUserInList;
- WWOnline::UserList mUserOutList;
- WideStringClass mLocatingUserName;
-
- WWOnline::ChatMessageList mMessageList;
- };
- #endif __WOLCHATMGR_H__
|