Files
Client/GameTools/NeoRylClient/HumanQuestDesc.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

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;
}