?? znscore.c
字號(hào):
if(pZnScore->m_pBuf)
{
FREE(pZnScore->m_pBuf);
pZnScore->m_pBuf = NULL;
}
pZnScore->m_pBuf = MALLOC(pZnScore->m_NetData.dwBufLen);
ZnNet_NetRead(&pZnScore->m_ZnNet, pZnScore->m_pBuf, (uint16)pZnScore->m_NetData.dwBufLen, (PFNNOTIFY)ZnScore_OnRead3, pZnScore);
}
void ZnScore_OnRead3(PZNSCORE pZnScore)
{
if(pZnScore->m_ZnNet.m_LastResult != ERR_SUCCESS)
{
pZnScore->m_ErrorType = ET_NETERROR;
ZnScore_ChangeGui(pZnScore, GS_ERROR);
return;
}
ZnNet_ReleaseNet(&pZnScore->m_ZnNet);
// Build HTML
ZnScore_BuildHTML(pZnScore);
FREE(pZnScore->m_pBuf);
pZnScore->m_pBuf = NULL;
}
boolean ZnScore_InitIfQuery(PZNSCORE pZnScore)
{
if(pZnScore->m_bUploaded)
{
// Uploaded
if(pZnScore->m_bUpdated)
{
// Updated
AECHAR aszTemp[] = { // 分?jǐn)?shù)已成功上傳!是否查看高分榜?
0x5206, 0x6570, 0x5DF2, 0x6210, 0x529F, 0x4E0A, 0x4F20, 0xFF01, 0x662F, 0x5426, 0x67E5, 0x770B, 0x9AD8, 0x5206, 0x699C, 0xFF1F, 0, 0};
if(!ZnScore_ShowQuestion(pZnScore, aszTemp))
return FALSE;
}
else
{
// Not Updated
AECHAR aszTemp[] = { // 分?jǐn)?shù)沒(méi)有服務(wù)器端原分?jǐn)?shù)高,未更新。是否查看高分榜?
0x5206, 0x6570, 0x6CA1, 0x6709, 0x670D, 0x52A1, 0x5668, 0x7AEF, 0x539F, 0x5206, 0x6570, 0x9AD8, 0xFF0C, 0x672A, 0x66F4, 0x65B0, 0x3002, 0x662F, 0x5426, 0x67E5, 0x770B, 0x9AD8, 0x5206, 0x699C, 0xFF1F, 0, 0};
if(!ZnScore_ShowQuestion(pZnScore, aszTemp))
return FALSE;
}
}
else
{
pZnScore->m_ErrorType = ET_NETERROR;
ZnScore_ChangeGui(pZnScore, GS_ERROR);
}
return TRUE;
}
void ZnScore_ReleaseIfQuery(PZNSCORE pZnScore)
{
ZnScore_ReleaseQuestion(pZnScore);
}
boolean ZnScore_HandleEventIfQuery(PZNSCORE pZnScore, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
if(pZnScore->m_pMenu && pZnScore->m_pStatic)
{
if(IMENUCTL_HandleEvent(pZnScore->m_pMenu, eCode, wParam, dwParam))
return TRUE;
if(ISTATIC_HandleEvent(pZnScore->m_pStatic, eCode, wParam, dwParam))
return TRUE;
}
switch(eCode)
{
case EVT_KEY:
if(wParam == AVK_CLR)
{
ZnScore_Exit(pZnScore);
return TRUE;
}
break;
case EVT_COMMAND:
switch(wParam)
{
case _MENU_ITEM_BASE_: // OK
MEMSET(&pZnScore->m_NetData, 0, sizeof(NETDATA));
pZnScore->m_NetData.dwGameID = pZnScore->m_dwGameID;
pZnScore->m_NetData.dwNetDataType = NDT_QUERYPLACE;
pZnScore->m_NetData.dwUpperPhoneNum = (DWORD)FDIV(pZnScore->m_dbPhoneNum, 1000000);
pZnScore->m_NetData.dwLowerPhoneNum = (DWORD)FSUB(pZnScore->m_dbPhoneNum, FMUL(pZnScore->m_NetData.dwUpperPhoneNum, 1000000));
ZnNet_ReleaseNet(&pZnScore->m_ZnNet);
ZnNet_InitNet(&pZnScore->m_ZnNet, pZnScore->m_App);
IMENUCTL_SetActive(pZnScore->m_pMenu, FALSE);
ISTATIC_SetActive(pZnScore->m_pStatic, FALSE);
ZnNet_Connect(&pZnScore->m_ZnNet, _SCORE_SVR_ADDR_, _SCORE_SVR_PORT_, (PFNNOTIFY)ZnScore_OnConnect2, pZnScore);
ZnScore_ChangeGui(pZnScore, GS_QUERY);
return TRUE;
case _MENU_ITEM_BASE_ + 1: // Cancel
// pZnScore->m_pFnExit(pZnScore->m_pData);
ZnScore_Exit(pZnScore);
return TRUE;
}
break;
case EVT_APP_SUSPEND:
ZnNet_ReleaseNet(&pZnScore->m_ZnNet);
return TRUE;
case EVT_APP_RESUME:
IMENUCTL_Redraw(pZnScore->m_pMenu);
ISTATIC_Redraw(pZnScore->m_pStatic);
return TRUE;
}
return FALSE;
}
void ZnScore_BuildHTML(PZNSCORE pZnScore)
{
int i, nCount = pZnScore->m_NetData.dwBufLen / (sizeof(DWORD) * 3);
PDWORD pdwData = (PDWORD)pZnScore->m_pBuf;
DWORD dwScore, dwHigh, dwLow;
byte * pBuf;
// Allocated outside the normal initialization
// Check if released when exit
if(pZnScore->m_pHTMLBuffer)
{
FREE(pZnScore->m_pHTMLBuffer);
pZnScore->m_pHTMLBuffer = NULL;
}
pZnScore->m_pHTMLBuffer = MALLOC(2048);
if(pZnScore->m_pHTMLBuffer)
{
pBuf = pZnScore->m_pHTMLBuffer;
}
else
{
ZnScore_Exit(pZnScore);
return;
}
if(pZnScore->m_NetData.dwUpperPhoneNum || pZnScore->m_NetData.dwLowerPhoneNum)
{
AECHAR aszTemp[64], aszFormat[] = { // 你上次輸入的手機(jī)號(hào)碼為:<br>%d%06d<br>
0x4F60, 0x4E0A, 0x6B21, 0x8F93, 0x5165, 0x7684, 0x624B, 0x673A, 0x53F7, 0x7801, 0x4E3A, 0xFF1A, 0x003C, 0x0062, 0x0072, 0x003E, 0x0025, 0x0064, 0x0025, 0x0030, 0x0036, 0x0064, 0x003C, 0x0062, 0x0072, 0x003E, 0x000D, 0x000A, 0, 0};
WSPRINTF(aszTemp, sizeof(aszTemp), aszFormat, pZnScore->m_NetData.dwUpperPhoneNum, pZnScore->m_NetData.dwLowerPhoneNum);
WSTRTOUTF8(aszTemp, WSTRLEN(aszTemp), pBuf, 2048 - (pBuf - pZnScore->m_pHTMLBuffer));
while(* pBuf != 0)
pBuf ++;
if(pZnScore->m_NetData.dwExData[0] == 0xFFFFFFFF)
{
AECHAR aszTemp[] = { // 沒(méi)有進(jìn)入高分榜。
0x6CA1, 0x6709, 0x8FDB, 0x5165, 0x9AD8, 0x5206, 0x699C, 0x3002, 0x000D, 0x000A, 0, 0};
WSTRTOUTF8(aszTemp, WSTRLEN(aszTemp), pBuf, 2048 - (pBuf - pZnScore->m_pHTMLBuffer));
while(* pBuf != 0)
pBuf ++;
}
else
{
AECHAR aszTemp[64], aszFormat[] = { // 在高分榜上排名第%d。
0x5728, 0x9AD8, 0x5206, 0x699C, 0x4E0A, 0x6392, 0x540D, 0x7B2C, 0x0025, 0x0064, 0x3002, 0, 0};
WSPRINTF(aszTemp, sizeof(aszTemp), aszFormat, pZnScore->m_NetData.dwExData[0] + 1);
WSTRTOUTF8(aszTemp, WSTRLEN(aszTemp), pBuf, 2048 - (pBuf - pZnScore->m_pHTMLBuffer));
while(* pBuf != 0)
pBuf ++;
}
}
else
{
AECHAR aszTemp[] = { // 本機(jī)沒(méi)有號(hào)碼記錄。
0x672C, 0x673A, 0x6CA1, 0x6709, 0x53F7, 0x7801, 0x8BB0, 0x5F55, 0x3002, 0, 0};
WSTRTOUTF8(aszTemp, WSTRLEN(aszTemp), pBuf, 2048 - (pBuf - pZnScore->m_pHTMLBuffer));
while(* pBuf != 0)
pBuf ++;
}
{
AECHAR aszTemp[] = { // <p align="center">高分榜</p>
0x003C, 0x0070, 0x0020, 0x0061, 0x006C, 0x0069, 0x0067, 0x006E, 0x003D, 0x0022, 0x0063, 0x0065, 0x006E, 0x0074, 0x0065, 0x0072, 0x0022, 0x003E, 0x9AD8, 0x5206, 0x699C, 0x003C, 0x002F, 0x0070, 0x003E, 0, 0};
WSTRTOUTF8(aszTemp, WSTRLEN(aszTemp), pBuf, 2048 - (pBuf - pZnScore->m_pHTMLBuffer));
while(* pBuf != 0)
pBuf ++;
}
for(i = 0; i < nCount; i ++)
{
AECHAR aszFormat[] = { // <font color="#FF0000">第%d名 分?jǐn)?shù) %d</font><br><font color="#00FF00">號(hào)碼 %d%06d</font><br>
0x003C, 0x0066, 0x006F, 0x006E, 0x0074, 0x0020, 0x0063, 0x006F, 0x006C, 0x006F, 0x0072, 0x003D, 0x0072, 0x0065, 0x0064, 0x003E, 0x7B2C, 0x0025, 0x0064, 0x540D, 0x0020, 0x5206, 0x6570, 0x0020, 0x0025, 0x0064, 0x003C, 0x002F, 0x0066, 0x006F, 0x006E, 0x0074, 0x003E, 0x003C, 0x0062, 0x0072, 0x003E,
0x003C, 0x0066, 0x006F, 0x006E, 0x0074, 0x0020, 0x0063, 0x006F, 0x006C, 0x006F, 0x0072, 0x003D, 0x0067, 0x0072, 0x0065, 0x0065, 0x006E, 0x003E, 0x53F7, 0x7801, 0x0020, 0x0025, 0x0064, 0x0025, 0x0030, 0x0036, 0x0064, 0x003C, 0x002F, 0x0066, 0x006F, 0x006E, 0x0074, 0x003E, 0x003C, 0x0062, 0x0072, 0x003E, 0, 0};
AECHAR aszTemp[256], * paszTemp;
dwScore = pdwData[0];
dwLow = pdwData[1];
dwHigh = pdwData[2];
pdwData += 3;
WSPRINTF(aszTemp, sizeof(aszTemp), aszFormat, i + 1, dwScore, dwHigh, dwLow);
paszTemp = aszTemp + WSTRLEN(aszTemp);
paszTemp -= 19;
// 隱去4-7位
paszTemp[0] = '*';
paszTemp[1] = '*';
paszTemp[2] = '*';
paszTemp[3] = '*';
WSTRTOUTF8(aszTemp, WSTRLEN(aszTemp), pBuf, 2048 - (pBuf - pZnScore->m_pHTMLBuffer));
while(* pBuf != 0)
pBuf ++;
if(pBuf > pZnScore->m_pHTMLBuffer + 2048)
break;
}
ZnScore_ChangeGui(pZnScore, GS_QUERYRESULT);
}
boolean ZnScore_InitQueryResult(PZNSCORE pZnScore)
{
AEERect Rect;
SETAEERECT(&Rect, 0, 0, pZnScore->m_unScrWidth, pZnScore->m_unScrHeight);
if(SUCCESS != ISHELL_CreateInstance(pZnScore->m_App.m_pIShell, AEECLSID_HTML, (void **)&pZnScore->m_pViewer))
return FALSE;
IHTMLVIEWER_SetProperties(pZnScore->m_pViewer, HVP_SCROLLBAR);
IHTMLVIEWER_ParseBuffer(pZnScore->m_pViewer, (char *)pZnScore->m_pHTMLBuffer);
IHTMLVIEWER_SetRect(pZnScore->m_pViewer, &Rect);
IHTMLVIEWER_SetActive(pZnScore->m_pViewer, TRUE);
IHTMLVIEWER_Redraw(pZnScore->m_pViewer);
return TRUE;
}
boolean ZnScore_HandleEventQueryResult(PZNSCORE pZnScore, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
if(pZnScore->m_pViewer)
{
if(IHTMLVIEWER_HandleEvent(pZnScore->m_pViewer, eCode, wParam, dwParam))
return TRUE;
}
switch(eCode)
{
case EVT_KEY:
switch(wParam)
{
case AVK_CLR:
ZnScore_Exit(pZnScore);
return TRUE;
}
break;
case EVT_APP_SUSPEND:
return TRUE;
case EVT_APP_RESUME:
IHTMLVIEWER_Redraw(pZnScore->m_pViewer);
return TRUE;
}
return FALSE;
}
void ZnScore_ReleaseQueryResult(PZNSCORE pZnScore)
{
if(pZnScore->m_pViewer)
{
IHTMLVIEWER_Release(pZnScore->m_pViewer);
pZnScore->m_pViewer = NULL;
}
if(pZnScore->m_pHTMLBuffer)
{
FREE(pZnScore->m_pHTMLBuffer);
pZnScore->m_pHTMLBuffer = NULL;
}
}
void ZnScore_QueryList(PZNSCORE pZnScore, PFNNOTIFY pFnExit, void * pData)
{
IFileMgr * pFileMgr;
IFile * pFile;
if(!pZnScore)
return;
pZnScore->m_pFnExit = pFnExit;
pZnScore->m_pData = pData;
pZnScore->m_GuiState = GS_NONE;
MEMSET(&pZnScore->m_NetData, 0, sizeof(NETDATA));
if(SUCCESS == ISHELL_CreateInstance(pZnScore->m_App.m_pIShell, AEECLSID_FILEMGR, (void **)&pFileMgr))
{
pFile = IFILEMGR_OpenFile(pFileMgr, _CONFIG_FILE_, _OFM_READ);
if(pFile)
{
IFILE_Read(pFile, &pZnScore->m_NetData.dwLowerPhoneNum, sizeof(DWORD));
IFILE_Read(pFile, &pZnScore->m_NetData.dwUpperPhoneNum, sizeof(DWORD));
IFILE_Release(pFile);
}
IFILEMGR_Release(pFileMgr);
}
pZnScore->m_NetData.dwGameID = pZnScore->m_dwGameID;
pZnScore->m_NetData.dwNetDataType = NDT_QUERYPLACE;
ZnNet_ReleaseNet(&pZnScore->m_ZnNet);
ZnNet_InitNet(&pZnScore->m_ZnNet, pZnScore->m_App);
ZnNet_Connect(&pZnScore->m_ZnNet, _SCORE_SVR_ADDR_, _SCORE_SVR_PORT_, (PFNNOTIFY)ZnScore_OnConnect2, pZnScore);
ZnScore_ChangeGui(pZnScore, GS_QUERY);
}
boolean ZnScore_InitQuery(PZNSCORE pZnScore)
{
AECHAR aszWait[] = { // 請(qǐng)等待...
0x8BF7, 0x7B49, 0x5F85, 0x002E, 0x002E, 0x002E, 0, 0};
IDISPLAY_ClearScreen(pZnScore->m_App.m_pIDisplay);
IDISPLAY_DrawText(pZnScore->m_App.m_pIDisplay, AEE_FONT_NORMAL, aszWait, -1, 0, 0, NULL, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
IDISPLAY_Update(pZnScore->m_App.m_pIDisplay);
return TRUE;
}
boolean ZnScore_HandleEventQuery(PZNSCORE pZnScore, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch(eCode)
{
case EVT_KEY:
if(wParam == AVK_CLR)
{
ZnScore_ChangeGui(pZnScore, pZnScore->m_LastGuiState);
return TRUE;
}
break;
case EVT_APP_SUSPEND:
ZnNet_ReleaseNet(&pZnScore->m_ZnNet);
return TRUE;
case EVT_APP_RESUME:
ZnScore_ChangeGui(pZnScore, pZnScore->m_LastGuiState);
return TRUE;
}
return FALSE;
}
void ZnScore_ReleaseQuery(PZNSCORE pZnScore)
{
ZnNet_ReleaseNet(&pZnScore->m_ZnNet);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -