WOLChatObserver.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /*
  2. ** Command & Conquer Renegade(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /******************************************************************************
  19. *
  20. * FILE
  21. * $Archive: /Commando/Code/WWOnline/WOLChatObserver.h $
  22. *
  23. * DESCRIPTION
  24. *
  25. * PROGRAMMER
  26. * $Author: Steve_t $
  27. *
  28. * VERSION INFO
  29. * $Revision: 4 $
  30. * $Modtime: 10/14/02 12:38p $
  31. *
  32. ******************************************************************************/
  33. #ifndef __WOLCHATOBSERVER_H__
  34. #define __WOLCHATOBSERVER_H__
  35. #include <objbase.h>
  36. #include "RefPtr.h"
  37. #include "WOLUser.h"
  38. namespace WOL
  39. {
  40. #include <WOLAPI\wolapi.h>
  41. }
  42. namespace WWOnline {
  43. class Session;
  44. class SquadData;
  45. class ChatObserver :
  46. public WOL::IChatEvent
  47. {
  48. public:
  49. ChatObserver();
  50. void Init(Session& outer);
  51. //---------------------------------------------------------------------------
  52. // IUnknown methods
  53. //---------------------------------------------------------------------------
  54. virtual HRESULT STDMETHODCALLTYPE QueryInterface(const IID& iid, void** ppv);
  55. virtual ULONG STDMETHODCALLTYPE AddRef(void);
  56. virtual ULONG STDMETHODCALLTYPE Release(void);
  57. //---------------------------------------------------------------------------
  58. // IChatEvent Methods
  59. //---------------------------------------------------------------------------
  60. STDMETHOD(OnServerList)(HRESULT hr, WOL::Server* servers);
  61. STDMETHOD(OnUpdateList)(HRESULT hr, WOL::Update* updates);
  62. STDMETHOD(OnServerError)(HRESULT hr, LPCSTR ircmsg);
  63. STDMETHOD(OnConnection)(HRESULT hr, LPCSTR motd);
  64. STDMETHOD(OnMessageOfTheDay)(HRESULT hr, LPCSTR motd);
  65. STDMETHOD(OnChannelList)(HRESULT hr, WOL::Channel* channels);
  66. STDMETHOD(OnChannelCreate)(HRESULT hr, WOL::Channel* channel);
  67. STDMETHOD(OnChannelJoin)(HRESULT hr, WOL::Channel* channel, WOL::User* user);
  68. STDMETHOD(OnChannelLeave)(HRESULT hr, WOL::Channel* channel, WOL::User* user);
  69. STDMETHOD(OnChannelTopic)(HRESULT hr, WOL::Channel* channel, LPCSTR topic);
  70. STDMETHOD(OnPrivateAction)(HRESULT hr, WOL::User* user, LPCSTR action);
  71. STDMETHOD(OnPublicAction)(HRESULT hr, WOL::Channel* channel, WOL::User* user, LPCSTR action);
  72. STDMETHOD(OnUserList)(HRESULT hr, WOL::Channel* channel, WOL::User* users);
  73. STDMETHOD(OnPublicMessage)(HRESULT hr, WOL::Channel* channel, WOL::User* user, LPCSTR message);
  74. STDMETHOD(OnPrivateMessage)(HRESULT hr, WOL::User* user, LPCSTR message);
  75. STDMETHOD(OnSystemMessage)(HRESULT hr, LPCSTR message);
  76. STDMETHOD(OnNetStatus)(HRESULT hr);
  77. STDMETHOD(OnLogout)(HRESULT status, WOL::User* user);
  78. STDMETHOD(OnPrivateGameOptions)(HRESULT hr, WOL::User* user, LPCSTR options);
  79. STDMETHOD(OnPublicGameOptions)(HRESULT hr, WOL::Channel* channel, WOL::User* user, LPCSTR options);
  80. STDMETHOD(OnGameStart)(HRESULT hr, WOL::Channel* channel, WOL::User* users, int gameid);
  81. STDMETHOD(OnUserKick)(HRESULT hr, WOL::Channel* channel, WOL::User* kicked, WOL::User* kicker);
  82. STDMETHOD(OnUserIP)(HRESULT hr, WOL::User* user);
  83. STDMETHOD(OnFind)(HRESULT hr, WOL::Channel* chan);
  84. STDMETHOD(OnPageSend)(HRESULT hr);
  85. STDMETHOD(OnPaged)(HRESULT hr, WOL::User* user, LPCSTR message);
  86. STDMETHOD(OnServerBannedYou)(HRESULT hr, WOL::time_t bannedTill);
  87. STDMETHOD(OnUserFlags)(HRESULT hr, LPCSTR name, unsigned int flags, unsigned int mask);
  88. STDMETHOD(OnChannelBan)(HRESULT hr, LPCSTR name, int banned);
  89. STDMETHOD(OnSquadInfo)(HRESULT hr, unsigned long id, WOL::Squad* squad);
  90. STDMETHOD(OnUserLocale)(HRESULT hr, WOL::User* users);
  91. STDMETHOD(OnUserTeam)(HRESULT hr, WOL::User* users);
  92. STDMETHOD(OnSetLocale)(HRESULT hr, WOL::Locale newlocale);
  93. STDMETHOD(OnSetTeam)(HRESULT hr, int newteam);
  94. STDMETHOD(OnBuddyList)(HRESULT hr, WOL::User* buddyList);
  95. STDMETHOD(OnBuddyAdd)(HRESULT hr, WOL::User* buddyAdded);
  96. STDMETHOD(OnBuddyDelete)(HRESULT hr, WOL::User* buddyDeleted);
  97. STDMETHOD(OnPublicUnicodeMessage)(HRESULT hr, WOL::Channel* channel, WOL::User* user, const unsigned short* message);
  98. STDMETHOD(OnPrivateUnicodeMessage)(HRESULT hr, WOL::User* user, const unsigned short* message);
  99. STDMETHOD(OnPrivateUnicodeAction)(HRESULT hr, WOL::User* user, const unsigned short* action);
  100. STDMETHOD(OnPublicUnicodeAction)(HRESULT hr, WOL::Channel* channel, WOL::User* user, const unsigned short* action);
  101. STDMETHOD(OnPagedUnicode)(HRESULT hr, WOL::User* user, const unsigned short* message);
  102. STDMETHOD(OnServerTime)(HRESULT hr, WOL::time_t stime);
  103. STDMETHOD(OnInsiderStatus)(HRESULT hr, WOL::User* users);
  104. STDMETHOD(OnSetLocalIP)(HRESULT hr, LPCSTR message);
  105. STDMETHOD(OnChannelListBegin)(HRESULT hr);
  106. STDMETHOD(OnChannelListEntry)(HRESULT hr, WOL::Channel* channel);
  107. STDMETHOD(OnChannelListEnd)(HRESULT hr);
  108. protected:
  109. virtual ~ChatObserver();
  110. // prevent copy and assignment
  111. ChatObserver(ChatObserver const &);
  112. ChatObserver const & operator =(ChatObserver const &);
  113. void AssignSquadToUsers(const UserList& users, const RefPtr<SquadData>& squad);
  114. void ProcessSquadRequest(const RefPtr<SquadData>& squad);
  115. void Kick_Spammer(WOL::User *wol_user);
  116. private:
  117. ULONG mRefCount;
  118. Session* mOuter;
  119. };
  120. }
  121. #endif // __WOLCHATOBSERVER_H__