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

📄 brewhallcanvas2.cpp

📁 象棋框架
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	//Invalidate();
	return b;
}

IBrewCanvas *CreateHallCanvas2(){
	return (IBrewCanvas *)new CBrewHallCanvas2();
}

void CBrewHallCanvas2::EnsureMouse()
{	
	if(m_nx < m_rtMain.x)
		m_nx = m_rtMain.x;
	if(m_nx > m_rtMain.x + m_rtMain.dx)
		m_nx = m_rtMain.x + m_rtMain.dx - 2;
	if(m_ny < m_rtMain.y)
		m_ny = m_rtMain.y;
	if(m_ny > m_rtMain.y + m_rtMain.dy)
		m_ny = m_rtMain.y + m_rtMain.dy - 2;
}

void CBrewHallCanvas2::GetTextRect(int n,AEERect& rt)
{
	if(n >= m_nTotalTables || n < 0)
		return;
	//AEERect rtmain;
	//GetMainRect(rtmain);
	//int nx = rtmain.dx / m_nTabsPerLine;

	//AEEDeviceInfo di;
	//ISHELL_GetDeviceInfo(((CBrewLogin*)frame)->m_pIShell, &di);
	//int yyy = (((CBrewLogin*)frame)->frame)->getScreenOffsetY();

	
	int nrow = n / m_nTabsPerLine;
	int ncol = n % m_nTabsPerLine;

	rt.y = m_rtMain.y + nrow * (m_nTableHeight + m_nLChSize);
	rt.dy = m_nTableHeight + m_nLChSize;
	rt.x = m_rtMain.x + ncol * m_nTableWidth;
	rt.dx = m_nTableWidth;
}

void CBrewHallCanvas2::SetDisplayInfo(IDisplay* d)
{
	CBrewLoginCanvasBase::SetDisplayInfo(d);	

	m_pTable = ISHELL_LoadResBitmap(m_pShell,GAMEVV_RES_FILE,IDB_TABLE);
	m_pFemale = ISHELL_LoadResBitmap(m_pShell,GAMEVV_RES_FILE,IDB_FEMALE);
	m_pMale = ISHELL_LoadResBitmap(m_pShell,GAMEVV_RES_FILE,IDB_MALE);

	AEEBitmapInfo  bi;
	IBITMAP_GetInfo(m_pTable, &bi, sizeof(bi));
	m_nTableWidth = bi.cx;
	m_nTableHeight = bi.cy;
	m_nHeight = (m_nTotalTables / m_nTabsPerLine + 
		m_nTotalTables % m_nTabsPerLine) * (m_nTableHeight + m_nLChSize);
	NativeColor color;	
	//IBITMAP_GetPixel(m_pTable, 0, 0, &color);
	color =  IBITMAP_RGBToNative(m_pTable, MAKE_RGB(255,0,255));
	IBITMAP_SetTransparencyColor(m_pTable, color);	

	color =  IBITMAP_RGBToNative(m_pFemale, MAKE_RGB(255,0,255));
	IBITMAP_SetTransparencyColor(m_pFemale, color);	
		
	IBITMAP_GetInfo(m_pMouse, &bi, sizeof(bi));	
	color =  IBITMAP_RGBToNative(m_pMouse, MAKE_RGB(255,255,255));
	IBITMAP_SetTransparencyColor(m_pMouse, color);

	color =  IBITMAP_RGBToNative(m_pMale, MAKE_RGB(255,0,255));
	IBITMAP_SetTransparencyColor(m_pMale, color);

	GetMainRect(m_rtMain);
	m_nNowLeft = m_nx = m_rtMain.x;
	m_nNowTop = m_ny = m_rtMain.y;
}

void CBrewHallCanvas2::LoadSprites(ISprite* pISprite, IDisplay *d,const char * pszFile, 
								uint16 resID, uint8 unSpriteSize, boolean isTile)
{
}

