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>
196 lines
5.8 KiB
C++
196 lines
5.8 KiB
C++
// DuplicatedItemDlg.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AdminToolClient.h"
|
|
#include "DuplicatedItemDlg.h"
|
|
#include "PacketManager.h"
|
|
#include "GlobalFunctions.h"
|
|
#include "WindowMgr.h"
|
|
#include "ListCtrlSortClass.h"
|
|
#include "CharacterDoc.h"
|
|
|
|
#include <Utility/Math/Math.h>
|
|
|
|
|
|
|
|
// CDuplicatedItemDlg 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CDuplicatedItemDlg, CDialog)
|
|
CDuplicatedItemDlg::CDuplicatedItemDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CDuplicatedItemDlg::IDD, pParent)
|
|
, m_bSortListAsc(false)
|
|
{
|
|
INSERT_WINDOW(IDD_DUPLICATEDITEMDLG, static_cast<CWnd*>(this));
|
|
}
|
|
|
|
CDuplicatedItemDlg::~CDuplicatedItemDlg()
|
|
{
|
|
ERASE_WINDOW(IDD_DUPLICATEDITEMDLG);
|
|
}
|
|
|
|
void CDuplicatedItemDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_DS_DITEM_LIST, m_ctrlDItemList);
|
|
DDX_Control(pDX, IDC_DS_GROUP_CB, m_ctrlServerGroupCb);
|
|
DDX_Control(pDX, IDC_DS_ISCHK_CB, m_ctrlIsChkCb);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDuplicatedItemDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_DS_SEARCH_BTN, OnBnClickedDsSearchBtn)
|
|
ON_BN_CLICKED(IDC_DS_DELETELIST_BTN, OnBnClickedDsDeletelistBtn)
|
|
ON_BN_CLICKED(IDC_DS_CHK_BTN, OnBnClickedDsChkBtn)
|
|
ON_NOTIFY(HDN_ITEMCHANGING, 0, OnHdnItemchangingDsDitemList)
|
|
ON_NOTIFY(LVN_COLUMNCLICK, IDC_DS_DITEM_LIST, OnLvnColumnclickDsDitemList)
|
|
ON_BN_CLICKED(IDC_DUPITEM_CLIPPING_BTN, OnBnClickedDupitemClippingBtn)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CDuplicatedItemDlg 메시지 처리기입니다.
|
|
|
|
BOOL CDuplicatedItemDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_ctrlDItemList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
|
|
m_ctrlDItemList.InsertColumn(0, GetLocalString("INSERT_TIME"), LVCFMT_LEFT, 120);
|
|
m_ctrlDItemList.InsertColumn(1, GetLocalString("CHK_TIME"), LVCFMT_LEFT, 120);
|
|
m_ctrlDItemList.InsertColumn(2, _T("UID"), LVCFMT_LEFT, 100);
|
|
m_ctrlDItemList.InsertColumn(3, _T("CID"), LVCFMT_LEFT, 100);
|
|
m_ctrlDItemList.InsertColumn(4, _T("CharName"), LVCFMT_LEFT, 100);
|
|
m_ctrlDItemList.InsertColumn(5, _T("ItemSerial"), LVCFMT_LEFT, 135);
|
|
m_ctrlDItemList.InsertColumn(6, _T("Qty"), LVCFMT_LEFT, 60);
|
|
m_ctrlDItemList.InsertColumn(7, GetLocalString("CHK_RESULT"), LVCFMT_LEFT, 90);
|
|
|
|
ServerGroupComboSet(m_ctrlServerGroupCb);
|
|
|
|
m_ctrlIsChkCb.InsertString(0, _T("0 : DO NOT"));
|
|
m_ctrlIsChkCb.InsertString(1, _T("1 : DO"));
|
|
|
|
m_ctrlIsChkCb.SetCurSel(0);
|
|
|
|
SetWindowText(GetLocalString("IDD_DUPLICATEDITEMDLG"));
|
|
|
|
SetUIString(this->m_hWnd, IDC_DUPITEM_01, "IDC_DUPITEM_01");
|
|
SetUIString(this->m_hWnd, IDC_DUPITEM_02, "IDC_DUPITEM_02");
|
|
SetUIString(this->m_hWnd, IDC_DUPITEM_03, "IDC_DUPITEM_03");
|
|
SetUIString(this->m_hWnd, IDC_DUPITEM_04, "IDC_DUPITEM_04");
|
|
SetUIString(this->m_hWnd, IDC_DS_SEARCH_BTN, "IDC_DS_SEARCH_BTN");
|
|
SetUIString(this->m_hWnd, IDC_DS_DELETELIST_BTN, "IDC_DS_DELETELIST_BTN");
|
|
SetUIString(this->m_hWnd, IDC_DUPITEM_CLIPPING_BTN, "IDC_DUPITEM_CLIPPING_BTN");
|
|
SetUIString(this->m_hWnd, IDC_DS_CHK_BTN, "IDC_DS_CHK_BTN");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CDuplicatedItemDlg::OnBnClickedDsSearchBtn()
|
|
{
|
|
if(CB_ERR != m_ctrlServerGroupCb.GetCurSel())
|
|
{
|
|
m_ctrlDItemList.DeleteAllItems();
|
|
|
|
CPacketMgr::GetInstance()->SendSearchDupItem(
|
|
(unsigned long)m_ctrlServerGroupCb.GetCurSel(), (m_ctrlIsChkCb.GetCurSel() == 0) ? true : false);
|
|
}
|
|
}
|
|
|
|
void CDuplicatedItemDlg::OnBnClickedDsChkBtn()
|
|
{
|
|
int iIndex = m_ctrlDItemList.GetNextItem(-1, LVIS_SELECTED);
|
|
|
|
if (-1 != iIndex)
|
|
{
|
|
unsigned long dwUID = atol(m_ctrlDItemList.GetItemText(iIndex, 2));
|
|
unsigned long dwCID = atol(m_ctrlDItemList.GetItemText(iIndex, 3));
|
|
unsigned __int64 i64ItemSerial =
|
|
Math::Convert::StrToHex64(m_ctrlDItemList.GetItemText(iIndex, 5));
|
|
|
|
unsigned long dwServerGroup = 100;
|
|
|
|
CString strServerName;
|
|
GetDlgItemText(IDC_DUPLICATEDITEM_SELGROUP_EDIT, strServerName);
|
|
CCharacterDoc::GetInstance().GetServerIndex(strServerName, dwServerGroup);
|
|
|
|
CPacketMgr::GetInstance()->SendChkDupItem(dwUID, dwCID, dwServerGroup, i64ItemSerial);
|
|
|
|
m_ctrlDItemList.DeleteAllItems();
|
|
|
|
CPacketMgr::GetInstance()->SendSearchDupItem(dwServerGroup, true);
|
|
}
|
|
}
|
|
|
|
void CDuplicatedItemDlg::OnBnClickedDsDeletelistBtn()
|
|
{
|
|
POSITION pos;
|
|
while(pos = m_ctrlDItemList.GetFirstSelectedItemPosition())
|
|
{
|
|
m_ctrlDItemList.DeleteItem(m_ctrlDItemList.GetNextSelectedItem(pos));
|
|
}
|
|
}
|
|
|
|
void CDuplicatedItemDlg::OnHdnItemchangingDsDitemList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CDuplicatedItemDlg::OnLvnColumnclickDsDitemList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
|
|
|
if(pNMLV->iSubItem == m_iSortListItem)
|
|
{
|
|
m_bSortListAsc = !m_bSortListAsc;
|
|
}
|
|
else
|
|
{
|
|
m_iSortListItem = pNMLV->iSubItem;
|
|
m_bSortListAsc = true;
|
|
}
|
|
|
|
SortListWndItem(&m_ctrlDItemList, m_iSortListItem);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CDuplicatedItemDlg::SortListWndItem(CListCtrl* lpListCtrl, const int iCol)
|
|
{
|
|
CListCtrlSortClass SortClass(lpListCtrl, iCol);
|
|
|
|
switch(m_iSortListItem)
|
|
{
|
|
case SORT_TYPE::INSERT_TIME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::CHK_TIME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::UID:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::CID:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::ITEM_SERIAL:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::CHARNAME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::QTY:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::CHK_RESULT:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRINGNOCASE);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CDuplicatedItemDlg::OnBnClickedDupitemClippingBtn()
|
|
{
|
|
ClippingListCtrl(m_ctrlDItemList, 8, true);
|
|
} |