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>
218 lines
6.0 KiB
C++
218 lines
6.0 KiB
C++
// CharSocietyPage.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AdminToolClient.h"
|
|
#include "CharSocietyPage.h"
|
|
#include "PacketManager.h"
|
|
#include "MainFrm.h"
|
|
#include "GlobalFunctions.h"
|
|
|
|
#include <Community/FriendList.h>
|
|
#include <Character/ModifyCharacter.h>
|
|
|
|
// CCharSocietyPage 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CCharSocietyPage, CPropertyPage)
|
|
CCharSocietyPage::CCharSocietyPage()
|
|
: CPropertyPage(CCharSocietyPage::IDD)
|
|
, m_lpModifyCharacter(NULL)
|
|
, m_dwDocKey(0)
|
|
, m_dwPartyID(0)
|
|
, m_dwGID(0)
|
|
{
|
|
}
|
|
|
|
CCharSocietyPage::~CCharSocietyPage()
|
|
{
|
|
}
|
|
|
|
void CCharSocietyPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_CHARPARTYLIST, m_ctrlCharPartyList);
|
|
DDX_Control(pDX, IDC_CHARFRIENDLIST, m_ctrlCharFriendList);
|
|
DDX_Control(pDX, IDC_CHARBANLIST, m_ctrlCharBanList);
|
|
DDX_Text(pDX, IDC_PARTY_ID, m_dwPartyID);
|
|
DDX_Text(pDX, IDC_CHARACTERPAGE_GID, m_dwGID);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CCharSocietyPage, CPropertyPage)
|
|
ON_WM_CONTEXTMENU()
|
|
ON_COMMAND(ID_NEWDOC_CHARSEARCH, OnNewdocCharsearch)
|
|
ON_BN_CLICKED(IDC_PARTYPAGE_PARTYCLIP_BTN, OnBnClickedPartypagePartyclipBtn)
|
|
ON_BN_CLICKED(IDC_PARTYPAGE_BANCLIP_BTN, OnBnClickedPartypageBanclipBtn)
|
|
ON_BN_CLICKED(IDC_PARTYPAGE_FRICLIP_BTN, OnBnClickedPartypageFriclipBtn)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CCharSocietyPage 메시지 처리기입니다.
|
|
|
|
BOOL CCharSocietyPage::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
|
|
m_ctrlCharPartyList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
m_ctrlCharFriendList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
m_ctrlCharBanList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
|
|
m_ctrlCharPartyList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 95);
|
|
m_ctrlCharPartyList.InsertColumn(1, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 130);
|
|
|
|
m_ctrlCharFriendList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 95);
|
|
m_ctrlCharFriendList.InsertColumn(1, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 130);
|
|
|
|
m_ctrlCharBanList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 95);
|
|
m_ctrlCharBanList.InsertColumn(1, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 130);
|
|
|
|
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_01, "IDC_SOCIETYPAGE_01");
|
|
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_02, "IDC_SOCIETYPAGE_02");
|
|
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_03, "IDC_SOCIETYPAGE_03");
|
|
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_04, "IDC_SOCIETYPAGE_04");
|
|
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_05, "IDC_SOCIETYPAGE_05");
|
|
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_06, "IDC_SOCIETYPAGE_06");
|
|
SetUIString(this->m_hWnd, IDC_PARTYPAGE_PARTYCLIP_BTN, "IDC_PARTYPAGE_PARTYCLIP_BTN");
|
|
SetUIString(this->m_hWnd, IDC_PARTYPAGE_BANCLIP_BTN, "IDC_PARTYPAGE_BANCLIP_BTN");
|
|
SetUIString(this->m_hWnd, IDC_PARTYPAGE_FRICLIP_BTN, "IDC_PARTYPAGE_FRICLIP_BTN");
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
bool CCharSocietyPage::SetSocietyPageData( unsigned int dwDocKey, CModifyCharacter* lpModifyCharacter )
|
|
{
|
|
if(dwDocKey != 0)
|
|
{
|
|
m_lpModifyCharacter = lpModifyCharacter;
|
|
m_dwDocKey = dwDocKey;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void CCharSocietyPage::OnContextMenu(CWnd* pWnd, CPoint point)
|
|
{
|
|
bool bIsSel = false;
|
|
|
|
if((pWnd->GetSafeHwnd() == m_ctrlCharPartyList.GetSafeHwnd())
|
|
&& (m_ctrlCharPartyList.GetSelectedCount() == 1))
|
|
{
|
|
bIsSel = true;
|
|
m_lpSelList = &m_ctrlCharPartyList;
|
|
}
|
|
else if((pWnd->GetSafeHwnd() == m_ctrlCharBanList.GetSafeHwnd())
|
|
&& (m_ctrlCharBanList.GetSelectedCount() == 1))
|
|
{
|
|
bIsSel = true;
|
|
m_lpSelList = &m_ctrlCharBanList;
|
|
}
|
|
else if((pWnd->GetSafeHwnd() == m_ctrlCharFriendList.GetSafeHwnd())
|
|
&& (m_ctrlCharFriendList.GetSelectedCount() == 1))
|
|
{
|
|
bIsSel = true;
|
|
m_lpSelList = &m_ctrlCharFriendList;
|
|
}
|
|
|
|
if(false == bIsSel)
|
|
{
|
|
return;
|
|
}
|
|
|
|
CMenu muTemp, *pContextMenu;
|
|
muTemp.LoadMenu(IDR_CONTEXTMENU);
|
|
pContextMenu = muTemp.GetSubMenu(4);
|
|
pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_NEWDOC_CHARSEARCH, GetLocalString("MENU_023"));
|
|
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
|
|
}
|
|
|
|
// 목록구성을 위한 클래스 --------------------------------------------------------------
|
|
class CMakeItList
|
|
{
|
|
public:
|
|
CMakeItList(CListCtrl& ctrlFriendList)
|
|
: m_FriendList(ctrlFriendList) { ; }
|
|
|
|
bool operator() (CFriendList::Rebind& rebind)
|
|
{
|
|
CString strCID;
|
|
strCID.Format(_T("%d"), rebind.GetCID());
|
|
|
|
m_FriendList.InsertItem(0, strCID);
|
|
m_FriendList.SetItemText(0, 1, rebind.GetCharacterName());
|
|
|
|
return true;
|
|
}
|
|
|
|
bool operator() (CBanList::Rebind& rebind)
|
|
{
|
|
CString strCID;
|
|
strCID.Format(_T("%d"), rebind.GetCID());
|
|
|
|
m_FriendList.InsertItem(0, strCID);
|
|
m_FriendList.SetItemText(0, 1, rebind.GetCharacterName());
|
|
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
CListCtrl& m_FriendList;
|
|
};
|
|
//---------------------------------------------------------------------------------------------
|
|
|
|
void CCharSocietyPage::MakeItFriendList()
|
|
{
|
|
if(NULL != m_lpModifyCharacter)
|
|
{
|
|
m_lpModifyCharacter->GetFriendList().Process(CMakeItList(m_ctrlCharFriendList));
|
|
}
|
|
}
|
|
|
|
void CCharSocietyPage::MakeItBanList()
|
|
{
|
|
if(NULL != m_lpModifyCharacter)
|
|
{
|
|
m_lpModifyCharacter->GetBanList().Process(CMakeItList(m_ctrlCharBanList));
|
|
}
|
|
}
|
|
|
|
void CCharSocietyPage::SetSocietyPage(CModifyCharacter* lpModifyCharacter)
|
|
{
|
|
m_ctrlCharFriendList.DeleteAllItems();
|
|
m_ctrlCharBanList.DeleteAllItems();
|
|
|
|
if(NULL != lpModifyCharacter)
|
|
{
|
|
m_dwPartyID = lpModifyCharacter->GetPID();
|
|
m_dwGID = lpModifyCharacter->GetGID();
|
|
|
|
MakeItFriendList();
|
|
MakeItBanList();
|
|
|
|
UpdateData(false);
|
|
}
|
|
}
|
|
|
|
void CCharSocietyPage::OnNewdocCharsearch()
|
|
{
|
|
int nIndex = m_lpSelList->GetNextItem(-1, LVIS_SELECTED);
|
|
|
|
CString strCID = m_lpSelList->GetItemText(nIndex, 0);
|
|
|
|
CPacketMgr::GetInstance()->SendSearchID(
|
|
PktAdminMgr::PktSearchID::SearchCID, m_lpModifyCharacter->GetServerGroup(), _ttoi(strCID));
|
|
}
|
|
|
|
void CCharSocietyPage::OnBnClickedPartypagePartyclipBtn()
|
|
{
|
|
ClippingListCtrl(m_ctrlCharPartyList, 2, true);
|
|
}
|
|
|
|
void CCharSocietyPage::OnBnClickedPartypageBanclipBtn()
|
|
{
|
|
ClippingListCtrl(m_ctrlCharBanList, 2, true);
|
|
}
|
|
|
|
void CCharSocietyPage::OnBnClickedPartypageFriclipBtn()
|
|
{
|
|
ClippingListCtrl(m_ctrlCharFriendList, 2, true);
|
|
}
|