Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.2 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================
  7. #include "PlayerMsgHandler.h"
  8. #include "playerlist.h"
  9. #include "info.h"
  10. #include "proto_oob.h"
  11. #include "inetapi.h"
  12. #include "DialogGameInfo.h"
  13. extern void v_strncpy(char *dest, const char *src, int bufsize);
  14. //-----------------------------------------------------------------------------
  15. // Purpose: Constructor
  16. //-----------------------------------------------------------------------------
  17. CPlayerMsgHandlerDetails::CPlayerMsgHandlerDetails( CPlayerList *baseobject, CUtlVector<Players_t> *players,HANDLERTYPE type, void *typeinfo /*= NULL*/ )
  18. : CMsgHandler( type, typeinfo )
  19. {
  20. m_pPlayerList = baseobject;
  21. m_pPlayerNames=players;
  22. }
  23. CPlayerMsgHandlerDetails::~CPlayerMsgHandlerDetails()
  24. {
  25. // delete m_pPlayerNames;
  26. }
  27. //-------------------------------------------------------------------------
  28. // Purpose: Process cracked message
  29. //-----------------------------------------------------------------------------
  30. bool CPlayerMsgHandlerDetails::Process( netadr_t *from, CMsgBuffer *msg )
  31. {
  32. m_pPlayerNames->RemoveAll();
  33. m_pPlayerNames->Purge();
  34. // Check type of data.
  35. if (msg->ReadByte() != S2A_PLAYER)
  36. return false;
  37. int pNumber;
  38. pNumber = msg->ReadByte();
  39. if (pNumber <= 0 || pNumber > 32) // you still need to update the player vector if this happens, the server could be empty
  40. {
  41. m_pPlayerList->UpdateServer();
  42. return false;
  43. }
  44. // Read the data
  45. for (int i = 0; i < pNumber; i++)
  46. {
  47. Players_t player;
  48. memset(&player,0x0,sizeof(Players_t));
  49. player.userid = msg->ReadByte();
  50. v_strncpy(player.name ,msg->ReadString(),100);
  51. player.frags = msg->ReadLong();
  52. player.time = msg->ReadFloat();
  53. m_pPlayerNames->AddToTail(player);
  54. }
  55. /* serveritem_t server;
  56. memset(&server, 0, sizeof(server));
  57. netadr_t netaddr;
  58. if (net->StringToAdr("192.168.1.66", &netaddr))
  59. {
  60. memcpy(server.ip,netaddr.ip,4);
  61. }
  62. server.port = 27015;
  63. CDialogGameInfo *gameDialog = new CDialogGameInfo(NULL, 0,*((int *)server.ip),pNumber);
  64. gameDialog->Run("Stuff");
  65. */
  66. m_pPlayerList->UpdateServer();
  67. return true;
  68. }