📄 brewlogincanvas.cpp
字号:
/*===========================================================================
FILE: BrewLoginCanvas.c
===========================================================================*/
#include "BrewLoginCanvas.h"
#include "brewmainmenu.h"
CBrewLoginCanvas::CBrewLoginCanvas(){
frame = NULL;
paintCounter = 0;
}
CBrewLoginCanvas::~CBrewLoginCanvas(){
}
void CBrewLoginCanvas::setFrame(void *f){
frame = f;
}
void CBrewLoginCanvas::paint(IDisplay *d, IGraphics *g){
CBrewLogin *f = (CBrewLogin *)frame;
if (f == NULL)
return;
if (f->frame == NULL)
return;
paintCounter ++;
MEMSET(f->szText, '\0', sizeof(f->szText));
switch (f->m_nLoginState){
case LOGIN_INIT:
case LOGIN_TEST_GAME_LIST:
case LOGIN_GET_GAME_LIST:
case LOGIN_WAIT_GAME_LIST:
case LOGIN_READY_GAME:
f->szText[0] = 0x53D6;
f->szText[1] = 0x6E38;
f->szText[2] = 0x620F;
f->szText[3] = 0x5217;
f->szText[4] = 0x8868;
switch (paintCounter % 4){
case 0:
default:
f->szText[5] = '-';
break;
case 1:
f->szText[5] = '\\';
break;
case 2:
f->szText[5] = '|';
break;
case 3:
f->szText[5] = '/';
break;
}
f->szText[6] = '\0';
IDISPLAY_DrawText(d, AEE_FONT_NORMAL, f->szText, -1, f->frame->getScreenOffsetX(), f->frame->getScreenOffsetY(), NULL, 0);
break;
case LOGIN_CHOOSE_GAME:
case LOGIN_TEST_SERVER_LIST:
case LOGIN_GET_SERVER_LIST:
case LOGIN_WAIT_SERVER_LIST:
case LOGIN_READY_SERVER:
f->szText[0] = 0x53D6;
f->szText[1] = 0x670D;
f->szText[2] = 0x52A1;
f->szText[3] = 0x5668;
f->szText[4] = 0x5217;
f->szText[5] = 0x8868;
switch (paintCounter % 4){
case 0:
default:
f->szText[6] = '-';
break;
case 1:
f->szText[6] = '\\';
break;
case 2:
f->szText[6] = '|';
break;
case 3:
f->szText[6] = '/';
break;
}
f->szText[7] = '\0';
IDISPLAY_DrawText(d, AEE_FONT_NORMAL, f->szText, -1, f->frame->getScreenOffsetX(), f->frame->getScreenOffsetY(), NULL, 0);
break;
case LOGIN_CHOOSE_SERVER:
IMENUCTL_Redraw(f->m_pIMenu);
break;
case LOGIN_TEST_ROOM_LIST:
case LOGIN_GET_ROOM_LIST:
case LOGIN_WAIT_ROOM_LIST:
case LOGIN_READY_ROOM:
f->szText[0] = 0x53D6;
f->szText[1] = 0x623F;
f->szText[2] = 0x95F4;
f->szText[3] = 0x5217;
f->szText[4] = 0x8868;
switch (paintCounter % 4){
case 0:
default:
f->szText[5] = '-';
break;
case 1:
f->szText[5] = '\\';
break;
case 2:
f->szText[5] = '|';
break;
case 3:
f->szText[5] = '/';
break;
}
f->szText[6] = '\0';
IDISPLAY_DrawText(d, AEE_FONT_NORMAL, f->szText, -1, f->frame->getScreenOffsetX(), f->frame->getScreenOffsetY(), NULL, 0);
break;
case LOGIN_CHOOSE_ROOM:
IMENUCTL_Redraw(f->m_pIMenu);
break;
case LOGIN_READY_LOGIN:
f->szText[0] = 0x767B;
f->szText[1] = 0x5F55;
switch (paintCounter % 4){
case 0:
default:
f->szText[2] = '-';
break;
case 1:
f->szText[2] = '\\';
break;
case 2:
f->szText[2] = '|';
break;
case 3:
f->szText[2] = '/';
break;
}
f->szText[3] = '\0';
IDISPLAY_DrawText(d, AEE_FONT_NORMAL, f->szText, -1, f->frame->getScreenOffsetX(), f->frame->getScreenOffsetY(), NULL, 0);
break;
case LOGIN_CHOOSE_USER:
case LOGIN_CHOOSE_PASS:
ITEXTCTL_Redraw(f->m_pIText1);
ITEXTCTL_Redraw(f->m_pIText2);
break;
case LOGIN_TEST_LOGIN:
case LOGIN_GET_LOGIN:
case LOGIN_WAIT_LOGIN:
f->szText[0] = 0x767B;
f->szText[1] = 0x5F55;
f->szText[2] = 0x4E2D;
switch (paintCounter % 4){
case 0:
default:
f->szText[3] = '-';
break;
case 1:
f->szText[3] = '\\';
break;
case 2:
f->szText[3] = '|';
break;
case 3:
f->szText[3] = '/';
break;
}
f->szText[4] = '\0';
IDISPLAY_DrawText(d, AEE_FONT_NORMAL, f->szText, -1, f->frame->getScreenOffsetX(), f->frame->getScreenOffsetY(), NULL, 0);
break;
case LOGIN_TEST_ENTER:
case LOGIN_GET_ENTER:
case LOGIN_WAIT_ENTER:
f->szText[0] = 0x8FDB;
f->szText[1] = 0x5165;
f->szText[2] = 0x623F;
f->szText[3] = 0x95F4;
f->szText[4] = 0x4E2D;
switch (paintCounter % 4){
case 0:
default:
f->szText[5] = '-';
break;
case 1:
f->szText[5] = '\\';
break;
case 2:
f->szText[5] = '|';
break;
case 3:
f->szText[5] = '/';
break;
}
f->szText[6] = '\0';
IDISPLAY_DrawText(d, AEE_FONT_NORMAL, f->szText, -1, f->frame->getScreenOffsetX(), f->frame->getScreenOffsetY(), NULL, 0);
break;
default:
break;
}
}
boolean CBrewLoginCanvas::keyPressed(UINT16 code, UINT32 param){
return FALSE;
}
boolean CBrewLoginCanvas::keyReleased(UINT16 code, UINT32 param){
return FALSE;
}
boolean CBrewLoginCanvas::keyRepeated(UINT16 code, UINT32 param){
return FALSE;
}
boolean CBrewLoginCanvas::key(UINT16 code, UINT32 param){
CBrewLogin *f = (CBrewLogin *)frame;
if (f == NULL)
return FALSE;
if (f->frame == NULL)
return FALSE;
switch (f->m_nLoginState){
case LOGIN_CHOOSE_SERVER:
if (IMENUCTL_HandleEvent(f->m_pIMenu, EVT_KEY, code, param) == TRUE)
return TRUE;
break;
case LOGIN_CHOOSE_ROOM:
if (IMENUCTL_HandleEvent(f->m_pIMenu, EVT_KEY, code, param) == TRUE)
return TRUE;
break;
case LOGIN_CHOOSE_USER:
if ((code != AVK_DOWN) && (code != AVK_UP)){
if ((ITEXTCTL_IsActive(f->m_pIText1) == TRUE) && (ITEXTCTL_HandleEvent(f->m_pIText1, EVT_KEY, code, param) == TRUE))
return TRUE;
}
break;
case LOGIN_CHOOSE_PASS:
if ((code != AVK_DOWN) && (code != AVK_UP)){
if ((ITEXTCTL_IsActive(f->m_pIText2) == TRUE) && (ITEXTCTL_HandleEvent(f->m_pIText2, EVT_KEY, code, param) == TRUE))
return TRUE;
}
break;
default:
break;
}
switch (code){
case AVK_CLR:
switch (f->m_nLoginState){
case LOGIN_INIT:
case LOGIN_TEST_GAME_LIST:
case LOGIN_GET_GAME_LIST:
case LOGIN_WAIT_GAME_LIST:
case LOGIN_READY_GAME:
case LOGIN_CHOOSE_GAME:
case LOGIN_TEST_SERVER_LIST:
case LOGIN_GET_SERVER_LIST:
case LOGIN_WAIT_SERVER_LIST:
case LOGIN_READY_SERVER:
case LOGIN_CHOOSE_SERVER:
if (f->frame != NULL)
f->frame->disconnectGameServer();
f->SetCanvas(CBrewLogin::InitCanvas);
break;
case LOGIN_TEST_ROOM_LIST:
case LOGIN_GET_ROOM_LIST:
case LOGIN_WAIT_ROOM_LIST:
case LOGIN_READY_ROOM:
case LOGIN_CHOOSE_ROOM:
//f->m_nLoginState = LOGIN_READY_SERVER;
f->m_nLoginState = LOGIN_TEST_SERVER_LIST;
break;
case LOGIN_READY_LOGIN:
case LOGIN_CHOOSE_USER:
f->m_nLoginState = LOGIN_READY_ROOM;
break;
case LOGIN_CHOOSE_PASS:
f->m_nLoginState = LOGIN_CHOOSE_USER;
ITEXTCTL_SetCursorPos(f->m_pIText1, TC_CURSOREND);
break;
case LOGIN_TEST_LOGIN:
case LOGIN_GET_LOGIN:
case LOGIN_WAIT_LOGIN:
f->m_nLoginState = LOGIN_READY_LOGIN;
break;
case LOGIN_TEST_ENTER:
case LOGIN_GET_ENTER:
case LOGIN_WAIT_ENTER:
f->m_nLoginState = LOGIN_READY_ROOM;
break;
default:
break;
}
return TRUE;
case AVK_SELECT:
switch (f->m_nLoginState){
case LOGIN_CHOOSE_USER:
case LOGIN_CHOOSE_PASS:
if (WSTRLEN(ITEXTCTL_GetTextPtr(f->m_pIText1)) == 0){
f->m_nLoginState = LOGIN_CHOOSE_USER;
ITEXTCTL_SetCursorPos(f->m_pIText1, TC_CURSOREND);
}else if (WSTRLEN(ITEXTCTL_GetTextPtr(f->m_pIText2)) == 0){
f->m_nLoginState = LOGIN_CHOOSE_PASS;
ITEXTCTL_SetCursorPos(f->m_pIText2, TC_CURSOREND);
}else{
ITEXTCTL_SetActive(f->m_pIText1, FALSE);
ITEXTCTL_SetActive(f->m_pIText2, FALSE);
f->m_nLoginState = LOGIN_TEST_LOGIN;
}
break;
default:
break;
}
return TRUE;
case AVK_DOWN:
switch (f->m_nLoginState){
case LOGIN_CHOOSE_USER:
f->m_nLoginState = LOGIN_CHOOSE_PASS;
ITEXTCTL_SetCursorPos(f->m_pIText2, TC_CURSOREND);
break;
default:
break;
}
return TRUE;
case AVK_UP:
switch (f->m_nLoginState){
case LOGIN_CHOOSE_PASS:
f->m_nLoginState = LOGIN_CHOOSE_USER;
ITEXTCTL_SetCursorPos(f->m_pIText1, TC_CURSOREND);
break;
default:
break;
}
return TRUE;
default:
break;
}
return FALSE;
}
void CBrewLoginCanvas::Release(){
delete this;
}
IBrewCanvas *CreateLoginCanvas(){
return (IBrewCanvas *)new CBrewLoginCanvas();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -