summaryrefslogtreecommitdiff
path: root/tracker/AdminServer/rulesinfomsghandler.cpp
blob: da1336c1f90be9373c3d1fd0fc47303a09c74969 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================

#include "RulesInfoMsgHandler.h"

#include "rulesinfo.h"
#include "info.h"
#include "proto_oob.h"
#include "DialogGameInfo.h"
#include "inetapi.h"


extern void v_strncpy(char *dest, const char *src, int bufsize);

//-----------------------------------------------------------------------------
// Purpose: Constructor
//-----------------------------------------------------------------------------
CRulesInfoMsgHandlerDetails::CRulesInfoMsgHandlerDetails( CRulesInfo *baseobject, HANDLERTYPE type, void *typeinfo /*= NULL*/ ) 
	: CMsgHandler( type, typeinfo )
{ 
	m_pRulesInfo = baseobject;
	m_vRules = new CUtlVector<vgui::KeyValues *>();
}

//-----------------------------------------------------------------------------
// Purpose: Process cracked message
//-----------------------------------------------------------------------------
bool CRulesInfoMsgHandlerDetails::Process( netadr_t *from, CMsgBuffer *msg )
{
	m_vRules->RemoveAll();
	m_vRules->Purge();

	
	// Check type of data.
	if (msg->ReadByte() != S2A_RULES) 
		return false;


	int pNumber;
	pNumber = msg->ReadByte();

	// there is a null string at the start of the rules...
	msg->ReadString();


	// Read the data
	for (int i = 0; i < pNumber; i++)
	{
		vgui::KeyValues *kv=new vgui::KeyValues("rules");
		char *cvar,*value;
		cvar = new char[50];
		value = new char[50];
		v_strncpy(cvar,msg->ReadString(),50);
		v_strncpy(value,msg->ReadString(),50);


		kv->SetString("cvar",cvar);
		kv->SetString("value",value);

		m_vRules->AddToTail(kv);
	}

/*	serveritem_t server;
	memset(&server, 0, sizeof(server));
	netadr_t netaddr;
	if (net->StringToAdr("192.168.1.66", &netaddr))
	{
		memcpy(server.ip,netaddr.ip,4);
	}

	server.port = 27015;

	CDialogGameInfo *gameDialog = new CDialogGameInfo(NULL, 0,*((int *)server.ip),pNumber);
	gameDialog->Run("Stuff");

*/


	m_pRulesInfo->UpdateServer(from, m_vRules);
	

	return true;
}