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

📄 menu.c

📁 brew中个人开发的一个两国军棋游戏
💻 C
📖 第 1 页 / 共 2 页
字号:
}

//////////////////////////////////////////////////////////////////////////
//显示输入用户名屏幕
//////////////////////////////////////////////////////////////////////////
void DisplayInputNameUI(CJunQi* pApp)
{
	//Add code to here...
//	IImage *pMenu;
//	AEEImageInfo rImageInfo;
	
	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
/*	
	pMenu = ISHELL_LoadResImage( pApp->a.m_pIShell, TWOFLAG_RES_FILE, IDB_HEAD );

	if( pMenu )
	{
		// 获取图像信息
		IIMAGE_GetInfo( pMenu, &rImageInfo );
		
		// 在屏幕中心显示图像
		IIMAGE_Draw( pMenu, ( pApp->cxScreen - rImageInfo.cx ) / 2 , ( pApp->cyScreen - rImageInfo.cy ) / 2 );
		
		IDISPLAY_Update( pApp->a.m_pIDisplay );

		IIMAGE_Release( pMenu );
	}
*/
}

//////////////////////////////////////////////////////////////////////////
//输入用户名事件
//////////////////////////////////////////////////////////////////////////
boolean InputNameEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam)
{
	//如果是选择键,则把文本控件中的内容
	if (wParam == AVK_SELECT) 
	{
		AECHAR temp[10];
		char temp_char[20];

		//把文本框中的文本复制temp数组中
		ITEXTCTL_GetText(pApp->pText, temp, 10*sizeof(AECHAR));
		
		WSTRTOSTR(temp,temp_char,sizeof(temp));
		STRCAT(pApp->m_PacketChar,temp_char);
		STRCAT(pApp->m_PacketChar,"#");

		FinishInputName(pApp);
		InitSelectHeadMenu(pApp);				
	}else if (ITEXTCTL_HandleEvent(pApp->pText,eCode,wParam,dwParam))//交给ITEXT控件的handleevent去做,如果做了处理,就返回true
			return TRUE;

	return FALSE;
}


/************************************************************************/
/************************************************************************/
/************************************************************************/
/************************************************************************/

//////////////////////////////////////////////////////////////////////////
//初始化选择头像菜单
//////////////////////////////////////////////////////////////////////////
void InitSelectHeadMenu(CJunQi* pApp)
{
	ClrMenuRowCount(pApp);
	DisplaySelectHeadMenu(pApp);
	DrawCursor(pApp,OFFSET_X_HEAD, OFFSET_Y_HEAD, OFFSET_WIDTH_HEAD, OFFSET_HEIGHT_HEAD,IDB_HEADCURSOR,pApp->nMenuRow,0);
	pApp->m_eAppState = APP_STATE_SELECTHEAD;
}

//////////////////////////////////////////////////////////////////////////
//显示选择头像屏幕
//////////////////////////////////////////////////////////////////////////
void DisplaySelectHeadMenu(CJunQi* pApp)
{
	//Add code to here...
	IImage *pMenu;
	AEEImageInfo rImageInfo;
	
	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
	
	pMenu = ISHELL_LoadResImage( pApp->a.m_pIShell, TWOFLAG_RES_FILE, IDB_HEAD );

	if( pMenu )
	{
		// 获取图像信息
		IIMAGE_GetInfo( pMenu, &rImageInfo );
		
		// 在屏幕中心显示图像
		IIMAGE_Draw( pMenu, ( pApp->cxScreen - rImageInfo.cx ) / 2 , ( pApp->cyScreen - rImageInfo.cy ) / 2 );
		
		IDISPLAY_Update( pApp->a.m_pIDisplay );

		IIMAGE_Release( pMenu );
	}
}