boolean CBrewHallCanvas2::PtInRect(const AEERect& rt)
{
	AEERect rttmp;
	rttmp.x = rt.x;
	rttmp.y = rt.y;
	rttmp.dx = rt.dx;
	rttmp.dy = rt.dy;
	if(m_nx > rttmp.x && m_nx < rttmp.x + rttmp.dx)
		if(m_ny > rttmp.y && m_ny < rttmp.y + rttmp.dy)
			return true;
	return false;
}

void CBrewHallCanvas2::GetCurTableIDandSeat(int* nTable,int* nSeat,AEERect* rtTable,AEERect* rtSeat)
{
	*nSeat = *nTable = 0;
	AEERect rt;
	AEERect rttmp;
	int i;
	for(i = 0; i < m_nTotalTables; i++)
	{
		GetTextRect(i,rt);
		rt.y -= m_nNowTop-m_rtMain.y;
		rt.x -= m_nNowLeft-m_rtMain.x;

		
		SETAEERECT(&rttmp,rt.x , rt.y,
			rt.dx,rt.dy);
		if(PtInRect(rttmp))
			break;
	}
	if(i == m_nTotalTables)
		return;
	*nTable = i + 1;
	
	AEERect rt1,rt2;
	SETAEERECT(&rt1,rttmp.x+rttmp.dx/2 , rttmp.y,
			rttmp.dx/2,rttmp.dy/2);
	SETAEERECT(&rt2,rttmp.x, rttmp.y+rttmp.dy/2,
			rttmp.dx/2,rttmp.dy/2);
	if(PtInRect(rt1))
	{
		*nSeat = 1;
		SETAEERECT(rtSeat,rt1.x, rt1.y,
			rt1.dx,rt1.dy);
	}
	else if(PtInRect(rt2))
	{	
		*nSeat = 2;
		SETAEERECT(rtSeat,rt2.x, rt2.y,
			rt2.dx,rt2.dy);
	}
	SETAEERECT(rtTable,rttmp.x, rttmp.y,
			rttmp.dx,rttmp.dy);
}

void CBrewHallCanvas2::CreateMenu()
{
	ISHELL_CreateInstance(m_pShell,AEECLSID_ICONVIEWCTL,(void**)&m_subMenu);
	if(m_subMenu != NULL)
	{
		IBitmap* bmp;
		bmp = ISHELL_LoadResBitmap(m_pShell,GAMEVV_RES_FILE,IDB_MENU);
		if(bmp != NULL)
		{
			AEEBitmapInfo  bi;			
			IBITMAP_GetInfo(bmp, &bi, sizeof(bi));
			AEERect rt;
			int n = bi.cy + m_nNowSize + 10;
			//n = 40;
			SETAEERECT(&rt,m_rtMain.x,m_rtMain.y+m_rtMain.dy-n,m_rtMain.dx,
				n);
			//SETAEERECT(&rt,m_rtMain.x,m_rtMain.y,m_rtMain.dx,
			//	n);
			AddMenuItem(m_subMenu,IDS_MENU,IDB_MENU,IDS_MENU,0);
			SetMenuStyle(m_subMenu);			
			//IMENUCTL_Redraw(m_subMenu);
			//IMENUCTL_EnableCommand(m_subMenu, TRUE);
			IMENUCTL_SetRect(m_subMenu,&rt);
			IMENUCTL_SetActive(m_subMenu,true);
			RELEASEIF(bmp,IBITMAP);
		}
		else
			RELEASEIF(m_subMenu,IMENUCTL);
	}
	//IMenuCtl* pmenu;
	//IMENUCTL_SetProperties(
	//	pmenu, 
	//	MP_ICON_TEXT_TOP
	//	);
		
	/*	
	m_subMenu=new CMenu(1);		//参数0:横排 1:纵排,默认为0
	CTextButton *tm;
	int resId[6]={IDS_MENU_CLOSEMENU,IDS_MENU_EXITGAME,IDS_MENU_BACKTOLIST,IDS_MENU_PLAYERINFO,IDS_MENU_HELP,IDS_MENU_SETTING}; 
	BUTTONTYPE bt[6]={BTN_CLOSEMENU,BTN_EXIT,BTN_BACKTOHALL,BTN_PLAYERINFO,BTN_HELP,BTN_SETTING};
	for(int i=0;i<6;i++)
	{
		AECHAR txt[20];
		ISHELL_LoadResString(m_pShell,GAMEVV_RES_FILE,resId[i],txt,20);
		tm=new CTextButton;
		tm->SetText(txt);
		AEERect rect;
		rect.x=m_rtMain.x;
		rect.y=m_rtMain.y+m_rtMain.dy
			-i*18 - 18;
		rect.dx=55;
		rect.dy=18;
		tm->SetRange(rect);	//读资源文件,获得字符串
		tm->SetColor(MAKE_RGB(255,255,255),MAKE_RGB(0,0,0),MAKE_RGB(0,0,255),MAKE_RGB(0,0,255),MAKE_RGB(255,255,255),MAKE_RGB(255,255,255),MAKE_RGB(0,0,0),MAKE_RGB(255,255,255));	//设置颜色
		tm->SetRtValue(bt[i]);	//设置按钮返回值
		m_subMenu->AddItem(tm,FALSE);	//添加按钮
	}
	m_subMenu->SetSelectedBtn(0);
	*/
}

