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>
300 lines
9.1 KiB
C++
300 lines
9.1 KiB
C++
// GuildSearchDlg.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AdminToolClient.h"
|
|
#include "GuildSearchDlg.h"
|
|
|
|
#include "GlobalFunctions.h"
|
|
|
|
#include "PacketManager.h"
|
|
#include "WindowMgr.h"
|
|
|
|
#include <Network/Protocol/RYL_AdminMgrProtocol.h>
|
|
#include "CharacterDoc.h"
|
|
|
|
#include "AdminClientConstants.h"
|
|
|
|
#include "ListCtrlSortClass.h"
|
|
|
|
#include "GuildMainDlg.h"
|
|
#include ".\guildsearchdlg.h"
|
|
|
|
|
|
// CGuildSearchDlg 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CGuildSearchDlg, CDialog)
|
|
CGuildSearchDlg::CGuildSearchDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CGuildSearchDlg::IDD, pParent)
|
|
, m_bAllGroupChk(TRUE)
|
|
, m_strSearchValue(_T(""))
|
|
, m_dwSearchCount(0)
|
|
, m_bSortListAsc(false)
|
|
, m_dwSelCount(0)
|
|
{
|
|
INSERT_WINDOW(IDD_GUILDSEARCH_DLG, static_cast<CWnd*>(this));
|
|
}
|
|
|
|
CGuildSearchDlg::~CGuildSearchDlg()
|
|
{
|
|
ERASE_WINDOW(IDD_GUILDSEARCH_DLG);
|
|
}
|
|
|
|
void CGuildSearchDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_GUILDSEARCH_SERVERGROUP_CB, m_ctrlServerGroupCb);
|
|
DDX_Control(pDX, IDC_GUILDSEARCH_SEARCHCONDITION_CB, m_ctrlSearchConditionCb);
|
|
DDX_Check(pDX, IDC_GUILSEARCH_SERVERGROUP_CHK, m_bAllGroupChk);
|
|
DDX_Text(pDX, IDC_GUILDSEARCH_SEARCHVALUE_EDIT, m_strSearchValue);
|
|
DDX_Control(pDX, IDC_GUILDSEARCH_SEARCHED_LIST, m_ctrlGuildSearchList);
|
|
DDX_Text(pDX, IDC_GUILDSEARCH_SEARCHCOUNT, m_dwSearchCount);
|
|
DDX_Text(pDX, IDC_GUILDSEARCH_SELCOUNT, m_dwSelCount);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CGuildSearchDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_GUILDSEARCH_SEARCH_BTN, OnBnClickedGuildSearch)
|
|
ON_BN_CLICKED(IDC_GUILSEARCH_SERVERGROUP_CHK, OnBnClickedAllGroupChk)
|
|
ON_NOTIFY(LVN_COLUMNCLICK, IDC_GUILDSEARCH_SEARCHED_LIST, OnLvnColumnclickSearchedList)
|
|
ON_NOTIFY(NM_DBLCLK, IDC_GUILDSEARCH_SEARCHED_LIST, OnNMDblclkSearchedList)
|
|
ON_NOTIFY(LVN_ITEMCHANGED, IDC_GUILDSEARCH_SEARCHED_LIST, OnLvnItemchangedGuildsearchSearchedList)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CGuildSearchDlg 메시지 처리기입니다.
|
|
|
|
BOOL CGuildSearchDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
ServerGroupComboSet(m_ctrlServerGroupCb);
|
|
|
|
m_ctrlSearchConditionCb.InsertString(0, _T("GID"));
|
|
m_ctrlSearchConditionCb.InsertString(1, _T("Name"));
|
|
|
|
m_ctrlGuildSearchList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
|
|
m_ctrlGuildSearchList.InsertColumn(0, _T("GID"), LVCFMT_LEFT, 65);
|
|
m_ctrlGuildSearchList.InsertColumn(1, GetLocalString("ADDED_STRING_001"), LVCFMT_LEFT, 80);
|
|
m_ctrlGuildSearchList.InsertColumn(2, GetLocalString("SERVER_GROUP"), LVCFMT_LEFT, 80);
|
|
m_ctrlGuildSearchList.InsertColumn(3, GetLocalString("NATION"), LVCFMT_LEFT, 80);
|
|
m_ctrlGuildSearchList.InsertColumn(4, GetLocalString("GUILD_NAME"), LVCFMT_LEFT, 105);
|
|
m_ctrlGuildSearchList.InsertColumn(5, GetLocalString("FAME"), LVCFMT_LEFT, 95);
|
|
m_ctrlGuildSearchList.InsertColumn(6, _T("Level"), LVCFMT_LEFT, 43);
|
|
m_ctrlGuildSearchList.InsertColumn(7, GetLocalString("MEMBER_NUM"), LVCFMT_LEFT, 90);
|
|
m_ctrlGuildSearchList.InsertColumn(8, _T("Gold"), LVCFMT_LEFT, 110);
|
|
|
|
SetWindowText(GetLocalString("IDD_GUILDSEARCH_DLG"));
|
|
|
|
SetUIString(this->m_hWnd, IDC_GUILSEARCH_SERVERGROUP_CHK, "IDC_GUILSEARCH_SERVERGROUP_CHK");
|
|
SetUIString(this->m_hWnd, IDC_GUILDSEARCH_SEARCH_BTN, "IDC_GUILDSEARCH_SEARCH_BTN");
|
|
SetUIString(this->m_hWnd, IDC_GUILDSEARCH_01, "IDC_GUILDSEARCH_01");
|
|
SetUIString(this->m_hWnd, IDC_GUILDSEARCH_02, "IDC_GUILDSEARCH_02");
|
|
SetUIString(this->m_hWnd, IDC_GUILDSEARCH_03, "IDC_GUILDSEARCH_03");
|
|
SetUIString(this->m_hWnd, IDC_GUILDSEARCH_04, "IDC_GUILDSEARCH_04");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CGuildSearchDlg::OnBnClickedGuildSearch()
|
|
{
|
|
UpdateData(true);
|
|
|
|
unsigned char cSearchType = PktAdminMgr::PktGuildSearch::NONE;
|
|
unsigned long dwServerGroup = 0;
|
|
TCHAR szSearchValue[MAX_PATH];
|
|
|
|
bool bAllGroupSerchFlag = false;
|
|
|
|
if(m_bAllGroupChk)
|
|
{
|
|
bAllGroupSerchFlag = true;
|
|
|
|
if(0 == m_strSearchValue.GetLength())
|
|
{
|
|
cSearchType = PktAdminMgr::PktGuildSearch::ALLGROUP_ALLGUILD;
|
|
}
|
|
else
|
|
{
|
|
if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel())
|
|
Report(GetLocalString("MSG_0100"), CAUTION);
|
|
else if(m_ctrlSearchConditionCb.GetCurSel() == 0)
|
|
cSearchType = PktAdminMgr::PktGuildSearch::ALLGROUP_SPEGUILD_GID;
|
|
else if(m_ctrlSearchConditionCb.GetCurSel() == 1)
|
|
cSearchType = PktAdminMgr::PktGuildSearch::ALLGROUP_SPEGUILD_NAME;
|
|
}
|
|
}
|
|
else if(CB_ERR != m_ctrlServerGroupCb.GetCurSel())
|
|
{
|
|
CString strGroupName;
|
|
m_ctrlServerGroupCb.GetLBText(m_ctrlServerGroupCb.GetCurSel(), strGroupName);
|
|
CCharacterDoc::GetInstance().GetServerIndex(strGroupName, dwServerGroup);
|
|
|
|
if(0 == m_strSearchValue.GetLength())
|
|
cSearchType = PktAdminMgr::PktGuildSearch::SPEGROUP_ALLGUILD;
|
|
else
|
|
{
|
|
if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel())
|
|
Report(GetLocalString("MSG_0100"), CAUTION);
|
|
else if(m_ctrlSearchConditionCb.GetCurSel() == 0)
|
|
cSearchType = PktAdminMgr::PktGuildSearch::SPEGROUP_SPEGUILD_GID;
|
|
else if(m_ctrlSearchConditionCb.GetCurSel() == 1)
|
|
cSearchType = PktAdminMgr::PktGuildSearch::SPEGROUP_SPEGUILD_NAME;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Report(GetLocalString("MSG_0101"), CAUTION);
|
|
}
|
|
|
|
if(PktAdminMgr::PktGuildSearch::NONE != cSearchType)
|
|
{
|
|
m_ctrlGuildSearchList.DeleteAllItems();
|
|
|
|
_tcsncpy(szSearchValue, m_strSearchValue, m_strSearchValue.GetLength());
|
|
szSearchValue[m_strSearchValue.GetLength()] = '\0';
|
|
|
|
if(bAllGroupSerchFlag)
|
|
{
|
|
for(unsigned long dwGroupIndex = 0; dwGroupIndex < CON::MAX_GROUP_NUM; dwGroupIndex++)
|
|
CPacketMgr::GetInstance()->SendGuildSearch(cSearchType, dwGroupIndex, szSearchValue);
|
|
|
|
m_dwSearchCount = 0;
|
|
UpdateData(false);
|
|
}
|
|
else
|
|
{
|
|
CPacketMgr::GetInstance()->SendGuildSearch(cSearchType, dwServerGroup, szSearchValue);
|
|
|
|
m_dwSearchCount = 0;
|
|
UpdateData(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CGuildSearchDlg::OnBnClickedAllGroupChk()
|
|
{
|
|
UpdateData(true);
|
|
m_ctrlServerGroupCb.EnableWindow(!m_bAllGroupChk);
|
|
}
|
|
|
|
BOOL CGuildSearchDlg::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
if((WM_KEYDOWN == pMsg->message) && (VK_RETURN == pMsg->wParam))
|
|
{
|
|
if(pMsg->hwnd == GetDlgItem(IDC_GUILDSEARCH_SEARCHVALUE_EDIT)->m_hWnd)
|
|
{
|
|
OnBnClickedGuildSearch();
|
|
}
|
|
}
|
|
return CDialog::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
void CGuildSearchDlg::OnLvnColumnclickSearchedList(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_ctrlGuildSearchList, m_iSortListItem);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CGuildSearchDlg::SortListWndItem(CListCtrl* pListCtrl, const int iCol)
|
|
{
|
|
CListCtrlSortClass SortClass(pListCtrl,iCol);
|
|
|
|
switch(m_iSortListItem)
|
|
{
|
|
case SORT_TYPE::GID:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::GROUP:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::NATION:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::NAME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRINGNOCASE);
|
|
break;
|
|
case SORT_TYPE::FAME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::LEVEL:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::MEMBER_NUM:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::GOLD:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CGuildSearchDlg::OnOK()
|
|
{
|
|
//CDialog::OnOK();
|
|
}
|
|
|
|
void CGuildSearchDlg::OnNMDblclkSearchedList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
if(0 < m_ctrlGuildSearchList.GetSelectedCount())
|
|
{
|
|
int Index = m_ctrlGuildSearchList.GetNextItem(-1, LVIS_SELECTED);
|
|
if(-1 != Index)
|
|
{
|
|
TCHAR szValue[m_stSelGuildInfo.MAX_STRING];
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 0, szValue, sizeof(szValue));
|
|
m_stSelGuildInfo.m_dwGID = _ttol(szValue);
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 2, szValue, sizeof(szValue));
|
|
_tcsncpy(m_stSelGuildInfo.m_szServerGroupName, szValue, m_stSelGuildInfo.MAX_STRING);
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 3, szValue, sizeof(szValue));
|
|
_tcsncpy(m_stSelGuildInfo.m_szNation, szValue, m_stSelGuildInfo.MAX_STRING);
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 4, szValue, sizeof(szValue));
|
|
_tcsncpy(m_stSelGuildInfo.m_szGuildName, szValue, m_stSelGuildInfo.MAX_STRING);
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 5, szValue, sizeof(szValue));
|
|
m_stSelGuildInfo.m_dwFame = _ttol(szValue);
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 6, szValue, sizeof(szValue));
|
|
m_stSelGuildInfo.m_nLevel = _ttoi(szValue);
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 7, szValue, sizeof(szValue));
|
|
m_stSelGuildInfo.m_nMemberNum = _ttoi(szValue);
|
|
|
|
m_ctrlGuildSearchList.GetItemText(Index, 8, szValue, sizeof(szValue));
|
|
m_stSelGuildInfo.m_dwGold = _ttol(szValue);
|
|
|
|
CGuildMainDlg dlg(m_stSelGuildInfo);
|
|
dlg.DoModal();
|
|
}
|
|
}
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CGuildSearchDlg::OnLvnItemchangedGuildsearchSearchedList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
|
|
|
m_dwSelCount = m_ctrlGuildSearchList.GetSelectedCount();
|
|
|
|
UpdateData(false);
|
|
|
|
*pResult = 0;
|
|
} |