📄 brewhallcanvas2.cpp
字号:
//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 + -