boolean CBrewHallCanvas2::AddMenuItem(IMenuCtl *pMenu, uint16 wTextID, 
									  uint16 wImageID, uint16 wItemID, uint32 dwData)
{
	CtlAddItem rMenuItem;
	rMenuItem.pszResImage = rMenuItem.pszResText = GAMEVV_RES_FILE;
	rMenuItem.wFont = m_nNowFont;	
	rMenuItem.pImage = NULL;
	rMenuItem.pText=NULL;
	rMenuItem.wImage=wImageID;
	rMenuItem.wText = wTextID;	
	rMenuItem.wItemID = wItemID;
	rMenuItem.dwData = dwData;
	boolean b;
	if(wImageID == 0)
		b = IMENUCTL_AddItem(pMenu,GAMEVV_RES_FILE,wTextID,wItemID,NULL,dwData);
	else 
		b = IMENUCTL_AddItemEx( pMenu, &rMenuItem);
	return b;
}

void CBrewHallCanvas2::SetMenuStyle(IMenuCtl *pMenuCtl)
{	
	AEEItemStyle rNormalStyle;
	AEEItemStyle rSelStyle;
	AEEMenuColors col;		
	// Menu Colors
	col.cSelText = MAKE_RGB(0, 0, 255);
	col.wMask = (MC_BACK | MC_SEL_BACK | MC_SEL_TEXT);
	col.cBack=MAKE_RGB(2, 128, 223);
	col.cSelBack=MAKE_RGB(161, 231, 254);
	ISHELL_GetItemStyle( m_pShell, AEE_IT_MENU, &rNormalStyle, &rSelStyle );
	rNormalStyle.roImage = AEE_RO_TRANSPARENT;
	rSelStyle.roImage = AEE_RO_TRANSPARENT;
	rNormalStyle.xOffset = 0;
	rNormalStyle.yOffset = 0;
	rSelStyle.xOffset = 0;
	rSelStyle.yOffset = 0;
	IMENUCTL_SetStyle( pMenuCtl, &rNormalStyle, &rSelStyle );
	IMENUCTL_SetProperties( pMenuCtl, MP_ICON_TEXT_TOP );
	IMENUCTL_SetColors(pMenuCtl, &col);
	return;
}

void CBrewHallCanvas2::DrawFlag(IGraphics* g)
{
	if(m_nFlag++ < 8)
		return;
	else
	{
		int n = 10;
		AEERect rt;
		SETAEERECT(&rt,0,m_pdi->cyScreen-n,
			n,n);
		boolean bb = IGRAPHICS_GetFillMode(g);
		uint8 r,gg,b;
		uint8 a;
		IGRAPHICS_GetFillColor(g,&r,&gg,&b,&a);
		AEETriangle Triangle;
		Triangle.x0 = rt.x;
		Triangle.y0 = rt.y;
		Triangle.x1 = rt.x + rt.dx;
		Triangle.y1 = rt.y;
		Triangle.x2 = rt.x + rt.dx / 2;
		Triangle.y2 = rt.y + rt.dy * 2/3;
		if(m_nFlag == 11)
			m_nFlag = 0;
		IGRAPHICS_SetFillMode(g,true);			
		IGRAPHICS_SetFillColor(g,0,0,0,255);
		IGRAPHICS_SetColor(g,0,0,0,255);
		IGRAPHICS_DrawTriangle(g,&Triangle);
		IGRAPHICS_SetFillMode(g,bb);
		IGRAPHICS_SetFillColor(g,r,gg,b,a);
	}
}

