// HumanQuestDesc.cpp: implementation of the CHumanQuestDesc class. // ////////////////////////////////////////////////////////////////////// #include "ClientMain.h" #include "GUITextEdit.h" #include "HumanQuestDesc.h" #include "WinInput.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHumanQuestDesc::CHumanQuestDesc() { } CHumanQuestDesc::~CHumanQuestDesc() { } BOOL CHumanQuestDesc::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); 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); 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 CHumanQuestDesc::InitValue(void) { } BOOL CHumanQuestDesc::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; } } if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK) { g_ClientMain.m_Network.m_pSocket->CharStartQuest(g_ClientMain.m_dwMyChrID, m_dwChrID, m_dwQuestID); } else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK) { ShowWindow(FALSE); } m_ButtonManager.Update(); m_TooltipManager.Update(); return TRUE; } void CHumanQuestDesc::ShowWindow(BOOL bShow) { m_bShow = 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 CHumanQuestDesc::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 CHumanQuestDesc::SetText(unsigned long dwChrID, unsigned long dwQuestID, const char *strMessage) { m_dwChrID = dwChrID; m_dwQuestID = dwQuestID; 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; }