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

📄 3r_rank.c

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