boolean CBrewHallCanvas2::onEvent(AEEEvent eCode, UINT16 wParam, UINT32 dwParam)
{
	boolean b = false;
	if(eCode == EVT_COMMAND)
	{
		switch(wParam)
		{
		case IDS_MENU:
			{
				b = true;				
				CreateSonMenu();
				break;
			}
		case IDS_MENU_CLOSEMENU:
			{
				b = true;
				RELEASEIF(m_sonMenu,IMENUCTL);
				break;
			}
		case IDS_MENU_PLAYERINFO:
			{
				b = true;
				//RELEASEIF(m_sonMenu,IMENUCTL);

				struct UserItemStruct* tmp = frame->m_pUList->userNext;
				frame->m_pUList->userNext = NULL;
				userinfo = new CUserInfoDlg(frame->m_pUList);
				if(userinfo)
				{
					userinfo->setFrame(this);
				}
				frame->m_pUList->userNext = tmp;
				/*
				AECHAR buf[20];
				STRTOWSTR("test123",buf,sizeof buf);
				int i;
				for (i = 0; i < WSTRLEN(buf); i ++)
					buf[i] = HTONS(buf[i]);
				if(frame->frame->queryUser(WSTRLEN(buf)*2,(UINT8*)buf) == OK)
				{
					frame->clearUserList();
					frame->m_nHallState = HALL_GET_QUERY;
				}
				*/
				break;
			}
		case IDS_MENU_EXITGAME:
			{
				m_bExit = true;
				b = true;
				frame->frame->postMessage(GetDispText(IDS_MSG_QUIT),2,MESSAGE_INFO_COLOR,0
					,MESSAGE_YES|MESSAGE_TEXT_CENTER|MESSAGE_NO);	
				
				
				break;
			}
		case IDS_MENU_BACKTOLIST:
			{
				b = true;
				if(m_bDisconnect)
				{
					AECHAR* p = GetDispText(IDS_MSG_DISABLE);
					int i;
					for (i = 0; i < WSTRLEN(p); i ++) 
						if(p[i] == SPLIT) 
							p[i] = '\n';
					frame->frame->postMessage(p,IDS_MSG_DISABLE,MESSAGE_INFO_COLOR,0
						,MESSAGE_YES|MESSAGE_TEXT_CENTER);
					break;
				}
				m_bExit = false;
				frame->frame->postMessage(GetDispText(IDS_MSG_BACK),2,MESSAGE_INFO_COLOR,0
					,MESSAGE_YES|MESSAGE_TEXT_CENTER|MESSAGE_NO);	
				break;
			}
		case IDS_MENU_HELP:
			{
				b = true;
				m_pHelp = new CBrewHelpAndIntro;
				if(m_pHelp != NULL)
				{
					m_pHelp->setFrame(frame);
				}
				break;
			}
		case IDS_MENU_SETTING:
			{
				b = true;
				m_pGs = new CGameSetting;
				if(m_pGs != NULL)
				{
					m_pGs->setFrame(frame);
				}
				break;
			}
		case MESSAGE_YES:
			{
				switch(dwParam)
				{
				case 1:
					m_bHideCursor = false;
					break;
				case 2:
					{
						if(m_bExit)
						{
							//frame->frame->quitGame();
							frame->frame->quitGame();
						}
						else
						{
							frame->frame->postUserEvent(LOGIN, SWITCH_INTO, 0);		
							frame->m_nHallRunFlag = FALSE;
							if(m_sonMenu != NULL)
								RELEASEIF(m_sonMenu,IMENUCTL);
							frame->SetCanvas(CBrewHall::Canvas1);
						}
					}
				}
				break;
			}
		}
	}
	return b;
}

