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>
270 lines
8.0 KiB
C++
270 lines
8.0 KiB
C++
// GAdminManagementDlg.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AdminToolClient.h"
|
|
#include "GAdminManagementDlg.h"
|
|
#include "GlobalFunctions.h"
|
|
#include "WindowMgr.h"
|
|
#include "PacketManager.h"
|
|
#include "CharacterDoc.h"
|
|
#include "GAdminInfoEditDlg.h"
|
|
#include "ListCtrlSortClass.h"
|
|
|
|
|
|
// CGAdminManagementDlg 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CGAdminManagementDlg, CDialog)
|
|
CGAdminManagementDlg::CGAdminManagementDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CGAdminManagementDlg::IDD, pParent)
|
|
, m_strRegAdminUID(_T(""))
|
|
, m_strSearchedGroup(_T(""))
|
|
, m_bSortListAsc(false)
|
|
{
|
|
}
|
|
|
|
CGAdminManagementDlg::~CGAdminManagementDlg()
|
|
{
|
|
}
|
|
|
|
void CGAdminManagementDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_GADMINLIST, m_ctrlGAdminList);
|
|
DDX_Control(pDX, IDC_GAM_SERVERCB1, m_ctrlGAMServerCb1);
|
|
DDX_Control(pDX, IDC_GAM_SERVERCB2, m_ctrlGAMServerCb2);
|
|
DDX_Text(pDX, IDC_GAM_UID_EDIT, m_strRegAdminUID);
|
|
DDX_Control(pDX, IDC_GAM_LIMITIPSTART_IP, m_ctrlLimitStartIP);
|
|
DDX_Control(pDX, IDC_GAM_LIMITIPEND_IP, m_ctrlLimitEndIP);
|
|
DDX_Control(pDX, IDC_GAM_ADMINLV_CB, m_ctrlNewAdminLV);
|
|
DDX_Text(pDX, IDC_GAM_SEARCHEDGROUP_EDIT, m_strSearchedGroup);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CGAdminManagementDlg, CDialog)
|
|
ON_WM_CTLCOLOR()
|
|
ON_WM_CONTEXTMENU()
|
|
ON_WM_DESTROY()
|
|
ON_BN_CLICKED(IDC_GAM_ADMINREG_BTN, OnBnClickedGamAdminregBtn)
|
|
ON_BN_CLICKED(IDC_GAM_ADMINSEARCH_BTN, OnBnClickedGamAdminsearchBtn)
|
|
ON_COMMAND(ID_GAM_ADMINEDIT, OnGamAdminedit)
|
|
ON_COMMAND(ID_GAM_ADMINDEL, OnGamAdmindel)
|
|
ON_NOTIFY(LVN_COLUMNCLICK, IDC_GAM_ADMIN_LIST, OnLvnColumnclickGamAdminList)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CGAdminManagementDlg 메시지 처리기입니다.
|
|
|
|
HBRUSH CGAdminManagementDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
|
{
|
|
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
|
|
return hbr;
|
|
}
|
|
|
|
BOOL CGAdminManagementDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
INSERT_WINDOW(IDD_GADMINMANAGEMENTDLG, static_cast<CWnd*>(this));
|
|
|
|
m_ctrlGAdminList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
|
|
m_ctrlGAdminList.InsertColumn(0, _T("UID"), LVCFMT_LEFT, 110);
|
|
m_ctrlGAdminList.InsertColumn(1, _T("Level"), LVCFMT_LEFT, 50);
|
|
m_ctrlGAdminList.InsertColumn(2, GetLocalString("LIMIT_IP_START"), LVCFMT_LEFT, 120);
|
|
m_ctrlGAdminList.InsertColumn(3, GetLocalString("LIMIT_IP_END"), LVCFMT_LEFT, 120);
|
|
|
|
ServerGroupComboSet(m_ctrlGAMServerCb1);
|
|
ServerGroupComboSet(m_ctrlGAMServerCb2);
|
|
|
|
m_ctrlNewAdminLV.InsertString(0, _T("Supporter"));
|
|
m_ctrlNewAdminLV.InsertString(1, _T("Admin LV1"));
|
|
m_ctrlNewAdminLV.InsertString(2, _T("Admin LV2"));
|
|
m_ctrlNewAdminLV.InsertString(3, _T("Admin LV3"));
|
|
m_ctrlNewAdminLV.InsertString(4, _T("Developer"));
|
|
|
|
SetWindowText(GetLocalString("IDD_GADMINMANAGEMENTDLG"));
|
|
|
|
SetUIString(this->m_hWnd, IDC_GADMINMANEGE_01, "IDC_GADMINMANEGE_01");
|
|
SetUIString(this->m_hWnd, IDC_GADMINMANEGE_02, "IDC_GADMINMANEGE_02");
|
|
SetUIString(this->m_hWnd, IDC_GADMINMANEGE_03, "IDC_GADMINMANEGE_03");
|
|
SetUIString(this->m_hWnd, IDC_GADMINMANEGE_04, "IDC_GADMINMANEGE_04");
|
|
SetUIString(this->m_hWnd, IDC_GADMINMANEGE_05, "IDC_GADMINMANEGE_05");
|
|
SetUIString(this->m_hWnd, IDC_GADMINMANEGE_06, "IDC_GADMINMANEGE_06");
|
|
SetUIString(this->m_hWnd, IDC_GADMINMANEGE_07, "IDC_GADMINMANEGE_07");
|
|
SetUIString(this->m_hWnd, IDC_GAM_ADMINSEARCH_BTN, "IDC_GAM_ADMINSEARCH_BTN");
|
|
SetUIString(this->m_hWnd, IDC_GAM_ADMINREG_BTN, "IDC_GAM_ADMINREG_BTN");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnContextMenu(CWnd* pWnd, CPoint point)
|
|
{
|
|
if(pWnd->GetSafeHwnd() == m_ctrlGAdminList.GetSafeHwnd()
|
|
&& m_ctrlGAdminList.GetSelectedCount() == 1)
|
|
{
|
|
CMenu muTemp, *pContextMenu;
|
|
muTemp.LoadMenu(IDR_CONTEXTMENU);
|
|
pContextMenu = muTemp.GetSubMenu(9);
|
|
pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_GAM_ADMINEDIT, GetLocalString("MENU_028"));
|
|
pContextMenu->ModifyMenu(1, MF_STRING | MF_BYPOSITION, ID_GAM_ADMINDEL, GetLocalString("MENU_029"));
|
|
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
|
|
}
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnDestroy()
|
|
{
|
|
CDialog::OnDestroy();
|
|
|
|
ERASE_WINDOW(IDD_GADMINMANAGEMENTDLG);
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnBnClickedGamAdminregBtn()
|
|
{
|
|
UpdateData(true);
|
|
|
|
if((CB_ERR != m_ctrlGAMServerCb1.GetCurSel()) && (CB_ERR != m_ctrlNewAdminLV.GetCurSel()))
|
|
{
|
|
if(!m_strRegAdminUID.IsEmpty())
|
|
{
|
|
unsigned long dwServerGroup;
|
|
CString strGroupName;
|
|
m_ctrlGAMServerCb1.GetLBText(m_ctrlGAMServerCb1.GetCurSel(), strGroupName);
|
|
CCharacterDoc::GetInstance().GetServerIndex(strGroupName, dwServerGroup);
|
|
|
|
TCHAR szStartIP[PktAdminMgr::MAX_IP], szEndIP[PktAdminMgr::MAX_IP];
|
|
|
|
if(m_ctrlLimitStartIP.IsBlank())
|
|
_sntprintf(szStartIP, PktAdminMgr::MAX_IP, _T("NULL"));
|
|
|
|
if(m_ctrlLimitEndIP.IsBlank())
|
|
_sntprintf(szEndIP, PktAdminMgr::MAX_IP, _T("NULL"));
|
|
|
|
if(!(m_ctrlLimitStartIP.IsBlank() && m_ctrlLimitEndIP.IsBlank()))
|
|
{
|
|
m_ctrlLimitStartIP.GetWindowText(szStartIP, PktAdminMgr::MAX_IP);
|
|
m_ctrlLimitEndIP.GetWindowText(szEndIP, PktAdminMgr::MAX_IP);
|
|
}
|
|
|
|
#ifdef _UNICODE
|
|
CPacketMgr::GetInstance()->SendGameAdmin(PktAdminMgr::PktGameAdmin::REG,
|
|
dwServerGroup, _ttol(m_strRegAdminUID), m_ctrlNewAdminLV.GetCurSel() + 1, szStartIP, szEndIP);
|
|
#endif
|
|
CPacketMgr::GetInstance()->SendGameAdmin(PktAdminMgr::PktGameAdmin::REG,
|
|
dwServerGroup, _ttol(m_strRegAdminUID), m_ctrlNewAdminLV.GetCurSel() + 1, szStartIP, szEndIP);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnBnClickedGamAdminsearchBtn()
|
|
{
|
|
if(CB_ERR != m_ctrlGAMServerCb2.GetCurSel())
|
|
{
|
|
m_ctrlGAdminList.DeleteAllItems();
|
|
|
|
unsigned long dwServerGroup;
|
|
CString strGroupName;
|
|
|
|
m_ctrlGAMServerCb2.GetLBText(m_ctrlGAMServerCb2.GetCurSel(), strGroupName);
|
|
CCharacterDoc::GetInstance().GetServerIndex(strGroupName, dwServerGroup);
|
|
|
|
CPacketMgr::GetInstance()->SendGameAdmin(PktAdminMgr::PktGameAdmin::SEARCH, dwServerGroup);
|
|
|
|
m_strSearchedGroup.Format(_T("%s"), strGroupName);
|
|
UpdateData(false);
|
|
}
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnGamAdminedit()
|
|
{
|
|
if(m_ctrlGAdminList.GetSelectedCount() == 1)
|
|
{
|
|
int Index = m_ctrlGAdminList.GetNextItem(-1, LVIS_SELECTED);
|
|
|
|
CGAdminInfoEditDlg dlg(m_strSearchedGroup, m_ctrlGAdminList.GetItemText(Index, 0));
|
|
dlg.DoModal();
|
|
}
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnGamAdmindel()
|
|
{
|
|
if(m_ctrlGAdminList.GetSelectedCount() == 1)
|
|
{
|
|
UpdateData(true);
|
|
|
|
unsigned long dwServerGroup;
|
|
CCharacterDoc::GetInstance().GetServerIndex(m_strSearchedGroup, dwServerGroup);
|
|
|
|
int Index = m_ctrlGAdminList.GetNextItem(-1, LVIS_SELECTED);
|
|
unsigned long dwUID = _ttol(m_ctrlGAdminList.GetItemText(Index, 0));
|
|
|
|
CPacketMgr::GetInstance()->SendGameAdmin(PktAdminMgr::PktGameAdmin::DEL, dwServerGroup, dwUID);
|
|
}
|
|
}
|
|
|
|
void CGAdminManagementDlg::ReFreshGameAdminList()
|
|
{
|
|
OnBnClickedGamAdminsearchBtn();
|
|
}
|
|
|
|
BOOL CGAdminManagementDlg::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
if((WM_KEYDOWN == pMsg->message) && (VK_RETURN == pMsg->wParam))
|
|
{
|
|
if(pMsg->hwnd == GetDlgItem(IDC_GAM_UID_EDIT)->m_hWnd
|
|
|| pMsg->hwnd == GetDlgItem(IDC_GAM_LIMITIPEND_IP)->m_hWnd)
|
|
{
|
|
OnBnClickedGamAdminregBtn();
|
|
}
|
|
}
|
|
|
|
return CDialog::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnOK()
|
|
{
|
|
//CDialog::OnOK();
|
|
}
|
|
|
|
void CGAdminManagementDlg::SortListWndItem(CListCtrl* pListCtrl, const int iCol)
|
|
{
|
|
CListCtrlSortClass SortClass(pListCtrl,iCol);
|
|
|
|
switch(m_iSortListItem)
|
|
{
|
|
case SORT_TYPE::UID:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::LV:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::IP_S:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::IP_E:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CGAdminManagementDlg::OnLvnColumnclickGamAdminList(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_ctrlGAdminList, m_iSortListItem);
|
|
|
|
*pResult = 0;
|
|
}
|