Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
203 lines
6.1 KiB
C++
203 lines
6.1 KiB
C++
// 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<LPMessage>::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<LPMessage>::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;
|
|
}
|