void CBrewHallCanvas2::CreateSonMenu()
{
	ISHELL_CreateInstance(m_pShell,AEECLSID_MENUCTL,(void**)&m_sonMenu);
	
	if(m_sonMenu != NULL)
	{
		//frame->frame->showHint(GetDispText(IDS_MENU_CLOSEMENU),0,HINT_BOTTOM);
		AEERect rt,rt1,rt2;
		SETAEERECT(&rt1,0,0,m_pdi->cxScreen*2/3,m_pdi->cyScreen*2/3);
		SETAEERECT(&rt,m_offsetX,m_offsetY,m_pdi->cxScreen,m_pdi->cyScreen);
		GetFitRect(&rt,&rt1,&rt2,  IDF_ALIGN_MIDDLE |IDF_ALIGN_CENTER);
		RELEASEIF(m_subMenu,IMENUCTL);
		int resId[6]={IDS_MENU_CLOSEMENU,IDS_MENU_EXITGAME,IDS_MENU_BACKTOLIST,IDS_MENU_PLAYERINFO,IDS_MENU_HELP,IDS_MENU_SETTING};
		int i;
		for(i = sizeof(resId)/sizeof(resId[0]) - 1; i >= 0;i--)
		{
			AddMenuItem(m_sonMenu,resId[i],0,resId[i],0);
		}		
		SetMenuStyle(m_sonMenu);
		IMENUCTL_SetRect(m_sonMenu,&rt2);
		IMENUCTL_SetActive(m_sonMenu,true);
	}
}

CBrewLoginCanvasBase* CBrewHallCanvas2::GetSomeCanvas()
{
	RETURNIFNOTNULL(m_pGs);
	RETURNIFNOTNULL(m_pHelp);
	RETURNIFNOTNULL(m_pGuide);
	return NULL;
}

void CBrewHallCanvas2::SetNull(CBrewLoginCanvasBase* p)
{
	if(p == m_pGs)
		m_pGs = NULL;
	if(p == m_pHelp)
		m_pHelp = NULL;
	if(p == m_pGuide)
		m_pGuide = NULL;
	if(p == m_pAbout)
		m_pAbout = NULL;
}

void CBrewHallCanvas2::onSuspend()
{
	RELEASEIF(m_sonMenu,IMENUCTL);
	RELEASEIF(m_subMenu,IMENUCTL);
}

void CBrewHallCanvas2::onResume()
{
}

void CBrewHallCanvas2::TimeOut()
{
	frame->frame->postMessage(GetDispText(IDS_MSG_TIMEOUT),1,MESSAGE_INFO_COLOR,0
		,MESSAGE_YES|MESSAGE_TEXT_CENTER);	
	frame->frame->showHint(NULL,0,HINT_BOTTOM);
}

void CBrewHallCanvas2::onDisconnectGameServer(UINT8 retCode)
{
	m_bDisconnect = true;
	AECHAR* p = GetDispText(IDS_MSG_DISCONN);
	int i;
	for (i = 0; i < WSTRLEN(p); i ++) 
		if(p[i] == '`') 
			p[i] = '\n';
	frame->frame->postMessage(p,IDS_MSG_DISCONN
		,MESSAGE_INFO_COLOR,0
		,MESSAGE_TEXT_CENTER);	
}

void CBrewHallCanvas2::OnReconnect()
{
	m_bDisconnect = false;
	frame->frame->postMessage(NULL,IDS_MSG_DISCONN
		,MESSAGE_INFO_COLOR,0
		,MESSAGE_TEXT_CENTER);	
}

void CBrewHallCanvas2::OnFailed()
{
	frame->frame->postMessage(GetDispText(IDS_MSG_FAIL),1,MESSAGE_INFO_COLOR,0
		,MESSAGE_YES|MESSAGE_TEXT_CENTER);	
	frame->frame->showHint(NULL,0,HINT_BOTTOM);
}

⌨️ 快捷键说明

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