📄 chat.h
字号:
// Chat.h: interface for the CChat class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_CHAT_H__5DFB83E9_CE7C_4319_A6EF_3E15B16B0566__INCLUDED_)
#define AFX_CHAT_H__5DFB83E9_CE7C_4319_A6EF_3E15B16B0566__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "network.h"
#include "menuset.h"
#include "CurrentMsgMgr.h"
//DisplayChatBackCustom客 悼老 茄 风凭 鸥涝俊 NEW_CHAT_IMG,0 +3n 阑 持绢林搁 等促 7啊瘤 规侥 啊瓷
////////////////////////////////////////////////
// yes no 免仿 叼颇牢
enum YesOrNoType
{ //< CSD-030806
YN_NO =0,
YN_GUILD_JOIN_OK =1, // 辨靛俊 啊涝且贰?
YN_MERCHANT_REQUIRE_DIRECT_EXCHANGE = 2,//惑牢俊霸 流立芭贰甫 夸没
}; //> CSD-030806
//弊覆 锅龋聪鳖 捞芭 阜 官操搁 救邓聪促.
enum eCHAT_BACK_IMG_COLOR_NUMBER
{
CHAT_COLOR_TYPE_DEFAULT =0,
CHAT_COLOR_TYPE_HIGHLEVEL =3,
CHAT_COLOR_TYPE_NPC =6,
CHAT_COLOR_TYPE_DUAL_CLASS =9,
CHAT_COLOR_TYPE_SIT_DOWN =12,
CHAT_COLOR_TYPE_GM =15,
CHAT_COLOR_TYPE_TUTORIAL_NPC =18,
CHAT_COLOR_TYPE_ANI2 =21,
CHAT_COLOR_TYPE_ANI3 =24,
CHAT_COLOR_TYPE_GUILDMASTER =27,
CHAT_COLOR_TYPE_MERCHANT_BBS =30,
};
const int CHAT_DELAY_TYPE_MERCHANT_PC = 500;//惑牢傍瘤绰 5盒 悼救 焊牢促
const int CHAT_DELAY_TYPE_NPC = 120;
const int CHAT_DELAY_TYPE_LONG_PC = 80;
const int CHAT_DELAY_TYPE_DEFAULT_PC = 40;
const int MAX_CHAT_STRING_ = 150 ;//020515 lsw
const int MAX_CHAT_COUNT = 10;//盲泼 扼牢狼 弥措 扼牢荐
const int MAX_DISPLAY_CHAT_WIDTH_BY_PIXEL = 410;
const int MAX_CHAT_DISPLAY_TIME = 30000;//拳搁俊 焊老 荐 乐绰 矫埃.
const int MAX_CHAT_STAY_TIME = 60000;//拳搁俊绰 焊捞瘤 臼瘤父 扁废捞 巢酒乐阑 矫埃,
const int MAX_NORMAL_COUNT = 20;
const int MAX_WHISPER_COUNT = 20;
const int MAX_GUILD_COUNT = 20;
const int MAX_GUILDBBS_COUNT = 20;
const int MAX_PARTY_COUNT = 20;
const int MAX_NATIONWAR_COUNT = 20;
const int MAX_LOCALWAR_COUNT = 20;
const int MAX_COLOSUSS_COUNT = 20;
const int MAX_YES_NO_COUNT = 1;
const int MAX_NOTICE_COUNT = 10;
enum ChatGroups
{
NORMAL_CHAT_GROUP =0,
GUILD_CHAT_GROUP =1,
WHISPER_CHAT_GROUP =2,
CHAT_GROUP_MAX =3
};//盲泼 弊缝狼 付瘤阜 捞促
#include "MyTypes.h"
#include <list>
#include <vector>
using namespace std;
class CChatData
{
public:
CChatData()
{
m_szData = NULL;
m_szTotalChatData = NULL;
m_szHeader[0] = NULL;
m_szName[0] = NULL;
bIsHaveHeader = false;
}
~CChatData()
{
SAFE_DELETE_ARRAY(m_szData);
SAFE_DELETE_ARRAY(m_szTotalChatData);
}
public:
int m_iIndex;
int m_iIndex2;
private:
int m_iChatType;
WORD m_wHeaderColor;
WORD m_wNameColor;
WORD m_wDataColor;
bool m_bIsDisplayAble;
bool bIsHaveHeader;
char m_szHeader[20];
char m_szName[20];
char* m_szData;
char* m_szTotalChatData;
DWORD m_dwWriteTime;
DWORD m_dwMaxDisplayTime;//啊厘 坷阀悼救 免仿 瞪 荐 乐绰 矫埃.//捞矫埃捞 逞菌促绊 瘤况瘤瘤绰 臼澜
public:
void SetData(const WORD wValue, const char* szValue)
{
SetData(szValue);
SetDataColor(wValue);
}
void SetName(const WORD wValue, const char* szValue)
{
SetName(szValue);
SetNameColor(wValue);
}
void SetHeader(const WORD wValue, const char* szValue)
{
SetHeader(szValue);
SetHeaderColor(wValue);
}
void SetDataColor(const WORD wValue){m_wDataColor = wValue;}
void SetNameColor(const WORD wValue){m_wNameColor = wValue;}
void SetHeaderColor(const WORD wValue){m_wHeaderColor = wValue;}
void SetData(const char* szValue)
{
const int iDataLen = strlen(szValue);
if( 0 >= iDataLen ) {return;}//单捞鸥 辨捞啊 捞惑窍搁 涝仿 登搁 救等促
m_szData = new char[iDataLen+1];//+1 篮 NULL 巩磊 iDataLen篮 1焊促 农促 绊肺 硅凯狼 屈怕啊 等促 馆靛矫 硅凯肺 new 秦具 茄促
strcpy(m_szData,szValue);
}
void MakeTotalData()
{
char szTemp[600] = {0,};
( IsHaveHeader() )?
sprintf(szTemp,"%s %s %s",GetHeader(),GetName(),GetData()):
sprintf(szTemp,"%s %s",GetName(),GetData());
szTemp[599] = 0;
m_szTotalChatData = new char[strlen(szTemp)+1];
strcpy(m_szTotalChatData,szTemp);
}
void SetName(const char* szValue)
{
if( NULL == szValue || NULL== szValue[0]){m_szName[0] = NULL; return;}//悸泼 且 荐 绝阑锭
const int iNameLen = strlen(szValue);
if(20 > iNameLen && 0 < iNameLen)//捞抚 辨捞啊 20 焊促 累阑锭
{
strcpy(m_szName,szValue);
}
else
{
{m_szName[0] = NULL; return;}//悸泼 且 荐 绝阑锭(辨捞 坷滚
}
}
void SetHeader(const char* szValue)
{
if( NULL == szValue || NULL== szValue[0]){m_szHeader[0] = NULL; return;}//悸泼 且 荐 绝阑锭
const int iHeaderLen = strlen(szValue);
if(20 > iHeaderLen && 0 < iHeaderLen)//捞抚 辨捞啊 20 焊促 累阑锭
{
strcpy(m_szHeader,szValue);
bIsHaveHeader = true;
}
else
{
{m_szHeader[0] = NULL; return;}//悸泼 且 荐 绝阑锭(辨捞 坷滚
}
}
void SetChatType(const int iValue,const int iIndex1,const int iIndex2) //盲泼 鸥涝阑 瘤沥 窍搁辑 扁废 矫埃 瘤况龙 矫埃殿阑 悸泼 茄促
{
m_iChatType=iValue;
m_dwWriteTime=timeGetTime();
m_dwMaxDisplayTime = m_dwWriteTime+MAX_CHAT_DISPLAY_TIME;//20檬埃 叼胶敲饭捞 瞪 荐 乐澜
m_iIndex = iIndex1;
m_iIndex2= iIndex2;
m_bIsDisplayAble = true;
}
void SetDisplayAble(const bool bValue){m_bIsDisplayAble=bValue;}
public:
DWORD GetWriteTime()const{return m_dwWriteTime;}
DWORD GetMaxDisplayTime()const{return m_dwMaxDisplayTime;}
char* GetData(){return m_szData;}
char* GetName(){return m_szName;}
char* GetHeader(){return m_szHeader;}
char* GetTotalData(){return m_szTotalChatData;}
bool IsHaveHeader()const{return bIsHaveHeader;}
bool IsDisplayAble()const{return m_bIsDisplayAble;}
WORD GetDataColor()const{return m_wDataColor;}
WORD GetNameColor()const{return m_wNameColor;}
WORD GetHeaderColor()const{return m_wHeaderColor;}
int GetChatType()const{return m_iChatType;}
int GetIndex()const{return m_iIndex;}
int GetIndex2()const{return m_iIndex2;}
};
typedef list<CChatData*>::iterator chatitor;
typedef list<CChatData*>::reverse_iterator rchatitor;
typedef vector<char*>::iterator vpcitor;
class CChatMgr
{
public:
CChatMgr()
{
m_iAlpha = 3;
m_iBlendType = 3;
m_iLineGab = 15;
m_iWidth = MAX_DISPLAY_CHAT_WIDTH_BY_PIXEL;
Clear();
}
~CChatMgr(){Clear();}
private:
int m_iNormalChatView;//焊烹盲泼 夯促 救夯促
int m_iWhisperChatView;//庇富盲泼 夯促 救夯促
int m_iGuildChatView;//辨靛盲泼 夯促 救夯促
//墨款磐甸 捞抚焊搁 购 墨款磐牢瘤 舅疤聪促.
int m_iTotalCounter;
int m_iNormalCounter;
int m_iWhisperCounter;
int m_iGuildCounter;
int m_iGuildBBSCounter;
int m_iPartyCounter;
int m_iNationWarCounter;
int m_iLocalWarCounter;
int m_iColosussCounter;
int m_iYesNoCounter;
int m_iNoticeCounter;
private:
int m_iAlpha;//舅颇 蔼
int m_iBlendType;//硅版 嘛洒绰 喉坊爹 鸥涝
int m_iLineGab;//临寸 埃拜 14肺 绊沥且 巴
int m_iWidth;//盲泼捞 嘛洒绰 扼牢狼 侨伎 辨捞
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
//庇加富 包访
private:
int m_iRefuseAllWhisper;
vector<char*> vRefuseList;//
public:
void RecvWhisper( const char *szName, char *szMsg, const WORD dSenderServerIndex, const WORD dSenderCn);// 促弗 荤恩捞 焊辰 庇加富
void ReplyWhisper( const WORD dSenderServerIndex, const WORD dSenderCn, const char cResult );
void SetRefuseWhiper(const char* szName)
{
if(!szName || !(*szName))//捞抚捞 涝仿 登瘤 臼栏搁
{
m_iRefuseAllWhisper = 1;//葛滴 庇富 芭何
m_iWhisperChatView = false;//救航
::AddCurrentStatusMessage(FONT_COLOR_RED,lan->OutputMessage(2,611));
return;
}
if(!IsRefuseGuy(szName))//芭何措惑捞 酒聪搁 眠啊 矫难霖促
{
char* pszTemp = new char[strlen(szName)+1];
strcpy (pszTemp,szName);
vRefuseList.push_back(pszTemp);
}
/*
vRefuseList
if( !*name || !strcmp( name,lan->OutputMessage(7,118) )) // 葛滴 芭何
{
ChatMgr.RefuseWhiperAll();
AddCurrentStatusMessage( 200, 0 ,0 , lan->OutputMessage(7,114));//010215 lsw
}
else
AddCurrentStatusMessage( 250, 0 ,250 , lan->OutputMessage(7,115), name );//010215 lsw
else
AddCurrentStatusMessage( 200, 0 ,0 , lan->OutputMessage(7,116), name );//010215 lsw
*/
}
void SetAcceptWhiper(const char* szName)
{
if(!szName || !(*szName))//捞抚捞 涝仿 登瘤 臼栏搁
{
m_iRefuseAllWhisper = 0;//葛滴 庇富 倾啊
m_iWhisperChatView = true;
::AddCurrentStatusMessage(FONT_COLOR_GREEN,lan->OutputMessage(2,610));
return;
}
for(vpcitor itor = vRefuseList.begin();vRefuseList.end() != itor;itor++)
{
if(!strcmp( (*itor),szName))
{
SAFE_DELETE((*itor));
vRefuseList.erase(itor);//捞抚阑 力芭
}
}
/*
if( !*name || !strcmp( name, lan->OutputMessage(7,118) ) )
{
AddCurrentStatusMessage( FONT_COLOR_GREEN, lan->OutputMessage(7,117) );//021001 lsw
ChatMgr.AcceptWhiperAll();
}
else
{
AddCurrentStatusMessage( 200, 0 ,200 , lan->OutputMessage(7,119), name );//010215 lsw
}
*/
}
void DisplayRefuseList();//庇富 芭何 府胶飘 免仿
int IsRefuseAllWhisper(){return m_iRefuseAllWhisper;}//true蔼捞搁 庇富 芭何惑怕
int IsRefuseGuy(const char *szName)
{
for(vpcitor itor = vRefuseList.begin();vRefuseList.end() != itor;itor++)
{
if(!strcmp( (*itor),szName))
{
return 1;
}
}
return 0;
}
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
//YesOrNo 矫胶袍
private:
int m_iYesOrNoType;//郴啊 罐篮 YesNo狼 鸥涝//ex>YN_GUILD_JOIN_OK
int m_dwSelectWaitTime;//YesNo 绊福绰 矫埃(肺拿 矫埃栏肺 悸泼)
int m_iYesOrNoDemanderCn;//YesNo甫 夸备窍绰 仇狼 cn
public:
void ClearYesNo()
{
m_iYesOrNoType = YN_NO;//郴啊 罐篮 YesNo狼 鸥涝//ex>YN_GUILD_JOIN_OK
m_dwSelectWaitTime = 0;//YesNo 绊福绰 矫埃(肺拿 矫埃栏肺 悸泼)
m_iYesOrNoDemanderCn = 0;//YesNo甫 夸备窍绰 仇狼 cn
}
int RecvNeedYesNoMsg( const int iType, const int iDemanderCn, const char *szMsg, ... );
bool IsCheckYesNoAble()
{
DWORD dwTemp = m_dwSelectWaitTime;
int isss = m_iYesOrNoType;
return (m_dwSelectWaitTime && m_iYesOrNoType)?true:false;
}
void CheckYesNo( const int iIsYes );
///////////////////////////////////////////////////////////////
private:
list<CChatData*> ChatList;//
public:
void AddString(const char* szName, const char* szChatData, const int iChatType);//盲泼 单捞鸥 眠啊
void DeleteCheck();//瘤况龙 措惑 眉农
void DisplayCheck();//瘤况龙 措惑 眉农
void DisplayData(const int iX, const int iY,const int iOption = 0);//拳搁俊 谎府扁//
void SetViewChat(const int iChatType , const int iIsView);//盲泼 夯促 救夯促 眉农
int GetViewChat(const int iChatType );//瘤陛 杭 荐 乐绰 鸥涝 啊廉咳
void Clear();
void DisplayPastData(const int iType);
int GetDisplayAbleCounter(){return m_iTotalCounter-MAX_CHAT_COUNT;}// '-蔼'捞登绢档 惑包 绝促
int IsDisplayAbleType(const int iChatType);
int DrawChatData(CChatData* pData, const int iLineCount, const int iX, const int iY);//臂磊 嘛绰 何盒阑 毒巴涝聪促.//嘛篮 临 荐甫 府畔钦聪促.
//////////////////////////////////////////////////////////////////////
//1.3 傍瘤 力茄 //kyo
private:
enum{
MAX_LIMIT_USER = 20,
};
vector<string> m_szLimiteName;
bool m_bIsActiveBBS;
public:
void ClearLimiteBBS();
void SetActiveBBS( bool bIsActiveBBS ) {m_bIsActiveBBS = bIsActiveBBS; };
bool IsActiveBBS() const { return m_bIsActiveBBS ; }
bool AddLimintedBBSName(char* szLimitList);
bool AddLimintedBBSNameOne( const string szName);
bool IsLimitedBBSName( const string szName);
void ShowLimitedList();
//
//////////////////////////////////////////////////////////////////////
};
extern CChatMgr ChatMgr;
extern int GetDisplayChatType( LPCHARACTER ch );
extern void DisplayChatMessage( LPCHARACTER lpCharacter );
extern bool IsAbleChatTargetName(const int iType);//捞沫捞 棵官弗 沫牢啊(措惑瘤沥捞 沥犬茄啊)
extern int GetChatMode();
extern int InsertWisperList(const char* name);
extern bool SendChatWisper(const char *name, char *msg);
extern bool SendChatNormal(char* msg);
extern bool SendChatGuild(char *msg );//020515 lsw
extern void SetChatTarget(const int iType);
extern bool IsChatBoxLock();
extern int GetChatTarget();//泅犁 盲泼 惑措 啊瘤绊 坷扁
extern void RecvWhisperReply( const int type, const char *szName); // 庇加富..
extern void RecvWhisperReply2( const int ret );
extern void RecvWhisperReplyEtc( t_packet *p );
extern Spr *chatimage[3*10];
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
// 庇加富 包访 努饭胶
#endif // !defined(AFX_CHAT_H__5DFB83E9_CE7C_4319_A6EF_3E15B16B0566__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -