Files
Sun1602/Client/GameClient/ChatMenu.cpp
T
2022-10-26 12:25:11 +08:00

194 lines
3.7 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "ChatMenu.h"
#include "interfacemanager.h"
WzID ChatMenuDialog::m_wzId[] =
{
StrToWzID("C001"), //eCHATMENU_CHK_NORMAL = 0,
StrToWzID("C002"), //eCHATMENU_CHK_GUILD,
StrToWzID("C003"), //eCHATMENU_CHK_PARTY,
StrToWzID("B000"), //eCHATMENU_BTN_WHISPER,
StrToWzID("B001"), //eCHATMENU_BTN_SHOUT,
};
ChatMenuDialog::ChatMenuDialog(InterfaceManager* pUIMan):
uiBase(pUIMan),
m_pChatDialog(NULL)
{
}
ChatMenuDialog::~ChatMenuDialog(void)
{
}
VOID
ChatMenuDialog::Init( CDrawBase * pDrawBase )
{
uiBase::Init(pDrawBase);
this->SetCurType( CHAT_TYPE_GENERAL );
GetControls();
}
VOID
ChatMenuDialog::Release()
{
}
VOID
ChatMenuDialog::MessageProc( SI_MESSAGE * pMessage )
{
if(!m_pChatDialog) return;
switch( pMessage->eResultMsg )
{
case RT_MSG_LBUTTONCLICK:
{
POSTYPE pos = getCtrlIDToPos( pMessage->dwCtrlID );
switch (pos)
{
case eCHATMENU_CHK_NORMAL:
{
m_pChatDialog->UpdateChatInfo(eST_NORMAL_CHAT);
ShowDialog(FALSE);
}
break;
case eCHATMENU_CHK_GUILD:
{
m_pChatDialog->UpdateChatInfo(eST_GUILD_CHAT);
ShowDialog(FALSE);
}
break;
case eCHATMENU_CHK_PARTY:
{
m_pChatDialog->UpdateChatInfo(eST_PARTY_CHAT);
ShowDialog(FALSE);
}
break;
case eCHATMENU_BTN_WHISPER:
{
TCHAR szTemp[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
g_InterfaceManager.GetInterfaceString( 2010, szTemp, INTERFACE_STRING_LENGTH );
Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%s "), szTemp);
m_pChatDialog->SetChatMessage(szMessage);
ShowDialog(FALSE);
}
break;
case eCHATMENU_BTN_SHOUT:
{
TCHAR szTemp[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
g_InterfaceManager.GetInterfaceString( eST_CHAT_COMMAND_SHOUT, szTemp, INTERFACE_STRING_LENGTH );
Snprintf (szMessage, INTERFACE_STRING_LENGTH-1, _T("%s "), szTemp);
m_pChatDialog->SetChatMessage(szMessage);
ShowDialog(FALSE);
}
break;
}
}
break;
default:
{
SolarDialog::MessageProc( pMessage );
}
break;
}
}
VOID
ChatMenuDialog::NetworkProc( MSG_BASE * pMsg )
{
}
VOID
ChatMenuDialog::GetControls()
{
for (int i =0; i < eCHATMENU_MAX; ++i)
{
m_pCtrlChatType[i] =static_cast<CCtrlButtonCheckWZ *>(getControl(eCHATMENU_CHK_NORMAL +i));
assert(m_pCtrlChatType[i]);
}
}
VOID
ChatMenuDialog::OnShowWindow( BOOL val )
{
if (val)
{
if(m_pChatDialog)
{
if(m_pChatDialog->GetFilterMode() == eST_GUILD_CHAT)
{
m_pCtrlChatType[eCHATMENU_CHK_NORMAL]->SetCheckState(FALSE);
m_pCtrlChatType[eCHATMENU_CHK_PARTY]->SetCheckState(FALSE);
m_pCtrlChatType[eCHATMENU_CHK_GUILD]->SetCheckState(TRUE);
}
else if(m_pChatDialog->GetFilterMode() == eST_PARTY_CHAT)
{
m_pCtrlChatType[eCHATMENU_CHK_NORMAL]->SetCheckState(FALSE);
m_pCtrlChatType[eCHATMENU_CHK_GUILD]->SetCheckState(FALSE);
m_pCtrlChatType[eCHATMENU_CHK_PARTY]->SetCheckState(TRUE);
}
else
{
m_pCtrlChatType[eCHATMENU_CHK_GUILD]->SetCheckState(FALSE);
m_pCtrlChatType[eCHATMENU_CHK_PARTY]->SetCheckState(FALSE);
m_pCtrlChatType[eCHATMENU_CHK_NORMAL]->SetCheckState(TRUE);
}
}
}
else
{
if (m_pChatDialog && m_pChatDialog->IsVisibleWindow())
{
m_pChatDialog->SetFocusChatEdit();
}
}
}
CControlWZ *
ChatMenuDialog::getControl( POSTYPE AtPos )
{
if( AtPos < Dialog_Max )
{
return GetControlWZ( m_wzId[AtPos] );
}
else
{
return NULL;
}
}
POSTYPE
ChatMenuDialog::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < Dialog_Max; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return Dialog_Max;
}