📄 characterprocess.cpp
字号:
// CharacterProcess.cpp: implementation of the CCharacterProcess class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
////////////////////////////////////////////////
////////////////////////////////////////////////
// Positio of Edit box
#define POS_NAME_X 300
#define POS_NAME_Y 460
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCharacterProcess::CCharacterProcess()
{
Init();
}
CCharacterProcess::~CCharacterProcess()
{
// if(m_pBtn)
// {
// delete[] m_pBtn;
// m_pBtn = NULL;
// }
}
VOID CCharacterProcess::Init()
{
m_Progress=PRG_CHAR_SELE;
m_ConnectionState=CONNECT_FAIL;
ZeroMemory(m_szErrorMsg,512);
// m_pBtn = new CMirButton[sizeof(g_CharProcBtnInfo)/sizeof(BUTTONINFO)];
}
VOID CCharacterProcess::Load()
{
WSAStartup(MAKEWORD(2, 2), &m_wsd);
m_Image.NewLoad(".\\Data\\interface1c.wil", TRUE, TRUE);
m_Image2.NewLoad(".\\Data\\interfacec2.wil", TRUE, TRUE);
// 烙矫
//
m_ConnectionState = CONNECT_FAIL;
g_xClientSocket.ConnectToServer(g_xMainWnd.GetSafehWnd(), g_szServerIP, g_nServerPort);
g_xChatEditBox.SetLimitText(20);
SendMessage(g_xChatEditBox.GetSafehWnd(),EM_SETPASSWORDCHAR,NULL,0);
m_ChrCount =0;
m_nMessage = 0;
// m_xMsgBox.Load(&m_Image2);
m_xMsgBox.CreateWnd(&m_Image2,TRUE,219,110,362,180); // 侩扁
m_Progress = PRG_CHAR_SELE; // Character Selection
m_xBGround.Create(&m_Image);
m_xBGround.OpenWnd();
}
VOID CCharacterProcess::SetNextProc()
{
D3DMATRIX matProj;
DeleteProc();
g_xClientSocket.m_pxDefProc = g_xMainWnd.m_pxDefProcess = &g_xGameProc;
g_xGameProc.Load();
g_xChatEditBox.SetLimitText(90);
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
D3DUtil_SetProjectionMatrix(matProj, g_PI/2, float(600.0f/800.0f), -1.0f, 1.0f);
g_xMainWnd.Get3DDevice()->SetTransform(D3DTRANSFORMSTATE_PROJECTION, &matProj);
g_bProcState = _GAME_PROC;
}
VOID CCharacterProcess::DeleteProc()
{
WSACleanup();
m_Image.Destroy();
m_Image2.Destroy();
// 烙矫
m_CRectList.ClearAllNodes();
m_CList.ClearAllNodes();
}
LRESULT CCharacterProcess::DefMainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch ( uMsg )
{
case WM_LBUTTONDOWN:
OnLButtonDown(wParam, lParam);
break;
case WM_LBUTTONUP:
OnLButtonUp(wParam, lParam);
break;
case ID_SOCKCLIENT_EVENT_MSG:
g_xClientSocket.OnSocketMessage(wParam, lParam);
break;
case WM_KEYDOWN:
OnKeyDown(wParam, lParam);
break;
case WM_MOUSEON:
OnMouseOn(wParam,lParam);
break;
case WM_MOVE:
OnWindowMove(wParam,lParam);
break;
case WM_MOUSEMOVE:
OnMouseMove(wParam,lParam);
break;
default:
break;
}
return CWHDefProcess::DefMainWndProc(hWnd, uMsg, wParam, lParam);
}
LRESULT CCharacterProcess::OnKeyDown(WPARAM wParam, LPARAM lParam)
{
switch ( wParam )
{
case VK_F1:
m_Progress=PRG_CHAR_SELE;
break;
case VK_F2:
m_Progress=PRG_CREATE_CHAR;
break;
}
return 0L;
}
LRESULT CCharacterProcess::OnMouseMove(WPARAM wParam, LPARAM lParam)
{
int i;
BOOL fOnButton = FALSE;
if(m_xMsgBox.IsActive())
{
POINT tPos;
tPos.x = LOWORD(lParam);
tPos.y = HIWORD(lParam);
m_xMsgBox.MoveWnd(tPos); // Moon
return 0l;
}
if(!m_fIsLButtonClicked)//m_fIsConnected && !m_fIsLButtonClicked)
{
switch(m_Progress)
{
case PRG_CHAR_SELE:
m_xSelectChr.OnMouseMove(wParam, lParam);
break;
case PRG_CREATE_CHAR:
{
for(i = 5; i < 9; i++)
{
/* if (m_pBtn[i].CheckMouseOn(LOWORD(lParam), HIWORD(lParam)))
{
m_pBtn[i].m_nState = BUTTON_STATE_ON;
fOnButton = TRUE;
}
else
m_pBtn[i].m_nState = BUTTON_STATE_UP;*/
}
break;
}
}
if(fOnButton)
{
HCURSOR hCursor;
hCursor = LoadCursor(g_xMainWnd.GetSafehInstance(),MAKEINTRESOURCE(IDC_ARROW));
SetCursor(hCursor);
DestroyCursor(hCursor);
}
// else
// g_xMainWnd.OnSetCursor(IDC_ARROW);
}
return 0L;
}
LRESULT CCharacterProcess::OnLButtonDown(WPARAM wParam, LPARAM lParam)
{
m_fIsLButtonClicked = FALSE;
if(m_xMsgBox.IsActive())
{
POINT ptMouse;
ptMouse.x = LOWORD(lParam);
ptMouse.y = HIWORD(lParam);
m_xMsgBox.OnButtonDown(ptMouse);
}
else
{
if(m_Progress==PRG_CHAR_SELE)
m_xSelectChr.OnButtonDown(wParam, lParam);
if (m_Progress == PRG_CREATE_CHAR)
{
for (int i = ID_CREATE_CHR_OK_BTN; i <= ID_CREATE_CHR_TAO_BTN; i++)
{
/* if (m_pBtn[i].CheckMouseOn(LOWORD(lParam), HIWORD(lParam)))
{
m_pBtn[i].m_nState = BUTTON_STATE_DOWN;
m_fIsLButtonClicked = TRUE;
}
else
m_pBtn[i].m_nState = BUTTON_STATE_UP;
*/ }
}
}
return 0L;
}
LRESULT CCharacterProcess::OnLButtonUp(WPARAM wParam, LPARAM lParam)
{
INT nRecieve;
m_ptMousePos.x = LOWORD(lParam);
m_ptMousePos.y = HIWORD(lParam);
m_fIsLButtonClicked = FALSE;
if(m_xMsgBox.IsActive()) // Message Box Process
{
MessageBoxProcess(lParam);
}
else
{
switch(m_Progress)
{
case PRG_CHAR_SELE:
{
nRecieve = m_xSelectChr.OnButtonUp(wParam, lParam);
switch(nRecieve)
{
case RETURN_SELECT_NEW_BTN:
{
break;
}
case RETURN_SELECT_NEW_ERR:
{
m_nMessage = 3;
SetErrorMessage(m_nMessage,m_szErrorMsg);
m_xMsgBox.ShowMessageBox(m_szErrorMsg,MSG_BTN_OK,_WNDIMGINDX_MSGBOX1);
break;
}
case RETURN_SELECT_DEL_BTN:
{
m_nMessage = 5;
SetErrorMessage(m_nMessage,m_szErrorMsg);
m_xMsgBox.ShowMessageBox(m_szErrorMsg,MSG_BTN_YESNO,_WNDIMGINDX_MSGBOX1);
break;
}
case RETURN_SELECT_DEL_ERR:
{
m_nMessage = 8;
SetErrorMessage(m_nMessage,m_szErrorMsg);
m_xMsgBox.ShowMessageBox(m_szErrorMsg,MSG_BTN_OK,_WNDIMGINDX_MSGBOX1);
break;
}
case RETURN_SELECT_START_BTN:
{
break;
}
case RETURN_SELECT_START_ERR:
{
m_nMessage = 7;
SetErrorMessage(m_nMessage,m_szErrorMsg);
m_xMsgBox.ShowMessageBox(m_szErrorMsg,MSG_BTN_OK,_WNDIMGINDX_MSGBOX1);
break;
}
}
break;
}
case PRG_CREATE_CHAR:
{
/*
for(i = ID_CREATE_CHR_OK_BTN; i <= ID_CREATE_CHR_TAO_BTN; i++)
{
m_pBtn[i].m_nState = BUTTON_STATE_UP;
if (m_pBtn[i].CheckMouseOn(LOWORD(lParam), HIWORD(lParam)))
{
switch(i)
{
case ID_CREATE_CHR_WAR_BTN:
m_SelectJob = _JOB_JUNSA;
break;
case ID_CREATE_CHR_SOR_BTN:
m_SelectJob = _JOB_SULSA;
break;
case ID_CREATE_CHR_TAO_BTN:
m_SelectJob = _JOB_DOSA;
break;
case ID_CREATE_CHR_OK_BTN:
{
int Lens;
GetWindowText(g_xChatEditBox.GetSafehWnd(),m_szChrName,sizeof(m_szChrName));
Lens = strlen(m_szChrName);
if(Lens!=0)
{
CHRINFO ChrInfo;
strcpy(ChrInfo.ChrName,m_szChrName);
ChrInfo.Class=m_SelectJob;
ChrInfo.Gender=m_SelectSex;
ChrInfo.Level = 1;
m_ChrCount = 0;
m_xBGround.SetRenderState(_RENDER_AVI_OUT);
g_xSound.PlayMp3(MP3_TOSELECTCHAR,FALSE);
m_Progress = PRG_CREA_TO_SEL; // 烙矫
g_xClientSocket.OnQueryChar(); // 烙矫
}
else
{
m_nMessage = 2;
SetErrorMessage(m_nMessage,m_szErrorMsg);
m_xMsgBox.ShowMessageBox(m_szErrorMsg,1,_WNDIMGINDX_MSGBOX1);
}
}
}
}
}*/
m_Progress = PRG_CREA_TO_SEL;
m_xBGround.SetRenderState(_RENDER_AVI_OUT);
break;
}
}
}
return 0L;
}
LRESULT CCharacterProcess::OnMouseOn(WPARAM wParam, LPARAM lParam)
{
/* UINT t_ID;
t_ID=(UINT)wParam;
m_ButtonID = t_ID; // Upon Mouse*/
return 0L;
}
LRESULT CCharacterProcess::OnWindowMove(WPARAM wParam,LPARAM lParam)
{
ShowWindow(g_xChatEditBox.GetSafehWnd(), SW_HIDE);
g_xMainWnd.OnMove(wParam, lParam);
return 0L;
}
// **************************************************************************************
//
// Socket
//
// **************************************************************************************
VOID CCharacterProcess::OnConnectToServer()
{
m_ConnectionState = CONNECT_SUCCESS;// Connection Success
g_xClientSocket.OnQueryChar();
}
char* CCharacterProcess::OnMessageReceive(CHAR* pszMessage)
{
char *pszFirst = pszMessage;
char *pszEnd;
while (pszEnd = strchr(pszFirst, '!'))
{
*pszEnd = '\0';
OnSocketMessageRecieve(pszFirst + 1);
if (*(pszEnd + 1) == '#')
pszFirst = pszEnd + 1;
else
return NULL;
}
return pszFirst;
}
void CCharacterProcess::OnSocketMessageRecieve(char* pszMsg)
{
_TDEFAULTMESSAGE tdm;
INT nChrPos[] = { 350, 280, 350, 250, 320, 390 };
fnDecodeMessage(&tdm, pszMsg);
switch(tdm.wIdent)
{
case SM_QUERYCHR:
{
m_SelectChr = SELECT_NONE;
if (tdm.nRecog)
{
char szDecodeMsg[512];
char *pszID = NULL, *pszJob = NULL, *pszFace = NULL, *pszLevel = NULL, *pszSex = NULL, *pszNext = NULL;
int nPos = 0;
m_SelectChr = SELECT_FIRST;
m_CRectList.ClearAllNodes();
ZeroMemory(szDecodeMsg, sizeof(szDecodeMsg));
fnDecode6BitBuf((pszMsg + DEFBLOCKSIZE), szDecodeMsg, sizeof(szDecodeMsg));
m_ChrCount = tdm.nRecog;
for (int i = 0; i < tdm.nRecog; i++)
{
CHRINFO* pxChInfo = new CHRINFO;
if (szDecodeMsg[nPos] == '*')
{
pszID = &szDecodeMsg[nPos + 1];
m_SelectChr = i;
}
else
pszID = &szDecodeMsg[nPos];
if (pszJob = strchr(pszID, '/'))
{
*pszJob = '\0';
pszJob++;
strcpy(pxChInfo->ChrName, pszID);
pxChInfo->Class = atoi(pszJob);
if (pszFace = strchr(pszJob, '/'))
{
*pszFace = '\0';
pszFace++;
if (pszLevel = strchr(pszFace, '/'))
{
*pszLevel = '\0';
pszLevel++;
pxChInfo->Level = atoi(pszLevel);
if (pszSex = strchr(pszLevel, '/'))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -