1310 lines
34 KiB
C++
1310 lines
34 KiB
C++
|
|
#include "GameMission.h"
|
|||
|
|
#include "PopScene.h"
|
|||
|
|
#include "MainScene.h"
|
|||
|
|
#include "JniFun.h"
|
|||
|
|
|
|||
|
|
CGameServerItem* GameMission::g_pGameServerItem = nullptr;
|
|||
|
|
|
|||
|
|
GameMission::GameMission()
|
|||
|
|
{
|
|||
|
|
mServiceStatus = ServiceStatus_Unknow;
|
|||
|
|
mIClientKernelSink = nullptr;
|
|||
|
|
mGameStatus = GAME_STATUS_FREE;
|
|||
|
|
|
|||
|
|
m_pMeUserItem = nullptr;
|
|||
|
|
mUserManager = new CGameUserManager();
|
|||
|
|
mUserManager->SetUserManagerSink(this);
|
|||
|
|
|
|||
|
|
m_wGameKindID = 0;
|
|||
|
|
|
|||
|
|
memset(&mUserAttribute, 0, sizeof(mUserAttribute));
|
|||
|
|
memset(&mServerAttribute, 0, sizeof(mServerAttribute));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ں˽ӿ<CBBD>
|
|||
|
|
void GameMission::SetClientKernelSink(IClientKernelSink* pIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink = pIClientKernelSink;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void GameMission::onEventTCPSocketLink()
|
|||
|
|
{
|
|||
|
|
SendLogonPacket();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
|
|||
|
|
void GameMission::onEventTCPSocketShut()
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::onEventTCPSocketShut()...");
|
|||
|
|
|
|||
|
|
mUserManager->ResetUserItem();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void GameMission::onEventTCPSocketError(int errorCode)
|
|||
|
|
{
|
|||
|
|
auto callback_ok = [=](){
|
|||
|
|
Director::getInstance()->popScene();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD>뷿<EFBFBD>䣡"), callback_ok);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ
|
|||
|
|
bool GameMission::onEventTCPSocketRead(int main, int sub, void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
switch (main)
|
|||
|
|
{
|
|||
|
|
//<2F><>¼<EFBFBD><C2BC>Ϣ
|
|||
|
|
case MDM_GR_LOGON: return OnSocketMainLogon(sub, data, dataSize);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
case MDM_GR_CONFIG: return OnSocketMainConfig(sub, data, dataSize);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
|
|||
|
|
case MDM_GR_USER: return OnSocketMainUser(sub, data, dataSize);
|
|||
|
|
//˽<>˳<EFBFBD><CBB3><EFBFBD>Ϣ
|
|||
|
|
case MDM_GR_PRIVATE:return OnSocketMainPrivate(sub, data, dataSize);
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
|
|||
|
|
case MDM_GF_GAME:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
case MDM_GF_FRAME: return OnSocketMainGameFrame(main, sub, data, dataSize);
|
|||
|
|
//ϵͳ<CFB5><CDB3>Ϣ
|
|||
|
|
case MDM_CM_SYSTEM: return OnSocketMainSystem(sub, data, dataSize);
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>¼<EFBFBD><C2BC>Ϣ
|
|||
|
|
bool GameMission::OnSocketMainLogon(int sub, void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
switch (sub)
|
|||
|
|
{
|
|||
|
|
//<2F><>¼<EFBFBD>ɹ<EFBFBD>
|
|||
|
|
case SUB_GR_LOGON_SUCCESS: return OnSocketSubLogonSuccess(data, dataSize);
|
|||
|
|
//<2F><>¼ʧ<C2BC><CAA7>
|
|||
|
|
case SUB_GR_LOGON_FAILURE: return OnSocketSubLogonFailure(data, dataSize);
|
|||
|
|
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_LOGON_FINISH: return OnSocketSubLogonFinish(data, dataSize);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
|
case SUB_GR_UPDATE_NOTIFY: return OnSocketSubUpdateNotify(data, dataSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><>¼<EFBFBD>ɹ<EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubLogonSuccess(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubLogonSuccess\n"));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
|
mServiceStatus = ServiceStatus_RecvInfo;
|
|||
|
|
|
|||
|
|
CMD_GR_LogonSuccess* pLogonSuccess = (CMD_GR_LogonSuccess*)data;
|
|||
|
|
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
|
|||
|
|
pGlobalUserInfo->SetUserRight(pLogonSuccess->dwUserRight);
|
|||
|
|
pGlobalUserInfo->SetMasterRight(pLogonSuccess->dwMasterRight);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>¼ʧ<C2BC><CAA7>
|
|||
|
|
bool GameMission::OnSocketSubLogonFailure(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubLogonFailure\n"));
|
|||
|
|
|
|||
|
|
LoadingScene::Instance().hide();
|
|||
|
|
|
|||
|
|
CMD_GR_LogonError* pLogonErr = (CMD_GR_LogonError*)data;
|
|||
|
|
PopScene::Instance().show(utility::a_u8(pLogonErr->szErrorDescribe));
|
|||
|
|
|
|||
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
IntermitConnect(true);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubLogonFinish(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubLogonFinish\n"));
|
|||
|
|
|
|||
|
|
LoadingScene::Instance().hide();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
|
mServiceStatus = ServiceStatus_ServiceIng;
|
|||
|
|
|
|||
|
|
mUserAttribute.dwUserID = m_pMeUserItem->GetUserID();
|
|||
|
|
mUserAttribute.wChairID = INVALID_CHAIR;
|
|||
|
|
mUserAttribute.wTableID = INVALID_TABLE;
|
|||
|
|
|
|||
|
|
if (m_pMeUserItem->GetTableID() == INVALID_TABLE || m_pMeUserItem->GetChairID() == INVALID_CHAIR)
|
|||
|
|
{
|
|||
|
|
CC_ASSERT(g_pGameServerItem != nullptr);
|
|||
|
|
if (g_pGameServerItem->IsGoldRoom())
|
|||
|
|
{
|
|||
|
|
PerformQuickSitDown();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
auto callback_ok = [=](){
|
|||
|
|
Director::getInstance()->popScene();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
PopScene::Instance().show(utility::a_u8("<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD><EFBFBD>뷵<EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), callback_ok);
|
|||
|
|
|
|||
|
|
this->stop();
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
OnGFGameOption();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
|
bool GameMission::OnSocketSubUpdateNotify(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubUpdateNotify\n"));
|
|||
|
|
LoadingScene::Instance().hide();
|
|||
|
|
|
|||
|
|
//IntermitConnect(true);
|
|||
|
|
|
|||
|
|
auto callback = []{
|
|||
|
|
Director::getInstance()->end();
|
|||
|
|
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
|
|||
|
|
exit(0);
|
|||
|
|
#endif
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>װ<EFBFBD><EFBFBD>"), callback);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
bool GameMission::OnSocketMainConfig(int sub, void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
switch (sub)
|
|||
|
|
{
|
|||
|
|
//<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_CONFIG_COLUMN: return true;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_CONFIG_SERVER: return OnSocketSubConfigServer(data, dataSize);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_CONFIG_PROPERTY: return true;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8>
|
|||
|
|
case SUB_GR_CONFIG_USER_RIGHT: return true;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_CONFIG_FINISH: return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(FALSE);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubConfigServer(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubConfigServer\n");
|
|||
|
|
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(dataSize == sizeof(CMD_GR_ConfigServer));
|
|||
|
|
if (dataSize < sizeof(CMD_GR_ConfigServer)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_GR_ConfigServer * pConfigServer = (CMD_GR_ConfigServer *)data;
|
|||
|
|
|
|||
|
|
mServerAttribute.wTableCount = pConfigServer->wTableCount;
|
|||
|
|
mServerAttribute.wChairCount = pConfigServer->wChairCount;
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool GameMission::OnSocketMainUser(int sub, void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
switch (sub)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
|
case SUB_GR_SIT_FAILED: return OnSocketSubRequestFailure(data, dataSize);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_USER_ENTER: return OnSocketSubUserEnter(data, dataSize);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_USER_SCORE: return OnSocketSubUserScore(data, dataSize);
|
|||
|
|
//<2F>û<EFBFBD>״̬
|
|||
|
|
case SUB_GR_USER_STATUS: return OnSocketSubUserStatus(data, dataSize);
|
|||
|
|
//<2F>û<EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
case SUB_GR_USER_LOCATION: return OnSocketSubUserLocation(data, dataSize);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_USER_CHAT: return true;
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case SUB_GR_USER_EXPRESSION: return true;
|
|||
|
|
//<2F>û<EFBFBD>˽<EFBFBD><CBBD>
|
|||
|
|
case SUB_GR_WISPER_CHAT: return true;
|
|||
|
|
//˽<>ı<EFBFBD><C4B1><EFBFBD>
|
|||
|
|
case SUB_GR_WISPER_EXPRESSION: return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><><EFBFBD><EFBFBD>״̬
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
|
bool GameMission::OnSocketSubRequestFailure(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubRequestFailure\n"));
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_GR_RequestFailure * pRequestFailure = (CMD_GR_RequestFailure *)data;
|
|||
|
|
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(dataSize > (sizeof(CMD_GR_RequestFailure) - sizeof(pRequestFailure->szDescribeString)));
|
|||
|
|
if (dataSize <= (sizeof(CMD_GR_RequestFailure) - sizeof(pRequestFailure->szDescribeString))) return false;
|
|||
|
|
|
|||
|
|
PopScene::Instance().show(utility::a_u8(pRequestFailure->szDescribeString));
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubUserEnter(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubUserEnter\n"));
|
|||
|
|
|
|||
|
|
int n = sizeof(tagUserInfoHead);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagUserInfo kUserInfo;
|
|||
|
|
tagCustomFaceInfo CustomFaceInfo;
|
|||
|
|
zeromemory(&kUserInfo, sizeof(kUserInfo));
|
|||
|
|
zeromemory(&CustomFaceInfo, sizeof(CustomFaceInfo));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
|
|||
|
|
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
|
|||
|
|
|
|||
|
|
tagUserInfoHead* pUserInfoHead = (tagUserInfoHead*)data;
|
|||
|
|
|
|||
|
|
kUserInfo.dwUserID = pUserInfoHead->dwUserID;
|
|||
|
|
kUserInfo.wTableID = pUserInfoHead->wTableID;
|
|||
|
|
kUserInfo.wChairID = pUserInfoHead->wChairID;
|
|||
|
|
kUserInfo.cbUserStatus = pUserInfoHead->cbUserStatus;
|
|||
|
|
kUserInfo.wFaceID = pUserInfoHead->wFaceID;
|
|||
|
|
kUserInfo.dwCustomID = pUserInfoHead->dwCustomID;
|
|||
|
|
kUserInfo.cbGender = pUserInfoHead->cbGender;
|
|||
|
|
kUserInfo.cbMemberOrder = pUserInfoHead->cbMemberOrder;
|
|||
|
|
kUserInfo.cbMasterOrder = pUserInfoHead->cbMasterOrder;
|
|||
|
|
kUserInfo.dwGameID = pUserInfoHead->dwGameID;
|
|||
|
|
//kUserInfo.dwGroupID = pUserInfoHead->dwLogonIp;
|
|||
|
|
kUserInfo.lLoveLiness = pUserInfoHead->lLoveLiness;
|
|||
|
|
kUserInfo.lScore = pUserInfoHead->lScore;
|
|||
|
|
kUserInfo.lGrade = pUserInfoHead->lGrade;
|
|||
|
|
kUserInfo.lInsureScore = pUserInfoHead->lInsure;
|
|||
|
|
kUserInfo.lWinCount = pUserInfoHead->dwWinCount;
|
|||
|
|
kUserInfo.lLostCount = pUserInfoHead->dwLostCount;
|
|||
|
|
kUserInfo.lDrawCount = pUserInfoHead->dwDrawCount;
|
|||
|
|
kUserInfo.lFleeCount = pUserInfoHead->dwFleeCount;
|
|||
|
|
kUserInfo.lExperience = pUserInfoHead->dwExperience;
|
|||
|
|
|
|||
|
|
//ip<69><70>ַ<EFBFBD><D6B7>ȡ;
|
|||
|
|
BYTE * pClientAddr = (BYTE *)&pUserInfoHead->dwLogonIp;
|
|||
|
|
sprintf(kUserInfo.szLogonIP, "%d.%d.%d.%d", pClientAddr[0], pClientAddr[1], pClientAddr[2], pClientAddr[3]);
|
|||
|
|
|
|||
|
|
//kUserInfo.dwGroupID = pUserInfoHead->dwLogonIp;
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
CServerListData * pServerListData = CServerListData::shared();
|
|||
|
|
|
|||
|
|
void * pDataBuffer = NULL;
|
|||
|
|
tagDataDescribe DataDescribe;
|
|||
|
|
CRecvPacketHelper RecvPacket(pUserInfoHead + 1, dataSize - sizeof(tagUserInfoHead));
|
|||
|
|
|
|||
|
|
//<2F><>չ<EFBFBD><D5B9>Ϣ
|
|||
|
|
while (true)
|
|||
|
|
{
|
|||
|
|
pDataBuffer = RecvPacket.GetData(DataDescribe);
|
|||
|
|
if (DataDescribe.wDataDescribe == DTP_NULL) break;
|
|||
|
|
switch (DataDescribe.wDataDescribe)
|
|||
|
|
{
|
|||
|
|
case DTP_GR_NICK_NAME: //<2F>û<EFBFBD><C3BB>dz<EFBFBD>
|
|||
|
|
{
|
|||
|
|
ASSERT(pDataBuffer != NULL);
|
|||
|
|
ASSERT(DataDescribe.wDataSize <= sizeof(kUserInfo.szNickName));
|
|||
|
|
if (DataDescribe.wDataSize <= sizeof(kUserInfo.szNickName))
|
|||
|
|
{
|
|||
|
|
memcpy(&kUserInfo.szNickName, pDataBuffer, DataDescribe.wDataSize);
|
|||
|
|
kUserInfo.szNickName[CountArray(kUserInfo.szNickName) - 1] = 0;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case DTP_GR_GROUP_NAME: //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ASSERT(pDataBuffer != NULL);
|
|||
|
|
ASSERT(DataDescribe.wDataSize <= sizeof(kUserInfo.szGroupName));
|
|||
|
|
if (DataDescribe.wDataSize <= sizeof(kUserInfo.szGroupName))
|
|||
|
|
{
|
|||
|
|
memcpy(&kUserInfo.szGroupName, pDataBuffer, DataDescribe.wDataSize);
|
|||
|
|
kUserInfo.szGroupName[CountArray(kUserInfo.szGroupName) - 1] = 0;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case DTP_GR_UNDER_WRITE: //<2F><><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>
|
|||
|
|
{
|
|||
|
|
ASSERT(pDataBuffer != NULL);
|
|||
|
|
ASSERT(DataDescribe.wDataSize <= sizeof(kUserInfo.szUnderWrite));
|
|||
|
|
if (DataDescribe.wDataSize <= sizeof(kUserInfo.szUnderWrite))
|
|||
|
|
{
|
|||
|
|
memcpy(kUserInfo.szUnderWrite, pDataBuffer, DataDescribe.wDataSize);
|
|||
|
|
kUserInfo.szUnderWrite[CountArray(kUserInfo.szUnderWrite) - 1] = 0;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case DTP_GR_HEAD_HTTP: //ͷ<><CDB7>HTTP
|
|||
|
|
{
|
|||
|
|
ASSERT(pDataBuffer != NULL);
|
|||
|
|
ASSERT(DataDescribe.wDataSize <= sizeof(kUserInfo.szHeadHttp));
|
|||
|
|
if (DataDescribe.wDataSize <= sizeof(kUserInfo.szHeadHttp))
|
|||
|
|
{
|
|||
|
|
memcpy(kUserInfo.szHeadHttp, pDataBuffer, DataDescribe.wDataSize);
|
|||
|
|
kUserInfo.szHeadHttp[CountArray(kUserInfo.szHeadHttp) - 1] = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
IClientUserItem * pIClientUserItem = mUserManager->SearchUserByUserID(kUserInfo.dwUserID);
|
|||
|
|
pIClientUserItem = mUserManager->ActiveUserItem(kUserInfo, CustomFaceInfo);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (pServerListData)
|
|||
|
|
{
|
|||
|
|
pServerListData->SetServerOnLineCount(mServerAttribute.wServerID, mUserManager->GetActiveUserCount());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubUserScore(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubUserScore\n"));
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(dataSize == sizeof(CMD_GR_UserScore));
|
|||
|
|
if (dataSize < sizeof(CMD_GR_UserScore)) return false;
|
|||
|
|
|
|||
|
|
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
|
|||
|
|
CMD_GR_UserScore * pUserScore = (CMD_GR_UserScore *)data;
|
|||
|
|
IClientUserItem * pIClientUserItem = mUserManager->SearchUserByUserID(pUserScore->dwUserID);
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB>ж<EFBFBD>
|
|||
|
|
if (pIClientUserItem == 0) return true;
|
|||
|
|
|
|||
|
|
mUserManager->UpdateUserItemScore(pIClientUserItem, &pUserScore->UserScore);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD>״̬
|
|||
|
|
bool GameMission::OnSocketSubUserStatus(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubUserStatus\n");
|
|||
|
|
|
|||
|
|
ASSERT(dataSize >= sizeof(CMD_GR_UserStatus));
|
|||
|
|
if (dataSize < sizeof(CMD_GR_UserStatus)) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_GR_UserStatus * pUserStatus = (CMD_GR_UserStatus *)data;
|
|||
|
|
|
|||
|
|
IClientUserItem * pIClientUserItem = mUserManager->SearchUserByUserID(pUserStatus->dwUserID);
|
|||
|
|
if (pIClientUserItem == NULL) return true;
|
|||
|
|
|
|||
|
|
tagUserStatus UserStatus;
|
|||
|
|
UserStatus.wTableID = pUserStatus->UserStatus.wTableID;
|
|||
|
|
UserStatus.wChairID = pUserStatus->UserStatus.wChairID;
|
|||
|
|
UserStatus.cbUserStatus = pUserStatus->UserStatus.cbUserStatus;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
|
if (UserStatus.cbUserStatus == US_NULL)
|
|||
|
|
{
|
|||
|
|
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
|
|||
|
|
mUserManager->DeleteUserItem(pIClientUserItem);
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
CServerListData * pServerListData = CServerListData::shared();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
pServerListData->SetServerOnLineCount(mServerAttribute.wServerID, mUserManager->GetActiveUserCount());
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
mUserManager->UpdateUserItemStatus(pIClientUserItem, &UserStatus);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
bool GameMission::OnSocketSubUserLocation(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubUserStatus\n");
|
|||
|
|
|
|||
|
|
ASSERT(dataSize >= sizeof(CMD_GF_S_UserLocation));
|
|||
|
|
if (dataSize < sizeof(CMD_GF_S_UserLocation)) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_GF_S_UserLocation * pLocation = (CMD_GF_S_UserLocation *)data;
|
|||
|
|
|
|||
|
|
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
|
|||
|
|
IClientUserItem * pIClientUserItem = mUserManager->SearchUserByUserID(pLocation->dwTargetUserID);
|
|||
|
|
if (nullptr == pIClientUserItem) return true;
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->onEventUserLocation(pIClientUserItem, pLocation);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ϵͳ<CFB5><CDB3>Ϣ
|
|||
|
|
bool GameMission::OnSocketMainSystem(int sub, void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
switch (sub)
|
|||
|
|
{
|
|||
|
|
//ϵͳ<CFB5><CDB3>Ϣ
|
|||
|
|
case SUB_CM_SYSTEM_MESSAGE: return OnSocketSubSystemMessage(data, dataSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(FALSE);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ϵͳ<CFB5><CDB3>Ϣ
|
|||
|
|
bool GameMission::OnSocketSubSystemMessage(void* data, int wDataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubSystemMessage\n"));
|
|||
|
|
|
|||
|
|
CMD_CM_SystemMessage * pSystemMessage = (CMD_CM_SystemMessage *)data;
|
|||
|
|
uint16 wHeadSize = sizeof(CMD_CM_SystemMessage) - sizeof(pSystemMessage->szString);
|
|||
|
|
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT((wDataSize > wHeadSize) && (wDataSize == (wHeadSize + pSystemMessage->wLength*sizeof(char))));
|
|||
|
|
if ((wDataSize <= wHeadSize) || (wDataSize != (wHeadSize + pSystemMessage->wLength*sizeof(char)))) return false;
|
|||
|
|
|
|||
|
|
uint16 wType = pSystemMessage->wType;
|
|||
|
|
|
|||
|
|
//<2F>رմ<D8B1><D5B4><EFBFBD>
|
|||
|
|
if ((wType&(SMT_CLOSE_ROOM | SMT_CLOSE_LINK)) != 0)
|
|||
|
|
{
|
|||
|
|
OnGFGameClose(ServiceStatus_NetworkDown);
|
|||
|
|
this->stop();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
if(wType&SMT_EJECT)
|
|||
|
|
{
|
|||
|
|
PopScene::Instance().show(utility::a_u8(pSystemMessage->szString));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
bool GameMission::OnSocketMainPrivate(int sub, void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
switch (sub)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ò<EFBFBD>ѯ
|
|||
|
|
case SUB_GR_PRIVATE_INFO: return OnSocketSubPrivateInfo(data, dataSize);
|
|||
|
|
case SUB_GR_CREATE_PRIVATE_SUCESS: return OnSocketSubPrivateCreateSuceess(data, dataSize);
|
|||
|
|
case SUB_GF_PRIVATE_ROOM_INFO: return OnSocketSubPrivateRoomInfo(data, dataSize);
|
|||
|
|
case SUB_GR_PRIVATE_DISMISS: return OnSocketSubPrivateDismissInfo(data, dataSize);
|
|||
|
|
case SUB_GR_PRIVATE_DISMISS_RESULT: return OnSocketSubPrivateDismissResult(data, dataSize);
|
|||
|
|
case SUB_GF_GM_PRIVATE_END: return OnSocketSubGMPrivateEnd(data, dataSize);
|
|||
|
|
case SUB_GR_AUTO_USER_STATUS: return OnSocketSubPrivateAutoUserStatus(data, dataSize);
|
|||
|
|
case SUB_GR_AUTO_USER_READY: return OnSocketSubAutoUserReady(data, dataSize);
|
|||
|
|
case SUB_GF_PRIVATE_SCORE_INFO: return OnSocketSubPrivateScoreInfo(data, dataSize);
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
bool GameMission::OnSocketSubPrivateInfo(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubPrivateInfo\n");
|
|||
|
|
CMD_GR_Private_Info *pNetInfo = (CMD_GR_Private_Info*)data;
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubPrivateCreateSuceess(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("PrivateMission::OnSocketSubPrivateCreateSuceess\n");
|
|||
|
|
|
|||
|
|
ASSERT(dataSize == sizeof(CMD_GR_Create_Private_Sucess));
|
|||
|
|
if (dataSize != sizeof(CMD_GR_Create_Private_Sucess)) return false;
|
|||
|
|
|
|||
|
|
CMD_GR_Create_Private_Sucess *pNetInfo = (CMD_GR_Create_Private_Sucess*)data;
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//˽<>˳<EFBFBD><CBB3><EFBFBD>Ϣ
|
|||
|
|
bool GameMission::OnSocketSubPrivateRoomInfo(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubPrivateRoomInfo\n");
|
|||
|
|
|
|||
|
|
DataStream kDataStream(data, dataSize);
|
|||
|
|
CMD_GF_Private_Room_Info kNetInfo;
|
|||
|
|
kNetInfo.StreamValue(kDataStream, false);
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubPrivateRoomInfo(&kNetInfo);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
bool GameMission::OnSocketSubPrivateScoreInfo(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubPrivateScoreInfo\n");
|
|||
|
|
|
|||
|
|
DataStream kDataStream(data, dataSize);
|
|||
|
|
CMD_GF_Private_Score_Info kNetInfo;
|
|||
|
|
kNetInfo.StreamValue(kDataStream, false);
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubPrivateScoreInfo(&kNetInfo);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool GameMission::OnSocketSubGMPrivateEnd(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubGMPrivateEnd\n");
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubPrivateEnd(data, dataSize);
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool GameMission::OnSocketSubPrivateDismissInfo(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubPrivateDismissInfo\n");
|
|||
|
|
|
|||
|
|
ASSERT(dataSize == sizeof(CMD_GF_Private_Dismiss_Info));
|
|||
|
|
if (dataSize != sizeof(CMD_GF_Private_Dismiss_Info)) return false;
|
|||
|
|
|
|||
|
|
CMD_GF_Private_Dismiss_Info *pNetInfo = (CMD_GF_Private_Dismiss_Info*)data;
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubPrivateDismissInfo(pNetInfo);
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool GameMission::OnSocketSubPrivateDismissResult(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubPrivateDismissResult\n");
|
|||
|
|
|
|||
|
|
ASSERT(dataSize == sizeof(CMD_GF_Private_Dismiss_Result));
|
|||
|
|
if (dataSize != sizeof(CMD_GF_Private_Dismiss_Result)) return false;
|
|||
|
|
|
|||
|
|
CMD_GF_Private_Dismiss_Result *pNetInfo = (CMD_GF_Private_Dismiss_Result*)data;
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubPrivateDismissResult(pNetInfo);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD><EFBFBD>״̬;
|
|||
|
|
bool GameMission::OnSocketSubPrivateAutoUserStatus(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubPrivateAutoUserStatus\n");
|
|||
|
|
|
|||
|
|
ASSERT(dataSize == sizeof(tagAutoUserStatus));
|
|||
|
|
if (dataSize != sizeof(tagAutoUserStatus)) return false;
|
|||
|
|
|
|||
|
|
tagAutoUserStatus *pNetInfo = (tagAutoUserStatus*)data;
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubPrivateAutoUserStatus(pNetInfo);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ״̬;
|
|||
|
|
bool GameMission::OnSocketSubAutoUserReady(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubAutoUserReady\n");
|
|||
|
|
|
|||
|
|
ASSERT(dataSize == sizeof(CMD_GR_Private_ReadyInfo));
|
|||
|
|
if (dataSize != sizeof(CMD_GR_Private_ReadyInfo)) return false;
|
|||
|
|
|
|||
|
|
CMD_GR_Private_ReadyInfo *pNetInfo = (CMD_GR_Private_ReadyInfo*)data;
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubPrivateAutoUserReady(pNetInfo);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool GameMission::OnSocketMainGameFrame(int main, int sub, void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(dataSize <= SOCKET_TCP_PACKET);
|
|||
|
|
if (dataSize > SOCKET_TCP_PACKET) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
|
|||
|
|
if (main == MDM_GF_GAME)
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7>״̬
|
|||
|
|
ASSERT(mIClientKernelSink != 0);
|
|||
|
|
if (mIClientKernelSink == 0)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return mIClientKernelSink->OnEventGameMessage(sub, data, dataSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>ں˴<DABA><CBB4><EFBFBD>
|
|||
|
|
if (main == MDM_GF_FRAME)
|
|||
|
|
{
|
|||
|
|
switch (sub)
|
|||
|
|
{
|
|||
|
|
case SUB_GF_USER_CHAT:
|
|||
|
|
{
|
|||
|
|
return OnSocketSubUserChat(data, dataSize);
|
|||
|
|
}
|
|||
|
|
case SUB_GF_USER_EXPRESSION:
|
|||
|
|
{
|
|||
|
|
return OnSocketSubUserFace(data, dataSize);
|
|||
|
|
}
|
|||
|
|
case SUB_GR_TABLE_TALK: //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
return OnSocketSubUserTalk(data, dataSize);
|
|||
|
|
}
|
|||
|
|
case SUB_GF_GAME_STATUS: //<2F><>Ϸ״̬
|
|||
|
|
{
|
|||
|
|
return OnSocketSubGameStatus(data, dataSize);
|
|||
|
|
}
|
|||
|
|
case SUB_GF_GAME_SCENE: //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
return OnSocketSubGameScene(data, dataSize);
|
|||
|
|
}
|
|||
|
|
case SUB_GF_SYSTEM_MESSAGE:
|
|||
|
|
{
|
|||
|
|
return OnSocketSubGameSystemMessage(data, dataSize);
|
|||
|
|
}
|
|||
|
|
case SUB_GF_PING_TIME:
|
|||
|
|
{
|
|||
|
|
return OnSocketSubNetWorkTime(data, dataSize);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubUserChat(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
return mIClientKernelSink->OnSocketSubUserChat(data, dataSize);
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubUserFace(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
return mIClientKernelSink->OnSocketSubUserFace(data, dataSize);
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
|
|||
|
|
bool GameMission::OnSocketSubUserTalk(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
return mIClientKernelSink->RevTalkFile(data, dataSize);
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ״̬
|
|||
|
|
bool GameMission::OnSocketSubGameStatus(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("flow->CClientKernel::OnSocketSubGameStatus\n");
|
|||
|
|
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(dataSize == sizeof(CMD_GF_GameStatus));
|
|||
|
|
if (dataSize != sizeof(CMD_GF_GameStatus)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_GF_GameStatus * pGameStatus = (CMD_GF_GameStatus *)data;
|
|||
|
|
|
|||
|
|
mGameStatus = pGameStatus->cbGameStatus;
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubGameScene(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("flow->CClientKernel::OnSocketSubGameScene1");
|
|||
|
|
|
|||
|
|
//Ч<><D0A7>״̬
|
|||
|
|
ASSERT(m_pMeUserItem != 0);
|
|||
|
|
if (m_pMeUserItem == 0) return true;
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink == 0)
|
|||
|
|
return true;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool bLookonUser = (m_pMeUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
cocos2d::log("GameMission::OnSocketSubGameScene");
|
|||
|
|
|
|||
|
|
return mIClientKernelSink->OnEventSceneMessage(mGameStatus, bLookonUser, data, dataSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ϵͳ<CFB5><CDB3>Ϣ
|
|||
|
|
bool GameMission::OnSocketSubGameSystemMessage(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubGameSystemMessage\n"));
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubGameSystemMessage(data, dataSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//PING<4E><47><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::OnSocketSubNetWorkTime(void* data, int dataSize)
|
|||
|
|
{
|
|||
|
|
cocos2d::log(("GameMission::OnSocketSubNetWorkTime\n"));
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnSocketSubNetWorkTime(data, dataSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
|||
|
|
bool GameMission::SendSocketData(uint16 wMainCmdID, uint16 wSubCmdID)
|
|||
|
|
{
|
|||
|
|
return SendSocketData(wMainCmdID, wSubCmdID, 0, 0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
|||
|
|
bool GameMission::SendSocketData(uint16 wMainCmdID, uint16 wSubCmdID, void * data, uint16 dataSize)
|
|||
|
|
{
|
|||
|
|
return send(wMainCmdID, wSubCmdID, (unsigned char*)data, dataSize);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>͵<EFBFBD>¼
|
|||
|
|
bool GameMission::SendLogonPacket()
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
|
|||
|
|
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_GR_LogonUserID LogonUserID;
|
|||
|
|
zeromemory(&LogonUserID, sizeof(LogonUserID));
|
|||
|
|
|
|||
|
|
LogonUserID.wKindID = m_wGameKindID;
|
|||
|
|
//<2F><>Ϸ<EFBFBD>汾
|
|||
|
|
//LogonUserID.dwProcessVersion = Helps::Instance()->GetGameVersion();
|
|||
|
|
//LogonUserID.dwPlazaVersion = Helps::Instance()->GetPlazaVersion();
|
|||
|
|
LogonUserID.dwPlazaVersion = JniFun::getVersionCode();
|
|||
|
|
|
|||
|
|
//<2F><>¼<EFBFBD><C2BC>Ϣ
|
|||
|
|
LogonUserID.dwUserID = pGlobalUserData->dwUserID;
|
|||
|
|
strncpy(LogonUserID.szPassword, pGlobalUserData->szPassword, countarray(LogonUserID.szPassword));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SendSocketData(MDM_GR_LOGON, SUB_GR_LOGON_USERID, &LogonUserID, sizeof(LogonUserID));
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ִ<>п<EFBFBD><D0BF>ټ<EFBFBD><D9BC><EFBFBD>
|
|||
|
|
bool GameMission::PerformQuickSitDown()
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
char szPassword[LEN_PASSWORD] = { 0 };
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SendSitDownPacket(INVALID_TABLE, INVALID_CHAIR, szPassword);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::onEventTCPHeartTick()
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
// IUserManagerSink
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
void GameMission::OnUserItemAcitve(IClientUserItem* pIClientUserItem)
|
|||
|
|
{
|
|||
|
|
//<2F>ж<EFBFBD><D0B6>Լ<EFBFBD>
|
|||
|
|
if (m_pMeUserItem == 0)
|
|||
|
|
{
|
|||
|
|
m_pMeUserItem = pIClientUserItem;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserEnter(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void GameMission::OnUserItemDelete(IClientUserItem* pIClientUserItem)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint16 wLastTableID = pIClientUserItem->GetTableID();
|
|||
|
|
uint16 wLastChairID = pIClientUserItem->GetChairID();
|
|||
|
|
uint32 dwLeaveUserID = pIClientUserItem->GetUserID();
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserLeave(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (m_pMeUserItem == pIClientUserItem)
|
|||
|
|
{
|
|||
|
|
m_pMeUserItem = NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void GameMission::OnUserItemUpdate(IClientUserItem* pIClientUserItem)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagUserInfo * pUserInfo = pIClientUserItem->GetUserInfo();
|
|||
|
|
tagUserInfo * pMeUserInfo = m_pMeUserItem->GetUserInfo();
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
if (pIClientUserItem == m_pMeUserItem)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CGlobalUserInfo * pGlobalUserInfo = CGlobalUserInfo::GetInstance();
|
|||
|
|
tagGlobalUserData * pGlobalUserData = pGlobalUserInfo->GetGlobalUserData();
|
|||
|
|
|
|||
|
|
pGlobalUserData->lUserScore = pIClientUserItem->GetUserScore();
|
|||
|
|
pGlobalUserData->lUserInsure = pIClientUserItem->GetUserInsure();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ֪ͨ
|
|||
|
|
if ((pMeUserInfo->wTableID != INVALID_TABLE) && (pUserInfo->wTableID == pMeUserInfo->wTableID))
|
|||
|
|
{
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserScore(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void GameMission::OnUserItemUpdate(IClientUserItem* pIClientUserItem, const tagUserStatus& LastStatus)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnUserItemUpdate\n");
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagUserInfo * pUserInfo = pIClientUserItem->GetUserInfo();
|
|||
|
|
tagUserInfo * pMeUserInfo = m_pMeUserItem->GetUserInfo();
|
|||
|
|
uint16 wNowTableID = pIClientUserItem->GetTableID(), wLastTableID = LastStatus.wTableID;
|
|||
|
|
uint16 wNowChairID = pIClientUserItem->GetChairID(), wLastChairID = LastStatus.wChairID;
|
|||
|
|
uint8 cbNowStatus = pIClientUserItem->GetUserStatus(), cbLastStatus = LastStatus.cbUserStatus;
|
|||
|
|
|
|||
|
|
//<2F>뿪֪ͨ
|
|||
|
|
if ((wLastTableID != INVALID_TABLE) && ((wNowTableID != wLastTableID) || (wNowChairID != wLastChairID)))
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnUserItemUpdate_6\n");
|
|||
|
|
//<2F><>Ϸ֪ͨ
|
|||
|
|
if ((pMeUserInfo->wTableID != INVALID_TABLE) && (pUserInfo->wLastTableID == pMeUserInfo->wTableID))
|
|||
|
|
{
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserStatus(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>봦<EFBFBD><EBB4A6>
|
|||
|
|
if ((wNowTableID == INVALID_TABLE) && ((wNowTableID != wLastTableID) || (wNowChairID != wLastChairID)))
|
|||
|
|
{
|
|||
|
|
if (m_pMeUserItem == pIClientUserItem)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
//OnGFGameClose(0);
|
|||
|
|
CC_ASSERT(g_pGameServerItem != nullptr);
|
|||
|
|
if (g_pGameServerItem->IsGoldRoom())
|
|||
|
|
{
|
|||
|
|
Director::getInstance()->popScene();
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>봦<EFBFBD><EBB4A6>
|
|||
|
|
if ((wNowTableID != INVALID_TABLE) && ((wNowTableID != wLastTableID) || (wNowChairID != wLastChairID)))
|
|||
|
|
{
|
|||
|
|
//<2F>Լ<EFBFBD><D4BC>ж<EFBFBD>
|
|||
|
|
if (m_pMeUserItem == pIClientUserItem)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserEnter(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ֪ͨ
|
|||
|
|
if ((m_pMeUserItem != pIClientUserItem) && (pMeUserInfo->wTableID == wNowTableID))
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnUserItemUpdate_8\n");
|
|||
|
|
ASSERT(wNowChairID != INVALID_CHAIR);
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserEnter(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//״̬<D7B4>ı<EFBFBD>
|
|||
|
|
if ((wNowTableID != INVALID_TABLE) && (wNowTableID == wLastTableID) && (pMeUserInfo->wTableID == wNowTableID))
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnUserItemUpdate_9\n");
|
|||
|
|
//<2F><>Ϸ֪ͨ
|
|||
|
|
tagUserStatus UserStatus;
|
|||
|
|
UserStatus.wTableID = wNowTableID;
|
|||
|
|
UserStatus.wChairID = wNowChairID;
|
|||
|
|
UserStatus.cbUserStatus = cbNowStatus;
|
|||
|
|
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserStatus(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void GameMission::OnUserItemUpdate(IClientUserItem * pIClientUserItem, const tagUserAttrib & UserAttrib)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint16 wMeTableID = m_pMeUserItem->GetTableID();
|
|||
|
|
uint16 wUserTableID = pIClientUserItem->GetTableID();
|
|||
|
|
|
|||
|
|
//֪ͨ<CDA8><D6AA>Ϸ
|
|||
|
|
if ((wMeTableID != INVALID_TABLE) && (wMeTableID == wUserTableID))
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
if (mIClientKernelSink)
|
|||
|
|
{
|
|||
|
|
mIClientKernelSink->OnEventUserScore(pIClientUserItem, pIClientUserItem->GetUserStatus() == US_LOOKON);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::IntermitConnect(bool force)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::IntermitConnect1 mServiceStatus = %d\n", mServiceStatus);
|
|||
|
|
if (mServiceStatus == ServiceStatus_Unknow || mServiceStatus == ServiceStatus_NetworkDown)
|
|||
|
|
return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
|
cocos2d::log("GameMission::IntermitConnect2");
|
|||
|
|
mServiceStatus = ServiceStatus_NetworkDown;
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
stop();
|
|||
|
|
|
|||
|
|
if (mUserManager)
|
|||
|
|
{
|
|||
|
|
mUserManager->ResetUserItem();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (...)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pMeUserItem = nullptr;
|
|||
|
|
|
|||
|
|
mUserManager->ResetUserItem();
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
IClientUserItem* GameMission::GetMeUserItem()
|
|||
|
|
{
|
|||
|
|
return m_pMeUserItem;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD>û<EFBFBD>
|
|||
|
|
IClientUserItem * GameMission::GetTableUserItem(uint16 wChairID)
|
|||
|
|
{
|
|||
|
|
return mUserManager->EnumUserItem(wChairID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void GameMission::ConnectServerByKind(uint16 wDataID)
|
|||
|
|
{
|
|||
|
|
CGameServerItem* pServer = CServerListData::getGameServerByKind(wDataID, FindByServerTypeID);
|
|||
|
|
if (pServer)
|
|||
|
|
{
|
|||
|
|
g_pGameServerItem = pServer;
|
|||
|
|
m_wGameKindID = pServer->m_GameServer.wKindID;
|
|||
|
|
setUrl(pServer->m_GameServer.szServerAddr, pServer->m_GameServer.wServerPort);
|
|||
|
|
start();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>"));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void GameMission::ConnectServerByServerID(uint16 wServerID)
|
|||
|
|
{
|
|||
|
|
CGameServerItem* pServer = CServerListData::shared()->SearchGameServer(wServerID);
|
|||
|
|
if (pServer)
|
|||
|
|
{
|
|||
|
|
g_pGameServerItem = pServer;
|
|||
|
|
m_wGameKindID = pServer->m_GameServer.wKindID;
|
|||
|
|
setUrl(pServer->m_GameServer.szServerAddr, pServer->m_GameServer.wServerPort);
|
|||
|
|
start();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
PopScene::Instance().show(utility::a_u8("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::PerformStandUpAction()
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::PerformStandUpAction...\n");
|
|||
|
|
|
|||
|
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
if (mServiceStatus != ServiceStatus_ServiceIng) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>
|
|||
|
|
cocos2d::log("GameMission::PerformStandUpAction send\n");
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SendStandUpPacket(m_pMeUserItem->GetTableID(), m_pMeUserItem->GetChairID(), FALSE);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::SendSitDownPacket(uint16 wTableID, uint16 wChairID, const char* lpszPassword)
|
|||
|
|
{
|
|||
|
|
CMD_GR_UserSitDown UserSitReq;
|
|||
|
|
zeromemory(&UserSitReq, 0);
|
|||
|
|
memset(&UserSitReq, 0, sizeof(UserSitReq));
|
|||
|
|
UserSitReq.wTableID = wTableID;
|
|||
|
|
UserSitReq.wChairID = wChairID;
|
|||
|
|
if (lpszPassword)
|
|||
|
|
{
|
|||
|
|
strcpy(UserSitReq.szTablePass, lpszPassword);
|
|||
|
|
}
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
SendSocketData(MDM_GR_USER, SUB_GR_USER_SITDOWN, &UserSitReq, sizeof(UserSitReq));
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool GameMission::SendStandUpPacket(uint16 wTableID, uint16 wChairID, uint8 cbForceLeave)
|
|||
|
|
{
|
|||
|
|
CMD_GR_UserStandUp UserStandUp;
|
|||
|
|
zeromemory(&UserStandUp, sizeof(UserStandUp));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UserStandUp.wTableID = wTableID;
|
|||
|
|
UserStandUp.wChairID = wChairID;
|
|||
|
|
UserStandUp.cbForceLeave = cbForceLeave;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SendSocketData(MDM_GR_USER, SUB_GR_USER_STANDUP, &UserStandUp, sizeof(UserStandUp));
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><D7BC><EFBFBD><EFBFBD>
|
|||
|
|
void GameMission::OnGFGameOption()
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnGFGameOption\n");
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>λ<EFBFBD><CEBB>;
|
|||
|
|
tagUserAddr* pUserAddr = CGlobalUserInfo::GetInstance()->GetUserAddr();
|
|||
|
|
if (pUserAddr && pUserAddr->isInit)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("SUB_GF_USER_LOCATION...\n");
|
|||
|
|
|
|||
|
|
CMD_GF_C_UserLocation _location;
|
|||
|
|
zeromemory(&_location, sizeof(_location));
|
|||
|
|
|
|||
|
|
_location.lLatitude = pUserAddr->latitude * DOUBLE_TO_SCORE;
|
|||
|
|
_location.lLongitude = pUserAddr->longitude * DOUBLE_TO_SCORE;
|
|||
|
|
_location.lAccuracy = pUserAddr->accuracy * DOUBLE_TO_SCORE;
|
|||
|
|
|
|||
|
|
strncpy(_location.szAddress, pUserAddr->strAddress.c_str(), countarray(_location.szAddress));
|
|||
|
|
|
|||
|
|
//std::string strInfo = cocos2d::StringUtils::format("%ld, %ld, %ld, %s", _location.lLatitude, _location.lLongitude,
|
|||
|
|
// _location.lAccuracy, _location.szAddress);
|
|||
|
|
//cocos2d::log(strInfo.c_str());
|
|||
|
|
|
|||
|
|
SendSocketData(MDM_GF_FRAME, SUB_GF_USER_LOCATION, &_location, sizeof(_location));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint16 wTableID = m_pMeUserItem->GetTableID();
|
|||
|
|
uint16 wChairID = m_pMeUserItem->GetChairID();
|
|||
|
|
|
|||
|
|
mUserAttribute.wChairID = wChairID;
|
|||
|
|
mUserAttribute.wTableID = wTableID;
|
|||
|
|
|
|||
|
|
CMD_GF_GameOption GameOption;
|
|||
|
|
zeromemory(&GameOption, sizeof(GameOption));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GameOption.dwFrameVersion = VERSION_FRAME;
|
|||
|
|
GameOption.cbAllowLookon = 0;
|
|||
|
|
GameOption.dwClientVersion = Helps::Instance()->GetGameVersion();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SendSocketData(MDM_GF_FRAME, SUB_GF_GAME_OPTION, &GameOption, sizeof(GameOption));
|
|||
|
|
|
|||
|
|
//mIsGameReady = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD>ر<EFBFBD>
|
|||
|
|
void GameMission::OnGFGameClose(int iExitCode)
|
|||
|
|
{
|
|||
|
|
cocos2d::log("GameMission::OnGFGameClose %d\n", iExitCode);
|
|||
|
|
if (!m_pMeUserItem)
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//Ч<><D0A7>״̬
|
|||
|
|
ASSERT(m_pMeUserItem != 0);
|
|||
|
|
if (m_pMeUserItem == 0) return;
|
|||
|
|
|
|||
|
|
//mIsGameReady = false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint8 cbUserStatus = m_pMeUserItem->GetUserStatus();
|
|||
|
|
mUserAttribute.wChairID = INVALID_CHAIR;
|
|||
|
|
mUserAttribute.wTableID = INVALID_TABLE;
|
|||
|
|
|
|||
|
|
if (iExitCode == ServiceStatus_NetworkDown)
|
|||
|
|
{
|
|||
|
|
mServiceStatus = ServiceStatus_NetworkDown;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//if (mIClientKernelSink)
|
|||
|
|
//{
|
|||
|
|
// mIClientKernelSink->CloseGameClient();
|
|||
|
|
// mIClientKernelSink = NULL;
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void GameMission::SetServerItem(CGameServerItem* pServerItem)
|
|||
|
|
{
|
|||
|
|
g_pGameServerItem = pServerItem;
|
|||
|
|
m_wGameKindID = pServerItem->m_GameServer.wKindID;
|
|||
|
|
|
|||
|
|
setUrl(pServerItem->m_GameServer.szServerAddr, pServerItem->m_GameServer.wServerPort);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><>Ϸ¼<CFB7><C2BC>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD>;
|
|||
|
|
void GameMission::InitRecordGamePlayer(uint16 wChairID, tagGameRecordPlayer& kRecordPlayer)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagUserInfo kUserInfo;
|
|||
|
|
tagCustomFaceInfo CustomFaceInfo;
|
|||
|
|
zeromemory(&kUserInfo, sizeof(kUserInfo));
|
|||
|
|
zeromemory(&CustomFaceInfo, sizeof(CustomFaceInfo));
|
|||
|
|
|
|||
|
|
// <20><>ֵ;
|
|||
|
|
kUserInfo.dwUserID = kRecordPlayer.dwUserID;
|
|||
|
|
kUserInfo.dwGameID = kRecordPlayer.dwGameID;
|
|||
|
|
kUserInfo.cbGender = kRecordPlayer.cbSex;
|
|||
|
|
kUserInfo.lScore = kRecordPlayer.lScore;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>ʹ<EFBFBD><CAB9>GamePlayer<65><72>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
kUserInfo.wTableID = 0;
|
|||
|
|
kUserInfo.wChairID = wChairID;
|
|||
|
|
kUserInfo.cbUserStatus = US_SIT;
|
|||
|
|
|
|||
|
|
strcpy(kUserInfo.szNickName, kRecordPlayer.strNickName.c_str());
|
|||
|
|
strcpy(kUserInfo.szHeadHttp, kRecordPlayer.strHead.c_str());
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
IClientUserItem * pIClientUserItem = mUserManager->SearchUserByUserID(kUserInfo.dwUserID);
|
|||
|
|
pIClientUserItem = mUserManager->ActiveUserItem(kUserInfo, CustomFaceInfo);
|
|||
|
|
|
|||
|
|
CMD_GR_UserStatus userStatus;
|
|||
|
|
userStatus.dwUserID = kRecordPlayer.dwUserID;
|
|||
|
|
userStatus.UserStatus.wTableID = 0;
|
|||
|
|
userStatus.UserStatus.wChairID = wChairID;
|
|||
|
|
userStatus.UserStatus.cbUserStatus = US_PLAYING;
|
|||
|
|
OnSocketSubUserStatus(&userStatus, sizeof(CMD_GR_UserStatus));
|
|||
|
|
}
|