Files
Client/GameTools/NeoRylClient/CommonOption.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

383 lines
15 KiB
C++

// CommonOption.cpp: implementation of the CCommonOption class.
//
//////////////////////////////////////////////////////////////////////
#include "ClientMain.h"
#include "CommonOption.h"
#include "WinInput.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCommonOption::CCommonOption()
{
}
CCommonOption::~CCommonOption()
{
}
void CCommonOption::InitValue()
{
m_dwShowOption = 0;
m_dwStartMusic = 0;
m_dwStartSound = 0;
m_ButtonManager.m_lstButton[0]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[1]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[2]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[3]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[4]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[5]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[6]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[7]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[8]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[9]->ShowButton(FALSE);
}
BOOL CCommonOption::Init(unsigned short x, unsigned short y)
{
CSprite *lpSprite;
lpSprite = new CSprite;
lpSprite->Create(x, y, 0, 0, 222, 217, g_ClientMain.m_lpInterface->m_lstTexture[19]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite;
lpSprite->Create(x, y, 0, 0, 222, 217, g_ClientMain.m_lpInterface->m_lstTexture[21]);
m_lstSprite.push_back(lpSprite);
lpSprite = new CSprite;
lpSprite->Create(x, y + 217, 0, 0, 222, 114, g_ClientMain.m_lpInterface->m_lstTexture[40]);
m_lstSprite.push_back(lpSprite);
CGUIButton *lpButton;
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_SIMPLE;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(48, 59, 48, 59, 175, 85, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(48, 59, 0, 220, 127, 246, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->SetTooltip(&m_TooltipManager, "");
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(77, 291, 77, 74, 145, 100, g_ClientMain.m_lpInterface->m_lstTexture[40]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(77, 291, 127, 220, 195, 246, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_NORMAL;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(41, 102, 41, 102, 182, 118, g_ClientMain.m_lpInterface->m_lstTexture[19]);
lpButton->m_lpOnMouseButton = new CSprite;
lpButton->m_lpOnMouseButton->Create(41, 102, 0, 32, 141, 48, g_ClientMain.m_lpInterface->m_lstTexture[20]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(41, 102, 0, 112, 141, 128, g_ClientMain.m_lpInterface->m_lstTexture[20]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_NORMAL;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(41, 136, 41, 136, 182, 152, g_ClientMain.m_lpInterface->m_lstTexture[19]);
lpButton->m_lpOnMouseButton = new CSprite;
lpButton->m_lpOnMouseButton->Create(41, 136, 0, 48, 141, 64, g_ClientMain.m_lpInterface->m_lstTexture[20]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(41, 136, 0, 128, 141, 144, g_ClientMain.m_lpInterface->m_lstTexture[20]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_NORMAL;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(41, 172, 41, 172, 182, 188, g_ClientMain.m_lpInterface->m_lstTexture[19]);
lpButton->m_lpOnMouseButton = new CSprite;
lpButton->m_lpOnMouseButton->Create(41, 172, 0, 64, 141, 80, g_ClientMain.m_lpInterface->m_lstTexture[20]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(41, 172, 0, 144, 141, 160, g_ClientMain.m_lpInterface->m_lstTexture[20]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_SIMPLECHECK;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(30, 169, 30, 169, 48, 186, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(30, 169, 195, 229, 213, 246, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_SIMPLECHECK;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(30, 193, 30, 193, 48, 210, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(30, 193, 195, 229, 213, 246, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_SIMPLECHECK;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(30, 217, 30, 0, 48, 17, g_ClientMain.m_lpInterface->m_lstTexture[40]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(30, 217, 195, 229, 213, 246, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_SIMPLECHECK;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(30, 241, 30, 24, 48, 41, g_ClientMain.m_lpInterface->m_lstTexture[40]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(30, 241, 195, 229, 213, 246, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
lpButton = new CGUIButton;
lpButton->m_nMethod = BUTTON_SIMPLECHECK;
lpButton->m_lpNormalButton = new CSprite;
lpButton->m_lpNormalButton->Create(30, 265, 30, 24, 48, 41, g_ClientMain.m_lpInterface->m_lstTexture[40]);
lpButton->m_lpClickMouseButton = new CSprite;
lpButton->m_lpClickMouseButton->Create(30, 265, 195, 229, 213, 246, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpButton->SetTooltip(&m_TooltipManager, "");
lpButton->SetMove(x, y);
m_ButtonManager.AddButton(lpButton);
CGUIScroll *lpScroll;
lpScroll = new CGUIScroll;
lpScroll->m_lpBarButton = new CGUIButton;
lpScroll->m_lpBarButton->m_nMethod = BUTTON_SIMPLE;
lpScroll->m_lpBarButton->m_lpNormalButton = new CSprite;
lpScroll->m_lpBarButton->m_lpNormalButton->Create(83, 105, 195, 220, 211, 229, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpScroll->m_lpBarButton->m_lpClickMouseButton = new CSprite;
lpScroll->m_lpBarButton->m_lpClickMouseButton->Create(83, 105, 195, 220, 211, 229, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpScroll->m_lValue = (long *)&m_dwStartMusic;
lpScroll->SetScrollKind(SCROLL_HSCROLL);
lpScroll->SetMove(x, y);
lpScroll->SetPosition(83, 105);
lpScroll->SetEdge(0, 0, 102, 11);
lpScroll->SetRange(0, 6);
m_lstScroll.push_back(lpScroll);
lpScroll = new CGUIScroll;
lpScroll->m_lpBarButton = new CGUIButton;
lpScroll->m_lpBarButton->m_nMethod = BUTTON_SIMPLE;
lpScroll->m_lpBarButton->m_lpNormalButton = new CSprite;
lpScroll->m_lpBarButton->m_lpNormalButton->Create(83, 127, 195, 220, 211, 229, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpScroll->m_lpBarButton->m_lpClickMouseButton = new CSprite;
lpScroll->m_lpBarButton->m_lpClickMouseButton->Create(83, 127, 195, 220, 211, 229, g_ClientMain.m_lpInterface->m_lstTexture[21]);
lpScroll->m_lValue = (long *)&m_dwStartMusic;
lpScroll->SetScrollKind(SCROLL_HSCROLL);
lpScroll->SetMove(x, y);
lpScroll->SetPosition(83, 127);
lpScroll->SetEdge(0, 0, 102, 11);
lpScroll->SetRange(0, 6);
m_lstScroll.push_back(lpScroll);
m_bShow = FALSE;
m_dwWindowKind = WINDOW_FIX;
m_rcWindowSize.left = x; m_rcWindowSize.top = y;
m_rcWindowSize.right = x + 222; m_rcWindowSize.bottom = y + 480;
m_rcMoveEdge.left = x; m_rcMoveEdge.top = y;
m_rcMoveEdge.right = x + 150; m_rcMoveEdge.bottom = y + 20;
InitValue();
return TRUE;
}
BOOL CCommonOption::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;
}
}
m_ButtonManager.Update();
m_TooltipManager.Update();
switch(m_dwShowOption)
{
case 0: // 메인 메뉴
if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_CLICK)
{
SendMessage(g_ClientMain.m_hWnd, WM_DESTROY, 0, 0);
g_ClientMain.m_dwClientMode = CLIENT_END;
return FALSE;
} else if(m_ButtonManager.m_lstButton[3]->m_nState == BUTTON_CLICK)
{
m_dwShowOption = 1;
m_ButtonManager.m_lstButton[0]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[1]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[2]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[3]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[4]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[5]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[6]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[7]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[8]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[9]->ShowButton(TRUE);
} else if(m_ButtonManager.m_lstButton[4]->m_nState == BUTTON_CLICK)
{
m_bShow = FALSE;
}
break;
case 1: // 세부 옵션
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK)
{
} else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK)
{
m_dwShowOption = 0;
m_ButtonManager.m_lstButton[0]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[1]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[2]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[3]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[4]->ShowButton(TRUE);
m_ButtonManager.m_lstButton[5]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[6]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[7]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[8]->ShowButton(FALSE);
m_ButtonManager.m_lstButton[9]->ShowButton(FALSE);
}
m_lstScroll[0]->Update();
m_lstScroll[1]->Update();
break;
}
if(g_DeviceInput.InRect(m_rcWindowSize.left + 30, m_rcWindowSize.top + 169, m_rcWindowSize.left + 48, m_rcWindowSize.top + 186) && g_DeviceInput.GetIsLeftMouseDown()) // 파티 거부
{
RejectOption roOption;
roOption.m_wReject = g_ClientMain.m_roOption.m_wReject;
if(roOption.Reject.m_Party)
roOption.Reject.m_Party = 0;
else
roOption.Reject.m_Party = 1;
g_ClientMain.m_Network.m_pSocket->CharControlOption(g_ClientMain.m_dwMyChrID, roOption);
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 30, m_rcWindowSize.top + 193, m_rcWindowSize.left + 48, m_rcWindowSize.top + 210) && g_DeviceInput.GetIsLeftMouseDown()) // 교환 거부
{
RejectOption roOption;
roOption.m_wReject = g_ClientMain.m_roOption.m_wReject;
if(roOption.Reject.m_Exchange)
roOption.Reject.m_Exchange = 0;
else
roOption.Reject.m_Exchange = 1;
g_ClientMain.m_Network.m_pSocket->CharControlOption(g_ClientMain.m_dwMyChrID, roOption);
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 30, m_rcWindowSize.top + 217, m_rcWindowSize.left + 48, m_rcWindowSize.top + 234) && g_DeviceInput.GetIsLeftMouseDown()) // 귓속말 거부
{
RejectOption roOption;
roOption.m_wReject = g_ClientMain.m_roOption.m_wReject;
if(roOption.Reject.m_Whisper)
roOption.Reject.m_Whisper = 0;
else
roOption.Reject.m_Whisper = 1;
g_ClientMain.m_Network.m_pSocket->CharControlOption(g_ClientMain.m_dwMyChrID, roOption);
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 30, m_rcWindowSize.top + 241, m_rcWindowSize.left + 48, m_rcWindowSize.top + 258) && g_DeviceInput.GetIsLeftMouseDown()) // 결투 거부
{
RejectOption roOption;
roOption.m_wReject = g_ClientMain.m_roOption.m_wReject;
if(roOption.Reject.m_Duel)
roOption.Reject.m_Duel = 0;
else
roOption.Reject.m_Duel = 1;
g_ClientMain.m_Network.m_pSocket->CharControlOption(g_ClientMain.m_dwMyChrID, roOption);
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 30, m_rcWindowSize.top + 265, m_rcWindowSize.left + 48, m_rcWindowSize.top + 282) && g_DeviceInput.GetIsLeftMouseDown()) // 친구 등록 거부
{
RejectOption roOption;
roOption.m_wReject = g_ClientMain.m_roOption.m_wReject;
if(roOption.Reject.m_Friend)
roOption.Reject.m_Friend = 0;
else
roOption.Reject.m_Friend = 1;
g_ClientMain.m_Network.m_pSocket->CharControlOption(g_ClientMain.m_dwMyChrID, roOption);
}
return TRUE;
}
void CCommonOption::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
{
switch(m_dwShowOption)
{
case 0:
m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha);
break;
case 1:
m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha);
m_lstSprite[2]->Render(lpD3DDevice, m_cAlpha);
if(g_ClientMain.m_roOption.Reject.m_Party)
m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_ON;
else
m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_OFF;
if(g_ClientMain.m_roOption.Reject.m_Exchange)
m_ButtonManager.m_lstButton[6]->m_nState = BUTTON_ON;
else
m_ButtonManager.m_lstButton[6]->m_nState = BUTTON_OFF;
if(g_ClientMain.m_roOption.Reject.m_Whisper)
m_ButtonManager.m_lstButton[7]->m_nState = BUTTON_ON;
else
m_ButtonManager.m_lstButton[7]->m_nState = BUTTON_OFF;
if(g_ClientMain.m_roOption.Reject.m_Duel)
m_ButtonManager.m_lstButton[8]->m_nState = BUTTON_ON;
else
m_ButtonManager.m_lstButton[8]->m_nState = BUTTON_OFF;
if(g_ClientMain.m_roOption.Reject.m_Friend)
m_ButtonManager.m_lstButton[9]->m_nState = BUTTON_ON;
else
m_ButtonManager.m_lstButton[9]->m_nState = BUTTON_OFF;
m_lstScroll[0]->Render(lpD3DDevice, m_cAlpha);
m_lstScroll[1]->Render(lpD3DDevice, m_cAlpha);
break;
}
m_ButtonManager.Render(lpD3DDevice);
}