Files
wnmj-normal/Servers/游戏组件/斗地主/服务器组件/DlgCustomRule.cpp
2026-03-03 13:56:44 +08:00

188 lines
4.8 KiB
C++

#include "Stdafx.h"
#include "Resource.h"
#include "DlgCustomRule.h"
//////////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CDlgCustomRule, CDialog)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgCustomRule::CDlgCustomRule() : CDialog(IDD_CUSTOM_RULE)
{
//设置变量
ZeroMemory(&m_CustomRule,sizeof(m_CustomRule));
m_CustomRule.wMaxScoreTimes = 32;
m_CustomRule.wFleeScoreTimes = 6;
m_CustomRule.cbTimeOutCard = 20;
m_CustomRule.cbTimeCallScore = 20;
m_CustomRule.cbTimeStartGame = 30;
m_CustomRule.cbTimeHeadOutCard = 30;
m_CustomRule.cbAllNotCallResend = FALSE;
return;
}
//析构函数
CDlgCustomRule::~CDlgCustomRule()
{
}
//配置函数
BOOL CDlgCustomRule::OnInitDialog()
{
__super::OnInitDialog();
//设置控件
((CEdit *)GetDlgItem(IDC_TIME_OUT_CARD))->LimitText(2);
((CEdit *)GetDlgItem(IDC_TIME_START_GAME))->LimitText(2);
((CEdit *)GetDlgItem(IDC_TIME_CALL_SCORE))->LimitText(2);
((CEdit *)GetDlgItem(IDC_MAX_SCORE_TIMES))->LimitText(3);
((CEdit *)GetDlgItem(IDC_FLEE_SCORE_TIMES))->LimitText(3);
((CEdit *)GetDlgItem(IDC_TIME_HEAD_OUT_CARD))->LimitText(2);
((CEdit *)GetDlgItem(IDC_EDIT_OVERTIME_TRUSTEE))->LimitText(2);
//更新参数
FillDataToControl();
return FALSE;
}
//确定函数
VOID CDlgCustomRule::OnOK()
{
//投递消息
GetParent()->PostMessage(WM_COMMAND,MAKELONG(IDOK,0),0);
return;
}
//取消消息
VOID CDlgCustomRule::OnCancel()
{
//投递消息
GetParent()->PostMessage(WM_COMMAND,MAKELONG(IDCANCEL,0),0);
return;
}
//更新控件
bool CDlgCustomRule::FillDataToControl()
{
//设置数据
SetDlgItemInt(IDC_TIME_OUT_CARD,m_CustomRule.cbTimeOutCard);
SetDlgItemInt(IDC_TIME_START_GAME,m_CustomRule.cbTimeStartGame);
SetDlgItemInt(IDC_TIME_CALL_SCORE,m_CustomRule.cbTimeCallScore);
SetDlgItemInt(IDC_TIME_HEAD_OUT_CARD,m_CustomRule.cbTimeHeadOutCard);
SetDlgItemInt(IDC_EDIT_OVERTIME_TRUSTEE, m_CustomRule.cbOverTimeTrustee);
//游戏控制
SetDlgItemInt(IDC_MAX_SCORE_TIMES,m_CustomRule.wMaxScoreTimes);
SetDlgItemInt(IDC_FLEE_SCORE_TIMES,m_CustomRule.wFleeScoreTimes);
((CButton *)GetDlgItem(IDC_FLEE_SCORE_PATCH))->SetCheck((m_CustomRule.cbFleeScorePatch==TRUE)?BST_CHECKED:BST_UNCHECKED);
((CButton *)GetDlgItem(IDC_CHECK_ALL_NOT_CALL))->SetCheck((m_CustomRule.cbAllNotCallResend == TRUE) ? BST_CHECKED : BST_UNCHECKED);
return true;
}
//更新数据
bool CDlgCustomRule::FillControlToData()
{
//设置数据
m_CustomRule.cbTimeOutCard=(BYTE)GetDlgItemInt(IDC_TIME_OUT_CARD);
m_CustomRule.cbTimeStartGame=(BYTE)GetDlgItemInt(IDC_TIME_START_GAME);
m_CustomRule.cbTimeCallScore=(BYTE)GetDlgItemInt(IDC_TIME_CALL_SCORE);
m_CustomRule.cbTimeHeadOutCard=(BYTE)GetDlgItemInt(IDC_TIME_HEAD_OUT_CARD);
m_CustomRule.cbOverTimeTrustee = (BYTE)GetDlgItemInt(IDC_EDIT_OVERTIME_TRUSTEE);
//游戏控制
m_CustomRule.wMaxScoreTimes=(WORD)GetDlgItemInt(IDC_MAX_SCORE_TIMES);
m_CustomRule.wFleeScoreTimes=(WORD)GetDlgItemInt(IDC_FLEE_SCORE_TIMES);
m_CustomRule.cbFleeScorePatch=(((CButton *)GetDlgItem(IDC_FLEE_SCORE_PATCH))->GetCheck()==BST_CHECKED);
m_CustomRule.cbAllNotCallResend = (((CButton *)GetDlgItem(IDC_CHECK_ALL_NOT_CALL))->GetCheck() == BST_CHECKED);
//开始时间
if ((m_CustomRule.cbTimeStartGame<5)||(m_CustomRule.cbTimeStartGame>60))
{
AfxMessageBox(TEXT("开始时间设置范围错误,请重新设置!"),MB_ICONSTOP);
return false;
}
//叫分时间
if ((m_CustomRule.cbTimeCallScore<5)||(m_CustomRule.cbTimeCallScore>60))
{
AfxMessageBox(TEXT("叫分时间设置范围错误,请重新设置!"),MB_ICONSTOP);
return false;
}
//首出时间
if ((m_CustomRule.cbTimeHeadOutCard<5)||(m_CustomRule.cbTimeHeadOutCard>60))
{
AfxMessageBox(TEXT("首出时间设置范围错误,请重新设置!"),MB_ICONSTOP);
return false;
}
//出牌时间
if ((m_CustomRule.cbTimeOutCard<5)||(m_CustomRule.cbTimeOutCard>60))
{
AfxMessageBox(TEXT("出牌时间设置范围错误,请重新设置!"),MB_ICONSTOP);
return false;
}
//超时托管;
if (m_CustomRule.cbOverTimeTrustee<1)
{
AfxMessageBox(TEXT("超时托管设置范围错误,请重新设置!"), MB_ICONSTOP);
return false;
}
//最大倍数
if ((m_CustomRule.wMaxScoreTimes<32)||(m_CustomRule.wMaxScoreTimes>512))
{
AfxMessageBox(TEXT("最大倍数设置范围错误,请重新设置!"),MB_ICONSTOP);
return false;
}
//逃跑罚分
if ((m_CustomRule.wFleeScoreTimes<2)||(m_CustomRule.wFleeScoreTimes>512))
{
AfxMessageBox(TEXT("逃跑倍数设置范围错误,请重新设置!"),MB_ICONSTOP);
return false;
}
return true;
}
//读取配置
bool CDlgCustomRule::GetCustomRule(tagCustomRule & CustomRule)
{
//读取参数
if (FillControlToData()==true)
{
CustomRule=m_CustomRule;
return true;
}
return false;
}
//设置配置
bool CDlgCustomRule::SetCustomRule(tagCustomRule & CustomRule)
{
//设置变量
m_CustomRule=CustomRule;
//更新参数
if (m_hWnd!=NULL) FillDataToControl();
return true;
}
//////////////////////////////////////////////////////////////////////////////////