// HumanJobChange.cpp: implementation of the CHumanJobChange class. // ////////////////////////////////////////////////////////////////////// #include "ClientMain.h" #include "GUITextEdit.h" #include "HumanJobChange.h" #include "WinInput.h" #include "GUIMessageBox.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHumanJobChange::CHumanJobChange() { } CHumanJobChange::~CHumanJobChange() { } BOOL CHumanJobChange::Init(unsigned short x, unsigned short y) { CSprite *lpSprite; lpSprite = new CSprite; lpSprite->Create(x, y, 0, 0, 256, 256, g_ClientMain.m_lpInterface->m_lstTexture[35]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 256, y, 0, 0, 78, 256, g_ClientMain.m_lpInterface->m_lstTexture[36]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x, y + 256, 0, 0, 256, 160, g_ClientMain.m_lpInterface->m_lstTexture[37]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x + 256, y + 256, 0, 0, 78, 160, g_ClientMain.m_lpInterface->m_lstTexture[38]); m_lstSprite.push_back(lpSprite); CGUIButton *lpButton; lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(58, 379, 82, 0, 201, 20, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(58, 379, 82, 0, 201, 20, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[175]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(198, 379, 82, 26, 201, 46, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(198, 379, 82, 26, 201, 46, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[176]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(58, 379, 82, 52, 201, 72, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(58, 379, 82, 52, 201, 72, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[177]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(198, 379, 82, 78, 201, 98, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(198, 379, 82, 78, 201, 98, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[178]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(58, 379, 82, 104, 201, 124, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(58, 379, 82, 104, 201, 124, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[179]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(198, 379, 82, 130, 201, 150, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(198, 379, 82, 130, 201, 150, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[180]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(58, 379, 82, 156, 201, 176, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(58, 379, 82, 156, 201, 176, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[181]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(198, 379, 82, 182, 201, 202, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(198, 379, 82, 182, 201, 202, g_ClientMain.m_lpInterface->m_lstTexture[38]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[182]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(281, 355, 221, 126, 234, 138, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(281, 355, 234, 126, 247, 138, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[183]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(299, 355, 221, 138, 234, 150, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(299, 355, 234, 138, 247, 150, g_ClientMain.m_lpInterface->m_lstTexture[36]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[184]); lpButton->SetMove(x, y); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); m_bShow = FALSE; m_dwWindowKind = WINDOW_FIX; m_rcWindowSize.left = x; m_rcWindowSize.top = y; m_rcWindowSize.right = x + 334; m_rcWindowSize.bottom = y + 416; m_rcMoveEdge.left = x; m_rcMoveEdge.top = y; m_rcMoveEdge.right = x + 334; m_rcMoveEdge.bottom = y + 20; InitValue(); return TRUE; } void CHumanJobChange::InitValue(void) { for(int i = 0; i < 10; i++) { m_ButtonManager.m_lstButton[i]->ShowButton(FALSE); } switch(g_ClientMain.m_csStatus.m_Info.Class) { case 1: m_ButtonManager.m_lstButton[0]->ShowButton(TRUE); m_ButtonManager.m_lstButton[1]->ShowButton(TRUE); break; case 2: m_ButtonManager.m_lstButton[2]->ShowButton(TRUE); m_ButtonManager.m_lstButton[3]->ShowButton(TRUE); break; case 3: m_ButtonManager.m_lstButton[4]->ShowButton(TRUE); m_ButtonManager.m_lstButton[5]->ShowButton(TRUE); break; case 4: m_ButtonManager.m_lstButton[6]->ShowButton(TRUE); m_ButtonManager.m_lstButton[7]->ShowButton(TRUE); break; } m_dwChangeResult = 0; m_wClassChange = 0; } BOOL CHumanJobChange::Update(BOOL &bClick, BOOL &bEdge) { if(g_DeviceInput.InRect(m_rcWindowSize.left, m_rcWindowSize.top, m_rcWindowSize.right, m_rcWindowSize.bottom)) { bEdge = TRUE; if(g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.GetIsMiddleMouseDown() || g_DeviceInput.GetIsRightMouseDown() || g_DeviceInput.GetIsLeftMousePress() || g_DeviceInput.GetIsMiddleMousePress() || g_DeviceInput.GetIsRightMousePress() || g_DeviceInput.GetIsLeftMouseUp() || g_DeviceInput.GetIsMiddleMouseUp() || g_DeviceInput.GetIsRightMouseUp()) { bClick = TRUE; } } POINT *ptMousePos = g_DeviceInput.GetMousePosition(); unsigned long dwMousePosX = ptMousePos->x - (m_rcWindowSize.left + 18); unsigned long dwMousePosY = ptMousePos->y - (m_rcWindowSize.top + 286); m_ButtonManager.Update(); m_TooltipManager.Update(); if(m_dwChangeResult & MB_YES) { g_ClientMain.m_Network.m_nsNetworkState = NS_UPGRADECLASS; g_ClientMain.m_Network.m_pSocket->CharClassUpgrade(g_ClientMain.m_dwMyChrID, m_wClassChange); m_dwChangeResult = 0; m_wClassChange = 0; ShowWindow(FALSE); return TRUE; } else if(m_dwChangeResult & MB_NO || m_dwChangeResult & MB_EXIT) { m_dwChangeResult = 0; m_wClassChange = 0; return TRUE; } for(int i = 0; i < 8; i++) { if(m_ButtonManager.m_lstButton[i]->m_nState == BUTTON_CLICK) { char strText[MAX_PATH]; CGUIMessageBox *lpMessageBox = new CGUIMessageBox; sprintf(strText, g_StringTable.m_strString[185], g_ClientMain.m_lpCommonInterface->GetClassName(5 + i)); lpMessageBox->Create(strText, MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwChangeResult); m_dwChangeResult = 0; m_wClassChange = 5 + i; break; } } return TRUE; } void CHumanJobChange::ShowWindow(BOOL bShow) { m_bShow = bShow; for(int i = 0; i < 10; i++) { m_ButtonManager.m_lstButton[i]->ShowButton(bShow); } if(bShow == FALSE) { vector::iterator it; LPMessage lpMessage; for(it = m_lstMessage.begin(); it != m_lstMessage.end();) { lpMessage = (*it); it = m_lstMessage.erase(it); delete lpMessage; } m_lstMessage.clear(); } } void CHumanJobChange::Render(LPDIRECT3DDEVICE8 lpD3DDevice) { m_lstSprite[0]->Render(lpD3DDevice); m_lstSprite[1]->Render(lpD3DDevice); m_lstSprite[2]->Render(lpD3DDevice); m_lstSprite[3]->Render(lpD3DDevice); RECT rect; for(int i = 0; i < m_lstMessage.size(); i++) { rect.left = m_rcWindowSize.left + 14; rect.top = m_rcWindowSize.top + 20 + i * 16; rect.right = rect.left + 304; rect.bottom = rect.top + 16; g_TextEdit.DrawText(m_lstMessage[i]->strMessage, &rect, DT_LEFT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } m_ButtonManager.Render(lpD3DDevice); } void CHumanJobChange::SetText(const char *strMessage) { vector::iterator it; LPMessage lpMessage; for(it = m_lstMessage.begin(); it != m_lstMessage.end();) { lpMessage = (*it); it = m_lstMessage.erase(it); delete lpMessage; } m_lstMessage.clear(); char *strMessageTemp, *token, seps[] = "\\n"; strMessageTemp = new char[strlen(strMessage) + 100]; strcpy(strMessageTemp, strMessage); token = strtok(strMessageTemp, seps); while(token != NULL) { lpMessage = new Message; strcpy(lpMessage->strMessage, token); m_lstMessage.push_back(lpMessage); token = strtok(NULL, seps); } delete[] strMessageTemp; }