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

📄 brewlogincanvas.cpp

📁 象棋框架
💻 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 + -