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>
202 lines
5.5 KiB
C++
202 lines
5.5 KiB
C++
// GuildMemberPage.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "AdminToolClient.h"
|
|
#include "GuildMemberPage.h"
|
|
#include "GuildInfoSheet.h"
|
|
#include "PacketManager.h"
|
|
#include "ListCtrlSortClass.h"
|
|
#include "GlobalFunctions.h"
|
|
#include "GuildPositionDlg.h"
|
|
|
|
#include <Network/Packet/PacketStruct/GuildPacket.h>
|
|
|
|
|
|
// CGuildMemberPage 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CGuildMemberPage, CPropertyPage)
|
|
CGuildMemberPage::CGuildMemberPage()
|
|
: CPropertyPage(CGuildMemberPage::IDD)
|
|
{
|
|
}
|
|
|
|
CGuildMemberPage::~CGuildMemberPage()
|
|
{
|
|
}
|
|
|
|
void CGuildMemberPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_GUILDPAGE_MEMBER_LIST, m_ctrlMemberList);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CGuildMemberPage, CPropertyPage)
|
|
ON_NOTIFY(LVN_COLUMNCLICK, IDC_GUILDPAGE_MEMBER_LIST, OnLvnColumnclickGuildpageMemberList)
|
|
ON_WM_CONTEXTMENU()
|
|
ON_COMMAND(ID_GMEM_RIGHTEDIT_MENU, OnGmemRighteditMenu)
|
|
ON_COMMAND(ID_GMEM_EXPULSION_MENU, OnGmemExpulsionMenu)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CGuildMemberPage 메시지 처리기입니다.
|
|
|
|
BOOL CGuildMemberPage::OnInitDialog()
|
|
{
|
|
CPropertyPage::OnInitDialog();
|
|
|
|
m_ctrlMemberList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
|
|
|
|
m_ctrlMemberList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 65);
|
|
m_ctrlMemberList.InsertColumn(1, GetLocalString("RIGHTS"), LVCFMT_LEFT, 40);
|
|
m_ctrlMemberList.InsertColumn(2, GetLocalString("RANK"), LVCFMT_LEFT, 40);
|
|
m_ctrlMemberList.InsertColumn(3, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 100);
|
|
m_ctrlMemberList.InsertColumn(4, _T("LV"), LVCFMT_LEFT, 30);
|
|
m_ctrlMemberList.InsertColumn(5, GetLocalString("FAME"), LVCFMT_LEFT, 80);
|
|
m_ctrlMemberList.InsertColumn(6, _T("Gold"), LVCFMT_LEFT, 80);
|
|
m_ctrlMemberList.InsertColumn(7, GetLocalString("CLASS"), LVCFMT_LEFT, 50);
|
|
m_ctrlMemberList.InsertColumn(8, GetLocalString("SESSION_TIME"), LVCFMT_LEFT, 125);
|
|
|
|
if(MemberPageSet())
|
|
{
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
bool CGuildMemberPage::MemberPageSet()
|
|
{
|
|
CGuildInfoSheet* lpSheet = reinterpret_cast<CGuildInfoSheet*>(GetParent());
|
|
|
|
if(NULL != lpSheet)
|
|
{
|
|
CPacketMgr::GetInstance()->SendRequestGuildMemberList(
|
|
lpSheet->m_dwSelGID, lpSheet->m_dwSelServerGroup);
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void CGuildMemberPage::OnLvnColumnclickGuildpageMemberList(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_ctrlMemberList, m_iSortListItem);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CGuildMemberPage::SortListWndItem(CListCtrl* pListCtrl, const int iCol)
|
|
{
|
|
CListCtrlSortClass SortClass(pListCtrl,iCol);
|
|
|
|
switch(m_iSortListItem)
|
|
{
|
|
case SORT_TYPE::CID:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::RIGHT:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::RANK:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::CHARNAME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
|
|
break;
|
|
case SORT_TYPE::LEVEL:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::FAME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::GOLD:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::CLASS:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
case SORT_TYPE::SECESSION_TIME:
|
|
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void CGuildMemberPage::OnContextMenu(CWnd* pWnd, CPoint point)
|
|
{
|
|
if (pWnd->GetSafeHwnd() == m_ctrlMemberList.GetSafeHwnd())
|
|
{
|
|
CMenu muTemp, *pContextMenu;
|
|
muTemp.LoadMenu(IDR_CONTEXTMENU);
|
|
pContextMenu = muTemp.GetSubMenu(13);
|
|
pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_GMEM_RIGHTEDIT_MENU, GetLocalString("ADDED_STRING_085"));
|
|
pContextMenu->ModifyMenu(1, MF_STRING | MF_BYPOSITION, ID_GMEM_EXPULSION_MENU, GetLocalString("ADDED_STRING_086"));
|
|
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
|
|
}
|
|
}
|
|
|
|
void CGuildMemberPage::OnGmemRighteditMenu()
|
|
{
|
|
CGuildInfoSheet* lpGuildInfoSheet = reinterpret_cast<CGuildInfoSheet*>(GetParent());
|
|
|
|
unsigned long dwCID = 0;
|
|
unsigned char cPosition = 0;
|
|
|
|
if (1 == m_ctrlMemberList.GetSelectedCount())
|
|
{
|
|
int Index = m_ctrlMemberList.GetNextItem(-1, LVIS_SELECTED);
|
|
if(-1 != Index)
|
|
{
|
|
char szValue[256];
|
|
m_ctrlMemberList.GetItemText(Index, 0, szValue, sizeof(szValue));
|
|
dwCID = atoi(szValue);
|
|
|
|
m_ctrlMemberList.GetItemText(Index, 1, szValue, sizeof(szValue));
|
|
cPosition = atoi(szValue);
|
|
}
|
|
|
|
CGuildPositionDlg dlg(lpGuildInfoSheet->m_dwSelServerGroup,
|
|
lpGuildInfoSheet->m_dwSelGID, dwCID, cPosition);
|
|
|
|
dlg.DoModal();
|
|
}
|
|
}
|
|
|
|
void CGuildMemberPage::OnGmemExpulsionMenu()
|
|
{
|
|
CGuildInfoSheet* lpGuildInfoSheet = reinterpret_cast<CGuildInfoSheet*>(GetParent());
|
|
|
|
unsigned long dwCID = 0;
|
|
|
|
if (1 == m_ctrlMemberList.GetSelectedCount())
|
|
{
|
|
int Index = m_ctrlMemberList.GetNextItem(-1, LVIS_SELECTED);
|
|
if(-1 != Index)
|
|
{
|
|
char szValue[256];
|
|
m_ctrlMemberList.GetItemText(Index, 0, szValue, sizeof(szValue));
|
|
dwCID = atoi(szValue);
|
|
}
|
|
}
|
|
|
|
CPacketMgr::GetInstance()->SendPktGuildMemberEdit(lpGuildInfoSheet->m_dwSelServerGroup,
|
|
lpGuildInfoSheet->m_dwSelGID, dwCID, 0, PktGuildPosition::TYPE_MEMBERDELETE);
|
|
} |