summaryrefslogtreecommitdiff
path: root/protocols/Xfire/src/Xfire_voicechat.h
blob: 1b70f3f456438ec265ae666cf427f71854d5aa07 (plain)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
 *  Plugin of miranda IM(ICQ) for Communicating with users of the XFire Network. 
 *
 *  Copyright (C) 2009 by
 *          dufte <dufte@justmail.de>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 *
 *
 *  Miranda ICQ: the free icq client for MS Windows 
 *  Copyright (C) 2000-2008  Richard Hughes, Roland Rabien & Tristan Van de Vreede
 *
 */

//Klasse behandelt alle Iconsachen unter Xfire

#include "stdafx.h"

#ifndef _XFIRE_VOICECHAT
#define _XFIRE_VOICECHAT

#include "client.h"
#include "sendgamestatus2packet.h"
#include "Xfire_base.h"

#include <vector>

/* tsr definitionen für teamspeak 2 */
struct TtsrServerInfo
{
	char ServerName[30];
	char WelcomeMessage[256];
	int ServerVMajor;
	int ServerVMinor;
	int ServerVRelease;
	int ServerVBuild;
	char ServerPlatform[28]; //geändert in 28 - dufte
	char ServerIp[30];
	char ServerHost[102];
	int ServerType;
	int ServerMaxUsers;
	int SupportedCodecs;
	int ChannelCount;
	int PlayerCount;
};

typedef int (__stdcall  *LPtsrGetServerInfo)(TtsrServerInfo *tsrServerInfo);

/* klassen definitionen */
struct ts3IPPORT {
	unsigned char ip[4];
	unsigned short port;
};

enum XFIREVOICECHATTYPE {
	XFIREVOICECHAT_NOVOICE,
	XFIREVOICECHAT_TS3=35,
	XFIREVOICECHAT_TS2=32,
	XFIREVOICECHAT_MUMBLE=34,
	XFIREVOICECHAT_VENTRILO=33,
	XFIREVOICECHAT_IPDETECT=999
};

using namespace xfirelib;

class Xfire_voicechat : public Xfire_base {
private:
	//interner status, des aktiven voicechats
	XFIREVOICECHATTYPE currentvoice;
	//ipportport structur für ts3
	ts3IPPORT* ipport;
	//statuspacket caching
	SendGameStatus2Packet lastpacket;
	//tsremotedll
	HMODULE tsrDLL;
	//tsrGetServerInfo funktion vom tsremotedll
	LPtsrGetServerInfo tsrGetServerInfo;
	//GetExtendedTcpTable für mumble
	pGetExtendedTcpTable GetExtendedTcpTable;
	//pid für mumble
	DWORD pid;
	//IpHlperApi Module
	HMODULE IpHlpApiDLL;
public:
	Xfire_voicechat();
	~Xfire_voicechat();

	void initVoicechat();
	void resetSendGameStatus2Packet(SendGameStatus2Packet* packet);
	void resetCurrentvoicestatus();
	void writeToDatabase(SendGameStatus2Packet* packet);
	HMODULE loadTSR(char* path=NULL,BOOL nolocaltest=FALSE);
	BOOL checkVoicechat(SendGameStatus2Packet* packet);
	BOOL alreadySend(SendGameStatus2Packet* packet);

	//prüf routinen
	BOOL checkforTS3(SendGameStatus2Packet* packet);
	BOOL checkforTS2(SendGameStatus2Packet* packet);
	BOOL checkforMumble(SendGameStatus2Packet* packet);
};

#endif