📄 3r_rank.c
字号:
/* ######################################################################################
汲 疙 :
######################################################################################### */
#include "helloworld.h"
/*
extern void mousept_HandleMenuEvent(mousept * pMe);
extern void mousept_InitGameSoundData(mousept * pMe);
extern boolean mousept_InitGameImageData(mousept * pMe);
extern void mousept_InitMIDIPlayer(mousept * pMe);
*/
void Ranking_Info(void *cxt)
{
mousept *pMe = (mousept *)cxt;
char szBuf[64];
AECHAR szTemp[64];
int nBound;
AEERect Rect;
SETAEERECT(&Rect, 0, 0, pMe->nCenterX * 2, pMe->nCenterY * 2);
IDISPLAY_FillRect(pMe->a.m_pIDisplay, &Rect, BCOLOR);
//SETAEERECT(&Rect, 0, 14, pMe->nCenterX * 2, pMe->nCenterY * 2 - 28);
//IDISPLAY_FillRect(pMe->a.m_pIDisplay, &Rect, FColor);
IIMAGE_Draw(pMe->m_mainbg,pMe->nCenterX-60,pMe->nCenterY-60);
nBound = pMe->nCenterY - 14 * 4;
//pMe->RankStatus = RANKSTATUS_NOTIFY;
//Ranking_Background(FCOLOR, BCOLOR, (void *)pMe);
sprintf(szBuf, "夯 橇肺弊伐俊辑绰 ");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 14, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "珐欧狼 贸府甫 困秦");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 28, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "匙飘亏俊 立加且 版");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 42, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "快, 喊档狼 烹拳丰 ");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 56, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "啊 何苞邓聪促. ");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 70, 0, IDF_TEXT_TRANSPARENT);//print
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
void Ranking_Notify(void *cxt)
{
mousept *pMe = (mousept *)cxt;
char szBuf[64];
AECHAR szTemp[64];
int nBound;
for(nBound = 0; nBound < 64; nBound++)
szBuf[nBound] = '\0';
nBound = pMe->nCenterY - 14 * 4;
pMe->RankStatus = RANKSTATUS_NOTIFY;
Ranking_Background(FCOLOR, BCOLOR, (void *)pMe);
sprintf(szBuf, "珐欧 贸府甫 困秦辑");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 14, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "匙飘亏 立加阑 矫档");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 28, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "钦聪促. 立加矫俊绰");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 42, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "烹拳丰啊 何苞登坷 ");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 56, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "聪 盔摹 臼栏矫搁, ");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 70, 0, IDF_TEXT_TRANSPARENT);//print
sprintf(szBuf, "秒家窍绞矫坷. ");
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, 0, nBound + 84, 0, IDF_TEXT_TRANSPARENT);//print
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
void Ranking_Register(char *szRank1, char *szRank2, char *szRank3, char *szRank4, char *szRank5, void *cxt)
{
mousept *pMe = (mousept *)cxt;
char szBuf[256];
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_REGISTER, (void *)pMe);
if(szRank2 == NULL)
{
sprintf(szBuf, "R%s%s1%12s000000000000000000000000000000000000000000000000", CLASS_ID, GAME_ID, szRank1);
}
else if(szRank3 == NULL)
{
sprintf(szBuf, "R%s%s2%12s%12s000000000000000000000000000000000000", CLASS_ID, GAME_ID, szRank1, szRank2);
}
else if(szRank4 == NULL)
{
sprintf(szBuf, "R%s%s3%12s%12s%12s000000000000000000000000", CLASS_ID, GAME_ID, szRank1, szRank2, szRank3);
}
else if(szRank5 == NULL)
{
sprintf(szBuf, "R%s%s4%12s%12s%12s%12s000000000000", CLASS_ID, GAME_ID, szRank1, szRank2, szRank3, szRank4);
}
else
{
sprintf(szBuf, "R%s%s5%12s%12s%12s%12s%12s", CLASS_ID, GAME_ID, szRank1, szRank2, szRank3, szRank4, szRank5);
}
STRCPY(pMe->m_szData, szBuf);
//Ranking_Connect(SERVER_TEST, (void *)pMe);
Ranking_Notify((void *)pMe);
}
void Ranking_Show(int nOrderWay, int nRank, void *cxt)
{
mousept *pMe = (mousept *)cxt;
char szBuf[256];
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_SHOW, (void *)pMe);
\
sprintf(szBuf, "S%s%s%d%012d", CLASS_ID, GAME_ID, nOrderWay, nRank);
STRCPY(pMe->m_szData, szBuf);
Ranking_Connect(SERVER_TEST, (void *)pMe);
//Ranking_Notify((void *)pMe);
}
void Ranking_ShowSelf(int nOrderWay, void *cxt)
{
mousept *pMe = (mousept*)cxt;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_SHOW, (void *)pMe);
sprintf(pMe->m_szData, "M%s%s%d", CLASS_ID, GAME_ID, nOrderWay);
//Ranking_Connect(SERVER_TEST, (void *)pMe);
Ranking_Notify((void *)pMe);
}
void Ranking_NetChkDelay(void *cxt)
{
mousept *pMe = (mousept *)cxt;
pMe->RankStatus = RANKSTATUS_ERROR_NETWORK;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_NETWORK, (void*)pMe);
Ranking_Free((void *)pMe);
}
void Ranking_Connect(boolean bFlag, void *cxt)
{
mousept *pMe = (mousept *)cxt;
INetMgr *pINet;
ISocket *pISock;
IEB_KTF_Com *pIEBKTFCom;
int nReturn;
ISHELL_SetTimer(pMe->a.m_pIShell, CONNECT_TRY_TIME, (PFNNOTIFY)(Ranking_NetChkDelay), pMe);
if (ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_NET, (void**)(&pINet)) != SUCCESS)
{
pMe->RankStatus = RANKSTATUS_ERROR_CONNECTION;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_CONNECTION, (void *)pMe);
Ranking_Free((void*)pMe);
return;
}
else
{
// Error Check Code
//if (pMe->m_pINet)
// Ranking_Messagebox(FCOLOR, BCOLOR, "pMe->m_pINet", (void *)pMe);
pMe->m_pINet = pINet;
#ifdef _SETLINGER0_
INETMGR_SetLinger(pMe->m_pINet, 0);
#else
INETMGR_SetLinger(pMe->m_pINet, 1);
#endif
pISock = INETMGR_OpenSocket(pINet, AEE_SOCK_STREAM);
}
if (!pISock)
{
pMe->RankStatus = RANKSTATUS_ERROR_CONNECTION;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_CONNECTION, (void *)pMe);
//Ranking_Messagebox(FCOLOR, BCOLOR, "Socket", (void *)pMe);
Ranking_Free((void*)pMe);
return;
}
else
{
// Error Check Code
//if (pMe->m_pISock)
// Ranking_Messagebox(FCOLOR, BCOLOR, "pMe->m_pISock", (void *)pMe);
pMe->m_pISock = pISock;
}
if(ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_BILLCOM, (void**)(&pIEBKTFCom))!=SUCCESS)
{
pMe->RankStatus = RANKSTATUS_ERROR_BILLCOM;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_BILLCOM, (void *)pMe);
Ranking_Free((void*)pMe);
return;
}
else
{
// Error Check Code
//if (pMe->m_pIEBKTFCom)
// Ranking_Messagebox(FCOLOR, BCOLOR, "pMe->m_pIEBKTFCom", (void *)pMe);
pMe->m_pIEBKTFCom = pIEBKTFCom;
IEB_KTF_COM_SetNetMgr(pMe->m_pIEBKTFCom, pMe->m_pINet, pMe->m_pISock);
nReturn = IEB_KTF_COM_Connect(pMe->m_pIEBKTFCom, Ranking_ConnectCB, (void *)pMe, bFlag); // True : Test, False : False
if(nReturn == AEE_NET_ERROR)
{
pMe->RankStatus = RANKSTATUS_ERROR_NETWORK;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_NETWORK, (void *)pMe);
//Ranking_Messagebox(FCOLOR, BCOLOR, "Billcom", (void *)pMe);
Ranking_Free((void*)pMe);
}
}
}
void Ranking_ConnectCB(void *cxt, int err)
{
mousept *pMe = (mousept*)cxt;
if(err)
{
pMe->RankStatus = RANKSTATUS_ERROR_CONNECTION;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_CONNECTION, (void *)pMe);
Ranking_Free((void *)pMe);
return;
}
ISOCKET_Writeable(pMe->m_pISock, Ranking_WriteCB, (void *)pMe);
}
void Ranking_WriteCB(void *cxt)
{
mousept *pMe = (mousept *)cxt;
INAddr nodeINAddr = xConvertToINAddr(SERVER_HOST);
int nReturn;
if(pMe->RankStatus == RANKSTATUS_READING || pMe->RankStatus == RANKSTATUS_WRITING)
return;
else
pMe->RankStatus = RANKSTATUS_WRITING;
nReturn = IEB_KTF_COM_Write(pMe->m_pIEBKTFCom, (byte *)pMe->m_szData, (uint16)75, nodeINAddr, SERVER_PORT);
if(nReturn == AEE_NET_ERROR || nReturn == AEE_NET_WOULDBLOCK)
{
// Write Error
pMe->RankStatus = RANKSTATUS_ERROR_NETWORK;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_NETWORK, (void*)pMe);
Ranking_Free((void *)pMe);
return;
}
else if(nReturn < (signed)STRLEN(pMe->m_szData))
{
ISOCKET_Writeable(pMe->m_pISock, Ranking_WriteCB , (void *)pMe);
}
}
void Ranking_MacsReadable(void *cxt)
{
mousept *pMe = (mousept*)cxt;
int i;
int nReturn = 0;
char c;
// emergency notify valuable
char achSignature2[5];
byte bachSignature2[5];
for(i = 0;i < 5;i++){
achSignature2[i] = NULL;
bachSignature2[i] = NULL;
}
c = pMe->m_szData[0]; // Saving mode : 'R' for Register, 'S' for Show
if(pMe->nReceived == 0)
MEMSET(pMe->m_szData, 0x00, sizeof(pMe->m_szData));
nReturn = ISOCKET_Read(pMe->m_pISock, (byte *)pMe->m_szData, (uint16)(48 - pMe->nReceived));
// exception handling
if(nReturn == AEE_NET_WOULDBLOCK)
{
pMe->m_szData[0] = c;
ISOCKET_Cancel(pMe->m_pISock, NULL, (void *)pMe);
ISOCKET_Readable(pMe->m_pISock, Ranking_MacsReadable, (void *)pMe);
}
else if(nReturn == AEE_NET_ERROR || (nReturn <= 0 && pMe->nReceived == 0)) // Network Error
{
pMe->m_szData[0] = c;
pMe->RankStatus = RANKSTATUS_ERROR_NETWORK;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_NETWORK, (void *)pMe);
Ranking_Free((void *)pMe);
return;
}
else if(nReturn > 0)
{
pMe->nReceived += nReturn;
if(pMe->nReceived < 48)
{
pMe->m_szData[0] = c;
ISOCKET_Readable(pMe->m_pISock, Ranking_MacsReadable, (void *)pMe);
return;
}
pMe->nReceived = 0;
MEMCPY(bachSignature2, &pMe->m_szData[44], 4);
SPRINTF(achSignature2, "%s", bachSignature2);
if (STRCMP(achSignature2, "BCEN") == 0)
{ // Emergency : BCEN
Ranking_Emergency((void *)pMe);
return;
}
else
{
pMe->m_szData[0] = c;
ISOCKET_Readable(pMe->m_pISock, Ranking_ReadCB, (void *)pMe);
}
}
}
void Ranking_ReadCB(void *cxt)
{
mousept *pMe = (mousept *)cxt;
int nRcv, nTemp;
char szBuf[256], szBuf2[14];
char c;
if(pMe->RankStatus == RANKSTATUS_READING || pMe->RankStatus == RANKSTATUS_WRITING)
return;
else
pMe->RankStatus = RANKSTATUS_READING;
c = pMe->m_szData[0]; // Saving mode : 'R' for Register, 'S' for Show, 'M' for ShowSelf
nRcv = ISOCKET_Read(pMe->m_pISock, (byte *)szBuf, sizeof(szBuf) - pMe->nReceived);
if (nRcv == AEE_NET_WOULDBLOCK)
{
pMe->m_szData[0] = c;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_WAIT, (void*)pMe);
ISOCKET_Readable(pMe->m_pISock, Ranking_ReadCB, (void*)pMe);
return;
}
else if (nRcv == AEE_NET_ERROR || (nRcv <= 0 && pMe->nReceived == 0))
{
pMe->m_szData[0] = c;
pMe->RankStatus = RANKSTATUS_ERROR_NETWORK;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_NETWORK, (void*)pMe);
Ranking_Free((void*)pMe);
return;
}
else if (nRcv > 0) // data has been read
{
pMe->nReceived += nRcv;
if(pMe->nReceived < 2)
{
pMe->m_szData[0] = c;
ISOCKET_Readable(pMe->m_pISock, Ranking_ReadCB, (void *)pMe);
return;
}
if(pMe->nReceived > 2)
{ // Success
pMe->RankStatus = RANKSTATUS_READ_SUCCESS;
Ranking_Free((void *)pMe);
//ISHELL_SetTimer(pMe->a.m_pIShell,100,(PFNNOTIFY)TimerCB,(void *)pMe);
switch(szBuf[0])
{
case 'R':
// use nRcv for looping
szBuf2[6] = '\0';
for(nRcv = 0; nRcv < 6; nRcv++)
{
szBuf2[nRcv] = szBuf[1 + nRcv];
}
pMe->nRank1 = ATOI(szBuf2);
for(nRcv = 0; nRcv < 6; nRcv++)
{
szBuf2[nRcv] = szBuf[7 + nRcv];
}
pMe->nRank2 = ATOI(szBuf2);
for(nRcv = 0; nRcv < 6; nRcv++)
{
szBuf2[nRcv] = szBuf[13 + nRcv];
}
pMe->nRank3 = ATOI(szBuf2);
for(nRcv = 0; nRcv < 6; nRcv++)
{
szBuf2[nRcv] = szBuf[19 + nRcv];
}
pMe->nRank4 = ATOI(szBuf2);
for(nRcv = 0; nRcv < 6; nRcv++)
{
szBuf2[nRcv] = szBuf[25 + nRcv];
}
pMe->nRank5 = ATOI(szBuf2);
// Show Rank
pMe->nRank = pMe->nRank1;
//pMe->state = score_state;
//ISHELL_SetTimer(pMe->a.m_pIShell,100,(PFNNOTIFY)TimerCB,(void *)pMe);
Ranking_Show(1, pMe->nRank1, (void *)pMe);
break;
case 'S':
STRCPY(pMe->m_szData, szBuf);
Ranking_Score((void*)pMe);
break;
case 'M':
// use nRcv for looping
for(nRcv = 0; nRcv < 6; nRcv++)
{
szBuf2[nRcv] = szBuf[2 + nRcv];
}
szBuf2[6] = '\0';
switch(szBuf[1])
{
case '1':
pMe->nRank1 = ATOI(szBuf2);
break;
case '2':
pMe->nRank2 = ATOI(szBuf2);
break;
case '3':
pMe->nRank3 = ATOI(szBuf2);
break;
case '4':
pMe->nRank4 = ATOI(szBuf2);
break;
case '5':
pMe->nRank5 = ATOI(szBuf2);
break;
}
for(nRcv = 0; nRcv < 12; nRcv++)
{
szBuf2[nRcv] = szBuf[8 + nRcv];
}
szBuf2[12] = '\0';
nTemp = ATOI(szBuf2);
for(nRcv = 0; nRcv < 12; nRcv++)
{
szBuf2[nRcv] = szBuf[20 + nRcv];
}
szBuf2[12] = '\0';
Ranking_ScoreSelf(1, nTemp, ATOI(szBuf2), (void *)pMe);
break;
default:
pMe->RankStatus = RANKSTATUS_ERROR_NETWORK;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_NETWORK, (void*)pMe);
}
}
else
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -