📄 mailmgr.cpp
字号:
// MailMgr.cpp: implementation of the CMailMgr class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Chat.h"
#include "Hangul.h"
#include "menu.h"
#include "dragon.h"
#include "Hong_Sub.h"
#include "Map.h"
#include "CharDataTable.h"
#include "TeamBattle.h"
#include "GameProc.h"
#include "LineCommand.h"
#include "Tool.h"
#include "Hong_Sprite.h"
#include "directsound.h"
#include "SmallMenu.h"
#include "TextOutMgr.h"
#include "MailMgr.h"
#include "menudef2.h"
#include "NetWork.h"
#include <direct.h>
//////////////////////////////////////////////////////////////////////
// Construction / Destruction
//////////////////////////////////////////////////////////////////////
//LC_GUILD_MAIL 捞芭 辨靛 皋老 焊绰芭促 炼缴 ~
/* ETC
200 : "皋老鸥涝俊 巩力啊 乐嚼聪促."
201 : "罐绰 荤恩阑 瘤沥秦 林绞矫夸."
202 : "皋老 力格阑 涝仿秦 林绞矫夸."
203 : "皋老 郴侩阑 涝仿秦 林绞矫夸."
204 : "皋老捞 '%s'俊 历厘登菌嚼聪促."
205 : "皋老 历厘俊 角菩 沁嚼聪促."
*/
CMailMgr g_MailMgr;
CMailMgr::CMailMgr()
{
Clear();
}
CMailMgr::~CMailMgr()
{
Clear();
ClearTempData();
}
bool CMailMgr::Send(const int iType, const char* szTarget, const char *szTitle, const char *szBody)//焊郴扁
{
switch(iType)
{
case GUILD_MAIL:
{
if( !CheckGuildCode(Hero->GetGuildCode()) ) //辨靛内靛啊 绝促
{ // 皋矫瘤 冠胶 免仿
Kein_PutMessage( KM_FAIL, kein_GetMenuString( 79 ));
return false; // 辨靛甫 啊瘤绊 乐绢具 辨靛 皋老阑 焊尘荐 乐促.
}
}break;
case NORMAL_MAIL:
case GAMEMASTER_MAIL:
case NORMAL_MAIL_REPLY:
case GAMEMASTER_MAIL_REPLY:
{
}break;
default:
{
::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(5,200) );
return false;//鸥涝捞 撇啡家
}break;
}
const int iTargetLen = ::strlen(szTarget);
const int iTitleLen = ::strlen(szTitle);
const int iBodyLen = ::strlen(szBody);
if( (GUILD_MAIL != iType) && !iTargetLen)
{
::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(5,201) );
return false;
}
if( !iTitleLen)
{
::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(5,202));
return false;
}
if( !iBodyLen)
{
::AddCurrentStatusMessage( 250, 100, 100, lan->OutputMessage(5,203));
return false;
}
//皋老阑 焊忱聪促.
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "Mail Send");
//皋老阑 焊郴摆瘤~..
{ //< CSD-030324
// ConvString(szTitle);
// ConvString(szBody);
t_packet p;
p.h.header.type = CMD_MAIL_SEND;
p.h.header.size = sizeof( MAILSEND ) - 1000 + ::strlen( szBody )+1;
p.u.Hwoa.rang.MailSend.iType = iType;
::strcpy(p.u.Hwoa.rang.MailSend.szTarget, szTarget);
if(GUILD_MAIL == iType)
{
::strcpy(p.u.Hwoa.rang.MailSend.szTarget, " ");
}
::strcpy(p.u.Hwoa.rang.MailSend.szSender, Hero->name);
::strcpy(p.u.Hwoa.rang.MailSend.szTitle, szTitle);
::strcpy(p.u.Hwoa.rang.MailSend.szBody, szBody );
::QueuePacket( &p, 1 );
}
return true;
}
void CMailMgr::SendDelete(const int iCallType)//泅犁 急琶等 府胶飘甫 瘤矿聪促.
{//Force 啊 1 捞绊 牢郸胶啊 逞绢坷搁 瘤快扼绊 焊忱聪促.
t_packet p;
p.h.header.type = CMD_MAIL_DELETE;
p.h.header.size = sizeof( MAILDELETE );
::strcpy(p.u.Hwoa.rang.MailDelete.szName, Hero->name);
ZeroMemory( p.u.Hwoa.rang.MailDelete.aiMailIndex,sizeof(int)*MAX_MAIL_PAGE);
bool bIsCanSend = false;
if(iCallType)//焊绊乐绰 其捞瘤
{
p.u.Hwoa.rang.MailDelete.aiMailIndex[0] = GetTempMailIndex();
bIsCanSend = true;
}
else
{
for(int i = 0; MAX_MAIL_PAGE > i ; i++)
{
if(m_MailList[i].bIsSelect)//伎泛飘 等仇篮
{
p.u.Hwoa.rang.MailDelete.aiMailIndex[i] = GetMailIndex(i);
bIsCanSend = true;
}
}
}
if(bIsCanSend)
{
::QueuePacket( &p, 1 );
SendReqMailList(m_iNowViewType,GetNowViewPageNo());
}
}//瘤快扁(府胶飘 锅龋甫 焊忱聪促.)
void CMailMgr::SendRepair()//泅犁 急琶等 府胶飘甫 汗盔钦聪促.
{//Force 啊 1 捞绊 牢郸胶啊 逞绢坷搁 瘤快扼绊 焊忱聪促.
t_packet p;
p.h.header.type = CMD_MAIL_REPAIR;
p.h.header.size = sizeof( MAILDELETE );
::strcpy(p.u.Hwoa.rang.MailDelete.szName, Hero->name);
ZeroMemory( p.u.Hwoa.rang.MailDelete.aiMailIndex,sizeof(int)*MAX_MAIL_PAGE);
bool bIsCanSend = false;
for(int i = 0; MAX_MAIL_PAGE > i ; i++)
{
if(m_MailList[i].bIsSelect)//伎泛飘 等仇篮
{
p.u.Hwoa.rang.MailDelete.aiMailIndex[i] = GetMailIndex(i);
bIsCanSend = true;
}
}
if(bIsCanSend)
{
::QueuePacket( &p, 1 );
SendReqMailList(m_iNowViewType,GetNowViewPageNo());
}
}//瘤快扁(府胶飘 锅龋甫 焊忱聪促.)
void CMailMgr::RequestBody(const int iMailIndex)//秦寸 皋老狼 郴侩 罐扁
{
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "Req Mail Body, INDEX [%d]",iMailIndex);
// ConvString(szTitle);
// ConvString(szBody);
t_packet p;
p.h.header.type = CMD_MAIL_REQ_BODY;
p.h.header.size = sizeof( REQESTMAILBODY );
p.u.Hwoa.rang.ReqestMailBody.iMailIndex = iMailIndex;
::strcpy(p.u.Hwoa.rang.ReqestMailBody.szName, Hero->name);
// aiMailIndex[MAX_MAIL_PAGE];
::QueuePacket( &p, 1 );
}
void CMailMgr::RecvBody(t_packet *p)//秦寸 皋老狼 郴侩 罐扁
{
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "Recv Mail Body");
ClearTempData();
m_TempMailData;//咯扁促 悸泼阑 窍绊 剁况 凛矫促.
m_TempMailBody;//罐绊 镜锭 烙矫 傍埃
LPREQESTMAILBODYRESULT pRMBR = &p->u.Hwoa.rang.ReqestMailBodyResult;
m_TempMailData.iIndex = pRMBR->iMailIndex;
m_TempMailData.iType = pRMBR->iType;
m_TempMailData.bIsRead = true;
::EatRearWhiteChar(pRMBR->szSender);
::strcpy(m_TempMailData.szSender, pRMBR->szSender);
::EatRearWhiteChar(pRMBR->szReceiver);
::strcpy(m_TempMailData.szReceiver,pRMBR->szReceiver);
::EatRearWhiteChar(pRMBR->szTitle);
::strcpy(m_TempMailData.szTitle,pRMBR->szTitle);
::EatRearWhiteChar(pRMBR->szBody);
::strcpy(m_TempMailBody.szBody, pRMBR->szBody);
m_TempMailData.date = pRMBR->date;
::CallSmallMenu(MN_MAIL_READ);
}
void CMailMgr::SaveMailToLocal()//急琶等 皋老 历厘 窍扁.
{
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "Mail Save To Pc");
const char szMailSaveFolder[] = "/MyMail";
char szTargetFolder[MAX_PATH] = {0,};
::sprintf(szTargetFolder,"%s%s",GetCurrentWorkingDirectory(),szMailSaveFolder);
::mkdir(szTargetFolder);
//皋老 技捞宏 钦聪促.
char szTime[MAX_PATH] = {0,};
GetTempMailDate(false,szTime);
char szMailName[MAX_PATH] = {0,};
static int iCt = 0;
::sprintf(szMailName,"%s/From %s %s(%d).txt",
szTargetFolder,GetTempMailSender(), szTime,iCt++);
FILE *fp = ::fopen(szMailName, "wt");
if(fp)
{
::fprintf(fp,"Title:\n");
::fprintf(fp,"%s\n",GetTempMailTitle());
::fprintf(fp,"\n");
::fprintf(fp,"From:" );
::fprintf(fp," %s\n",GetTempMailSender());
::fprintf(fp,"\n");
::fprintf(fp,"Date:" );
char szTime[MAX_PATH] = {0,};
GetTempMailDate(true,szTime);
::fprintf(fp," %s\n",szTime);
::fprintf(fp,"\n");
::fprintf(fp,"%s\n",GetTempMailBody());
::fclose(fp);
::AddCurrentStatusMessage( FONT_COLOR_RARE_MAIN, lan->OutputMessage(5,204),szTargetFolder);
}
else
{
::AddCurrentStatusMessage( FONT_COLOR_SOLID_RED, lan->OutputMessage(5,205));
}
}
void CMailMgr::ClearTempData()
{
ZeroMemory(&m_TempMailData, sizeof(MAILDATA));
ZeroMemory(&m_TempMailBody, sizeof(MAILBODY));
}
void CMailMgr::Clear()
{
SetExistNotRead(false);
m_iNowViewType = MVT_RECV_LIST;
ZeroMemory(m_MailList, sizeof(INTERFACEMAILDATA)*MAX_MAIL_PAGE);
}
void CMailMgr::SendReqMailList(const int eViewType, const int iPageIndex)//牢郸胶 其捞瘤 荐
{
if( 0 > iPageIndex || 5 <= iPageIndex)
{
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "Page Index Too Over/Down");
return;
}
::CloseAllMenu();
Clear();
switch(eViewType)//eMAIL_VIEW_TYPE
{
case MVT_RECV_LIST:
{
}break;
case MVT_DELETE_LIST:
{
}break;
default:
{
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "View Type Error");
return;
}break;
}
t_packet packet;
packet.h.header.type = CMD_MAIL_REQUEST_LIST;
packet.h.header.size = sizeof(REQESTMAILLIST);
packet.u.Hwoa.rang.ReqestMailList.iPageIndex = iPageIndex;
packet.u.Hwoa.rang.ReqestMailList.iWantMailType = eViewType;
::strcpy(packet.u.Hwoa.rang.ReqestMailList.szName,Hero->name);
packet.u.Hwoa.rang.ReqestMailList.szName[MAX_NAME-1] = NULL;
::QueuePacket(&packet,1);
//COMMENT RecvMailList( (eMAIL_VIEW_TYPE)eViewType);
}
void CMailMgr::SetInterFaceMailData(const int iMailListIndex, const bool bIsSelect , LPMAILDATA pMailData)
{
if(!CheckIndex(iMailListIndex))
{
return;
}
m_MailList[iMailListIndex].MailData = *pMailData;
}
void CMailMgr::RecvMailList(t_packet *p)
{
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "Call Mail Main Menu");
Clear();
ClearTempData();
LPMAILLISTRESULT pMLR = &p->u.Hwoa.rang.MailListResult;
const int iViewType = pMLR->iWantViewType;
for(int i = 0; MAX_MAIL_PAGE > i; i++)
{
SetInterFaceMailData(i, false , &pMLR->MailData[i]);
}
switch(iViewType)//eMAIL_VIEW_TYPE
{
case MVT_RECV_LIST:
{
::SMenuReg(MN_MAIL_MENU, 400, 0, MAIL_MENU,0,11,0);
::SMenuFTReg(MN_MAIL_MENU,0,FT_NONE, SWD_CALL_MAILMENU, //徘阑 厚劝己拳 矫挪促
20,61,73,19, MAIL_MENU, 49, 49,MVT_RECV_LIST);
::SMenuFTReg(MN_MAIL_MENU,1,FT_HIDE_SPECIAL_WILLDO_AUTO_PUT, SWD_CALL_MAILMENU, //徘阑 劝己拳 矫挪促
98,61,72,19, MAIL_MENU, 50, 50,MVT_DELETE_LIST);
//皋老 汗盔
::SMenuFTReg(MN_MAIL_MENU,2,FT_NONE, SWD_MAIL_REPAIR, //厚劝己拳
186,442 ,78,30, MAIL_MENU, 51, 52,MVT_DELETE_LIST);
}break;
case MVT_DELETE_LIST:
{
::SMenuReg(MN_MAIL_MENU, 400, 0, MAIL_MENU,1,11,0);
::SMenuFTReg(MN_MAIL_MENU,0,FT_HIDE_SPECIAL_WILLDO_AUTO_PUT, SWD_CALL_MAILMENU, //徘阑 劝己拳 矫挪促
20,61,73,19, MAIL_MENU, 49, 49,MVT_RECV_LIST);
::SMenuFTReg(MN_MAIL_MENU,1,FT_NONE, SWD_CALL_MAILMENU, //徘阑 厚劝己拳 矫挪促
98,61,72,19, MAIL_MENU, 50, 50,MVT_DELETE_LIST);
//皋老 汗盔
::SMenuFTReg(MN_MAIL_MENU,2,FT_HIDE_SPECIAL_WILLDO_AUTO_PUT, SWD_MAIL_REPAIR, //劝己拳
186,442 ,78,30, MAIL_MENU, 51, 52,MVT_DELETE_LIST);
}break;
default:
{
COMMENT ::AddCurrentStatusMessage( 250, 100, 100, "Mail List is Wrong!! Call Developer");
}break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -