Files
wnmj/Servers/服务器组件/模块管理/DlgServerMatch.cpp
2026-02-13 14:34:15 +08:00

165 lines
3.5 KiB
C++

#include "Stdafx.h"
#include "Resource.h"
#include "DlgServerMatch.h"
//列表属性
#define LIST_STYTE LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_FLATSB
//////////////////////////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CDlgServerMatch, CDialog)
//按钮消息
ON_BN_CLICKED(IDC_LOAD_MATCH, OnBnClickedLoadMatch)//确定加载比赛
//控件消息
ON_NOTIFY(NM_DBLCLK, IDC_MATCH_LIST, OnNMDblclkServerList)//确定加载比赛
ON_NOTIFY(LVN_ITEMCHANGED, IDC_MATCH_LIST, OnLvnItemChangedServerList)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerMatch::CDlgServerMatch() : CDialog(IDD_SERVER_MATCH)
{
//标识变量
m_wKindID=0;
//模块参数
ZeroMemory(&m_GameMatchOption,sizeof(m_GameMatchOption));
return;
}
//析构函数
CDlgServerMatch::~CDlgServerMatch()
{
}
//初始窗口
BOOL CDlgServerMatch::OnInitDialog()
{
__super::OnInitDialog();
//加载比赛
LoadDBMatchItem();
return TRUE;
}
//数据交换
void CDlgServerMatch::DoDataExchange(CDataExchange* pDX)
{
//比赛列表
__super::DoDataExchange(pDX);
DDX_Control(pDX,IDC_MATCH_LIST,m_MatchListControl);
}
//打开比赛
bool CDlgServerMatch::OpenGameMatch(WORD wKindID)
{
//设置变量
m_wKindID=wKindID;
//设置资源
AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME));
//配置房间
if (DoModal()==IDC_LOAD_SERVER)
{
return true;
}
return false;
}
//加载房间
bool CDlgServerMatch::LoadDBMatchItem()
{
//重置列表
m_MatchListControl.DeleteAllItems();
//设置按钮
GetDlgItem(IDC_LOAD_MATCH)->EnableWindow(FALSE);
//加载信息
CServerInfoManager ServerInfoManager;
if (ServerInfoManager.LoadGameMatchOption(m_wKindID,m_MatchOptionBuffer)==true)
{
//变量定义
tagGameMatchOption * pGameMatchOption=NULL;
for(INT_PTR nIndex=0;nIndex<m_MatchOptionBuffer.m_GameMatchOptionArray.GetCount();nIndex++)
{
//获取对象
pGameMatchOption=m_MatchOptionBuffer.m_GameMatchOptionArray[nIndex];
//插入列表
ASSERT(pGameMatchOption!=NULL);
if (pGameMatchOption!=NULL) m_MatchListControl.InsertMatchOption(pGameMatchOption);
}
return true;
}
return false;
}
//加载房间
VOID CDlgServerMatch::OnBnClickedLoadMatch()
{
//获取选择
ASSERT(m_MatchListControl.GetFirstSelectedItemPosition()!=NULL);
POSITION Position=m_MatchListControl.GetFirstSelectedItemPosition();
//获取房间
INT nListItem=m_MatchListControl.GetNextSelectedItem(Position);
tagGameMatchOption * pGameMatchOption=(tagGameMatchOption *)m_MatchListControl.GetItemData(nListItem);
//加载奖励
CServerInfoManager ServerInfoManager;
pGameMatchOption->wRewardCount=ServerInfoManager.LoadGameMatchReward(pGameMatchOption->dwMatchID,pGameMatchOption->dwMatchNO);
//设置变量
CopyMemory(&m_GameMatchOption,pGameMatchOption,sizeof(m_GameMatchOption));
//结束对话框
EndDialog(IDC_LOAD_SERVER);
}
//双击列表
VOID CDlgServerMatch::OnNMDblclkServerList(NMHDR * pNMHDR, LRESULT * pResult)
{
//加载配置
if (((NMITEMACTIVATE *)pNMHDR)->iItem!=LB_ERR)
{
OnBnClickedLoadMatch();
}
return;
}
//选择改变
VOID CDlgServerMatch::OnLvnItemChangedServerList(NMHDR * pNMHDR, LRESULT * pResult)
{
//获取选择
POSITION Position=m_MatchListControl.GetFirstSelectedItemPosition();
//设置列表
if (Position!=NULL)
{
//设置按钮
GetDlgItem(IDC_LOAD_MATCH)->EnableWindow(TRUE);
}
else
{
//设置按钮
GetDlgItem(IDC_LOAD_MATCH)->EnableWindow(FALSE);
}
return;
}
//////////////////////////////////////////////////////////////////////////////////////////////////