本文整理汇总了C++中CChatChannel::RemoveMember方法的典型用法代码示例。如果您正苦于以下问题:C++ CChatChannel::RemoveMember方法的具体用法?C++ CChatChannel::RemoveMember怎么用?C++ CChatChannel::RemoveMember使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CChatChannel
的用法示例。
在下文中一共展示了CChatChannel::RemoveMember方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: QuitChat
void CChat::QuitChat(CChatMember *pClient)
{
ADDTOCALLSTACK("CChat::QuitChat");
// Remove from old channel (if any)
CChatChannel *pCurrentChannel = pClient->GetChannel();
if ( pCurrentChannel )
pCurrentChannel->RemoveMember(pClient);
}
示例2: JoinChannel
void CChat::JoinChannel(LPCTSTR pszName, LPCTSTR pszPassword, CChatMember *pMember)
{
ADDTOCALLSTACK("CChat::JoinChannel");
ASSERT(pMember);
CClient *pMemberClient = pMember->GetClient();
ASSERT(pMemberClient);
CChatChannel *pNewChannel = FindChannel(pszName);
if ( !pNewChannel )
{
pMemberClient->addChatSystemMessage(CHATMSG_NoConference, pszName);
return;
}
pszName = pNewChannel->m_sName; // fix case-sensitive mismatch
CChatChannel *pCurrentChannel = pMember->GetChannel();
if ( pCurrentChannel && (pCurrentChannel == pNewChannel) )
{
pMember->SendChatMsg(CHATMSG_AlreadyInConference, pszName);
return;
}
else if ( !pNewChannel->m_sPassword.IsEmpty() && (!pszPassword || (strcmp(static_cast<LPCTSTR>(pNewChannel->m_sPassword), pszPassword) != 0)) )
{
if ( pMemberClient->m_UseNewChatSystem )
{
CGString sName;
FormatName(sName, NULL, true);
pMember->SendChatMsg(CHATMSG_PlayerMessage, sName, " Your client version can't join channels with password.");
}
else
pMemberClient->addChatSystemMessage(CHATMSG_IncorrectPassword);
return;
}
/*else if ( pNewChannel->m_Members.GetCount() >= UCHAR_MAX )
{
pMemberClient->addChatSystemMessage(CHATMSG_ConferenceIsFull, pszName);
return;
}*/
// Leave current channel
if ( pCurrentChannel )
pCurrentChannel->RemoveMember(pMember);
// Join the new channel
pNewChannel->AddMember(pMember);
pNewChannel->SendMember(pMember); // send this member to all others clients
pMemberClient->addChatSystemMessage(CHATCMD_JoinedChannel, pszName);
if ( !pMemberClient->m_UseNewChatSystem )
pNewChannel->FillMembersList(pMember); // fill the members list on this client
}
示例3: QuitChat
void CChat::QuitChat(CChatChanMember * pClient)
{
ADDTOCALLSTACK("CChat::QuitChat");
// Are we in a channel now?
CChatChannel * pCurrentChannel = pClient->GetChannel();
// Remove from old channel (if any)
if (pCurrentChannel)
{
// Remove myself from the channels list of members
pCurrentChannel->RemoveMember( pClient );
// Am I the last one here? Delete it from all other clients?
if (pCurrentChannel->m_Members.GetCount() <= 0)
{
// If noone is left, tell the chat system to delete it from memory
DeleteChannel(pCurrentChannel);
}
}
// Now tell the chat system you left
pClient->SetChatInactive();
}
示例4: JoinChannel
bool CChat::JoinChannel(CChatChanMember * pMember, LPCTSTR pszChannel, LPCTSTR pszPassword)
{
ADDTOCALLSTACK("CChat::JoinChannel");
ASSERT(pMember != NULL);
CClient * pMemberClient = pMember->GetClient();
ASSERT(pMemberClient != NULL);
// Are we in a channel now?
CChatChannel * pCurrentChannel = pMember->GetChannel();
if (pCurrentChannel != NULL)
{
// Is it the same channel as the one I'm already in?
if (strcmp(pszChannel, pCurrentChannel->GetName()) == 0)
{
// Tell them and return
pMember->SendChatMsg(CHATMSG_AlreadyInConference, pszChannel);
return false;
}
}
CChatChannel * pNewChannel = FindChannel(pszChannel);
if (pNewChannel == NULL)
{
pMemberClient->addChatSystemMessage(CHATMSG_NoConference, pszChannel );
return false;
}
// If there's a password, is it the correct one?
if (strcmp(pNewChannel->GetPassword(), pszPassword) != 0)
{
pMemberClient->addChatSystemMessage(CHATMSG_IncorrectPassword);
return false;
}
// Leave the old channel 1st
// Remove from old channel (if any)
if (pCurrentChannel != NULL)
{
// Remove myself from the channels list of members
pCurrentChannel->RemoveMember(pMember);
// If noone is left, tell the chat system to delete it from memory
if (pCurrentChannel->m_Members.GetCount() <= 0)
{
// Am I the last one here? Delete it from all other clients?
DeleteChannel(pCurrentChannel);
}
// Since we left, clear all members from our client that might be in our list from the channel we just left
pMemberClient->addChatSystemMessage(CHATMSG_ClearMemberList);
}
// Now join a new channel
// Add all the members of the channel to the clients list of channel participants
pNewChannel->SendMembers(pMember);
// Add ourself to the channels list of members
if (!pNewChannel->AddMember(pMember))
return false;
// Set the channel name title bar
pMemberClient->addChatSystemMessage(CHATMSG_UpdateChannelBar, pszChannel);
// Now send out my name to all clients in this channel
pNewChannel->SendThisMember(pMember);
return true;
}
示例5: Action
void CChat::Action(CClient *pClient, const NCHAR *pszText, int len, CLanguageID lang)
{
ADDTOCALLSTACK("CChat::Action");
// ARGS:
// len = length of the pszText string in NCHAR's.
if ( !(g_Cfg.m_iFeatureT2A & FEATURE_T2A_CHAT) )
return;
CChatMember *pMe = static_cast<CChatMember *>(pClient);
CChatChannel *pChannel = pMe->GetChannel();
TCHAR szFullText[MAX_TALK_BUFFER];
CvtNUNICODEToSystem(szFullText, sizeof(szFullText), pszText, len);
TCHAR *pszMsg = szFullText + 1;
switch ( szFullText[0] ) // the 1st character is a command byte (join channel, leave channel, etc)
{
case CHATACT_ChangeChannelPassword: // client shortcut: /pw
{
if ( !pChannel )
goto NoConference;
pChannel->ChangePassword(pMe, pszMsg);
break;
}
case CHATACT_LeaveChannel:
{
if ( !pChannel )
goto NoConference;
pChannel->RemoveMember(pMe);
break;
}
case CHATACT_LeaveChat:
{
if ( pChannel )
pChannel->RemoveMember(pMe);
break;
}
case CHATACT_ChannelMessage:
{
if ( pChannel )
{
pChannel->MemberTalk(pMe, pClient->m_UseNewChatSystem ? szFullText : pszMsg, lang);
break;
}
NoConference:
pMe->SendChatMsg(CHATMSG_MustBeInAConference);
return;
}
case CHATACT_JoinChannel: // client shortcut: /conf
{
// Look for second double quote to separate channel from password
size_t i = 1;
for ( ; pszMsg[i] != '\0'; i++ )
{
if ( pszMsg[i] == '"' )
break;
}
pszMsg[i] = '\0';
TCHAR *pszPassword = pszMsg + i + 1;
if ( pszPassword[0] == ' ' ) // skip whitespaces
pszPassword++;
JoinChannel(pszMsg + 1, pszPassword, pMe);
break;
}
case CHATACT_CreateChannel: // client shortcut: /newconf
{
TCHAR *pszPassword = NULL;
size_t iMsgLength = strlen(pszMsg);
for ( size_t i = 0; i < iMsgLength; i++ )
{
if ( pszMsg[i] == '{' ) // there's a password here
{
pszMsg[i] = 0;
pszPassword = pszMsg + i + 1;
size_t iPasswordLength = strlen(pszPassword);
for ( i = 0; i < iPasswordLength; i++ )
{
if ( pszPassword[i] == '}' )
{
pszPassword[i] = '\0';
break;
}
}
break;
}
}
if ( CreateChannel(pszMsg, pszPassword, pMe) )
JoinChannel(pszMsg, pszPassword, pMe);
break;
}
case CHATACT_RenameChannel: // client shortcut: /rename
{
if ( !pChannel )
goto NoConference;
pMe->RenameChannel(pszMsg);
break;
//.........这里部分代码省略.........