📄 network.cpp
字号:
OnlineUpdate();
}
return ret;
}
//======================================================================
int CNetwork::setNickName(char *pNickName)
{
int ret=0;
if( STRCMP(pNickName,"") )
{
if( statusOfOnline != WEB_STATE_SETNICKNAME )
{
//first set
DBGPRINTF("NETWORK: ======setNickName()======");
STRCPY(nickName, pNickName);
statusOfOnline = WEB_STATE_SETNICKNAME;
statusOfLink = LINK_SETNAME;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
}
if( errorcode || m_nErrorType != -1)
{
if( errorcode == 4 )
{
//nick name already took
STRCPY(nickName,"");
m_nErrorType = -1;
ret = -2;
errorcode = 0;
statusOfOnline = WEB_STATE_NONE;
}
else
{
ret = -1;
m_nErrorType = -1;
errorcode = 0;
statusOfOnline = WEB_STATE_NONE;
}
}
else if( bnickName )
ret = 1;
return ret;
}
//======================================================================
int CNetwork::getRivalName(char *rivalname, int *highscore, int *winrank, int *averank)
{
int ret=0;
if( STRCMP(OpnickName,"") )
{
STRCPY( rivalname, OpnickName );
if( highscore )
*highscore = OpHighscore;
if( winrank )
*winrank = OpWinRank;
if( averank )
*averank = OpAveRank;
ret = 1;
return ret;
}
if( statusOfOnline != WEB_STATE_GETRIVAL )
{
DBGPRINTF("NETWORK: ======getRivalName()======");
statusOfOnline = WEB_STATE_GETRIVAL;
statusOfLink = LINK_LOGIN;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
ret = -1;
m_nErrorType = -1;
errorcode = 0;
statusOfOnline = WEB_STATE_NONE;
}
else if( STRCMP(OpnickName,"") )
{
STRCPY( rivalname, OpnickName );
if( highscore )
*highscore = OpHighscore;
if( winrank )
*winrank = OpWinRank;
if( averank )
*averank = OpAveRank;
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::wantChallenge(bool chal, int *state)
{
int ret=0;
if( statusOfOnline != WEB_STATE_WANTCHALLENGE )
{
DBGPRINTF("NETWORK: ======wantChallenge()======");
statusOfOnline = WEB_STATE_WANTCHALLENGE;
bChallenge = chal;
if( chal == false )
{
STRCPY(OpnickName, "");
}
challengeState = CHALLENGE_WAIT;
if (bWopponent)
statusOfLink = LINK_CHALLENGE;
else if (bOpponent)
statusOfLink = LINK_A_CHALLENGE;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
//receive
if( errorcode || m_nErrorType != -1 )
{
ret = -1;
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
}
else if( challengeState != CHALLENGE_WAIT )
{
*state = challengeState;
if( challengeState == CHALLENGE_REJECTED )
statusOfOnline = WEB_STATE_NONE;
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::sendMyScore(int *myscore)//return 0: connecting; -1: error; 1: send succeed
{
int ret=0;
if( statusOfOnline != WEB_STATE_SENDSCORE )
{
DBGPRINTF("NETWORK: ======sendMyScore()======");
statusOfOnline = WEB_STATE_SENDSCORE;
statusOfLink = LINK_GAME_RUN;
statusOfWeb = WEB_MURL;
scoreState = SCORE_SEND;
bOpScoreValid = false;
bgetGameResult = false;
STRCPY(nextSEQ,"");
for( int i=0;i<3;i++ )
{
if( i==2 && myscore[i] == -1 )
continue;
if( myscore[i] == 10 )
{
STRCAT(nextSEQ,"A");
int turn = ((CGame*)m_pEngine->m_pGame)->GetMatch()->GetCurRoundNumber()+1;
if( i == 0 && turn != 10)
{
i++;
STRCAT(nextSEQ,".");
}
}
else
SPRINTF(nextSEQ,"%s%d",nextSEQ,myscore[i]);
}
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1 )
{
if( m_nErrorType == LINK_ERROR_TIMEOUT || m_nErrorType == LINK_ERROR_LOSTOP )
ret = m_nErrorType;
else
ret = -1;
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
scoreState = SCORE_NONE;
}
else if( scoreState != SCORE_SEND )
{
scoreState = SCORE_NONE;
statusOfOnline = WEB_STATE_NONE;
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::receiveOpPinMode(int *OpPinMode)//return 0: connecting; -1: error; 1: receive succedd
{
int ret=0;
if( bOpScoreValid )
{
OpPinMode[0] = m_onlinePlayerPinStatus[0];
OpPinMode[1] = m_onlinePlayerPinStatus[1];
OpPinMode[2] = m_onlinePlayerPinStatus[2];
scoreState = SCORE_NONE;
ret = 1;
return ret;
}
if( statusOfOnline != WEB_STATE_RECEIVESCORE )
{
DBGPRINTF("NETWORK: ======receiveOpPinMode()======");
statusOfOnline = WEB_STATE_RECEIVESCORE;
statusOfLink = LINK_GAME_RUN;
scoreState = SCORE_WAITRIVAL;
STRCPY(nextSEQ,"");
bOpScoreValid = false;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
if( m_nErrorType == LINK_ERROR_TIMEOUT || m_nErrorType == LINK_ERROR_LOSTOP )
ret = m_nErrorType;
else
ret = -1;
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
scoreState = SCORE_NONE;
}
else if( bOpScoreValid )
{
OpPinMode[0] = m_onlinePlayerPinStatus[0];
OpPinMode[1] = m_onlinePlayerPinStatus[1];
OpPinMode[2] = m_onlinePlayerPinStatus[2];
scoreState = SCORE_NONE;
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::getGameResult()
{
int ret=0;
if( statusOfOnline != WEB_STATE_GETGAMERESULT )
{
DBGPRINTF("NETWORK: ======getGameResult()======");
statusOfOnline = WEB_STATE_GETGAMERESULT;
statusOfLink = LINK_GAME_RUN;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
ret = -1;
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
}
else if( statusOfOnline != WEB_STATE_GETGAMERESULT )
{
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::getUserInfo(int *win, int *loss, int *draw, int *highscore, int *winrank, int *averank)
{
int ret=0;
if( bValidInfo )
{
*win = m_Win;
*loss = m_Loss;
*draw = m_Draw;
*highscore = m_highScore;
*winrank = m_winRank;
if( averank )
*averank = m_aveRank;
ret = 1;
return ret;
}
if( statusOfOnline != WEB_STATE_GETINFO )
{
DBGPRINTF("NETWORK: ======getUserInfo()======");
statusOfOnline = WEB_STATE_GETINFO;
statusOfLink = LINK_GETINFO;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
ret = -1;
}
else if( bValidInfo )
{
*win = m_Win;
*loss = m_Loss;
*draw = m_Draw;
*highscore = m_highScore;
*winrank = m_winRank;
if( averank )
*averank = m_aveRank;
ret = 1;
}
return ret;
}
//======================================================================
//UID=XXX&LOGIN=1
int CNetwork::Login()
{
int ret = 0;
if( statusOfOnline != WEB_STATE_LOGIN )
{
DBGPRINTF("NETWORK: ======Login()======");
statusOfOnline = WEB_STATE_LOGIN;
statusOfLink = LINK_LOGIN;
blogin = false;
bOpponent = false;
bWopponent = false;
STRCPY(OpnickName,"");
bValidInfo = false;
bOpScoreValid = false;
bgetGameResult = false;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
ret = -1;
}
else if( blogin )
{
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::getRank(RANK_DATA *pData)
{
int ret=0;
if(bHighRankValid)
{
MEMCPY(pData,pHighRank,sizeof(RANK_DATA)*MAX_RANK_NUM);
ret = 1;
return ret;
}
if( statusOfOnline != WEB_STATE_GETHIGHRANK )
{
DBGPRINTF("NETWORK: ======getAveRank()======");
statusOfOnline = WEB_STATE_GETHIGHRANK;
statusOfLink = LINK_GETHIGHRANK;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
ret = -1;
}
else if( bHighRankValid )
{
MEMCPY(pData,pHighRank,sizeof(RANK_DATA)*MAX_RANK_NUM);
statusOfOnline = WEB_STATE_NONE;
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::getAveRank(RANK_DATA *pData)
{
int ret=0;
if(bAveRankValid)
{
MEMCPY(pData,pAveRank,sizeof(RANK_DATA)*MAX_RANK_NUM);
ret = 1;
return ret;
}
if( statusOfOnline != WEB_STATE_GETAVERANK )
{
DBGPRINTF("NETWORK: ======getAveRank()======");
statusOfOnline = WEB_STATE_GETAVERANK;
statusOfLink = LINK_GETAVERANK;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
ret = -1;
}
else if( bAveRankValid )
{
MEMCPY(pData,pAveRank,sizeof(RANK_DATA)*MAX_RANK_NUM);
statusOfOnline = WEB_STATE_NONE;
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::getWinRank(RANK_DATA *pData)
{
int ret=0;
if(bWinRankValid)
{
MEMCPY(pData,pWinRank,sizeof(RANK_DATA)*MAX_RANK_NUM);
ret = 1;
return ret;
}
if( statusOfOnline != WEB_STATE_GETWINRANK )
{
DBGPRINTF("NETWORK: ======getWinRank()======");
statusOfOnline = WEB_STATE_GETWINRANK;
statusOfLink = LINK_GETWINRANK;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
ret = -1;
}
else if( bWinRankValid )
{
MEMCPY(pData,pWinRank,sizeof(RANK_DATA)*MAX_RANK_NUM);
statusOfOnline = WEB_STATE_NONE;
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::keepConnect()
{
int ret=0;
if( statusOfOnline != WEB_STATE_KEEPCONNECT)
{
DBGPRINTF("NETWORK: ======keepConnect()======");
connecterror = false;
statusOfOnline = WEB_STATE_KEEPCONNECT;
statusOfLink = LINK_GAME_RUN;
STRCPY(nextSEQ,"");
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( statusOfOnline != WEB_STATE_KEEPCONNECT )
{
if( m_nErrorType == LINK_ERROR_TIMEOUT || m_nErrorType == LINK_ERROR_LOSTOP )
ret = m_nErrorType;
else if( connecterror )
ret = -1;
else
ret = 1;
m_nErrorType = -1;
}
return ret;
}
//======================================================================
void CNetwork::stopConnect()
{
DBGPRINTF("NETWORK: ======stopConnect()======");
CALLBACK_Cancel(&m_pEngine->m_Callback);
if( m_pEngine->m_pIWebResp )
{
IWEBRESP_Release(m_pEngine->m_pIWebResp);
m_pEngine->m_pIWebResp = NULL;
}
STRCPY(OpnickName,"");
resultSize = 0;//clear the result size
resultOK = false;
}
//======================================================================
int CNetwork::InitConnect()
{
int ret=0;
if( statusOfOnline != WEB_STATE_INIT )
{
DBGPRINTF("NETWORK: ======InitConnect()======");
statusOfOnline = WEB_STATE_INIT;
statusOfLink = LINK_CLEAR;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
ret = 1;
}
else if( statusOfOnline != WEB_STATE_INIT )
{
ret = 1;
}
return ret;
}
//======================================================================
int CNetwork::resetProfile()
{
int ret=0;
if( statusOfOnline != WEB_STATE_RESETPROFILE )
{
DBGPRINTF("NETWORK: ======resetProfile()======");
statusOfOnline = WEB_STATE_RESETPROFILE;
statusOfLink = LINK_RESET;
statusOfWeb = WEB_MURL;
}
OnlineUpdate();
if( errorcode || m_nErrorType != -1)
{
errorcode = 0;
m_nErrorType = -1;
statusOfOnline = WEB_STATE_NONE;
ret = -1;
}
else if( statusOfOnline != WEB_STATE_RESETPROFILE )
{
ret = 1;
bnickName = false;
}
return ret;
}
//======================================================================
void CNetwork::OnlineUpdate()
{
if (!buserID)
{
//generate a user for test
generateUser();
}
switch(statusOfOnline)
{
case WEB_STATE_NONE:
break;
default:
makeConnect();
break;
}
}
//Qiu Li end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -