Files
Client/Server/AdminTool/AdminToolClient/FortInfoDlg.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

431 lines
14 KiB
C++

// 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 <Network/Protocol/RYL_AdminMgrProtocol.h>
#include <Network/Packet/PacketStruct/ServerInfo.h>
#include <Creature/Siege/SiegeConstants.h>
#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<CWnd*>(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<CComboBox*>(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<LPNMLISTVIEW>(pNMHDR);
m_dwSelCount = m_ctrlSearchedList.GetSelectedCount();
UpdateData(false);
*pResult = 0;
}
void CFortInfoDlg::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_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;
}