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>
221 lines
6.5 KiB
C++
221 lines
6.5 KiB
C++
// GMLogMsgDlg.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AdminToolClient.h"
|
|
#include "GMLogMsgDlg.h"
|
|
#include "WindowMgr.h"
|
|
#include "GlobalFunctions.h"
|
|
#include "PacketManager.h"
|
|
#include "CharacterDoc.h"
|
|
#include "ListCtrlSortClass.h"
|
|
#include "DetailInfoDlg.h"
|
|
|
|
|
|
// CGMLogMsgDlg 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CGMLogMsgDlg, CDialog)
|
|
CGMLogMsgDlg::CGMLogMsgDlg(DLG_TYPE eDlgType, DlgOwnerInfo& stInfo, CWnd* pParent /*=NULL*/)
|
|
: CDialog(CGMLogMsgDlg::IDD, pParent)
|
|
, m_bSortListAsc(false)
|
|
{
|
|
INSERT_WINDOW(IDD_GMLOGMSGDLG, static_cast<CWnd*>(this));
|
|
|
|
m_stDlgOwnerInfo.m_dwUID = stInfo.m_dwUID;
|
|
m_stDlgOwnerInfo.m_dwCID = stInfo.m_dwCID;
|
|
m_stDlgOwnerInfo.m_dwServerGroup = stInfo.m_dwServerGroup;
|
|
|
|
m_eDlgType = eDlgType;
|
|
}
|
|
|
|
CGMLogMsgDlg::~CGMLogMsgDlg()
|
|
{
|
|
ERASE_WINDOW(IDD_GMLOGMSGDLG);
|
|
}
|
|
|
|
void CGMLogMsgDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_GMLOGMSG_LIST, m_ctrlGMLogMsgList);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CGMLogMsgDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_GMLOG_ADD, OnBnClickedGmlogAdd)
|
|
ON_BN_CLICKED(IDC_GMLOG_DEL, OnBnClickedGmlogDel)
|
|
ON_NOTIFY(LVN_COLUMNCLICK, IDC_GMLOGMSG_LIST, OnLvnColumnclickGmlogmsgList)
|
|
ON_BN_CLICKED(IDC_GMLOG_CLIPPING_BTN, OnBnClickedGmlogClippingBtn)
|
|
ON_NOTIFY(NM_DBLCLK, IDC_GMLOGMSG_LIST, OnNMDblclkGmlogmsgList)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CGMLogMsgDlg 메시지 처리기입니다.
|
|
|
|
BOOL CGMLogMsgDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_ctrlGMLogMsgList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
m_ctrlGMLogMsgList.InsertColumn(0, GetLocalString("ADDED_STRING_051"), LVCFMT_LEFT, 50);
|
|
m_ctrlGMLogMsgList.InsertColumn(1, GetLocalString("EDIT_TIME"), LVCFMT_LEFT, 140);
|
|
m_ctrlGMLogMsgList.InsertColumn(2, GetLocalString("ADDED_STRING_050"), LVCFMT_LEFT, 150);
|
|
m_ctrlGMLogMsgList.InsertColumn(3, GetLocalString("ADMIN_ID"), LVCFMT_LEFT, 100);
|
|
|
|
CString strTitle;
|
|
strTitle = GetLocalString("ADDED_STRING_046");
|
|
|
|
if (UID_LOG_TYPE == m_eDlgType)
|
|
{
|
|
strTitle.AppendFormat(" (UID: %u)", m_stDlgOwnerInfo.m_dwUID);
|
|
|
|
SetDlgItemInt(IDC_GMLOG_UID_EDIT, (int)m_stDlgOwnerInfo.m_dwUID, false);
|
|
SetDlgItemText(IDC_GMLOG_SERVER_EDIT, "none");
|
|
SetDlgItemInt(IDC_GMLOG_CID_EDIT, 0, false);
|
|
|
|
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_SELECT,
|
|
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID);
|
|
}
|
|
else if (CID_LOG_TYPE == m_eDlgType)
|
|
{
|
|
strTitle.AppendFormat(" (CID: %u)", m_stDlgOwnerInfo.m_dwCID);
|
|
|
|
CString strServerName;
|
|
CCharacterDoc::GetInstance().GetServerName(m_stDlgOwnerInfo.m_dwServerGroup, strServerName);
|
|
|
|
SetDlgItemInt(IDC_GMLOG_UID_EDIT, (int)m_stDlgOwnerInfo.m_dwUID, false);
|
|
SetDlgItemText(IDC_GMLOG_SERVER_EDIT, strServerName);
|
|
SetDlgItemInt(IDC_GMLOG_CID_EDIT, (int)m_stDlgOwnerInfo.m_dwCID, false);
|
|
|
|
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_SELECT,
|
|
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID, m_stDlgOwnerInfo.m_dwCID);
|
|
}
|
|
|
|
SetUIString(this->m_hWnd, IDC_GMLOG_LIST_GROUP, "ADDED_STRING_048");
|
|
SetUIString(this->m_hWnd, IDC_GMLOG_ADD_GROUP, "ADDED_STRING_049");
|
|
SetUIString(this->m_hWnd, IDC_GMLOG_GROUP_STATIC, "IDC_CHARRESTORE_03");
|
|
SetUIString(this->m_hWnd, IDC_GMLOG_ADD_GROUP, "ADDED_STRING_049");
|
|
SetUIString(this->m_hWnd, IDC_GMLOG_ADD, "IDC_DROPCONTROL_ADDITEM_BTN");
|
|
SetUIString(this->m_hWnd, IDC_GMLOG_CLIPPING_BTN, "IDC_BILLLOG_TO_CLIP_BTN");
|
|
SetUIString(this->m_hWnd, IDC_GMLOG_DEL, "ADDED_STRING_052");
|
|
|
|
SetWindowText(strTitle);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool CGMLogMsgDlg::InsertGMLogMsgList(PktAdminMgr::PktGMLogMsg* lpData)
|
|
{
|
|
if (NULL == lpData)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
CString strForFormat;
|
|
int nInsertIndex = m_ctrlGMLogMsgList.GetItemCount();
|
|
|
|
strForFormat.Format(_T("%u"), lpData->m_dwLogID);
|
|
m_ctrlGMLogMsgList.InsertItem(nInsertIndex, strForFormat);
|
|
|
|
strForFormat.Format(_T("%s"), lpData->m_szEditDate);
|
|
m_ctrlGMLogMsgList.SetItemText(nInsertIndex, 1, strForFormat);
|
|
|
|
strForFormat.Format(_T("%s"), lpData->m_szLogMsg);
|
|
m_ctrlGMLogMsgList.SetItemText(nInsertIndex, 2, strForFormat);
|
|
|
|
strForFormat.Format(_T("%s"), lpData->m_szAdminID);
|
|
m_ctrlGMLogMsgList.SetItemText(nInsertIndex, 3, strForFormat);
|
|
|
|
return true;
|
|
}
|
|
|
|
void CGMLogMsgDlg::OnBnClickedGmlogAdd()
|
|
{
|
|
CString strMsg;
|
|
GetDlgItemText(IDC_GMLOG_ADDLOG_EDIT, strMsg);
|
|
|
|
if (false == strMsg.IsEmpty() && strMsg.GetLength() < PktAdminMgr::MAX_LOG)
|
|
{
|
|
|
|
char szMsg[PktAdminMgr::MAX_LOG];
|
|
_snprintf(szMsg, PktAdminMgr::MAX_LOG, "%s", strMsg);
|
|
|
|
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_INSERT,
|
|
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID, m_stDlgOwnerInfo.m_dwCID, 0, szMsg);
|
|
}
|
|
else
|
|
{
|
|
Report(GetLocalString("ADDED_STRING_047"), CAUTION);
|
|
}
|
|
}
|
|
|
|
void CGMLogMsgDlg::OnBnClickedGmlogDel()
|
|
{
|
|
if (1 == m_ctrlGMLogMsgList.GetSelectedCount())
|
|
{
|
|
int nIndex = m_ctrlGMLogMsgList.GetNextItem(-1, LVIS_SELECTED);
|
|
unsigned long dwLogID = atol(m_ctrlGMLogMsgList.GetItemText(nIndex, 0));
|
|
|
|
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_DELETE,
|
|
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID, m_stDlgOwnerInfo.m_dwCID, dwLogID);
|
|
}
|
|
}
|
|
|
|
void CGMLogMsgDlg::OnLvnColumnclickGmlogmsgList(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_ctrlGMLogMsgList, m_iSortListItem);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CGMLogMsgDlg::SortListWndItem(CListCtrl* lpListCtrl, const int iCol)
|
|
{
|
|
CListCtrlSortClass SortClass(lpListCtrl, iCol);
|
|
|
|
switch(m_iSortListItem)
|
|
{
|
|
case SORT_TYPE::LOGID:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::EDITDATE:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::LOGMSG:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::ADMINID:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CGMLogMsgDlg::OnBnClickedGmlogClippingBtn()
|
|
{
|
|
ClippingListCtrl(m_ctrlGMLogMsgList, 4, true);
|
|
}
|
|
|
|
void CGMLogMsgDlg::OnNMDblclkGmlogmsgList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
if (1 == m_ctrlGMLogMsgList.GetSelectedCount())
|
|
{
|
|
int nIndex = m_ctrlGMLogMsgList.GetNextItem(-1, LVIS_SELECTED);
|
|
CString strMsg = m_ctrlGMLogMsgList.GetItemText(nIndex, 2);
|
|
|
|
CDetailInfoDlg dlg(strMsg);
|
|
dlg.DoModal();
|
|
}
|
|
|
|
*pResult = 0;
|
|
}
|