⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3r_rank.c

📁 一个很不错的韩国游戏源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
			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 + -