Files
wnmj/Classes/Mission/IndividualMission.cpp

574 lines
17 KiB
C++

#include "IndividualMission.h"
//////////////////////////////////////////////////////////////////////////
IndividualMission::IndividualMission() : m_bRevStop(true)
{
mMissionType = MISSION_INDIVIDUAL_NULL;
mIIndividualMissionSink = 0;
}
// 设置回调接口
void IndividualMission::setMissionSink(IIndividualMissionSink* pIIndividualMissionSink)
{
mIIndividualMissionSink = pIIndividualMissionSink;
}
// 查询个人资料
void IndividualMission::query(int iAccountID,bool bRecStop)
{
m_bRevStop = bRecStop;
mAccountInfoID = iAccountID;
mMissionType = MISSION_INDIVIDUAL_QUERY;
start();
}
void IndividualMission::queryAccountInfo(int iAccountID)
{
if (iAccountID >= 0)
{
mAccountInfoID = iAccountID;
}
else
{
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
mAccountInfoID = pGlobalUserData->dwUserID;
}
mMissionType = MISSION_INDIVIDUAL_Account;
start();
}
void IndividualMission::modifyName(std::string kName)
{
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
memset(&mModifyIndividual, 0, sizeof(mModifyIndividual));
mModifyIndividual.cbGender = pGlobalUserData->cbGender;
strncpy(mModifyIndividual.szNickName,kName.c_str(),kName.size());
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
void IndividualMission::modifyGender(uint8 gender)
{
memset(&mModifyIndividual, 0, sizeof(mModifyIndividual));
mModifyIndividual.cbGender = gender;
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
void IndividualMission::modify(std::string kNickName,uint8 gender)
{
memset(&mModifyIndividual, 0, sizeof(mModifyIndividual));
mModifyIndividual.cbGender = gender;
strncpy(mModifyIndividual.szNickName,kNickName.c_str(),kNickName.size());
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
// 修改个人资料
void IndividualMission::modify(const tagModifyIndividual& individual)
{
memcpy(&mModifyIndividual, &individual, sizeof(mModifyIndividual));
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
void IndividualMission::modifySpreader(std::string kSpreaderID)
{
m_kSpreaderID = kSpreaderID;
mMissionType = MISSION_INDIVIDUAL_SPREADER;
start();
}
void IndividualMission::modifyHeadHttp(std::string kHttp)
{
memset(&mModifyIndividual, 0, sizeof(mModifyIndividual));
strncpy(mModifyIndividual.szHeadHttp, kHttp.c_str(), countarray(mModifyIndividual.szHeadHttp) - 1);
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
void IndividualMission::modifyUserChannel(std::string szUserChannel)
{
memset(&mModifyIndividual, 0, sizeof(mModifyIndividual));
strncpy(mModifyIndividual.szUserChannel, szUserChannel.c_str(), countarray(mModifyIndividual.szUserChannel) - 1);
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
void IndividualMission::modifyWeiXinInfo(uint8 cbGender, std::string szNickName, std::string szHttp)
{
memset(&mModifyIndividual, 0, sizeof(mModifyIndividual));
mModifyIndividual.cbGender = cbGender;
strncpy(mModifyIndividual.szNickName, szNickName.c_str(), countarray(mModifyIndividual.szNickName) - 1);
strncpy(mModifyIndividual.szHeadHttp, szHttp.c_str(), countarray(mModifyIndividual.szHeadHttp) - 1);
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
void IndividualMission::onEventTCPSocketLink()
{
cocos2d::log("IndividualMission::onEventTCPSocketLink\n");
switch (mMissionType)
{
// 查询个人资料
case MISSION_INDIVIDUAL_Account:
{
//变量定义
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
//变量定义
CMD_GP_QueryAccountInfo QueryIndividual;
zeromemory(&QueryIndividual,sizeof(QueryIndividual));
QueryIndividual.dwUserID=mAccountInfoID;
send(MDM_GP_USER_SERVICE,SUB_GP_QUERY_ACCOUNTINFO,&QueryIndividual,sizeof(QueryIndividual));
break;
}
// 查询个人资料
case MISSION_INDIVIDUAL_QUERY:
{
//变量定义
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
//变量定义
CMD_GP_QueryIndividual QueryIndividual;
zeromemory(&QueryIndividual,sizeof(QueryIndividual));
send(MDM_GP_USER_SERVICE,SUB_GP_QUERY_INDIVIDUAL,&QueryIndividual,sizeof(QueryIndividual));
break;
}
case MISSION_INDIVIDUAL_SPREADER:
{
//变量定义
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
//变量定义
CMD_GP_ModifySpreader kNetInfo;
zeromemory(&kNetInfo,sizeof(kNetInfo));
//设置变量
kNetInfo.dwUserID=pGlobalUserData->dwUserID;
strncpy(kNetInfo.szPassword,pGlobalUserData->szPassword,countarray(kNetInfo.szPassword));
strncpy(kNetInfo.szSpreader,m_kSpreaderID.c_str(),countarray(kNetInfo.szSpreader));
//发送数据
send(MDM_GP_USER_SERVICE,SUB_GP_MODIFY_SPREADER,&kNetInfo,sizeof(kNetInfo));
break;
}
// 修改个人资料
case MISSION_INDIVIDUAL_MODIFY:
{
//变量定义
uint8 cbBuffer[SIZE_PACK_DATA];
zeromemory(cbBuffer,sizeof(cbBuffer));
//变量定义
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
//变量定义
CMD_GP_ModifyIndividual * pModifyIndividual=(CMD_GP_ModifyIndividual *)cbBuffer;
CSendPacketHelper SendPacket(cbBuffer+sizeof(CMD_GP_ModifyIndividual),sizeof(cbBuffer)-sizeof(CMD_GP_ModifyIndividual));
//设置变量
pModifyIndividual->cbGender=mModifyIndividual.cbGender;
pModifyIndividual->dwUserID=pGlobalUserData->dwUserID;
strncpy(pModifyIndividual->szPassword,pGlobalUserData->szPassword,countarray(pModifyIndividual->szPassword));
//用户昵称
if (mModifyIndividual.szNickName[0]!=0)
{
std::string strNickName = utility::u8_a(mModifyIndividual.szNickName);
cocos2d::log(("strNickName:%s \n"), strNickName.c_str());
SendPacket.AddPacket(mModifyIndividual.szNickName, DTP_GP_UI_NICKNAME);
}
//头像地址;
if (mModifyIndividual.szHeadHttp[0]!=0)
{
SendPacket.AddPacket(mModifyIndividual.szHeadHttp,DTP_GP_UI_HEAD_HTTP);
}
//发送数据
if (SendPacket.GetDataSize() > 0)
{
uint16 wSendSize = sizeof(CMD_GP_ModifyIndividual) + SendPacket.GetDataSize();
send(MDM_GP_USER_SERVICE, SUB_GP_MODIFY_INDIVIDUAL, cbBuffer, wSendSize);
}
break;
}
case MISSION_WXSHARD_SUCCESS:
{
//变量定义
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
CMD_GP_WXShareSuccess mSuccess;
zeromemory(&mSuccess, sizeof(CMD_GP_WXShareSuccess));
mSuccess.dwUserID = pGlobalUserData->dwUserID;
strncpy(mSuccess.szPassword, pGlobalUserData->szPassword, countarray(mSuccess.szPassword));
send(MDM_GP_USER_SERVICE, SUB_GP_WXSHARE_SUCCESS, &mSuccess, sizeof(CMD_GP_WXShareSuccess));
break;
}
}
}
void IndividualMission::onEventTCPSocketShut()
{
cocos2d::log("IndividualMission::onEventTCPSocketShut\n");
}
void IndividualMission::onEventTCPSocketError(int errorCode)
{
cocos2d::log("IndividualMission::onEventTCPSocketError code[%d]\n", errorCode);
}
bool IndividualMission::onEventTCPSocketRead(int main, int sub, void* data, int size)
{
cocos2d::log("IndividualMission::onEventTCPSocketRead main:%d sub:%d size:%d\n", main, sub, size);
if (main != MDM_GP_USER_SERVICE)
{
return false;
}
switch (sub)
{
//个人信息
case SUB_GP_QUERY_ACCOUNTINFO: return onSubUserAccountInfo(data, size);
//个人信息
case SUB_GP_USER_INDIVIDUAL: return onSubUserIndividual(data, size);
//微信分享成功奖励
case SUB_GP_WXSHARE_REWARD: return onSubWXShareReward(data, size);
//设置推荐人结果
case SUB_GP_SPREADER_RESOULT: return onSubSpreaderResoult(data, size);
//操作成功
case SUB_GP_OPERATE_SUCCESS: return onSubOperateSuccess(data, size);
//操作失败
case SUB_GP_OPERATE_FAILURE: return onSubOperateFailure(data, size);
}
return false;
}
// 个人信息
bool IndividualMission::onSubUserAccountInfo(void* data, int size)
{
cocos2d::log("IndividualMission::onSubUserAccountInfo\n");
//变量定义
CMD_GP_UserAccountInfo * pAccountInfo=(CMD_GP_UserAccountInfo *)data;
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
if (pAccountInfo->dwUserID == pGlobalUserInfo->getUserID())
{
pGlobalUserData->lUserScore = pAccountInfo->lUserScore;
pGlobalUserData->lUserInsure = pAccountInfo->lUserInsure;
pGlobalUserData->lGrade = pAccountInfo->lGrade;
//保存信息
pGlobalUserData->wFaceID = pAccountInfo->wFaceID;
//pGlobalUserData->cbGender = pAccountInfo->cbGender;
pGlobalUserData->dwUserID =pAccountInfo->dwUserID;
pGlobalUserData->dwGameID = pAccountInfo->dwGameID;
pGlobalUserData->dwSpreaderID = pAccountInfo->dwSpreaderID;
pGlobalUserData->dwExperience =pAccountInfo->dwExperience;
//strcpy(pGlobalUserData->szNickName, utility::a_u8((char*)pAccountInfo->szNickName).c_str());
//strncpy(pGlobalUserData->szNickName, (char*)pAccountInfo->szNickName, countarray(pGlobalUserData->szNickName) - 1);
strncpy(pGlobalUserData->szAccounts, ((char*)pAccountInfo->szAccounts), countarray(pGlobalUserData->szAccounts));
strncpy(pGlobalUserData->szLogonIP, ((char*)pAccountInfo->szLogonIp), countarray(pGlobalUserData->szLogonIP));
//金币信息
pGlobalUserInfo->upPlayerInfo();
}
if (mIIndividualMissionSink)
{
mIIndividualMissionSink->onGPAccountInfo(pAccountInfo);
}
if (m_bRevStop)
{
stop();
}
return true;
}
// 个人信息
bool IndividualMission::onSubUserIndividual(void* data, int size)
{
cocos2d::log("IndividualMission::onSubUserIndividual\n");
CMD_GP_UserIndividual* pModifyIndividual = (CMD_GP_UserIndividual*)data;
void * pDataBuffer=NULL;
tagDataDescribe DataDescribe;
CRecvPacketHelper RecvPacket(pModifyIndividual+1,size-sizeof(CMD_GP_UserIndividual));
bool bUpdate = false;
std::string kIP,kHttp,kChannel;
//扩展信息
while (true)
{
pDataBuffer=RecvPacket.GetData(DataDescribe);
if (DataDescribe.wDataDescribe==DTP_NULL) break;
switch (DataDescribe.wDataDescribe)
{
case DTP_GP_UI_HEAD_HTTP: //联系地址
{
if (DataDescribe.wDataSize<=LEN_USER_NOTE)
{
bUpdate = true;
kHttp.assign((char*)pDataBuffer,DataDescribe.wDataSize);
}
break;
}
case DTP_GP_UI_IP: //联系地址
{
if (DataDescribe.wDataSize<=LEN_NICKNAME)
{
bUpdate = true;
kIP.assign((char*)pDataBuffer,DataDescribe.wDataSize);
}
break;
}
case DTP_GP_UI_CHANNEL: //联系地址
{
if (DataDescribe.wDataSize<=LEN_NICKNAME)
{
bUpdate = true;
kChannel.assign((char*)pDataBuffer,DataDescribe.wDataSize);
}
break;
}
}
}
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
if (pModifyIndividual->dwUserID == pGlobalUserInfo->getUserID())
{
if (kIP != "")
{
memset(pGlobalUserData->szLogonIP, 0, sizeof(pGlobalUserData->szLogonIP));
strncpy(pGlobalUserData->szLogonIP, kIP.c_str(), sizeof(pGlobalUserData->szLogonIP) - 1);
}
if (kHttp != "")
{
memset(pGlobalUserData->szHeadHttp, 0, sizeof(pGlobalUserData->szHeadHttp));
strncpy(pGlobalUserData->szHeadHttp, kHttp.c_str(), sizeof(pGlobalUserData->szHeadHttp) - 1);
}
if (kChannel != "")
{
memset(pGlobalUserData->szUserChannel, 0, sizeof(pGlobalUserData->szUserChannel));
strncpy(pGlobalUserData->szUserChannel, kChannel.c_str(), sizeof(pGlobalUserData->szUserChannel) - 1);
}
//金币信息
pGlobalUserInfo->upPlayerInfo();
}
if (bUpdate && mIIndividualMissionSink)
mIIndividualMissionSink->onGPAccountInfoHttpIP(pModifyIndividual->dwUserID,kIP,kHttp);
if (m_bRevStop)
{
stop();
}
//通知
if (mIIndividualMissionSink)
mIIndividualMissionSink->onGPIndividualInfo(mMissionType);
return true;
}
//微信分享成功奖励
bool IndividualMission::onSubWXShareReward(void* data, int size)
{
cocos2d::log("IndividualMission::onSubWXShareReward\n");
//变量定义
CMD_GP_WXShareReward * pReward = (CMD_GP_WXShareReward *)data;
if (mIIndividualMissionSink)
{
mIIndividualMissionSink->onWXShardReward(pReward);
}
return true;
}
bool IndividualMission::onSubSpreaderResoult(void* data, int size)
{
cocos2d::log("IndividualMission::onSubSpreaderResoult\n");
//变量定义
CMD_GP_SpreaderResoult * pOperateSuccess=(CMD_GP_SpreaderResoult *)data;
//效验数据
ASSERT(size>=(sizeof(CMD_GP_SpreaderResoult)-sizeof(pOperateSuccess->szDescribeString)));
if (size<(sizeof(CMD_GP_SpreaderResoult)-sizeof(pOperateSuccess->szDescribeString))) return false;
//变量定义
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
if (pOperateSuccess->lResultCode == 0)
{
pGlobalUserData->lUserScore = pOperateSuccess->lScore;
pGlobalUserInfo->upPlayerInfo();
}
//关闭连接
if (m_bRevStop)
{
stop();
}
//显示消息
if (mIIndividualMissionSink)
mIIndividualMissionSink->onGPIndividualSuccess(mMissionType, pOperateSuccess->szDescribeString);
return true;
}
// 操作成功
bool IndividualMission::onSubOperateSuccess(void* data, int size)
{
cocos2d::log("IndividualMission::onSubOperateSuccess\n");
//变量定义
CMD_GP_OperateSuccess * pOperateSuccess=(CMD_GP_OperateSuccess *)data;
//效验数据
ASSERT(size>=(sizeof(CMD_GP_OperateSuccess)-sizeof(pOperateSuccess->szDescribeString)));
if (size<(sizeof(CMD_GP_OperateSuccess)-sizeof(pOperateSuccess->szDescribeString))) return false;
//变量定义
CGlobalUserInfo * pGlobalUserInfo=CGlobalUserInfo::GetInstance();
tagGlobalUserData * pGlobalUserData=pGlobalUserInfo->GetGlobalUserData();
switch (mMissionType)
{
// 查询个人资料
case MISSION_INDIVIDUAL_SPREADER:
{
pGlobalUserData->dwSpreaderID = 1;
pGlobalUserInfo->upPlayerInfo();
break;
}
// 查询个人资料
case MISSION_INDIVIDUAL_QUERY:
{
break;
}
// 修改个人资料
case MISSION_INDIVIDUAL_MODIFY:
{
tagIndividualUserData * pIndividualUserData=pGlobalUserInfo->GetIndividualUserData();
//帐号资料
//pGlobalUserData->cbGender=mModifyIndividual.cbGender;
////用户昵称
//if (mModifyIndividual.szNickName[0]!=0)
// strcpy(pGlobalUserData->szNickName,utility::a_u8(mModifyIndividual.szNickName).c_str());
////个性签名
//if (mModifyIndividual.szUnderWrite[0]!=0)
// strncpy(pGlobalUserData->szUnderWrite,mModifyIndividual.szUnderWrite,countarray(pGlobalUserData->szUnderWrite));
////详细资料
////用户备注
//if (mModifyIndividual.szUserNote[0]!=0)
// strncpy(pIndividualUserData->szUserNote,mModifyIndividual.szUserNote,countarray(pIndividualUserData->szUserNote));
////真实名字
//if (mModifyIndividual.szCompellation[0]!=0)
// strncpy(pIndividualUserData->szCompellation,mModifyIndividual.szCompellation,countarray(pIndividualUserData->szCompellation));
////固定号码
//if (mModifyIndividual.szSeatPhone[0]!=0)
// strncpy(pIndividualUserData->szSeatPhone,mModifyIndividual.szSeatPhone,countarray(pIndividualUserData->szSeatPhone));
////手机号码
//if (mModifyIndividual.szMobilePhone[0]!=0)
// strncpy(pIndividualUserData->szMobilePhone,mModifyIndividual.szMobilePhone,countarray(pIndividualUserData->szMobilePhone));
////Q Q 号码
//if (mModifyIndividual.szQQ[0]!=0)
// strncpy(pIndividualUserData->szQQ,mModifyIndividual.szQQ,countarray(pIndividualUserData->szQQ));
////电子邮件
//if (mModifyIndividual.szEMail[0]!=0)
// strncpy(pIndividualUserData->szEMail,mModifyIndividual.szEMail,countarray(pIndividualUserData->szEMail));
////详细地址
//if (mModifyIndividual.szHeadHttp[0]!=0)
// strncpy(pGlobalUserData->szHeadHttp,mModifyIndividual.szHeadHttp,countarray(pGlobalUserData->szHeadHttp));
////详细地址
//if (mModifyIndividual.szUserChannel[0]!=0)
// strncpy(pGlobalUserData->szUserChannel,mModifyIndividual.szUserChannel,countarray(pGlobalUserData->szUserChannel));
//pGlobalUserInfo->upPlayerInfo();
break;
}
}
//关闭连接
if (m_bRevStop)
{
stop();
}
//显示消息
if (mIIndividualMissionSink)
mIIndividualMissionSink->onGPIndividualSuccess(mMissionType, pOperateSuccess->szDescribeString);
return true;
}
// 操作失败
bool IndividualMission::onSubOperateFailure(void* data, int size)
{
cocos2d::log("IndividualMission::onSubOperateFailure\n");
//效验参数
CMD_GP_OperateFailure * pOperateFailure=(CMD_GP_OperateFailure *)data;
ASSERT(size>=(sizeof(CMD_GP_OperateFailure)-sizeof(pOperateFailure->szDescribeString)));
if (size<(sizeof(CMD_GP_OperateFailure)-sizeof(pOperateFailure->szDescribeString))) return false;
//关闭连接
if (m_bRevStop)
{
stop();
}
//显示消息
if (mIIndividualMissionSink)
mIIndividualMissionSink->onGPIndividualFailure(mMissionType, pOperateFailure->szDescribeString);
return true;
}
void IndividualMission::modifyPhoneNumber( std::string kPhoneNumber )
{
memset(&mModifyIndividual, 0, sizeof(mModifyIndividual));
strncpy(mModifyIndividual.szMobilePhone,kPhoneNumber.c_str(),kPhoneNumber.size());
mMissionType = MISSION_INDIVIDUAL_MODIFY;
start();
}
// 微信分享成功
void IndividualMission::wxShareSuccess()
{
mMissionType = MISSION_WXSHARD_SUCCESS;
start();
}