📄 3r_rank.c
字号:
pMe->m_szData[0] = c;
// Errors
/*
switch(szBuf[0])
{
case 'D': // DB error
pMe->RankStatus = RANKSTATUS_ERROR_SERVER;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_SERVER, (void*)pMe);
break;
case 'R': // Retry
pMe->RankStatus = RANKSTATUS_ERROR_NETWORK;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_NETWORK, (void*)pMe);
break;
}
Ranking_Free((void*)pMe);
*/
// Retry routine
Ranking_Free((void *)pMe);
//pMe->RankStatus = score_state;
//ISHELL_SetTimer(pMe->a.m_pIShell,100,(PFNNOTIFY)TimerCB,(void *)pMe);
switch(pMe->m_szData[0])
{
case 'R': // Registering
sprintf(pMe->m_szData, "%012d", pMe->time_count);
Ranking_Register(pMe->m_szData, szBuf, NULL, NULL, NULL, (void *)pMe);
break;
case 'S': // Showing
if(pMe->RankStatus == RANKSTATUS_READ_SUCCESS && pMe->m_szData[0] == 'S')
{
pMe->RankStatus = RANKSTATUS_DISABLE;
//######################################################################################
//汲 疙 : //霸烙 犁矫累.
//#########################################################################################
//ISHELL_CancelTimer(pMe->a.m_pIShell,(PFNNOTIFY)TimerCB,(void *)pMe);
start_game(pMe);
//#########################################################################################
}
else
Ranking_Show(1, pMe->nRank, (void *)pMe);
break;
case 'M':
if(pMe->RankStatus == RANKSTATUS_READ_SUCCESS)
{
pMe->RankStatus = RANKSTATUS_DISABLE;
//######################################################################################
//汲 疙 : //霸烙 犁矫累.
//#########################################################################################
//ISHELL_CancelTimer(pMe->a.m_pIShell,(PFNNOTIFY)TimerCB,(void *)pMe);
start_game(pMe);
//#########################################################################################
}
else
Ranking_ShowSelf(1, (void *)pMe);
break;
default:
pMe->RankStatus = RANKSTATUS_ERROR_APPLICATION;
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_ERROR_APP, (void *)pMe);
}
}
pMe->nReceived = 0;
}
}
void Ranking_Score(void *cxt)
{
mousept *pMe = (mousept*)cxt;
AEERect Rect;
int i, j, nBoundX;
char szRank[40];
Ranking_Background(FCOLOR, BCOLOR, (void *)pMe);
// Rank1
for(i = 0; i < 40; i++)
szRank[i] = NULL;
for(i = 0, j = 1; pMe->m_szData[i + j] != '|'; i++)
{
szRank[i] = pMe->m_szData[i + j];
}
//szRank[i] = '\0';
nBoundX = (pMe->nCenterX * 2 - 6 * STRLEN(szRank)) / 2;
if(pMe->m_szData[i + j + 1] == '1')
{
SETAEERECT(&Rect, 5, pMe->nCenterY - 31, pMe->nCenterX * 2 - 10, 16);
IDISPLAY_DrawRect(pMe->a.m_pIDisplay, &Rect, 0, 0, IDF_RECT_INVERT);
}
j += (i + 2);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR*)szRank, -1, nBoundX, pMe->nCenterY - 30, 0, IDF_TEXT_TRANSPARENT);
// Rank2
for(i = 0; i < 40; i++)
szRank[i] = NULL;
for(i = 0; pMe->m_szData[i + j] != '|'; i++)
{
szRank[i] = pMe->m_szData[i + j];
}
//szRank[i] = '\0';
if(nBoundX == pMe->nCenterX)
nBoundX = pMe->nCenterX - 3 * STRLEN(szRank);
if(pMe->m_szData[i + j + 1] == '1')
{
SETAEERECT(&Rect, 5, pMe->nCenterY - 16, pMe->nCenterX * 2 - 10, 16);
IDISPLAY_DrawRect(pMe->a.m_pIDisplay, &Rect, 0, 0, IDF_RECT_INVERT);
}
j += (i + 2);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR*)szRank, -1, nBoundX, pMe->nCenterY - 15, 0, IDF_TEXT_TRANSPARENT);
// Rank3
for(i = 0; i < 40; i++)
szRank[i] = NULL;
for(i = 0; pMe->m_szData[i + j] != '|'; i++)
{
szRank[i] = pMe->m_szData[i + j];
}
//szRank[i] = '\0';
if(nBoundX == pMe->nCenterX)
nBoundX = pMe->nCenterX - 3 * STRLEN(szRank);
if(pMe->m_szData[i + j + 1] == '1')
{
SETAEERECT(&Rect, 5, pMe->nCenterY - 1, pMe->nCenterX * 2 - 10, 16);
IDISPLAY_DrawRect(pMe->a.m_pIDisplay, &Rect, 0, 0, IDF_RECT_INVERT);
}
j += (i + 2);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR*)szRank, -1, nBoundX, pMe->nCenterY, 0, IDF_TEXT_TRANSPARENT);
// Rank4
for(i = 0; i < 40; i++)
szRank[i] = NULL;
if(pMe->nRank == 0)
{
pMe->nRank = szRank[0] - '0';
for(i = 1; szRank[i] != ' '; i++)
{
pMe->nRank *= 10;
pMe->nRank += szRank[i] - '0';
}
}
for(i = 0; pMe->m_szData[i + j] != '|'; i++)
{
szRank[i] = pMe->m_szData[i + j];
}
//szRank[i] = '\0';
if(pMe->m_szData[i + j + 1] == '1')
{
SETAEERECT(&Rect, 5, pMe->nCenterY + 14, pMe->nCenterX * 2 - 10, 16);
IDISPLAY_DrawRect(pMe->a.m_pIDisplay, &Rect, 0, 0, IDF_RECT_INVERT);
}
j += (i + 2);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR*)szRank, -1, nBoundX, pMe->nCenterY + 15, 0, IDF_TEXT_TRANSPARENT);
// Rank5
for(i = 0; i < 40; i++)
szRank[i] = NULL;
for(i = 0; pMe->m_szData[i + j] != '|'; i++)
{
szRank[i] = pMe->m_szData[i + j];
}
//szRank[i] = '\0';
if(pMe->m_szData[i + j + 1] == '1')
{
SETAEERECT(&Rect, 5, pMe->nCenterY + 29, pMe->nCenterX * 2 - 10, 16);
IDISPLAY_DrawRect(pMe->a.m_pIDisplay, &Rect, 0, 0, IDF_RECT_INVERT);
}
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR*)szRank, -1, nBoundX, pMe->nCenterY + 30, 0, IDF_TEXT_TRANSPARENT);
for(i = 0; i < 40; i++)
szRank[i] = NULL;
sprintf(szRank, "%s[5]%s[2]%s[8]", RANK_TOP_BUTTON, RANK_UP_BUTTON, RANK_DOWN_BUTTON);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR*)szRank, -1, (pMe->nCenterX * 2 - 6 * STRLEN(szRank))/2, 0, 0, IDF_TEXT_TRANSPARENT);
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
void Ranking_ScoreSelf(int nOrderWay, int nScore, int nMScore, void *cxt)
{
mousept *pMe = (mousept*)cxt;
char szBuf[64];
AECHAR szTemp[64];
int nSubCnt;
AEERect Rect;
for(nSubCnt = 0; nSubCnt < 64; nSubCnt++)
szBuf[nSubCnt] = '\0';
Ranking_Free((void *)pMe);
Ranking_Background(FCOLOR, BCOLOR, (void *)pMe);
sprintf(szBuf, " 弥绊痢荐 : %d ", nMScore);
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY - 11, 0, IDF_TEXT_TRANSPARENT);
for(nSubCnt = 0; nSubCnt < 64; nSubCnt++)
szTemp[nSubCnt] = NULL;
sprintf(szBuf, RANK_MY_RECORD);
WSTRCPY(szTemp, (AECHAR*)szBuf);
//IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY - 16, 0, IDF_TEXT_TRANSPARENT);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY + 8, 0, IDF_TEXT_TRANSPARENT);//print
for(nSubCnt = 0; nSubCnt < 64; nSubCnt++)
szTemp[nSubCnt] = NULL;
switch(nOrderWay)
{
case 1:
if(pMe->nRank1 == 0)
sprintf(szBuf, RANK_NO_RECORD);
else
sprintf(szBuf, " %d殿(%d%s) ", pMe->nRank1, nScore, RANK_UNIT);
WSTRCPY(szTemp, (AECHAR*)szBuf);
//IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY + 2, 0, IDF_TEXT_TRANSPARENT);//print
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY + 24, 0, IDF_TEXT_TRANSPARENT);//print
break;
case 2:
if(pMe->nRank2 == 0)
sprintf(szBuf, RANK_NO_RECORD);
else
sprintf(szBuf, " %d殿(%d%s) ", pMe->nRank2, nScore, RANK_UNIT);
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY + 24, 0, IDF_TEXT_TRANSPARENT);//print
break;
case 3:
if(pMe->nRank3 == 0)
sprintf(szBuf, RANK_NO_RECORD);
else
sprintf(szBuf, " %d殿(%d%s) ", pMe->nRank3, nScore, RANK_UNIT);
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY + 24, 0, IDF_TEXT_TRANSPARENT);//print
break;
case 4:
if(pMe->nRank4 == 0)
sprintf(szBuf, RANK_NO_RECORD);
else
sprintf(szBuf, " %d殿(%d%s) ", pMe->nRank4, nScore, RANK_UNIT);
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY + 24, 0, IDF_TEXT_TRANSPARENT);//print
break;
case 5:
if(pMe->nRank5 == 0)
sprintf(szBuf, RANK_NO_RECORD);
else
sprintf(szBuf, " %d殿(%d%s) ", pMe->nRank5, nScore, RANK_UNIT);
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY + 24, 0, IDF_TEXT_TRANSPARENT);//print
break;
}
SETAEERECT(&Rect, 5, pMe->nCenterY + 4, pMe->nCenterX * 2 - 10, 1);
IDISPLAY_DrawRect(pMe->a.m_pIDisplay, &Rect, 0, 0, IDF_RECT_INVERT);
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
void Ranking_Emergency(void *cxt)
{
mousept *pMe = (mousept*)cxt;
int i, j, nCount;
int nReturn;
char szTemp[256];
Ranking_Background(FCOLOR, BCOLOR, pMe);
if(pMe->nReceived == 0)
MEMSET(pMe->m_szData, 0x00, sizeof(pMe->m_szData));
pMe->RankStatus = RANKSTATUS_READING;
nReturn = ISOCKET_Read(pMe->m_pISock, (byte *)pMe->m_szData, (uint16)(256 - pMe->nReceived));
if(nReturn==AEE_NET_WOULDBLOCK)
{
Ranking_Messagebox(FCOLOR, BCOLOR, RANK_WAIT, (void *)pMe);
ISOCKET_Readable(pMe->m_pISock, Ranking_ReadCB, (void *)pMe);
}
else if(nReturn==AEE_NET_ERROR || (nReturn <= 0 && pMe->nReceived == 0))
{
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 < 256)
{
ISOCKET_Readable(pMe->m_pISock, Ranking_Emergency, (void *)pMe);
return;
}
// Notice writing
Ranking_Background(FCOLOR, BCOLOR, (void *)pMe);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR *)"- Notice -", -1, pMe->nCenterX, 5, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
for(i = 0, nCount = 0; i < nReturn / 20; i++)
{
for(j = 0; j < 19; j++)
{
szTemp[j] = pMe->m_szData[nCount++];
}
if(pMe->m_szData[nCount] != 0x80)
szTemp[j++] = pMe->m_szData[nCount++];
szTemp[j] = '\0';
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, (AECHAR *)szTemp, -1, pMe->nCenterX, i * 10 + 20, 0,IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
}
IDISPLAY_Update(pMe->a.m_pIDisplay);
Ranking_Free((void *)pMe);
}
pMe->RankStatus = RANKSTATUS_READ_SUCCESS;
}
void Ranking_Free(void* cxt)
{
mousept *pMe = (mousept*)cxt;
pMe->score_tag = 0;
ISHELL_CancelTimer(pMe->a.m_pIShell, (PFNNOTIFY)(Ranking_NetChkDelay), pMe);
if(pMe->m_pIEBKTFCom )
{
IEB_KTF_COM_Release(pMe->m_pIEBKTFCom);
pMe->m_pIEBKTFCom = 0;
}
if (pMe->m_pISock)
{
#ifdef _SETLINGER0_
INETMGR_SetLinger(pMe->m_pINet, 0);
#else
INETMGR_SetLinger(pMe->m_pINet, 1);
#endif
ISOCKET_Cancel(pMe->m_pISock, NULL , pMe);
ISOCKET_Release(pMe->m_pISock);
pMe->m_pISock = 0;
}
if (pMe->m_pINet)
{
INETMGR_Release(pMe->m_pINet);
pMe->m_pINet = 0;
}
}
INAddr xConvertToINAddr(char *psz)
{
INAddr ul = 0;
int nByte = 0;
char c;
if(!psz)
return 0;
while (ISDIGIT(*psz)) {
int n = 0;
while ( ISDIGIT(c=*psz)) {
n = n*10 + (c - '0');
++psz;
}
((char*)&ul)[nByte++] = n;
if (nByte == 4 || *psz != '.')
break;
++psz;
}
if (nByte < 4 || ISALNUM(*psz))
ul = DOTADDR_NONE;
return ul;
}
void Ranking_Messagebox(RGBVAL FColor, RGBVAL BColor, char *szMsg, void *cxt)
{
mousept *pMe = (mousept*)cxt;
AECHAR szBuf[64];
WSTRCPY(szBuf, (AECHAR*)szMsg);
Ranking_Background(FColor, BColor, pMe);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, pMe->nCenterX, pMe->nCenterY - 6, 0, IDF_ALIGN_CENTER|IDF_TEXT_TRANSPARENT);//print
IDISPLAY_Update (pMe->a.m_pIDisplay);
}
void Ranking_Button(RGBVAL BColor, char cRetry, char cCancel, void *cxt)
{
mousept *pMe = (mousept*)cxt;
char szBuf[64];
AECHAR szTemp[64];
int i;
for(i = 0; i < 64; i++)
szBuf[i] = '\0';
switch(pMe->RankStatus)
{
case RANKSTATUS_READ_SUCCESS:
if(pMe->m_szData[0] != 'R')
{
if(pMe->m_szData[0] == 'S')
sprintf(szBuf, "[%c]%s %s[%c]", cRetry, RANK_YES_BUTTON, RANK_RESTART_BUTTON, cCancel);
else
sprintf(szBuf, "[%c]%s %s[%c]", cRetry, RANK_EXIT_BUTTON, RANK_RESTART_BUTTON, cCancel);
}
break;
case RANKSTATUS_END_PROGRAM:
sprintf(szBuf, "[%c]%s %s[%c]", cRetry, RANK_NO_BUTTON, RANK_YES_BUTTON, cCancel);
break;
case RANKSTATUS_IDLE:
// QA if(pMe->m_szData[0] == 'S')
if(pMe->score_tag == 0)
{
sprintf(szBuf, "[%c]%s %s[%c]", cRetry, RANK_OK_BUTTON, RANK_CANCEL_BUTTON, cCancel);
}
else
szBuf[0] = '\0';
break;
case RANKSTATUS_NOTIFY:
sprintf(szBuf, "[%c]%s %s[%c]", cRetry, RANK_CANCEL_BUTTON, RANK_OK_BUTTON, cCancel);
break;
default:
if(pMe->m_szData[0] == 'M')
sprintf(szBuf, "[%c]%s %s[%c]", cRetry, RANK_RESTART_BUTTON, RANK_RETRY_BUTTON, cCancel);
else
sprintf(szBuf, "[%c]%s %s[%c]", cRetry, RANK_RETRY_BUTTON, RANK_CANCEL_BUTTON, cCancel);
}
WSTRCPY(szTemp, (AECHAR*)szBuf);
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_BOLD, szTemp, -1, pMe->nCenterX - 3 * STRLEN(szBuf), pMe->nCenterY * 2 - 14, 0, IDF_TEXT_TRANSPARENT);//print
}
void Ranking_Background(RGBVAL FColor, RGBVAL BColor, void *cxt)
{
/*
mousept *pMe = (mousept*)cxt;
AEERect Rect;
IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
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);
Ranking_Button(BUTTONCOLOR, '*', '#', (void *)pMe);
*/
mousept *pMe = (mousept*)cxt;
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);
Ranking_Button(BUTTONCOLOR, '*', '#', (void *)pMe);
}
/* Included in Helloworld.c
//珐欧焊扁 皋春俊辑 龋免
void draw_score (void *pMe)
{
mousept *pAppInfo = (mousept *)pMe;
uint32 iResult;
char szBuf[64];
AECHAR szTemp[64];
int nBound;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -