// FortInfoDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "GuildSearchDlg.h" #include "MiningCampDlg.h" #include "ShopCampPage.h" #include "GlobalFunctions.h" #include "PacketManager.h" #include "WindowMgr.h" #include #include #include #include "CharacterDoc.h" #include "AdminClientConstants.h" #include "ListCtrlSortClass.h" #include "FortInfoDlg.h" #include ".\guildsearchdlg.h" // CFortInfoDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CFortInfoDlg, CDialog) CFortInfoDlg::CFortInfoDlg(CWnd* pParent /*=NULL*/) : CDialog(CFortInfoDlg::IDD, pParent) , m_bAllServerGroupChk(TRUE) , m_bAllZoneGroupChk(TRUE) , m_strSearchValue(_T("")) , m_dwSelCount(0) , m_dwSearchCount(0) { INSERT_WINDOW(IDD_FORTINFODLG, static_cast(this)); } CFortInfoDlg::~CFortInfoDlg() { ERASE_WINDOW(IDD_FORTINFODLG); } void CFortInfoDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_FORTINFO_SERVERGROUP_CB, m_ctrlServerGroupCb); DDX_Control(pDX, IDC_FORTINFO_ZONEGROUP_CB, m_ctrlZoneGroupCb); DDX_Control(pDX, IDC_FORTINFO_SEARCHCONDITION_CB, m_ctrlSearchConditionCb); DDX_Control(pDX, IDC_FORTINFO_SEARCHED_LIST, m_ctrlSearchedList); DDX_Check(pDX, IDC_FORTINFO_SERVERGROUP_CHK, m_bAllServerGroupChk); DDX_Check(pDX, IDC_FORTINFO_ZONEGROUP_CHK, m_bAllZoneGroupChk); DDX_Text(pDX, IDC_FORTINFO_SEARCHVALUE_EDIT, m_strSearchValue); DDX_Text(pDX, IDC_FORTINFO_SELCOUNT, m_dwSelCount); DDX_Text(pDX, IDC_FORTINFO_SEARCHCOUNT, m_dwSearchCount); } BEGIN_MESSAGE_MAP(CFortInfoDlg, CDialog) ON_BN_CLICKED(IDC_FORTINFO_SERVERGROUP_CHK, OnBnClickedAllServergroupChk) ON_BN_CLICKED(IDC_FORTINFO_SEARCH_BTN, OnBnClickedSearch) ON_BN_CLICKED(IDC_FORTINFO_ZONEGROUP_CHK, OnBnClickedAllZonegroupChk) ON_NOTIFY(LVN_ITEMCHANGED, IDC_FORTINFO_SEARCHED_LIST, OnLvnItemchangedSearchedList) ON_NOTIFY(LVN_COLUMNCLICK, IDC_FORTINFO_SEARCHED_LIST, OnLvnColumnclickSearchedList) ON_NOTIFY(NM_DBLCLK, IDC_FORTINFO_SEARCHED_LIST, OnNMDblclkSearchedList) END_MESSAGE_MAP() BOOL CFortInfoDlg::OnInitDialog() { CDialog::OnInitDialog(); ServerGroupComboSet(m_ctrlServerGroupCb); m_ctrlSearchConditionCb.InsertString(0, _T("GID")); m_ctrlSearchConditionCb.InsertString(1, _T("Name")); m_ctrlSearchedList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB); m_ctrlSearchedList.InsertColumn(0, GetLocalString("ADDED_STRING_166"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(1, GetLocalString("ADDED_STRING_167"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(2, GetLocalString("ADDED_STRING_168"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(3, GetLocalString("ADDED_STRING_169"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(4, GetLocalString("ADDED_STRING_170"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(5, GetLocalString("ADDED_STRING_171"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(6, GetLocalString("ADDED_STRING_172"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(7, GetLocalString("ADDED_STRING_173"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(8, GetLocalString("ADDED_STRING_174"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(9, GetLocalString("ADDED_STRING_175"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(10, GetLocalString("ADDED_STRING_176"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(11, GetLocalString("ADDED_STRING_177"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(12, GetLocalString("ADDED_STRING_178"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(13, GetLocalString("ADDED_STRING_179"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(14, GetLocalString("ADDED_STRING_180"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(15, GetLocalString("ADDED_STRING_181"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(16, GetLocalString("ADDED_STRING_182"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(17, GetLocalString("ADDED_STRING_183"), LVCFMT_LEFT, 65); m_ctrlSearchedList.InsertColumn(18, GetLocalString("ADDED_STRING_184"), LVCFMT_LEFT, 65); SetWindowText(GetLocalString("ADDED_STRING_116")); CComboBox* lpZoneCb = static_cast(GetDlgItem(IDC_FORTINFO_ZONEGROUP_CB)); for(int nIndex = 0; nIndex < SERVER_ID::MAX_ZONE_NUM; ++nIndex) { lpZoneCb->InsertString(nIndex, GetZoneString(nIndex)); } SetUIString(this->m_hWnd, IDC_FORTINFO_SERVERGROUP_CHK, "IDC_GUILSEARCH_SERVERGROUP_CHK"); SetUIString(this->m_hWnd, IDC_FORTINFO_ZONEGROUP_CHK, "ADDED_STRING_117"); SetUIString(this->m_hWnd, IDC_FORTINFO_SEARCH_BTN, "IDC_GUILDSEARCH_SEARCH_BTN"); SetUIString(this->m_hWnd, IDC_FORTINFO_01, "ADDED_STRING_211"); SetUIString(this->m_hWnd, IDC_FORTINFO_02, "ADDED_STRING_212"); SetUIString(this->m_hWnd, IDC_FORTINFO_03, "ADDED_STRING_118"); SetUIString(this->m_hWnd, IDC_FORTINFO_04, "ADDED_STRING_119"); return TRUE; } void CFortInfoDlg::OnBnClickedSearch() { UpdateData(true); unsigned char cSearchType = PktAdminMgr::PktFortSearch::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::PktFortSearch::ALLSERVER_ALLZONE_ALLGUILD; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktFortSearch::ALLSERVER_ALLZONE_SPEGUILD_GID; else if(m_ctrlSearchConditionCb.GetCurSel() == 1) cSearchType = PktAdminMgr::PktFortSearch::ALLSERVER_ALLZONE_SPEGUILD_NAME; } } else if(m_bAllServerGroupChk && CB_ERR != m_ctrlZoneGroupCb.GetCurSel()) { bAllServerGroupSerchFlag = true; dwZoneGroup = m_ctrlZoneGroupCb.GetCurSel(); if(0 == m_strSearchValue.GetLength()) { cSearchType = PktAdminMgr::PktFortSearch::ALLSERVER_SPEZONE_ALLGUILD; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktFortSearch::ALLSERVER_SPEZONE_SPEGUILD_GID; else if(m_ctrlSearchConditionCb.GetCurSel() == 1) cSearchType = PktAdminMgr::PktFortSearch::ALLSERVER_SPEZONE_SPEGUILD_NAME; } } 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::PktFortSearch::SPESERVER_ALLZONE_ALLGUILD; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktFortSearch::SPESERVER_ALLZONE_SPEGUILD_GID; else if(m_ctrlSearchConditionCb.GetCurSel() == 1) cSearchType = PktAdminMgr::PktFortSearch::SPESERVER_ALLZONE_SPEGUILD_NAME; } } 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::PktFortSearch::SPESERVER_SPEZONE_ALLGUILD; } else { if(CB_ERR == m_ctrlSearchConditionCb.GetCurSel()) Report(GetLocalString("MSG_0100"), CAUTION); else if(m_ctrlSearchConditionCb.GetCurSel() == 0) cSearchType = PktAdminMgr::PktFortSearch::SPESERVER_SPEZONE_SPEGUILD_GID; else if(m_ctrlSearchConditionCb.GetCurSel() == 1) cSearchType = PktAdminMgr::PktFortSearch::SPESERVER_SPEZONE_SPEGUILD_NAME; } } else { Report(GetLocalString("ADDED_STRING_215"), CAUTION); } if(PktAdminMgr::PktGuildSearch::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()->SendFortSearch(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()->SendFortSearch(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()->SendFortSearch(cSearchType, dwServerGroup, dwZoneGroup, szSearchValue); m_dwSearchCount = 0; UpdateData(false); } else { CPacketMgr::GetInstance()->SendFortSearch(cSearchType, dwServerGroup, dwZoneGroup, szSearchValue); m_dwSearchCount = 0; UpdateData(false); } } } BOOL CFortInfoDlg::PreTranslateMessage(MSG* pMsg) { if((WM_KEYDOWN == pMsg->message) && (VK_RETURN == pMsg->wParam)) { if(pMsg->hwnd == GetDlgItem(IDC_FORTINFO_SEARCHVALUE_EDIT)->m_hWnd) { OnBnClickedSearch(); } } return CDialog::PreTranslateMessage(pMsg); } void CFortInfoDlg::OnBnClickedAllServergroupChk() { UpdateData(true); m_ctrlServerGroupCb.EnableWindow(!m_bAllServerGroupChk); } void CFortInfoDlg::OnBnClickedAllZonegroupChk() { UpdateData(true); m_ctrlZoneGroupCb.EnableWindow(!m_bAllZoneGroupChk); } void CFortInfoDlg::OnLvnItemchangedSearchedList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); m_dwSelCount = m_ctrlSearchedList.GetSelectedCount(); UpdateData(false); *pResult = 0; } void CFortInfoDlg::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 CFortInfoDlg::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::CampID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::GuildID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::GuildName: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::HP: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); 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::ObjectType: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::State: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::SubState: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::UpgradeStep: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::RemainTime: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::LastUseTime: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::Right: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::PosX: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::PosY: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::PosZ: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtFLOAT); break; case SORT_TYPE::Material: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::SiegeCount: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; } } void CFortInfoDlg::OnNMDblclkSearchedList(NMHDR *pNMHDR, LRESULT *pResult) { if(0 < m_ctrlSearchedList.GetSelectedCount()) { int Index = m_ctrlSearchedList.GetNextItem(-1, LVIS_SELECTED); if(-1 != Index) { TCHAR szValue[m_stSelFortInfo.MAX_STRING]; int SiegeObjectTypeIndex; unsigned long dwServerGroup; unsigned int iCampID; m_ctrlSearchedList.GetItemText(Index, 0, szValue, sizeof(szValue)); CCharacterDoc::GetInstance().GetServerIndex(szValue, dwServerGroup); m_ctrlSearchedList.GetItemText(Index, 1, szValue, sizeof(szValue)); iCampID = atoi(szValue); m_ctrlSearchedList.GetItemText(Index, 7, szValue, sizeof(szValue)); SiegeObjectTypeIndex = GetSiegeObjectTypeIndex(szValue); switch(SiegeObjectTypeIndex) { case Siege::MINING_CAMP: { CPacketMgr::GetInstance()->SendMiningCamp(dwServerGroup, iCampID); CMiningCampDlg miningCampDlg; miningCampDlg.DoModal(); break; } case Siege::CAMP_SHOP: CPacketMgr::GetInstance()->SendShopCamp(dwServerGroup, iCampID); CShopCampPage shopCampPage; shopCampPage.DoModal(); break; } } } *pResult = 0; }