📄 chatmanager.cpp
字号:
#include "stdafx.h"
#ifdef _CHEATENABLE_ //KES CHEAT!!!
#include "CheatMsgParser.h"
#endif //_CHEATENABLE_ //KES CHEAT!!!
#include "MacroManager.h"
#include "ChatManager.h"
#include "Chatdialog.h"
#include "ObjectManager.h"
#include "FriendManager.h"
#include "FilteringTable.h"
#include "PartyManager.h"
#include "./Input/cIMEWnd.h"
#include "cIMEex.h"
#include "./Interface/cResourceDef.h"
#include "./Interface/cEditBox.h"
#include "GMNotifyManager.h"
#include "./Interface/cWindowManager.h"
#include "./Interface/cListDialog.h"
#include "cMsgBox.h"
#include "GuildManager.h"
#ifdef _GMTOOL_
#include "GMToolManager.h"
#include "MainGame.h"
#endif
GLOBALTON(CChatManager)
CChatManager::CChatManager()
{
ZeroMemory( m_pChatMsg, sizeof( m_pChatMsg ) );
// ZeroMemory( &m_ChatOption, sizeof( m_ChatOption ) );
m_bPause = FALSE;
m_pChatDialog = NULL;
m_strLastName[0] = 0;
m_NULL = 0;
m_dwLastChatTime = 0;
}
CChatManager::~CChatManager()
{
Release();
}
/*
void CChatManager::LoadUserOption()
{
if( !LoadOption( "./INI/ChatOption.cto" ) )
{
SetDefaultOption();
}
}
void CChatManager::SaveUserOption()
{
SaveOption( "./INI/ChatOption.cto" );
}
void CChatManager::SetDefaultOption()
{
m_ChatOption.bOption[CTO_PARTYTOWHOLE] = FALSE;
m_ChatOption.bOption[CTO_MUNPATOWHOLE] = FALSE;
m_ChatOption.bOption[CTO_NOWHISPER] = FALSE;
m_ChatOption.bOption[CTO_ATTACKED] = TRUE;
m_ChatOption.bOption[CTO_KILLED] = TRUE;
m_ChatOption.bOption[CTO_ATTACK] = TRUE;
m_ChatOption.bOption[CTO_DEFENCE] = TRUE;
m_ChatOption.bOption[CTO_DEFENCED] = TRUE;
m_ChatOption.bOption[CTO_MPWARNING] = TRUE;
m_ChatOption.bOption[CTO_HPWARNING] = TRUE;
m_ChatOption.bOption[CTO_GETITEM] = TRUE;
m_ChatOption.bOption[CTO_GETMONEY] = TRUE;
}
BOOL CChatManager::LoadOption( LPCTSTR strPath )
{
HANDLE hFile;
hFile = CreateFile( strPath, GENERIC_READ, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if( hFile == INVALID_HANDLE_VALUE )
return FALSE;
DWORD dwRead;
if( !ReadFile( hFile, &m_ChatOption, sizeof(m_ChatOption), &dwRead, NULL ) )
{
CloseHandle( hFile );
return FALSE;
}
CloseHandle( hFile );
return TRUE;
}
BOOL CChatManager::SaveOption( LPCTSTR strPath )
{
HANDLE hFile;
hFile=CreateFile( strPath, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
if( hFile == INVALID_HANDLE_VALUE )
return FALSE;
DWORD dwWritten;
if( !WriteFile( hFile, &m_ChatOption, sizeof(m_ChatOption), &dwWritten, NULL ) )
{
CloseHandle( hFile );
return FALSE;
}
CloseHandle( hFile );
return TRUE;
}
*/
void CChatManager::Init()
{
m_bPause = FALSE;
LoadChatMsg(); //皋技瘤冠胶档 窃膊 荤侩窍骨肺.. 促弗镑俊 困摹窍绰巴捞?
// LoadUserOption();
//init傈俊 促捞倔肺弊啊 父甸绢廉 乐绰瘤 犬牢...
// m_pChatDialog = (CChatDialog*)WINDOWMGR->GetWindowForID( CTI_TABDLG );
}
void CChatManager::SetChatDialog( CChatDialog* pChatDlg )
{
m_pChatDialog = pChatDlg;
if( m_ChatOption.bOption[CTO_AUTOHIDECHAT] == TRUE )
if( m_pChatDialog )
m_pChatDialog->HideChatDialog( TRUE );
}
void CChatManager::Release()
{
for( int i = 0 ; i < MAX_CHATMSGNUM ; ++i )
{
if( m_pChatMsg[i] )
{
delete[] m_pChatMsg[i];
m_pChatMsg[i] = NULL;
}
}
m_pChatDialog = NULL;
ReleaseChatList();
}
void CChatManager::LoadChatMsg()
{
char msg[256] = {0,};
CMHFile fp;
int nIndex;
int nLen = 0;
#ifdef _FILE_BIN_
if( !fp.Init( FILE_CHAT_MSG, "rb" ) )
return;
#else
if( !fp.Init( FILE_CHAT_MSG, "rt" ) )
return;
#endif
while( TRUE )
{
nIndex = fp.GetInt();
// if(nIndex == 441)
// {
// int a=0;
// }
if( fp.IsEOF() ) break;
if( nIndex < 0 || nIndex >= MAX_CHATMSGNUM ) break; //511锅鳖瘤父.
fp.GetStringInQuotation(msg);
nLen = strlen( msg );
if( nLen > 0 )
{
m_pChatMsg[nIndex] = new char[nLen+1];
memcpy( m_pChatMsg[nIndex], msg, nLen+1 );
fp.GetLine(msg, 256);
}
}
fp.Release();
}
char* CChatManager::GetChatMsg( int nMsgNum )
{
if( m_pChatMsg[nMsgNum] )
return m_pChatMsg[nMsgNum];
else
return &m_NULL;
}
/*
void CChatManager::AddMsg( int nClass, int PredefinedMsg, ... )
{
char* str = GetChatMsg(PredefinedMsg);
if( str == NULL ) return;
char msg[256];
va_list argList;
va_start(argList, str);
vsprintf(msg,str,argList);
va_end(argList);
PrintMsg( nClass, msg );
}
*/
void CChatManager::AddMsg( int nClass, char* str, ... )
{
if( str == NULL ) return;
char msg[256];
va_list argList;
va_start(argList, str);
vsprintf(msg,str,argList);
va_end(argList);
PrintMsg( nClass, msg );
}
void CChatManager::PrintMsg( int nClass, char* msg )
{
DWORD dwColor = dwChatTextColor[ nClass ];
switch( nClass )
{
case CTC_OPERATOR: //款康磊皋技瘤
AddChatMsgAll( dwColor, msg );
if( m_pChatDialog )
{
NOTIFYMGR->AddMsg( msg );
}
break;
case CTC_GMCHAT:
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_GENERALCHAT: //老馆盲泼
if( m_ChatOption.bOption[CTO_NOCHATMSG] )
break;
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_PARTYCHAT: //颇萍盲泼
AddChatMsg( PARTY, dwColor, msg );
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_GUILDCHAT: //巩颇盲泼
AddChatMsg( MUNPA, dwColor, msg );
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_WHISPER: //庇富
AddChatMsgAll( dwColor, msg );
break;
case CTC_ATTACK: //傍拜
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_ATTACKED: //惑措啊 傍拜
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_DEFENCE: //规绢
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_DEFENCED: //惑措啊 规绢
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_KILLED: //磷澜
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
{
AddChatMsgAll( dwColor, msg );
}
break;
case CTC_MPWARNING: //郴傍版绊
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
{
AddChatMsgAll( dwColor, msg );
}
break;
case CTC_HPWARNING: //积疙仿版绊
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
{
AddChatMsgAll( dwColor, msg );
}
break;
case CTC_GETITEM: //酒捞袍裙垫
if( !m_ChatOption.bOption[CTO_NOITEMMSG] )
{
AddChatMsgAll( dwColor, msg );
}
break;
case CTC_GETMONEY: //捣裙垫
if( !m_ChatOption.bOption[CTO_NOITEMMSG] )
{
AddChatMsgAll( dwColor, msg );
}
break;
case CTC_GETEXP:
if( !m_ChatOption.bOption[CTO_NOEXPMSG] )
{
AddChatMsgAll( dwColor, msg );
}
break;
case CTC_SYSMSG:
if( !m_ChatOption.bOption[CTO_NOSYSMSG] )
{
AddChatMsgAll( dwColor, msg );
}
break;
case CTC_TOWHOLE:
AddChatMsg( WHOLE, dwColor, msg );
break;
case CTC_TOPARTY:
AddChatMsg( PARTY, dwColor, msg );
break;
case CTC_TOMUNPA:
AddChatMsg( MUNPA, dwColor, msg );
break;
default:
AddChatMsgAll( dwColor, msg );
break;
}
}
void CChatManager::SetOption( sChatOption* pChatOption )
{
m_ChatOption = *pChatOption;
if( m_pChatDialog )
{
if( m_ChatOption.bOption[CTO_AUTOHIDECHAT] )
m_pChatDialog->HideChatDialog( TRUE );
else
m_pChatDialog->HideChatDialog( FALSE );
}
}
void CChatManager::MsgProc( UINT msg, WPARAM wParam )
{
// //皋技瘤 冠胶啊 乐阑锭绰 return 捞 救冈绰促...
if( msg == WM_KEYDOWN && wParam == VK_RETURN )
if( !CIMEWND->IsDocking() )
{
cMsgBox* pMsgBox = WINDOWMGR->GetFirstMsgBox();
if( pMsgBox )
{
if( pMsgBox->PressDefaultBtn() )
return;
}
}
//
if( !m_pChatDialog || m_bPause ) //烙矫规祈
return;
cEditBox* pEdit = m_pChatDialog->GetChatEditBox();
if( pEdit == NULL ) return;
switch( msg )
{
case WM_CHAR:
case WM_IME_CHAR:
case WM_IME_COMPOSITION:
if( MACROMGR->IsChatMode() ) //牧飘费虐 犬牢
{
if( !pEdit->IsFocus() )
{
if( !CIMEWND->IsDocking() && m_pChatDialog->GetChatEditBox()->GetIME()->IsValidChar( (unsigned char*)&wParam ) )
{
pEdit->SetFocusEdit( TRUE );
}
}
}
break;
case WM_KEYDOWN: //泅犁 MI_ChatEditFunc窃荐焊促 角青鉴辑啊 刚历烙
if( wParam == VK_RETURN )
{
if( !CIMEWND->IsDocking() ) //促弗俊叼磐俊 器目胶啊 绝促搁.
{
// cMsgBox* pMsgBox = WINDOWMGR->GetFirstMsgBox();
// BOOL bMsgBoxProcessd = FALSE;
// if( pMsgBox )
// bMsgBoxProcessd = pMsgBox->PressDefaultBtn();
pEdit->SetFocusEdit( TRUE );
}
else
{
char* strChat = pEdit->GetEditText();
if( *strChat != 0 )
{
OnInputChatMsg( strChat );
pEdit->SetEditText("");
}
pEdit->SetFocusEdit( FALSE );
}
}
break;
}
}
void CChatManager::OnInputChatMsg( char* str )
{
//#ifndef _CHEATENABLE_ //趣矫 鞘磐傅俊 吧妨辑 摹飘啊 救瞪鳖毫
#ifdef _CHEATENABLE_
if( !CHEATMGR->IsCheatEnable() )
#endif
if( FILTERTABLE->FilterChat( str ) )
{
AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(27) );
return;
}
//#endif
if( gCurTime - m_dwLastChatTime < 1000 ) //老窜 1檬
{
CHATMGR->AddMsg( CTC_SYSMSG, CHATMGR->GetChatMsg(697) );
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -