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

243 lines
5.7 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "ChatPropertyDialog.h"
#include "InterfaceManager.h"
#include "uichatman/uiChatMan.h"
#include "ChatDialog.h"
WzID ChatPropertyDialog::m_wzID[DLGPOS_MAX] =
{
StrToWzID("C001"), // DLGPOS_CHECK_SYSTEM,
StrToWzID("C002"), // DLGPOS_CHECK_SHOUT,
StrToWzID("C003"), // DLGPOS_CHECK_GENERAL,
StrToWzID("C004"), // DLGPOS_CHECK_WHISPER,
StrToWzID("C005"), // DLGPOS_CHECK_PARTY,
StrToWzID("C006"), // DLGPOS_CHECK_GUILD,
StrToWzID("C007"), // DLGPOS_CHECK_CHANNEL,
StrToWzID("B001"), // DLGPOS_BTN_EXIT,
};
//------------------------------------------------------------------------------
/**
*/
ChatPropertyDialog::ChatPropertyDialog(InterfaceManager* pUIMan):
uiBase(pUIMan)
{
}
//------------------------------------------------------------------------------
/**
*/
ChatPropertyDialog::~ChatPropertyDialog()
{
}
//------------------------------------------------------------------------------
/**
*/
void ChatPropertyDialog::Init(CDrawBase* pDrawBase)
{
uiBase::Init(pDrawBase);
for( int i = 0 ; i < DLGPOS_CHECK_CHANNEL +1 ; ++i)
{
m_pCheck[i] = static_cast<CCtrlButtonCheckWZ *>( getControl(i) );
}
m_pChatMan = GET_DIALOG_MANAGER(uiChatMan, UIMAN_CHAT);
assert (m_pChatMan);
MoveDefaultPosition();
}
//------------------------------------------------------------------------------
/**
*/
void ChatPropertyDialog::Release()
{
}
//------------------------------------------------------------------------------
/**
*/
void ChatPropertyDialog::Process(DWORD dwTick)
{
}
//------------------------------------------------------------------------------
/**
*/
void ChatPropertyDialog::OnShowWindow(BOOL val)
{
if( val )
{
m_iFilterValue = m_pChatMan->m_pChatDlg->GetCurrentBitFilter();
SetPropertyDlgFilter(m_iFilterType, m_iFilterValue);
}
else
{
ChatDialog* pDlg = (ChatDialog*)GET_DIALOG(IM_CHAT_MANAGER::CHAT_DIALOG);
if (pDlg != NULL)
{
pDlg->ChatPropertyDisable();
}
}
}
//------------------------------------------------------------------------------
/**
*/
void ChatPropertyDialog::MessageProc(SI_MESSAGE * pMessage)
{
switch ( pMessage->eResultMsg )
{
case RT_MSG_LBUTTONCLICK:
{
POSTYPE pos = getControlIDToPos(pMessage->dwCtrlID);
switch (pos)
{
case DLGPOS_BTN_EXIT:
{
this->ShowWindow(FALSE);
}
break;
case DLGPOS_CHECK_SYSTEM:
case DLGPOS_CHECK_SHOUT:
case DLGPOS_CHECK_GENERAL:
case DLGPOS_CHECK_WHISPER:
case DLGPOS_CHECK_PARTY:
case DLGPOS_CHECK_GUILD:
case DLGPOS_CHECK_CHANNEL:
{
//변경 불가값 설정.
ForceSettingCheckButton();
// 비트 필드 조작.
ComposeBitFilter();
m_pChatMan->m_pChatDlg->SetCurrentBitFilter(m_iFilterValue);
}
break;
}
}
break;
default:
{
SolarDialog::MessageProc(pMessage);
}
break;
}
}
//------------------------------------------------------------------------------
/**
*/
void ChatPropertyDialog::NetworkProc(MSG_BASE * pMsg)
{
}
void ChatPropertyDialog::updateAllCheckButton()
{
_updatEachCheckButton(DLGPOS_CHECK_GUILD ,CHAT_FILTER_TYPE_GUILD );
_updatEachCheckButton(DLGPOS_CHECK_GENERAL , CHAT_FILTER_TYPE_GENERAL);
_updatEachCheckButton(DLGPOS_CHECK_PARTY , CHAT_FILTER_TYPE_PARTY);
_updatEachCheckButton(DLGPOS_CHECK_CHANNEL , CHAT_FILTER_TYPE_CHANNEL);
_updatEachCheckButton(DLGPOS_CHECK_SHOUT , CHAT_FILTER_TYPE_SHOUT);
_updatEachCheckButton(DLGPOS_CHECK_SYSTEM ,CHAT_FILTER_TYPE_SYSTEM );
_updatEachCheckButton(DLGPOS_CHECK_WHISPER , CHAT_FILTER_TYPE_WHISPER);
}
void ChatPropertyDialog::_updatEachCheckButton(int id , int bit)
{
if( m_iFilterValue & bit)
{
m_pCheck[id]->SetCheckState(TRUE);
}
else
{
m_pCheck[id]->SetCheckState(FALSE);
}
}
void ChatPropertyDialog::ComposeBitFilter()
{
m_iFilterValue = 0;
_setEachBitFilter(DLGPOS_CHECK_GUILD ,CHAT_FILTER_TYPE_GUILD );
_setEachBitFilter(DLGPOS_CHECK_GENERAL , CHAT_FILTER_TYPE_GENERAL);
_setEachBitFilter(DLGPOS_CHECK_PARTY , CHAT_FILTER_TYPE_PARTY);
_setEachBitFilter(DLGPOS_CHECK_CHANNEL , CHAT_FILTER_TYPE_CHANNEL);
_setEachBitFilter(DLGPOS_CHECK_SHOUT , CHAT_FILTER_TYPE_SHOUT);
_setEachBitFilter(DLGPOS_CHECK_SYSTEM ,CHAT_FILTER_TYPE_SYSTEM );
_setEachBitFilter(DLGPOS_CHECK_WHISPER , CHAT_FILTER_TYPE_WHISPER);
}
void ChatPropertyDialog::_setEachBitFilter(int id , int bit)
{
if( m_pCheck[id]->GetCheckState())
{
m_iFilterValue |= bit;
}
}
void ChatPropertyDialog::SetPropertyDlgFilter(int filterType , int filterValue)
{
m_iFilterType = filterType;
m_iFilterValue = filterValue;
updateAllCheckButton();
}
void ChatPropertyDialog::ForceSettingCheckButton()
{
switch ( m_iFilterType )
{
case eLFM_NORMAL:
{
m_pCheck[DLGPOS_CHECK_GENERAL]->SetCheckState(TRUE);
}
break;
case eLFM_PARTY:
{
m_pCheck[DLGPOS_CHECK_PARTY]->SetCheckState(TRUE);
}
break;
case eLFM_GUILD:
{
m_pCheck[DLGPOS_CHECK_GUILD]->SetCheckState(TRUE);
}
break;
case eLFM_CHANNEL:
{
m_pCheck[DLGPOS_CHECK_CHANNEL]->SetCheckState(TRUE);
}
break;
case eLFM_SYSTEM:
{
m_pCheck[DLGPOS_CHECK_SYSTEM]->SetCheckState(TRUE);
}
break;
}
}
//----------------------------------------------------------------------------
/**
*/
void ChatPropertyDialog::MoveDefaultPosition()
{
RECT rcDialog;
ChatDialog* pDlg = GET_CAST_DIALOG(ChatDialog, IM_CHAT_MANAGER::CHAT_DIALOG);
if (pDlg != NULL)
{
pDlg->GetDialogWZ()->GetClientRect(&rcDialog);
POINT MyInitialPoint;
MyInitialPoint.x = rcDialog.right + c_iAddXSizeofChatProperty + 5;
MyInitialPoint.y = rcDialog.top;
this->MoveWindowWZ((float)MyInitialPoint.x, (float)MyInitialPoint.y);
}
}
//void ChatPropertyDialog::UpdatePosition()
//{
// // 장착 창 뜰때 포지션 지정해준다.
// // 스킵~
// //MoveDefaultPosition();
//}