PeerDefsImplementation.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /*
  2. ** Command & Conquer Generals Zero Hour(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. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // FILE: PeerDefsImplementation.h //////////////////////////////////////////////////////
  24. // Generals GameSpy Peer (chat) implementation definitions
  25. // Author: Matthew D. Campbell, Sept 2002
  26. #pragma once
  27. #ifndef __PEERDEFSIMPLEMENTATION_H__
  28. #define __PEERDEFSIMPLEMENTATION_H__
  29. #include "GameNetwork/GameSpy/PeerDefs.h"
  30. #include "GameNetwork/GameSpy/PersistentStorageThread.h"
  31. class GameSpyInfo : public GameSpyInfoInterface
  32. {
  33. public:
  34. GameSpyInfo();
  35. virtual ~GameSpyInfo();
  36. virtual void reset( void );
  37. virtual void clearGroupRoomList( void ) { m_groupRooms.clear(); m_gotGroupRoomList = false; }
  38. virtual GroupRoomMap* getGroupRoomList( void ) { return &m_groupRooms; }
  39. virtual void addGroupRoom( GameSpyGroupRoom room );
  40. virtual Bool gotGroupRoomList( void ) { return m_gotGroupRoomList; }
  41. virtual void joinGroupRoom( Int groupID );
  42. virtual void leaveGroupRoom( void );
  43. virtual void joinBestGroupRoom( void );
  44. virtual void setCurrentGroupRoom( Int groupID ) { m_currentGroupRoomID = groupID; m_playerInfoMap.clear(); }
  45. virtual Int getCurrentGroupRoom( void ) { return m_currentGroupRoomID; }
  46. virtual void updatePlayerInfo( PlayerInfo pi, AsciiString oldNick = AsciiString::TheEmptyString );
  47. virtual void playerLeftGroupRoom( AsciiString nick );
  48. virtual PlayerInfoMap* getPlayerInfoMap( void ) { return &m_playerInfoMap; }
  49. virtual void setLocalName( AsciiString name ) { m_localName = name; }
  50. virtual AsciiString getLocalName( void ) { return m_localName; }
  51. virtual void setLocalProfileID( Int profileID ) { m_localProfileID = profileID; }
  52. virtual Int getLocalProfileID( void ) { return m_localProfileID; }
  53. virtual AsciiString getLocalEmail( void ) { return m_localEmail; }
  54. virtual void setLocalEmail( AsciiString email ) { m_localEmail = email; }
  55. virtual AsciiString getLocalPassword( void ){ return m_localPasswd; }
  56. virtual void setLocalPassword( AsciiString passwd ) { m_localPasswd = passwd; }
  57. virtual void setLocalBaseName( AsciiString name ) { m_localBaseName = name; }
  58. virtual AsciiString getLocalBaseName( void ){ return m_localBaseName; }
  59. virtual void setCachedLocalPlayerStats( PSPlayerStats stats ) {m_cachedLocalPlayerStats = stats; }
  60. virtual PSPlayerStats getCachedLocalPlayerStats( void ){ return m_cachedLocalPlayerStats; }
  61. virtual BuddyInfoMap* getBuddyMap( void ) { return &m_buddyMap; }
  62. virtual BuddyInfoMap* getBuddyRequestMap( void ) { return &m_buddyRequestMap; }
  63. virtual BuddyMessageList* getBuddyMessages( void ) { return &m_buddyMessages; }
  64. virtual Bool isBuddy( Int id );
  65. virtual void clearStagingRoomList( void );
  66. virtual StagingRoomMap* getStagingRoomList( void ) { return &m_stagingRooms; }
  67. virtual GameSpyStagingRoom* findStagingRoomByID( Int id );
  68. virtual void addStagingRoom( GameSpyStagingRoom room );
  69. virtual void updateStagingRoom( GameSpyStagingRoom room );
  70. virtual void removeStagingRoom( GameSpyStagingRoom room );
  71. virtual Bool hasStagingRoomListChanged( void );
  72. virtual void leaveStagingRoom( void );
  73. virtual void markAsStagingRoomHost( void );
  74. virtual void markAsStagingRoomJoiner( Int game );
  75. virtual Int getCurrentStagingRoomID( void ) { return m_localStagingRoomID; }
  76. virtual void sawFullGameList( void ) { m_sawFullGameList = TRUE; }
  77. virtual void setDisallowAsianText( Bool val );
  78. virtual void setDisallowNonAsianText( Bool val );
  79. virtual Bool getDisallowAsianText( void );
  80. virtual Bool getDisallowNonAsianText(void );
  81. // chat
  82. virtual void registerTextWindow( GameWindow *win );
  83. virtual void unregisterTextWindow( GameWindow *win );
  84. virtual Int addText( UnicodeString message, Color c, GameWindow *win );
  85. virtual void addChat( PlayerInfo p, UnicodeString msg, Bool isPublic, Bool isAction, GameWindow *win );
  86. virtual void addChat( AsciiString nick, Int profileID, UnicodeString msg, Bool isPublic, Bool isAction, GameWindow *win );
  87. virtual Bool sendChat( UnicodeString message, Bool isAction, GameWindow *playerListbox );
  88. virtual void setMOTD( const AsciiString& motd );
  89. virtual const AsciiString& getMOTD( void );
  90. virtual void setConfig( const AsciiString& config );
  91. virtual const AsciiString& getConfig( void );
  92. virtual void setPingString( const AsciiString& ping ) { m_pingString = ping; }
  93. virtual const AsciiString& getPingString( void ) { return m_pingString; }
  94. virtual Int getPingValue( const AsciiString& otherPing );
  95. virtual Bool amIHost( void );
  96. virtual GameSpyStagingRoom* getCurrentStagingRoom( void );
  97. virtual void setGameOptions( void );
  98. virtual void addToIgnoreList( AsciiString nick );
  99. virtual void removeFromIgnoreList( AsciiString nick );
  100. virtual Bool isIgnored( AsciiString nick );
  101. virtual IgnoreList returnIgnoreList( void );
  102. virtual void loadSavedIgnoreList( void );
  103. virtual SavedIgnoreMap returnSavedIgnoreList( void );
  104. virtual void addToSavedIgnoreList( Int profileID, AsciiString nick);
  105. virtual void removeFromSavedIgnoreList( Int profileID );
  106. virtual Bool isSavedIgnored( Int profileID );
  107. virtual void setLocalIPs(UnsignedInt internalIP, UnsignedInt externalIP);
  108. virtual UnsignedInt getInternalIP(void) { return m_internalIP; }
  109. virtual UnsignedInt getExternalIP(void) { return m_externalIP; }
  110. virtual Bool isDisconnectedAfterGameStart(Int *reason) const { if (reason) *reason = m_disconReason; return m_isDisconAfterGameStart; }
  111. virtual void markAsDisconnectedAfterGameStart(Int reason) { m_isDisconAfterGameStart = TRUE; m_disconReason = reason; }
  112. virtual Bool didPlayerPreorder( Int profileID ) const;
  113. virtual void markPlayerAsPreorder( Int profileID );
  114. virtual void setMaxMessagesPerUpdate( Int num );
  115. virtual Int getMaxMessagesPerUpdate( void );
  116. virtual Int getAdditionalDisconnects( void );
  117. virtual void clearAdditionalDisconnects( void );
  118. virtual void readAdditionalDisconnects( void );
  119. virtual void updateAdditionalGameSpyDisconnections(Int count);
  120. private:
  121. Bool m_sawFullGameList;
  122. Bool m_isDisconAfterGameStart;
  123. Int m_disconReason;
  124. AsciiString m_rawMotd;
  125. AsciiString m_rawConfig;
  126. AsciiString m_pingString;
  127. GroupRoomMap m_groupRooms;
  128. StagingRoomMap m_stagingRooms;
  129. Bool m_stagingRoomsDirty;
  130. BuddyInfoMap m_buddyMap;
  131. BuddyInfoMap m_buddyRequestMap;
  132. PlayerInfoMap m_playerInfoMap;
  133. BuddyMessageList m_buddyMessages;
  134. Int m_currentGroupRoomID;
  135. Bool m_gotGroupRoomList;
  136. AsciiString m_localName;
  137. Int m_localProfileID;
  138. AsciiString m_localPasswd;
  139. AsciiString m_localEmail;
  140. AsciiString m_localBaseName;
  141. PSPlayerStats m_cachedLocalPlayerStats;
  142. Bool m_disallowAsainText;
  143. Bool m_disallowNonAsianText;
  144. UnsignedInt m_internalIP, m_externalIP;
  145. Int m_maxMessagesPerUpdate;
  146. Int m_joinedStagingRoom; // if we join a staging room, this holds its ID (0 otherwise)
  147. Bool m_isHosting; // if we host, this is true, and
  148. GameSpyStagingRoom m_localStagingRoom; // this holds the GameInfo for it.
  149. Int m_localStagingRoomID;
  150. IgnoreList m_ignoreList;
  151. SavedIgnoreMap m_savedIgnoreMap;
  152. std::set<GameWindow *> m_textWindows;
  153. std::set<Int> m_preorderPlayers;
  154. Int m_additionalDisconnects;
  155. };
  156. #endif // __PEERDEFS_H__