blob: 84f19c2935a58059481239de42afb1b8ee24c1a3 (
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
|
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <np\np_party.h>
class SonyVoiceChatParty_Orbis
{
public:
static void init();
static void shutdown();
static void tick();
static void setEnabled(bool bEnabled);
static bool hasMicConnected(const PlayerUID& memberUID);
static bool isTalking( const PlayerUID& memberUID);
static void mute(bool bMute); //Turn chat audio on or off
static void mutePlayer(const SceNpMatching2RoomMemberId member_id, bool bMute); //Turn chat audio from a specified player on or off;
static void muteLocalPlayer(bool bMute); //Turn microphone input on or off;
static bool isMuted();
static bool isMutedPlayer(const PlayerUID& memberUID);
static bool isMutedLocalPlayer(); //Turn microphone input on or off;
private:
//NP Party Event Handlers
static void partyRoomEventHandler(SceNpPartyRoomEventType eventType,const void* data, void* userdata);
static void partyVoiceEventHandler(const SceNpPartyMemberVoiceInfo* memberVoiceInfo,void* userdata);
static void partyBinaryMessageEventHandler(SceNpPartyBinaryMessageEvent event, const void *data, void * userdata);
class MemberInfo
{
public:
SceNpId m_NpId;
SceNpPartyRoomMemberId m_roomID;
bool m_voiceConnected;
bool m_voiceMuted;
DWORD m_lastTimeTalking;
bool m_localUser;
bool m_partyLeader;
MemberInfo()
{
m_voiceConnected = false;
m_voiceMuted = false;
m_lastTimeTalking = 0;
m_localUser = false;
m_partyLeader = false;
}
};
class PartyInfo
{
public:
int m_numMembers;
MemberInfo m_members[SCE_NP_PARTY_MEMBER_NUM_MAX];
bool m_privateParty;
MemberInfo* getMember(SceNpPartyRoomMemberId roomID)
{
for(int i=0;i<m_numMembers;i++)
{
if(m_members[i].m_roomID == roomID)
return &m_members[i];
}
return NULL;
}
MemberInfo* getMember(const PlayerUID& memberUID)
{
for(int i=0;i<m_numMembers;i++)
{
if(strcmp(m_members[i].m_NpId.handle.data, memberUID.getOnlineID()) == 0)
return &m_members[i];
}
return NULL;
}
PartyInfo() : m_numMembers(0) {}
void addMember(SceNpPartyRoomMemberId roomID, SceNpId npID, bool local, bool leader)
{
m_members[m_numMembers].m_roomID = roomID;
m_members[m_numMembers].m_NpId = npID;
m_members[m_numMembers].m_localUser = local;
m_members[m_numMembers].m_partyLeader = leader;
m_numMembers++;
}
void removeMember(SceNpPartyRoomMemberId roomID)
{
// find the index of this member first
int index = -1;
for(int i=0;i<m_numMembers;i++)
{
if(roomID == m_members[i].m_roomID)
{
index = i;
break;
}
}
assert(index >= 0);
m_numMembers--;
if(m_numMembers > 0)
m_members[index] = m_members[m_numMembers];
}
void clear() { m_numMembers = 0;}
};
static PartyInfo m_partyInfo;
};
|