Files
Client/Server/AdminTool/AdminToolClient/CharRestoreDlg.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
5.8 KiB
C++

// CharRestoreDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "AdminToolClient.h"
#include "CharRestoreDlg.h"
#include "GlobalFunctions.h"
#include "WindowMgr.h"
#include "CharacterDoc.h"
#include "PacketManager.h"
#include "ChangeDeleteTimeDlg.h"
// CCharRestoreDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CCharRestoreDlg, CDialog)
CCharRestoreDlg::CCharRestoreDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCharRestoreDlg::IDD, pParent)
{
INSERT_WINDOW(IDD_CHARRESTOREDLG, this);
}
CCharRestoreDlg::~CCharRestoreDlg()
{
ERASE_WINDOW(IDD_CHARRESTOREDLG);
}
void CCharRestoreDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CR_SEARCHCONDITION, m_ctrlSearchConditionCb);
DDX_Control(pDX, IDC_CR_SEARCHGROUP, m_ctrlSearchServerCb);
DDX_Control(pDX, IDC_CR_DELHISTORYLIST, m_ctrlDelHistoryList);
}
BEGIN_MESSAGE_MAP(CCharRestoreDlg, CDialog)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_CHARRESTORE_SEARCH, OnBnClickedCharRestoreSearch)
ON_WM_CONTEXTMENU()
ON_COMMAND(ID_RESTORE_TIME, OnRestoreTime)
ON_COMMAND(ID_RESTORE_CHAR, OnRestoreChar)
END_MESSAGE_MAP()
// CCharRestoreDlg 메시지 처리기입니다.
BOOL CCharRestoreDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ctrlSearchConditionCb.AddString(_T("UID"));
m_ctrlSearchConditionCb.AddString(_T("CID"));
ServerGroupComboSet(m_ctrlSearchServerCb);
m_ctrlDelHistoryList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
m_ctrlDelHistoryList.InsertColumn(0, _T("UID"), LVCFMT_LEFT, 80);
m_ctrlDelHistoryList.InsertColumn(1, _T("CID"), LVCFMT_LEFT, 80);
m_ctrlDelHistoryList.InsertColumn(2, GetLocalString("ADDED_STRING_001"), LVCFMT_LEFT, 50);
m_ctrlDelHistoryList.InsertColumn(3, GetLocalString("ADDED_STRING_002"), LVCFMT_LEFT, 50);
m_ctrlDelHistoryList.InsertColumn(4, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 100);
m_ctrlDelHistoryList.InsertColumn(5, _T("Level"), LVCFMT_LEFT, 40);
m_ctrlDelHistoryList.InsertColumn(6, _T("Gold"), LVCFMT_LEFT, 80);
m_ctrlDelHistoryList.InsertColumn(7, GetLocalString("CHAR_DEL_TIME"), LVCFMT_LEFT, 170);
m_ctrlDelHistoryList.InsertColumn(8, GetLocalString("CHAR_DEL_DB_TIME"), LVCFMT_LEFT, 170);
m_ctrlSearchConditionCb.SetCurSel(1); // UID로 초기선택
SetWindowText(GetLocalString("IDD_CHARRESTOREDLG"));
SetUIString(this->m_hWnd, IDC_CHARRESTORE_01,"IDC_CHARRESTORE_01");
SetUIString(this->m_hWnd, IDC_CHARRESTORE_02,"IDC_CHARRESTORE_02");
SetUIString(this->m_hWnd, IDC_CHARRESTORE_03,"IDC_CHARRESTORE_03");
SetUIString(this->m_hWnd, IDC_CHARRESTORE_04,"IDC_CHARRESTORE_04");
SetUIString(this->m_hWnd, IDC_CHARRESTORE_05,"IDC_CHARRESTORE_05");
SetUIString(this->m_hWnd, IDC_CHARRESTORE_SEARCH,"IDC_CHARRESTORE_SEARCH");
return TRUE;
}
void CCharRestoreDlg::OnSearchSend()
{
const unsigned char UID = 1;
const unsigned char CID = 2;
int SearchType = m_ctrlSearchConditionCb.GetCurSel();
int ServerGroup = m_ctrlSearchServerCb.GetCurSel();
unsigned long dwServerGroup;
unsigned char cSearchType = cSearchType = CID;
if((-1 != SearchType) && (-1 != ServerGroup))
{
CString strSrvName;
m_ctrlSearchServerCb.GetLBText(ServerGroup, strSrvName);
if(0 != SearchType) cSearchType = UID;
if(CCharacterDoc::GetInstance().GetServerIndex(strSrvName, dwServerGroup))
{
CString strValue;
unsigned long dwValue;
this->GetDlgItemText(IDC_CHARRESTORE_EDIT, strValue);
if(0 < strValue.GetLength())
{
dwValue = _ttol(strValue);
if(CPacketMgr::GetInstance()->SendDelCharHistory(SearchType, dwServerGroup, dwValue))
{
m_ctrlDelHistoryList.DeleteAllItems();
}
}
}
}
}
HBRUSH CCharRestoreDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
void CCharRestoreDlg::OnBnClickedCharRestoreSearch()
{
OnSearchSend();
}
void CCharRestoreDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
if((pWnd->GetSafeHwnd() == m_ctrlDelHistoryList.GetSafeHwnd())
&& (1 == m_ctrlDelHistoryList.GetSelectedCount()))
{
CMenu muTemp, *pContextMenu;
muTemp.LoadMenu(IDR_CONTEXTMENU);
pContextMenu = muTemp.GetSubMenu(12);
pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_RESTORE_CHAR, GetLocalString("MENU_034"));
pContextMenu->ModifyMenu(2, MF_STRING | MF_BYPOSITION, ID_RESTORE_TIME, GetLocalString("MENU_035"));
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
}
}
void CCharRestoreDlg::OnRestoreTime()
{
CChangeDeleteTimeDlg ChangeDlg;
ChangeDlg.DoModal();
}
void CCharRestoreDlg::OnRestoreChar()
{
if(0 < m_ctrlDelHistoryList.GetSelectedCount())
{
CString strSrvName;
unsigned long dwServerGroup;
int index = m_ctrlDelHistoryList.GetNextItem(-1, LVIS_SELECTED);
CString strUID = m_ctrlDelHistoryList.GetItemText(index, 0);
CString strCID = m_ctrlDelHistoryList.GetItemText(index, 1);
CString strNewServerGroupID = m_ctrlDelHistoryList.GetItemText(index, 2);
CString strOldServerGroupID = m_ctrlDelHistoryList.GetItemText(index, 3);
m_ctrlSearchServerCb.GetLBText(m_ctrlSearchServerCb.GetCurSel(), strSrvName);
if(CCharacterDoc::GetInstance().GetServerIndex(strSrvName, dwServerGroup))
{
unsigned long dwUID, dwCID, dwNewServerGroupID, dwOldServerGroupID;
dwUID = _ttol(strUID);
dwCID = _ttol(strCID);
dwNewServerGroupID = _ttoi(strNewServerGroupID);
dwOldServerGroupID = _ttoi(strOldServerGroupID);
CPacketMgr::GetInstance()->SendPktCharRestore(dwUID, dwCID,
(unsigned char)dwNewServerGroupID, (unsigned char)dwOldServerGroupID, dwServerGroup);
}
}
}
BOOL CCharRestoreDlg::PreTranslateMessage(MSG* pMsg)
{
if((WM_KEYDOWN == pMsg->message) && (VK_RETURN == pMsg->wParam))
{
if(pMsg->hwnd == this->GetDlgItem(IDC_CHARRESTORE_EDIT)->m_hWnd)
{
OnSearchSend();
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CCharRestoreDlg::OnCancel()
{
CDialog::OnCancel();
}
void CCharRestoreDlg::OnOK()
{
//CDialog::OnOK();
}