// CastleSearch.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "CastleSearchDlg.h" #include ".\castlesearchDlg.h" #include "CharacterDoc.h" #include "GlobalFunctions.h" #include "PacketManager.h" #include "WindowMgr.h" #include #include #include "AdminClientConstants.h" #include "ListCtrlSortClass.h" #include "CastleCreatureDlg.h" // CCastleSearch ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CCastleSearchDlg, CDialog) CCastleSearchDlg::CCastleSearchDlg(CWnd* pParent /*=NULL*/) : CDialog(CCastleSearchDlg::IDD, pParent) , m_dwSearchCount(0) , m_dwSelCount(0) , m_bAllServerGroupChk(TRUE) , m_bAllZoneGroupChk(TRUE) , m_strSearchValue(_T("")) { INSERT_WINDOW(IDD_CASTLESEARCHDLG, static_cast(this)); } CCastleSearchDlg::~CCastleSearchDlg() { ERASE_WINDOW(IDD_CASTLESEARCHDLG); } void CCastleSearchDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDCCASTLESEARCH_SEARCHED_LIST, m_ctrlSearchedList); DDX_Text(pDX, IDC_CASTLESEARCH_SEARCHCOUNT, m_dwSearchCount); DDX_Text(pDX, IDC_CASTLESEARCH_SELCOUNT, m_dwSelCount); DDX_Check(pDX, IDC_CASTLESEARCH_SERVERGROUP_CHK, m_bAllServerGroupChk); DDX_Check(pDX, IDC_CASTLESEARCH_ZONEGROUP_CHK, m_bAllZoneGroupChk); DDX_Text(pDX, IDC_CASTLESEARCH_SEARCHVALUE_EDIT, m_strSearchValue); DDX_Control(pDX, IDC_CASTLESEARCH_SERVERGROUP_CB, m_ctrlServerGroupCb); DDX_Control(pDX, IDC_CASTLESEARCH_ZONEGROUP_CB, m_ctrlZoneGroupCb); DDX_Control(pDX, IDC_CASTLESEARCH_SEARCHCONDITION_CB, m_ctrlSearchConditionCb); } BEGIN_MESSAGE_MAP(CCastleSearchDlg, CDialog) ON_BN_CLICKED(IDC_CASTLESEARCH_SERVERGROUP_CHK, OnBnClickedCastlesearchServergroupChk) ON_BN_CLICKED(IDC_CASTLESEARCH_ZONEGROUP_CHK, OnBnClickedCastlesearchZonegroupChk) ON_BN_CLICKED(IDC_CASTLESEARCH_SEARCH_BTN, OnBnClickedCastlesearchSearchBtn) ON_NOTIFY(LVN_COLUMNCLICK, IDCCASTLESEARCH_SEARCHED_LIST, OnLvnColumnclickSearchedList) ON_NOTIFY(NM_DBLCLK, IDCCASTLESEARCH_SEARCHED_LIST, OnNMDblclkSearchedList) ON_NOTIFY(LVN_ITEMCHANGED, IDCCASTLESEARCH_SEARCHED_LIST, OnLvnItemchangedSearchedList) END_MESSAGE_MAP() // CCastleSearch ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CCastleSearchDlg::OnInitDialog() { CDialog::OnInitDialog(); ServerGroupComboSet(m_ctrlServerGroupCb); m_ctrlSearchConditionCb.InsertString(0, _T("CastleID")); m_ctrlSearchedList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB); m_ctrlSearchedList.InsertColumn(0, GetLocalString("ADDED_STRING_188"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(1, GetLocalString("ADDED_STRING_189"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(2, GetLocalString("ADDED_STRING_190"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(3, GetLocalString("ADDED_STRING_191"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(4, GetLocalString("ADDED_STRING_192"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(5, GetLocalString("ADDED_STRING_193"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(6, GetLocalString("ADDED_STRING_194"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(7, GetLocalString("ADDED_STRING_195"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(8, GetLocalString("ADDED_STRING_196"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(9, GetLocalString("ADDED_STRING_197"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(10, GetLocalString("ADDED_STRING_198"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(11, GetLocalString("ADDED_STRING_199"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(12, GetLocalString("ADDED_STRING_200"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(13, GetLocalString("ADDED_STRING_201"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(14, GetLocalString("ADDED_STRING_202"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(15, GetLocalString("ADDED_STRING_203"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(16, GetLocalString("ADDED_STRING_204"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(17, GetLocalString("ADDED_STRING_205"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(18, GetLocalString("ADDED_STRING_206"), LVCFMT_LEFT, 65); SetWindowText(GetLocalString("ADDED_STRING_207")); CComboBox* lpZoneCb = static_cast(GetDlgItem(IDC_CASTLESEARCH_ZONEGROUP_CB)); for(int nIndex = 0; nIndex < SERVER_ID::MAX_ZONE_NUM; ++nIndex) { lpZoneCb->InsertString(nIndex, GetZoneString(nIndex)); } SetUIString(this->m_hWnd, IDC_CASTLESEARCH_SERVERGROUP_CHK, "ADDED_STRING_208"); SetUIString(this->m_hWnd, IDC_CASTLESEARCH_ZONEGROUP_CHK, "ADDED_STRING_209"); SetUIString(this->m_hWnd, IDC_CASTLESEARCH_SEARCH_BTN, "ADDED_STRING_210"); SetUIString(this->m_hWnd, IDC_CASTLESEARCH_01, "ADDED_STRING_211"); SetUIString(this->m_hWnd, IDC_CASTLESEARCH_02, "ADDED_STRING_212"); SetUIString(this->m_hWnd, IDC_CASTLESEARCH_03, "ADDED_STRING_213"); SetUIString(this->m_hWnd, IDC_CASTLESEARCH_04, "ADDED_STRING_214"); return TRUE; } BOOL CCastleSearchDlg::PreTranslateMessage(MSG* pMsg) { if((WM_KEYDOWN == pMsg->message) && (VK_RETURN == pMsg->wParam)) { if(pMsg->hwnd == GetDlgItem(IDC_CASTLESEARCH_SEARCHVALUE_EDIT)->m_hWnd) { OnBnClickedCastlesearchSearchBtn(); } } return CDialog::PreTranslateMessage(pMsg); } void CCastleSearchDlg::OnBnClickedCastlesearchServergroupChk() { UpdateData(true); m_ctrlServerGroupCb.EnableWindow(!m_bAllServerGroupChk); } void CCastleSearchDlg::OnBnClickedCastlesearchZonegroupChk() { UpdateData(true); m_ctrlZoneGroupCb.EnableWindow(!m_bAllZoneGroupChk); } void CCastleSearchDlg::OnBnClickedCastlesearchSearchBtn() { UpdateData(true); unsigned char cSearchType = PktAdminMgr::PktCastleSearch::NONE; unsigned long dwServerGroup = 0; unsigned long dwZoneGroup = 0; TCHAR szSearchValue[MAX_PATH]; bool bAllServerGroupSerchFlag = false; bool bAllZoneGroupSerchFlag = false; if(m_bAllServerGroupChk && m_bAllZoneGroupChk) { bAllServerGroupSerchFlag = true; bAllZoneGroupSerchFlag = true; if(0 == m_strSearchValue.GetLength()) { cSearchType = PktAdminMgr::PktCastleSearch::ALLSERVER_ALLZONE_ALLCASTLE; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktCastleSearch::ALLSERVER_ALLZONE_SPECASTLE_ID; } } else if(m_bAllServerGroupChk && CB_ERR != m_ctrlZoneGroupCb.GetCurSel()) { bAllServerGroupSerchFlag = true; dwZoneGroup = m_ctrlZoneGroupCb.GetCurSel(); if(0 == m_strSearchValue.GetLength()) { cSearchType = PktAdminMgr::PktCastleSearch::ALLSERVER_SPEZONE_ALLCASTLE; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktCastleSearch::ALLSERVER_SPEZONE_SPECASTLE_ID; } } else if(m_bAllZoneGroupChk && CB_ERR != m_ctrlServerGroupCb.GetCurSel()) { bAllZoneGroupSerchFlag = true; CString strGroupName; m_ctrlServerGroupCb.GetLBText(m_ctrlServerGroupCb.GetCurSel(), strGroupName); CCharacterDoc::GetInstance().GetServerIndex(strGroupName, dwServerGroup); if(0 == m_strSearchValue.GetLength()) { cSearchType = PktAdminMgr::PktCastleSearch::SPESERVER_ALLZONE_ALLCASTLE; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktCastleSearch::SPESERVER_ALLZONE_SPECASTLE_ID; } } else if(!m_bAllServerGroupChk && !m_bAllZoneGroupChk && CB_ERR != m_ctrlServerGroupCb.GetCurSel() && CB_ERR != m_ctrlZoneGroupCb.GetCurSel() ) { CString strGroupName; m_ctrlServerGroupCb.GetLBText(m_ctrlServerGroupCb.GetCurSel(), strGroupName); CCharacterDoc::GetInstance().GetServerIndex(strGroupName, dwServerGroup); dwZoneGroup = m_ctrlZoneGroupCb.GetCurSel(); if(0 == m_strSearchValue.GetLength()) { cSearchType = PktAdminMgr::PktCastleSearch::SPESERVER_SPEZONE_ALLCASTLE; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktCastleSearch::SPESERVER_SPEZONE_SPECASTLE_ID; } } else { Report(GetLocalString("ADDED_STRING_215"), CAUTION); } if(PktAdminMgr::PktCastleSearch::NONE != cSearchType) { m_ctrlSearchedList.DeleteAllItems(); _tcsncpy(szSearchValue, m_strSearchValue, m_strSearchValue.GetLength()); szSearchValue[m_strSearchValue.GetLength()] = '\0'; if(bAllServerGroupSerchFlag && bAllZoneGroupSerchFlag) { for(unsigned long dwServerGroup = 0; dwServerGroup < CON::MAX_GROUP_NUM; dwServerGroup++) for(unsigned long dwZoneGroup = 0; dwZoneGroup < SERVER_ID::MAX_ZONE_NUM; dwZoneGroup++) CPacketMgr::GetInstance()->SendCastleSearch(cSearchType, dwServerGroup, dwZoneGroup, szSearchValue); m_dwSearchCount = 0; UpdateData(false); } else if(bAllServerGroupSerchFlag) { for(unsigned long dwServerGroup = 0; dwServerGroup < CON::MAX_GROUP_NUM; dwServerGroup++) CPacketMgr::GetInstance()->SendCastleSearch(cSearchType, dwServerGroup, dwZoneGroup, szSearchValue); m_dwSearchCount = 0; UpdateData(false); } else if(bAllZoneGroupSerchFlag) { for(unsigned long dwZoneGroup = 0; dwZoneGroup < SERVER_ID::MAX_ZONE_NUM; dwZoneGroup++) CPacketMgr::GetInstance()->SendCastleSearch(cSearchType, dwServerGroup, dwZoneGroup, szSearchValue); m_dwSearchCount = 0; UpdateData(false); } else { CPacketMgr::GetInstance()->SendCastleSearch(cSearchType, dwServerGroup, dwZoneGroup, szSearchValue); m_dwSearchCount = 0; UpdateData(false); } } } void CCastleSearchDlg::OnLvnColumnclickSearchedList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); if(pNMLV->iSubItem == m_iSortListItem) { m_bSortListAsc = !m_bSortListAsc; } else { m_iSortListItem = pNMLV->iSubItem; m_bSortListAsc = true; } SortListWndItem(&m_ctrlSearchedList, m_iSortListItem); *pResult = 0; } void CCastleSearchDlg::SortListWndItem(CListCtrl* pListCtrl, const int iCol) { CListCtrlSortClass SortClass(pListCtrl,iCol); switch(m_iSortListItem) { case SORT_TYPE::ServerGroup: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::CastleID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::Nation: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::Zone: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::Channel: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::Name: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::SiegeCount: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::InvincibleCount: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::TotalSiegeCount: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::TotalTaxMoney: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::Right: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::PosInX: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::PosInY: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::PosInZ: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::PosOutX: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::PosOutY: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::PosOutZ: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::ItemID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::ItemNum: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; } } void CCastleSearchDlg::OnNMDblclkSearchedList(NMHDR *pNMHDR, LRESULT *pResult) { if(0 < m_ctrlSearchedList.GetSelectedCount()) { int Index = m_ctrlSearchedList.GetNextItem(-1, LVIS_SELECTED); if(-1 != Index) { TCHAR szValue[m_stSelCastleInfo.MAX_STRING]; unsigned long dwServerGroup; unsigned long dwCastleID; m_ctrlSearchedList.GetItemText(Index, 0, szValue, sizeof(szValue)); CCharacterDoc::GetInstance().GetServerIndex(szValue, dwServerGroup); m_ctrlSearchedList.GetItemText(Index, 1, szValue, sizeof(szValue)); dwCastleID = atoi(szValue); CPacketMgr::GetInstance()->SendCastleCreature(dwServerGroup, dwCastleID); CCastleCreatureDlg castleCreatureDlg; castleCreatureDlg.DoModal(); } } *pResult = 0; } void CCastleSearchDlg::OnLvnItemchangedSearchedList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); m_dwSelCount = m_ctrlSearchedList.GetSelectedCount(); UpdateData(false); *pResult = 0; }