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.

89 lines
2.0 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================
  7. #include "RulesInfoMsgHandler.h"
  8. #include "rulesinfo.h"
  9. #include "info.h"
  10. #include "proto_oob.h"
  11. #include "DialogGameInfo.h"
  12. #include "inetapi.h"
  13. extern void v_strncpy(char *dest, const char *src, int bufsize);
  14. //-----------------------------------------------------------------------------
  15. // Purpose: Constructor
  16. //-----------------------------------------------------------------------------
  17. CRulesInfoMsgHandlerDetails::CRulesInfoMsgHandlerDetails( CRulesInfo *baseobject, HANDLERTYPE type, void *typeinfo /*= NULL*/ )
  18. : CMsgHandler( type, typeinfo )
  19. {
  20. m_pRulesInfo = baseobject;
  21. m_vRules = new CUtlVector<vgui::KeyValues *>();
  22. }
  23. //-----------------------------------------------------------------------------
  24. // Purpose: Process cracked message
  25. //-----------------------------------------------------------------------------
  26. bool CRulesInfoMsgHandlerDetails::Process( netadr_t *from, CMsgBuffer *msg )
  27. {
  28. m_vRules->RemoveAll();
  29. m_vRules->Purge();
  30. // Check type of data.
  31. if (msg->ReadByte() != S2A_RULES)
  32. return false;
  33. int pNumber;
  34. pNumber = msg->ReadByte();
  35. // there is a null string at the start of the rules...
  36. msg->ReadString();
  37. // Read the data
  38. for (int i = 0; i < pNumber; i++)
  39. {
  40. vgui::KeyValues *kv=new vgui::KeyValues("rules");
  41. char *cvar,*value;
  42. cvar = new char[50];
  43. value = new char[50];
  44. v_strncpy(cvar,msg->ReadString(),50);
  45. v_strncpy(value,msg->ReadString(),50);
  46. kv->SetString("cvar",cvar);
  47. kv->SetString("value",value);
  48. m_vRules->AddToTail(kv);
  49. }
  50. /* serveritem_t server;
  51. memset(&server, 0, sizeof(server));
  52. netadr_t netaddr;
  53. if (net->StringToAdr("192.168.1.66", &netaddr))
  54. {
  55. memcpy(server.ip,netaddr.ip,4);
  56. }
  57. server.port = 27015;
  58. CDialogGameInfo *gameDialog = new CDialogGameInfo(NULL, 0,*((int *)server.ip),pNumber);
  59. gameDialog->Run("Stuff");
  60. */
  61. m_pRulesInfo->UpdateServer(from, m_vRules);
  62. return true;
  63. }