//////////////////////////////////////////////////////////////////////////
//选择头像事件
//////////////////////////////////////////////////////////////////////////
boolean MenuSelectHeadEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam)
{
	switch(wParam) 
	{
	case AVK_UP:
		pApp->nMenuRow--;
		if(pApp->nMenuRow < 0)
			pApp->nMenuRow = 1;
		DisplaySelectHeadMenu(pApp);
		DrawCursor(pApp, OFFSET_X_HEAD, OFFSET_Y_HEAD, OFFSET_WIDTH_HEAD, OFFSET_HEIGHT_HEAD, IDB_HEADCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;

	case AVK_DOWN:
		pApp->nMenuRow++;
		if(pApp->nMenuRow > 1)
			pApp->nMenuRow = 0;
		DisplaySelectHeadMenu(pApp);
		DrawCursor(pApp, OFFSET_X_HEAD, OFFSET_Y_HEAD, OFFSET_WIDTH_HEAD, OFFSET_HEIGHT_HEAD, IDB_HEADCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_LEFT:
		pApp->nMenuCol--;
		if(pApp->nMenuCol < 0)
			pApp->nMenuCol = 3;
		DisplaySelectHeadMenu(pApp);
		DrawCursor(pApp, OFFSET_X_HEAD, OFFSET_Y_HEAD, OFFSET_WIDTH_HEAD, OFFSET_HEIGHT_HEAD, IDB_HEADCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_RIGHT:
		pApp->nMenuCol++;
		if(pApp->nMenuCol > 3)
			pApp->nMenuCol = 0;
		DisplaySelectHeadMenu(pApp);
		DrawCursor(pApp, OFFSET_X_HEAD, OFFSET_Y_HEAD, OFFSET_WIDTH_HEAD, OFFSET_HEIGHT_HEAD, IDB_HEADCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;

	case AVK_CLR:
		InitLoginMenu(pApp);		//关闭程序
		break;
		
	case AVK_SELECT:
		{
			int num;
			char ch[4];
			num = pApp->nMenuRow*4+pApp->nMenuCol;
			SPRINTF(ch,"%i",num);
			STRCAT(ch,"#");
			STRCAT(pApp->m_PacketChar,ch);
			num=STRLEN(pApp->m_PacketChar);
			pApp->m_PacketChar[num++]='\n';
			if(!SendCommand(pApp,pApp->m_PacketChar))
				return FALSE;	
			if(ReceivedCommand(pApp,pApp->m_PacketChar,MAXLEN+1)==-1)
				return FALSE;
			InitMenuNetware(pApp);
			break;
		}
	}
	return TRUE;
}


/************************************************************************/
/************************************************************************/
/************************************************************************/
/************************************************************************/


//////////////////////////////////////////////////////////////////////////
//初始化联网游戏菜单
//////////////////////////////////////////////////////////////////////////
void InitMenuNetware( CJunQi* pApp )
{
	ClrMenuRowCount(pApp);
	DisplayMenuNetware(pApp);
	DrawCursor(pApp, OFFSET_X1_CURSOR, OFFSET_Y1_CURSOR, 0, OFFSET_HEIGHT, IDB_MAINMENUCURSOR, pApp->nMenuRow, 0);
	pApp->m_eAppState = APP_STATE_NETWARE_MODE;		//改变状态至联网游戏状态
}

//////////////////////////////////////////////////////////////////////////
//显示联网游戏菜单
//////////////////////////////////////////////////////////////////////////
void DisplayMenuNetware(CJunQi* pApp)
{
	//Add code to here...
	IImage *pMenu;
	AEEImageInfo rImageInfo;
	
	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
	
	pMenu = ISHELL_LoadResImage( pApp->a.m_pIShell, TWOFLAG_RES_FILE, IDB_MENU_NETWARE );

	if( pMenu )
	{
		// 获取图像信息
		IIMAGE_GetInfo( pMenu, &rImageInfo );
		
		// 在屏幕中心显示图像
		IIMAGE_Draw( pMenu, ( pApp->cxScreen - rImageInfo.cx ) / 2 , ( pApp->cyScreen - rImageInfo.cy ) / 2 );
		
		IDISPLAY_Update( pApp->a.m_pIDisplay );

		IIMAGE_Release( pMenu );
	}
	
}

//////////////////////////////////////////////////////////////////////////
//联网游戏菜单事件
//////////////////////////////////////////////////////////////////////////
boolean MenuNetwareEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam)
{

	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
	switch(wParam) 
	{
	case AVK_UP:
		pApp->nMenuRow--;
		if(pApp->nMenuRow < 0)
			pApp->nMenuRow = 2;
		DisplayMenuNetware(pApp);
		DrawCursor(pApp, OFFSET_X1_CURSOR, OFFSET_Y1_CURSOR, 0, OFFSET_HEIGHT, IDB_MAINMENUCURSOR, pApp->nMenuRow, 0);
		break;
	case AVK_DOWN:
		pApp->nMenuRow++;
		if(pApp->nMenuRow >= 3)
			pApp->nMenuRow = 0;
		DisplayMenuNetware(pApp);
		DrawCursor(pApp, OFFSET_X1_CURSOR, OFFSET_Y1_CURSOR, 0, OFFSET_HEIGHT, IDB_MAINMENUCURSOR, pApp->nMenuRow, 0);
		break;
		
	case AVK_CLR:
		InitMainMenu(pApp);								//返回到主菜单
		break;
		
	case AVK_SELECT:
		switch(pApp->nMenuRow)
		{
		case 0:
			//add code to here ......
			InitMenuLab(pApp);							//改变状态至游戏大厅
			break;
		case 1:
			//add code to here ......
//			pApp->m_eAppState = APP_STATE_RECORD;		//改变状态至排行榜
			break;
		case 2:
			//add code to here ......
			InitMainMenu(pApp);							//返回到主菜单
			break;

		default:
			break;
		}
	default:
		break;
	}
	return TRUE;
}

/************************************************************************/
/************************************************************************/
/************************************************************************/
/************************************************************************/

//////////////////////////////////////////////////////////////////////////
//初始化大厅菜单
//////////////////////////////////////////////////////////////////////////
void InitMenuLab( CJunQi* pApp )
{
	ClrMenuRowCount(pApp);
	DisplayMenuLab(pApp);
	DrawCursor(pApp,OFFSET_X2_CURSOR,OFFSET_Y2_CURSOR,OFFSET_WIDTH_ROOM,OFFSET_HEIGHT_ROOM,IDB_LABCURSOR,pApp->nMenuRow,pApp->nMenuCol);
	pApp->m_eAppState = APP_STATE_LAB;		//改变状态至联网游戏状态
}

//////////////////////////////////////////////////////////////////////////
//显示大厅菜单
//////////////////////////////////////////////////////////////////////////
void DisplayMenuLab(CJunQi* pApp)
{
	//Add code to here...
	IImage *pMenu;
	AEEImageInfo rImageInfo;
	
	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
	
	pMenu = ISHELL_LoadResImage( pApp->a.m_pIShell, TWOFLAG_RES_FILE, IDB_MENU_LAB );

	if( pMenu )
	{
		// 获取图像信息
		IIMAGE_GetInfo( pMenu, &rImageInfo );
		
		// 在屏幕中心显示图像
		IIMAGE_Draw( pMenu, ( pApp->cxScreen - rImageInfo.cx ) / 2 , ( pApp->cyScreen - rImageInfo.cy ) / 2 );
		
		IDISPLAY_Update( pApp->a.m_pIDisplay );

		IIMAGE_Release( pMenu );
	}
	
}

//////////////////////////////////////////////////////////////////////////
//大厅菜单事件
//////////////////////////////////////////////////////////////////////////
boolean MenuLabEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam)
{

	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
	switch(wParam) 
	{
	case AVK_UP:
		pApp->nMenuRow--;
		if(pApp->nMenuRow < 0)
			pApp->nMenuRow = 0;
		DisplayMenuLab(pApp);
		DrawCursor(pApp, OFFSET_X2_CURSOR, OFFSET_Y2_CURSOR, OFFSET_WIDTH_ROOM, OFFSET_HEIGHT_ROOM, IDB_LABCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;

	case AVK_DOWN:
		pApp->nMenuRow++;
		if(pApp->nMenuRow > 3)
			pApp->nMenuRow = 3;
		DisplayMenuLab(pApp);
		DrawCursor(pApp, OFFSET_X2_CURSOR, OFFSET_Y2_CURSOR, OFFSET_WIDTH_ROOM, OFFSET_HEIGHT_ROOM, IDB_LABCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_LEFT:
		pApp->nMenuCol--;
		if(pApp->nMenuCol < 0)
			pApp->nMenuCol = 0;
		DisplayMenuLab(pApp);
		DrawCursor(pApp, OFFSET_X2_CURSOR, OFFSET_Y2_CURSOR, OFFSET_WIDTH_ROOM, OFFSET_HEIGHT_ROOM, IDB_LABCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_RIGHT:
		pApp->nMenuCol++;
		if(pApp->nMenuCol > 1)
			pApp->nMenuCol = 1;
		DisplayMenuLab(pApp);
		DrawCursor(pApp, OFFSET_X2_CURSOR, OFFSET_Y2_CURSOR, OFFSET_WIDTH_ROOM, OFFSET_HEIGHT_ROOM, IDB_LABCURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_CLR:
		InitMenuNetware(pApp);								//返回到大厅菜单
		break;
		
	case AVK_SELECT:
		switch(pApp->nMenuRow)
		{
		case 0:
			//add code to here ......
			InitMenuTable(pApp);							//改变状态至棋桌状态
			break;
		default:
			break;
		}
	default:
		break;
	}
	return TRUE;
}

/************************************************************************/
/************************************************************************/
/************************************************************************/
/************************************************************************/ 

//////////////////////////////////////////////////////////////////////////
//初始化棋桌菜单
//////////////////////////////////////////////////////////////////////////
void InitMenuTable( CJunQi* pApp )
{
	ClrMenuRowCount(pApp);
	DisplayMenuTable(pApp);
	DrawCursor(pApp,OFFSET_X3_CURSOR,OFFSET_Y3_CURSOR,OFFSET_X_TABLE,OFFSET_Y_TABLE,IDB_TABLE_CURSOR,pApp->nMenuRow,pApp->nMenuCol);
	pApp->m_eAppState = APP_STATE_TABLE;		//改变状态至联网游戏状态
}

//////////////////////////////////////////////////////////////////////////
//显示棋桌菜单
//////////////////////////////////////////////////////////////////////////
void DisplayMenuTable(CJunQi* pApp)
{
	//Add code to here...
	IImage *pMenu;
	AEEImageInfo rImageInfo;
	AECHAR psTextBuf[ 5 ];
	AECHAR psFormat[] = { '%','i','\0' };
	int i;
	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
	
	pMenu = ISHELL_LoadResImage( pApp->a.m_pIShell, TWOFLAG_RES_FILE, IDB_MENUTABLE );
	// 设置图片参数,透明	Make the image transparent
	IIMAGE_SetParm( pMenu, IPARM_ROP, AEE_RO_TRANSPARENT, 0 );

	if( pMenu )
	{
		// 获取图像信息
		IIMAGE_GetInfo( pMenu, &rImageInfo );
		
		// 在屏幕中心显示图像
		IIMAGE_Draw( pMenu, ( pApp->cxScreen - rImageInfo.cx ) / 2 , ( pApp->cyScreen - rImageInfo.cy ) / 2 );
		
		IDISPLAY_Update( pApp->a.m_pIDisplay );

		IIMAGE_Release( pMenu );
	}
	
	for(i = 0; i<6; i++)
	{
		WSPRINTF( psTextBuf, 5 * sizeof( AECHAR ), psFormat, pApp->nTableCount + i );
		IDISPLAY_DrawText( pApp->a.m_pIDisplay, AEE_FONT_NORMAL, psTextBuf,
			-1, OFFSET_X_TABLENUMBER + (i%2)*OFFSET_X_TABLE, OFFSET_Y_TABLENUMBER + (i/2)*OFFSET_Y_TABLE, NULL, IDF_TEXT_TRANSPARENT);
	}
}



//////////////////////////////////////////////////////////////////////////
//棋桌菜单事件
//////////////////////////////////////////////////////////////////////////
boolean MenuTableEvent(CJunQi *pApp,AEEEvent eCode, uint16 wParam,uint32 dwParam)
{

	IDISPLAY_ClearScreen( pApp->a.m_pIDisplay );
	switch(wParam) 
	{
	case AVK_UP:
		pApp->nMenuRow--;
		if(pApp->nMenuRow < 0)
		{
			pApp->nTableCount -= 2;		//向上滚动显示桌号数字
			if(pApp->nTableCount<=1)
				pApp->nTableCount = 1;
			pApp->nMenuRow = 0;
		}
		DisplayMenuTable(pApp);
		DrawCursor(pApp, OFFSET_X3_CURSOR, OFFSET_Y3_CURSOR, OFFSET_X_TABLE, OFFSET_Y_TABLE, IDB_TABLE_CURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;

	case AVK_DOWN:
		pApp->nMenuRow++;
		if(pApp->nMenuRow > 2)			//向下滚动显示桌号数字
		{
			pApp->nTableCount += 2;
			if(pApp->nTableCount>=45)
				pApp->nTableCount = 45;
			pApp->nMenuRow = 2;
		}
		DisplayMenuTable(pApp);
		DrawCursor(pApp, OFFSET_X3_CURSOR, OFFSET_Y3_CURSOR, OFFSET_X_TABLE, OFFSET_Y_TABLE, IDB_TABLE_CURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_LEFT:
		pApp->nMenuCol--;
		if(pApp->nMenuCol < 0)
			pApp->nMenuCol = 0;
		DisplayMenuTable(pApp);
		DrawCursor(pApp, OFFSET_X3_CURSOR, OFFSET_Y3_CURSOR, OFFSET_X_TABLE, OFFSET_Y_TABLE, IDB_TABLE_CURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_RIGHT:
		pApp->nMenuCol++;
		if(pApp->nMenuCol > 1)
			pApp->nMenuCol = 1;
		DisplayMenuTable(pApp);
		DrawCursor(pApp, OFFSET_X3_CURSOR, OFFSET_Y3_CURSOR, OFFSET_X_TABLE, OFFSET_Y_TABLE, IDB_TABLE_CURSOR, pApp->nMenuRow, pApp->nMenuCol);
		break;
	
	case AVK_CLR:
		InitMenuLab(pApp);								//返回到大厅菜单
		break;
		
	case AVK_SELECT:
		switch(pApp->nMenuRow)
		{
		case 0:
			//add code to here ......
			InitTwoFlag(pApp);		//进入到布局界面
			break;
		default:
			break;
		}
	default:
		break;
	}
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -