Files
wnmj-normal/Servers/服务器组件/模块管理/DlgServerWizard.cpp
2026-03-03 13:56:44 +08:00

2563 lines
74 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "StdAfx.h"
#include "Resource.h"
#include "DlgServerWizard.h"
#include "ModuleDBParameter.h"
#include ".\dlgserverwizard.h"
//////////////////////////////////////////////////////////////////////////////////
//页面定义
#define ITEM_SERVER_OPTION_1 0 //配置选择
#define ITEM_SERVER_OPTION_2 1 //配置选择
#define ITEM_SERVER_OPTION_3 2 //配置选择
#define ITEM_SERVER_OPTION_4 3
#define ITEM_SERVER_OPTION_CUSTOM 4 //定制配置
//参数操作
#define SUB_GP_GET_PARAMETER 100 //获取参数
#define SUB_GP_ADD_PARAMETER 101 //添加参数
#define SUB_GP_MODIFY_PARAMETER 102 //修改参数
#define SUB_GP_DELETE_PARAMETER 103 //删除参数
//常量定义
#define MIN_INOUTINTERVAL 30*60 //最小间隔
#define MAX_INOUTINTERVAL 24*3600 //最大间隔
//////////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CDlgServerOptionItem, CDialog)
ON_WM_SIZE()
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CDlgServerWizardItem, CDialog)
ON_WM_SIZE()
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CDlgServerOptionItem1, CDlgServerOptionItem)
ON_CBN_SELCHANGE(IDC_SERVER_TYPE, OnSelchangeServerType)
ON_BN_CLICKED(IDC_REVENUE_RADIO, OnBnClickedRevenueRadio)
ON_BN_CLICKED(IDC_SERVICE_RADIO, OnBnClickedServiceRadio)
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CDlgServerOptionItem2, CDlgServerOptionItem)
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CDlgServerOptionItem3, CDlgServerOptionItem)
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CDlgServerOptionItem4, CDlgServerOptionItem)
ON_BN_CLICKED(IDC_BT_ADD, OnBnClickedBtAdd)
ON_BN_CLICKED(IDC_BT_MODIFY, OnBnClickedBtModify)
ON_BN_CLICKED(IDC_BT_DELETE, OnBnClickedBtDelete)
ON_NOTIFY(LVN_DELETEITEM, IDC_LIST_PARAMETER, OnLvnListParameterDeleteitem)
ON_NOTIFY(NM_CLICK, IDC_LIST_PARAMETER, OnHdnListParameterItemclick)
ON_NOTIFY(LVN_KEYDOWN, IDC_LIST_PARAMETER, OnLvnKeydownListParameter)
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CDlgServerOptionItemCustom, CDlgServerOptionItem)
ON_WM_SETFOCUS()
ON_WM_NCDESTROY()
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CDlgServerWizardItem1, CDlgServerWizardItem)
ON_NOTIFY(NM_DBLCLK, IDC_MODULE_LIST, OnNMDblclkModuleList)
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CDlgServerWizardItem2, CDlgServerWizardItem)
ON_WM_SETFOCUS()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_CTRL, OnTcnSelchangeTabCtrl)
END_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CDlgServerWizard, CDialog)
ON_BN_CLICKED(IDC_LAST, OnBnClickedLast)
ON_BN_CLICKED(IDC_NEXT, OnBnClickedNext)
ON_BN_CLICKED(IDC_FINISH, OnBnClickedFinish)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerOptionItem::CDlgServerOptionItem(UINT nIDTemplate) : CDialog(nIDTemplate)
{
//设置变量
m_pDlgServerWizard=NULL;
m_pGameServiceAttrib=NULL;
m_pGameServiceOption=NULL;
return;
}
//析构函数
CDlgServerOptionItem::~CDlgServerOptionItem()
{
}
//保存数据
bool CDlgServerOptionItem::SaveItemData()
{
//保存数据
if ((m_hWnd!=NULL)&&(SaveInputInfo()==false))
{
return false;
}
return true;
}
//显示配置
bool CDlgServerOptionItem::ShowOptionItem(const CRect & rcRect, CWnd * pParentWnd)
{
//创建窗口
if (m_hWnd==NULL)
{
//设置资源
AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME));
//创建窗口
Create(m_lpszTemplateName,pParentWnd);
SetWindowPos(NULL,rcRect.left,rcRect.top,rcRect.Width(),rcRect.Height(),SWP_NOZORDER|SWP_NOACTIVATE);
//设置资源
AfxSetResourceHandle(GetModuleHandle(NULL));
}
//显示窗口
ShowWindow(SW_SHOW);
return true;
}
//确定函数
VOID CDlgServerOptionItem::OnOK()
{
//投递消息
m_pDlgServerWizard->PostMessage(WM_COMMAND,MAKELONG(IDOK,0),0);
return;
}
//取消消息
VOID CDlgServerOptionItem::OnCancel()
{
//投递消息
m_pDlgServerWizard->PostMessage(WM_COMMAND,MAKELONG(IDCANCEL,0),0);
return;
}
//位置消息
VOID CDlgServerOptionItem::OnSize(UINT nType, INT cx, INT cy)
{
__super::OnSize(nType, cx, cy);
//调整控件
RectifyControl(cx,cy);
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerOptionItem1::CDlgServerOptionItem1() : CDlgServerOptionItem(IDD_SERVER_OPTION_1)
{
}
//析构函数
CDlgServerOptionItem1::~CDlgServerOptionItem1()
{
}
//初始化函数
BOOL CDlgServerOptionItem1::OnInitDialog()
{
__super::OnInitDialog();
//构造控件
InitCtrlWindow();
//变量定义
CComboBox * pServerType=(CComboBox *)GetDlgItem(IDC_SERVER_TYPE);
//房间名字
if (m_pGameServiceOption->szServerName[0]==0)
{
SetDlgItemText(IDC_SERVER_NAME,m_pGameServiceAttrib->szGameName);
}
else SetDlgItemText(IDC_SERVER_NAME,m_pGameServiceOption->szServerName);
//桌子数目
if (m_pGameServiceOption->wTableCount!=0)
{
SetDlgItemInt(IDC_TABLE_COUNT,m_pGameServiceOption->wTableCount);
}
else if (m_pGameServiceAttrib->wChairCount >= MAX_CHAIR)
{
SetDlgItemInt(IDC_TABLE_COUNT,1);
}
else
{
SetDlgItemInt(IDC_TABLE_COUNT,60);
}
//服务端口
if (m_pGameServiceOption->wServerPort!=0)
{
SetDlgItemInt(IDC_SERVER_PORT,m_pGameServiceOption->wServerPort);
}
//数据库名
if (m_pGameServiceOption->szDataBaseName[0]!=0)
{
SetDlgItemText(IDC_DATABASE_NAME,m_pGameServiceOption->szDataBaseName);
}
else SetDlgItemText(IDC_DATABASE_NAME,m_pGameServiceAttrib->szDataBaseName);
//连接地址
if (m_pGameServiceOption->szDataBaseAddr[0]!=0)
{
DWORD dwDataBaseAddr=inet_addr(CT2CA(m_pGameServiceOption->szDataBaseAddr));
((CIPAddressCtrl *)GetDlgItem(IDC_DATABASE_ADDR))->SetAddress(htonl(dwDataBaseAddr));
}
//游戏类型
for (INT i=0;i<pServerType->GetCount();i++)
{
if (pServerType->GetItemData(i)==m_pGameServiceOption->wServerType)
{
pServerType->SetCurSel(i);
}
}
//房间配置
if (m_pGameServiceOption->lCellScore!=0) SetDlgItemInt(IDC_CELL_SCORE,(LONG)m_pGameServiceOption->lCellScore);
if (m_pGameServiceOption->wMaxPlayer!=0) SetDlgItemInt(IDC_MAX_PLAYER,(LONG)m_pGameServiceOption->wMaxPlayer);
if (m_pGameServiceOption->lRestrictScore!=0) SetDlgItemInt(IDC_RESTRICT_SCORE,(LONG)m_pGameServiceOption->lRestrictScore);
if (m_pGameServiceOption->wRevenueRatio!=0)
{
OnBnClickedRevenueRadio();
SetDlgItemInt(IDC_SERVICE_REVENUE,(LONG)m_pGameServiceOption->wRevenueRatio);
((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->SetCheck(BST_CHECKED);
((CButton*)GetDlgItem(IDC_SERVICE_RADIO))->SetCheck(BST_UNCHECKED);
}
else if(m_pGameServiceOption->lServiceScore != 0)
{
OnBnClickedServiceRadio();
SetDlgItemInt(IDC_SERVICE_REVENUE,(LONG)m_pGameServiceOption->lServiceScore);
((CButton*)GetDlgItem(IDC_SERVICE_RADIO))->SetCheck(BST_CHECKED);
((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->SetCheck(BST_UNCHECKED);
}
//百人游戏无底分配置
if(m_pGameServiceAttrib->wChairCount >= MAX_CHAIR)
{
GetDlgItem(IDC_CELL_SCORE)->EnableWindow(FALSE);
}
//挂接配置
WORD wGameKindID=m_pGameServiceOption->wKindID;
WORD wAttribKindID=m_pGameServiceAttrib->wKindID;
if (m_pGameServiceOption->wNodeID!=0) SetDlgItemInt(IDC_NODE_ID,m_pGameServiceOption->wNodeID);
if (m_pGameServiceOption->wSortID!=0) SetDlgItemInt(IDC_SORT_ID,m_pGameServiceOption->wSortID);
if ((wGameKindID!=0)&&(wGameKindID!=wAttribKindID)) SetDlgItemInt(IDC_KIND_ID,m_pGameServiceOption->wKindID);
//默认选择
if (pServerType->GetCurSel()==LB_ERR)
{
//获取名字
TCHAR szDataBase[32]=TEXT("");
GetDlgItemText(IDC_DATABASE_NAME,szDataBase,CountArray(szDataBase));
//变量定义
WORD wServerType=0;
bool bGoldDataBase=(lstrcmpi(szDataBase,szTreasureDB)==0);
bool bDefaultDataBase=(lstrcmpi(szDataBase,m_pGameServiceAttrib->szDataBaseName)==0);
//类型定义
if ((wServerType==0)&&(bGoldDataBase==true)) wServerType=GAME_GENRE_GOLD;
if ((wServerType==0)&&(bGoldDataBase==false)&&(bDefaultDataBase==true)) wServerType=GAME_GENRE_SCORE;
//分析类型
if ((m_pGameServiceAttrib->wSupporType&wServerType)!=0L)
{
for (INT i=0;i<pServerType->GetCount();i++)
{
if (pServerType->GetItemData(i)==wServerType)
{
pServerType->SetCurSel(i);
break;
}
}
}
}
return TRUE;
}
//保存输入
bool CDlgServerOptionItem1::SaveInputInfo()
{
//变量定义
CComboBox * pServerType=(CComboBox *)GetDlgItem(IDC_SERVER_TYPE);
CIPAddressCtrl * pIPAddressCtrl=(CIPAddressCtrl *)GetDlgItem(IDC_DATABASE_ADDR);
//挂接属性
m_pGameServiceOption->wKindID=GetDlgItemInt(IDC_KIND_ID);
m_pGameServiceOption->wNodeID=GetDlgItemInt(IDC_NODE_ID);
m_pGameServiceOption->wSortID=GetDlgItemInt(IDC_SORT_ID);
//属性配置
m_pGameServiceOption->wMaxPlayer=GetDlgItemInt(IDC_MAX_PLAYER);
m_pGameServiceOption->lCellScore=GetDlgItemInt(IDC_CELL_SCORE);
m_pGameServiceOption->lRestrictScore=GetDlgItemInt(IDC_RESTRICT_SCORE);
if(((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->GetCheck()==BST_CHECKED)
{
m_pGameServiceOption->wRevenueRatio=GetDlgItemInt(IDC_SERVICE_REVENUE);
m_pGameServiceOption->lServiceScore=0L;
}
else
{
m_pGameServiceOption->lServiceScore=GetDlgItemInt(IDC_SERVICE_REVENUE);
m_pGameServiceOption->wRevenueRatio=0L;
}
//选择控件
m_pGameServiceOption->wServerType=(WORD)pServerType->GetItemData(pServerType->GetCurSel());
//房间属性
m_pGameServiceOption->wTableCount=GetDlgItemInt(IDC_TABLE_COUNT);
m_pGameServiceOption->wServerPort=GetDlgItemInt(IDC_SERVER_PORT);
GetDlgItemText(IDC_SERVER_NAME,m_pGameServiceOption->szServerName,CountArray(m_pGameServiceOption->szServerName));
GetDlgItemText(IDC_DATABASE_NAME,m_pGameServiceOption->szDataBaseName,CountArray(m_pGameServiceOption->szDataBaseName));
//连接地址
DWORD dwDataBaseAddr=INADDR_NONE;
pIPAddressCtrl->GetAddress(dwDataBaseAddr);
_sntprintf_s(m_pGameServiceOption->szDataBaseAddr,CountArray(m_pGameServiceOption->szDataBaseAddr),TEXT("%d.%d.%d.%d"),
*(((BYTE *)&dwDataBaseAddr)+3),*(((BYTE *)&dwDataBaseAddr)+2),*(((BYTE *)&dwDataBaseAddr)+1),*((BYTE *)&dwDataBaseAddr));
//房间名字
if (m_pGameServiceOption->szServerName[0]==0)
{
AfxMessageBox(TEXT("游戏房间名字不能为空,请输入游戏房间名字"),MB_ICONERROR);
return false;
}
//类型判断
if (m_pGameServiceOption->wServerType==0)
{
AfxMessageBox(TEXT("游戏房间类型不能为空,请重新选择游戏房间类型"),MB_ICONERROR);
return false;
}
//数据库名
if (m_pGameServiceOption->szDataBaseName[0]==0)
{
AfxMessageBox(TEXT("游戏数据库名不能为空,请输入游戏数据库名"),MB_ICONERROR);
return false;
}
//连接地址
if (INVALID_IP_ADDRESS(dwDataBaseAddr))
{
AfxMessageBox(TEXT("游戏数据库地址格式不正确,请重新输入游戏数据库地址"),MB_ICONERROR);
return false;
}
//桌子数目
if ((m_pGameServiceOption->wTableCount==0)||(m_pGameServiceOption->wTableCount>MAX_TABLE))
{
AfxMessageBox(TEXT("游戏桌子数目无效,请重新输入游戏桌子数目,有效数值范围为 1 - 512"),MB_ICONERROR);
return false;
}
return true;
}
//调整控件
VOID CDlgServerOptionItem1::RectifyControl(INT nWidth, INT nHeight)
{
return;
}
//构造控件
VOID CDlgServerOptionItem1::InitCtrlWindow()
{
//列表配置
((CEdit *)GetDlgItem(IDC_KIND_ID))->LimitText(5);
((CEdit *)GetDlgItem(IDC_NODE_ID))->LimitText(5);
((CEdit *)GetDlgItem(IDC_SORT_ID))->LimitText(5);
//属性配置
((CEdit *)GetDlgItem(IDC_MAX_PLAYER))->LimitText(3);
((CEdit *)GetDlgItem(IDC_CELL_SCORE))->LimitText(6);
((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->LimitText(3);
((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->SetCheck(BST_CHECKED);
//常规配置
((CEdit *)GetDlgItem(IDC_TABLE_COUNT))->LimitText(3);
((CEdit *)GetDlgItem(IDC_SERVER_PORT))->LimitText(5);
((CEdit *)GetDlgItem(IDC_SERVER_NAME))->LimitText(31);
((CEdit *)GetDlgItem(IDC_DATABASE_NAME))->LimitText(31);
//变量定义
CComboBox * pComboBox=(CComboBox *)GetDlgItem(IDC_SERVER_TYPE);
WORD wServerType[4]={GAME_GENRE_GOLD,GAME_GENRE_SCORE,GAME_GENRE_MATCH,GAME_GENRE_EDUCATE};
LPCTSTR pszServerType[4]={TEXT("财富类型"),TEXT("点值类型"),TEXT("比赛类型"),TEXT("私人类型")};
//构造类型
for (INT i=0;i<CountArray(wServerType);i++)
{
if ((m_pGameServiceAttrib->wSupporType&wServerType[i])==0) continue;
pComboBox->SetItemData(pComboBox->AddString(pszServerType[i]),wServerType[i]);
}
return;
}
//更新数据
VOID CDlgServerOptionItem1::UpdateDataBaseName()
{
//变量定义
CComboBox * pServerType=(CComboBox *)GetDlgItem(IDC_SERVER_TYPE);
//数据调整
int nSelIndex = pServerType->GetCurSel();
DWORD_PTR wServerType = pServerType->GetItemData(nSelIndex);
switch (wServerType)
{
case GAME_GENRE_GOLD: //财富类型
case GAME_GENRE_EDUCATE: //私人场类型
{
SetDlgItemText(IDC_DATABASE_NAME,szTreasureDB);
break;
}
case GAME_GENRE_SCORE: //点值类型
{
SetDlgItemText(IDC_DATABASE_NAME,m_pGameServiceAttrib->szDataBaseName);
break;
}
default:
{
//获取名字
TCHAR szDataBase[32]=TEXT("");
GetDlgItemText(IDC_DATABASE_NAME,szDataBase,CountArray(szDataBase));
//名字判断
if (lstrcmpi(szDataBase,szTreasureDB)==0) SetDlgItemText(IDC_DATABASE_NAME,TEXT(""));
if (lstrcmpi(szDataBase,m_pGameServiceAttrib->szDataBaseName)==0) SetDlgItemText(IDC_DATABASE_NAME,TEXT(""));
break;
}
}
return;
}
//选择改变
VOID CDlgServerOptionItem1::OnSelchangeServerType()
{
//更新数据
UpdateDataBaseName();
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerOptionItem2::CDlgServerOptionItem2() : CDlgServerOptionItem(IDD_SERVER_OPTION_2)
{
}
//析构函数
CDlgServerOptionItem2::~CDlgServerOptionItem2()
{
}
//初始化函数
BOOL CDlgServerOptionItem2::OnInitDialog()
{
__super::OnInitDialog();
//构造控件
InitCtrlWindow();
//变量定义
CComboBox * pMinMember=(CComboBox *)GetDlgItem(IDC_MIN_ENTER_MEMBER);
CComboBox * pMaxMember=(CComboBox *)GetDlgItem(IDC_MAX_ENTER_MEMBER);
//房间配置
if (m_pGameServiceOption->lMinEnterScore!=0) SetDlgItemInt(IDC_MIN_ENTER_SCORE,(LONG)m_pGameServiceOption->lMinEnterScore);
if (m_pGameServiceOption->lMaxEnterScore!=0) SetDlgItemInt(IDC_MAX_ENTER_SCORE,(LONG)m_pGameServiceOption->lMaxEnterScore);
if (m_pGameServiceOption->lMinTableScore!=0) SetDlgItemInt(IDC_MIN_TABLE_SCORE,(LONG)m_pGameServiceOption->lMinTableScore);
//会员限制
//if (m_pGameServiceOption->cbMaxEnterMember!=0)
{
//最低会员
for (INT i=0;i<pMinMember->GetCount();i++)
{
if (pMinMember->GetItemData(i)==m_pGameServiceOption->cbMinEnterMember)
{
pMinMember->SetCurSel(i);
break;
}
}
//最高会员
for (INT i=0;i<pMaxMember->GetCount();i++)
{
if (pMaxMember->GetItemData(i)==m_pGameServiceOption->cbMaxEnterMember)
{
pMaxMember->SetCurSel(i);
break;
}
}
}
//禁止公聊
bool bForfendGameChat=CServerRule::IsForfendGameChat(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_GAME_CHAT))->SetCheck((bForfendGameChat==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止公聊
bool bForfendRoomChat=CServerRule::IsForfendRoomChat(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_ROOM_CHAT))->SetCheck((bForfendRoomChat==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止私聊
bool bForfendWisperChat=CServerRule::IsForfendWisperChat(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_WISPER_CHAT))->SetCheck((bForfendWisperChat==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止私聊
bool bForfendWisperOnGame=CServerRule::IsForfendWisperOnGame(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_WISPER_ON_GAME))->SetCheck((bForfendWisperOnGame==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止进入
bool bForfendRoomEnter=CServerRule::IsForfendRoomEnter(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_ROOM_ENTER))->SetCheck((bForfendRoomEnter==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止进入
bool bForfendGameEnter=CServerRule::IsForfendGameEnter(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_GAME_ENTER))->SetCheck((bForfendGameEnter==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止旁观
bool bForfendGameLookon=CServerRule::IsForfendGameLookon(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_GAME_LOOKON))->SetCheck((bForfendGameLookon==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止规则
bool bForfendGameRule=CServerRule::IsForfendGameRule(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_GAME_RULE))->SetCheck((bForfendGameRule==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止锁桌
bool bForfendLockTable=CServerRule::IsForfendLockTable(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_LOCK_TABLE))->SetCheck((bForfendLockTable==TRUE)?BST_CHECKED:BST_UNCHECKED);
//记录积分
bool bRecordGameScore=CServerRule::IsRecordGameScore(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_RECORD_GAME_SCORE))->SetCheck((bRecordGameScore==TRUE)?BST_CHECKED:BST_UNCHECKED);
//记录过程
//bool bRecordGameTrack=CServerRule::IsRecordGameTrack(m_pGameServiceOption->dwServerRule);
//((CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK))->SetCheck((bRecordGameTrack==TRUE)?BST_CHECKED:BST_UNCHECKED);
((CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK))->SetCheck(BST_UNCHECKED);
((CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK))->EnableWindow(FALSE);
//所有财富游戏,每局即时写分,记录每局成绩,默认为直接勾选灰色状态
if(m_pGameServiceOption->wServerType == GAME_GENRE_GOLD)
{
CServerRule::SetImmediateWriteScore(m_pGameServiceOption->dwServerRule,true);
GetDlgItem(IDC_IMMEDIATE_WRITE_SCORE)->EnableWindow(FALSE);
}
//即时写分
bool bImmediateWriteScore=CServerRule::IsImmediateWriteScore(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_IMMEDIATE_WRITE_SCORE))->SetCheck((bImmediateWriteScore==TRUE)?BST_CHECKED:BST_UNCHECKED);
//动态底分
//bool bDynamicCellScore=CServerRule::IsDynamicCellScore(m_pGameServiceOption->dwServerRule);
//((CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE))->SetCheck((bDynamicCellScore==TRUE)?BST_CHECKED:BST_UNCHECKED);
((CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE))->SetCheck(BST_UNCHECKED);
((CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE))->EnableWindow(FALSE);
//隐藏信息
bool bAllowAvertCheatMode=CServerRule::IsAllowAvertCheatMode(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_ALLOW_AVERT_CHEAT_MODE))->SetCheck((bAllowAvertCheatMode==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止存钱
bool bForfendSaveInRoom=CServerRule::IsForfendSaveInRoom(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_ROOM))->SetCheck((bForfendSaveInRoom==TRUE)?BST_CHECKED:BST_UNCHECKED);
//禁止存钱
bool bForfendSaveInGame=CServerRule::IsForfendSaveInGame(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_GAME))->SetCheck((bForfendSaveInGame==TRUE)?BST_CHECKED:BST_UNCHECKED);
//允许占位
bool bAllowAndroidSimulate=CServerRule::IsAllowAndroidSimulate(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_ALLOW_ANDROID_SIMULATE))->SetCheck((bAllowAndroidSimulate==TRUE)?BST_CHECKED:BST_UNCHECKED);
//动态加入
if (m_pGameServiceAttrib->cbDynamicJoin==TRUE)
{
bool bAllowDynamicJoin=CServerRule::IsAllowDynamicJoin(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_ALLOW_DYNAMIC_JOIN))->SetCheck((bAllowDynamicJoin==TRUE)?BST_CHECKED:BST_UNCHECKED);
}
//允许机器
if (m_pGameServiceAttrib->cbAndroidUser==TRUE)
{
bool bAllowAndroidAttend=CServerRule::IsAllowAndroidAttend(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_ALLOW_ANDROID_ATTEND))->SetCheck((bAllowAndroidAttend==TRUE)?BST_CHECKED:BST_UNCHECKED);
}
//断线代打
if (m_pGameServiceAttrib->cbOffLineTrustee==TRUE)
{
bool bAllowOffLineTrustee=CServerRule::IsAllowOffLineTrustee(m_pGameServiceOption->dwServerRule);
((CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE))->SetCheck((bAllowOffLineTrustee==TRUE)?BST_CHECKED:BST_UNCHECKED);
}
//((CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE))->SetCheck(BST_UNCHECKED);
//((CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE))->EnableWindow(FALSE);
return TRUE;
}
//保存输入
bool CDlgServerOptionItem2::SaveInputInfo()
{
//变量定义
CComboBox * pMinMember=(CComboBox *)GetDlgItem(IDC_MIN_ENTER_MEMBER);
CComboBox * pMaxMember=(CComboBox *)GetDlgItem(IDC_MAX_ENTER_MEMBER);
//积分限制
m_pGameServiceOption->cbMinEnterMember=0;
m_pGameServiceOption->cbMaxEnterMember=0;
m_pGameServiceOption->lMinEnterScore=GetDlgItemInt(IDC_MIN_ENTER_SCORE);
m_pGameServiceOption->lMaxEnterScore=GetDlgItemInt(IDC_MAX_ENTER_SCORE);
m_pGameServiceOption->lMinTableScore=GetDlgItemInt(IDC_MIN_TABLE_SCORE);
//会员限制
if (pMinMember->GetCurSel()!=LB_ERR)
{
INT nCurSelect=pMinMember->GetCurSel();
m_pGameServiceOption->cbMinEnterMember=(BYTE)pMinMember->GetItemData(nCurSelect);
}
//最高会员
if (pMaxMember->GetCurSel()!=LB_ERR)
{
INT nCurSelect=pMaxMember->GetCurSel();
m_pGameServiceOption->cbMaxEnterMember=(BYTE)pMaxMember->GetItemData(nCurSelect);
}
//参数效验
if ((m_pGameServiceOption->lMaxEnterScore!=0L)&&(m_pGameServiceOption->lMaxEnterScore<m_pGameServiceOption->lMinEnterScore))
{
AfxMessageBox(TEXT("进入房间最低成绩比最高成绩还高,将会造成任何玩家都不能进入"),MB_ICONERROR);
return false;
}
//参数效验
if ((m_pGameServiceOption->cbMaxEnterMember!=0L)&&(m_pGameServiceOption->cbMaxEnterMember<m_pGameServiceOption->cbMinEnterMember))
{
AfxMessageBox(TEXT("进入房间最低会员级别比最高会员级别还高,将会造成任何玩家都不能进入"),MB_ICONERROR);
return false;
}
//禁止公聊
CButton * pForfendGameChat=(CButton *)GetDlgItem(IDC_FORFEND_GAME_CHAT);
CServerRule::SetForfendGameChat(m_pGameServiceOption->dwServerRule,(pForfendGameChat->GetCheck()==BST_CHECKED));
//禁止公聊
CButton * pForfendRoomChat=(CButton *)GetDlgItem(IDC_FORFEND_ROOM_CHAT);
CServerRule::SetForfendRoomChat(m_pGameServiceOption->dwServerRule,(pForfendRoomChat->GetCheck()==BST_CHECKED));
//禁止私聊
CButton * pForfendWisperChat=(CButton *)GetDlgItem(IDC_FORFEND_WISPER_CHAT);
CServerRule::SetForfendWisperChat(m_pGameServiceOption->dwServerRule,(pForfendWisperChat->GetCheck()==BST_CHECKED));
//禁止私聊
CButton * pForfendWisperOnGame=(CButton *)GetDlgItem(IDC_FORFEND_WISPER_ON_GAME);
CServerRule::SetForfendWisperOnGame(m_pGameServiceOption->dwServerRule,(pForfendWisperOnGame->GetCheck()==BST_CHECKED));
//禁止进入
CButton * pForfendRoomEnter=(CButton *)GetDlgItem(IDC_FORFEND_ROOM_ENTER);
CServerRule::SetForfendRoomEnter(m_pGameServiceOption->dwServerRule,(pForfendRoomEnter->GetCheck()==BST_CHECKED));
//禁止进入
CButton * pForfendGameEnter=(CButton *)GetDlgItem(IDC_FORFEND_GAME_ENTER);
CServerRule::SetForfendGameEnter(m_pGameServiceOption->dwServerRule,(pForfendGameEnter->GetCheck()==BST_CHECKED));
//禁止旁观
CButton * pForfendGameLookon=(CButton *)GetDlgItem(IDC_FORFEND_GAME_LOOKON);
CServerRule::SetForfendGameLookon(m_pGameServiceOption->dwServerRule,(pForfendGameLookon->GetCheck()==BST_CHECKED));
//禁止规则
CButton * pForfendGameRule=(CButton *)GetDlgItem(IDC_FORFEND_GAME_RULE);
CServerRule::SetForfendGameRule(m_pGameServiceOption->dwServerRule,(pForfendGameRule->GetCheck()==BST_CHECKED));
//禁止锁桌
CButton * pForfendLockTable=(CButton *)GetDlgItem(IDC_FORFEND_LOCK_TABLE);
CServerRule::SetForfendLockTable(m_pGameServiceOption->dwServerRule,(pForfendLockTable->GetCheck()==BST_CHECKED));
//记录积分
CButton * pRecordGameScore=(CButton *)GetDlgItem(IDC_RECORD_GAME_SCORE);
CServerRule::SetRecordGameScore(m_pGameServiceOption->dwServerRule,(pRecordGameScore->GetCheck()==BST_CHECKED));
//记录过程
CButton * pRecordGameTrack=(CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK);
CServerRule::SetRecordGameTrack(m_pGameServiceOption->dwServerRule,(pRecordGameTrack->GetCheck()==BST_CHECKED));
//即时写分
CButton * pImmediateWriteScore=(CButton *)GetDlgItem(IDC_IMMEDIATE_WRITE_SCORE);
CServerRule::SetImmediateWriteScore(m_pGameServiceOption->dwServerRule,(pImmediateWriteScore->GetCheck()==BST_CHECKED));
//动态底分
CButton * pDynamicCellScore=(CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE);
CServerRule::SetDynamicCellScore(m_pGameServiceOption->dwServerRule,(pDynamicCellScore->GetCheck()==BST_CHECKED));
//隐藏信息
CButton * pAvertCheatMode=(CButton *)GetDlgItem(IDC_ALLOW_AVERT_CHEAT_MODE);
CServerRule::SetAllowAvertCheatMode(m_pGameServiceOption->dwServerRule,(pAvertCheatMode->GetCheck()==BST_CHECKED));
//禁止存钱
CButton * pForfendSaveInRoom=(CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_ROOM);
CServerRule::SetForfendSaveInRoom(m_pGameServiceOption->dwServerRule,(pForfendSaveInRoom->GetCheck()==BST_CHECKED));
//禁止存钱
CButton * pForfendSaveInGame=(CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_GAME);
CServerRule::SetForfendSaveInGame(m_pGameServiceOption->dwServerRule,(pForfendSaveInGame->GetCheck()==BST_CHECKED));
//允许占位
CButton * pAllowAndroidSimulate=(CButton *)GetDlgItem(IDC_ALLOW_ANDROID_SIMULATE);
CServerRule::SetAllowAndroidSimulate(m_pGameServiceOption->dwServerRule,(pAllowAndroidSimulate->GetCheck()==BST_CHECKED));
//动态加入
if (m_pGameServiceAttrib->cbDynamicJoin==TRUE)
{
CButton * pAllowDynamicJoin=(CButton *)GetDlgItem(IDC_ALLOW_DYNAMIC_JOIN);
CServerRule::SetAllowDynamicJoin(m_pGameServiceOption->dwServerRule,(pAllowDynamicJoin->GetCheck()==BST_CHECKED));
}
//允许陪玩
if (m_pGameServiceAttrib->cbAndroidUser==TRUE)
{
CButton * pAllowAndroidUser=(CButton *)GetDlgItem(IDC_ALLOW_ANDROID_ATTEND);
CServerRule::SetAllowAndroidAttend(m_pGameServiceOption->dwServerRule,(pAllowAndroidUser->GetCheck()==BST_CHECKED));
}
//断线代打
if (m_pGameServiceAttrib->cbOffLineTrustee==TRUE)
{
CButton * pAllowOffLineTrustee=(CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE);
CServerRule::SetAllowOffLineTrustee(m_pGameServiceOption->dwServerRule,(pAllowOffLineTrustee->GetCheck()==BST_CHECKED));
}
return true;
}
//调整控件
VOID CDlgServerOptionItem2::RectifyControl(INT nWidth, INT nHeight)
{
return;
}
//构造控件
VOID CDlgServerOptionItem2::InitCtrlWindow()
{
//条件限制
((CEdit *)GetDlgItem(IDC_MIN_ENTER_SCORE))->LimitText(8);
((CEdit *)GetDlgItem(IDC_MAX_ENTER_SCORE))->LimitText(8);
((CEdit *)GetDlgItem(IDC_MIN_TABLE_SCORE))->LimitText(8);
//会员配置
CComboBox * pMinMember=(CComboBox *)GetDlgItem(IDC_MIN_ENTER_MEMBER);
CComboBox * pMaxMember=(CComboBox *)GetDlgItem(IDC_MAX_ENTER_MEMBER);
LPCTSTR pszMember[]={TEXT("没有限制"),TEXT("蓝钻会员"),TEXT("黄钻会员"),TEXT("白钻会员"),TEXT("红钻会员"),TEXT("VIP会员")};
//会员信息
for (INT i=0;i<CountArray(pszMember);i++)
{
pMinMember->SetItemData(pMinMember->AddString(pszMember[i]),i);
pMaxMember->SetItemData(pMaxMember->AddString(pszMember[i]),i);
}
//控件禁用
GetDlgItem(IDC_ALLOW_DYNAMIC_JOIN)->EnableWindow((m_pGameServiceAttrib->cbDynamicJoin==TRUE)?TRUE:FALSE);
GetDlgItem(IDC_ALLOW_ANDROID_ATTEND)->EnableWindow((m_pGameServiceAttrib->cbAndroidUser==TRUE)?TRUE:FALSE);
GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE)->EnableWindow((m_pGameServiceAttrib->cbOffLineTrustee==TRUE)?TRUE:FALSE);
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerOptionItem3::CDlgServerOptionItem3() : CDlgServerOptionItem(IDD_SERVER_OPTION_3)
{
}
//析构函数
CDlgServerOptionItem3::~CDlgServerOptionItem3()
{
}
//初始化函数
BOOL CDlgServerOptionItem3::OnInitDialog()
{
__super::OnInitDialog();
//最少人数
if (m_pGameServiceOption->wMinDistributeUser!=0)
{
SetDlgItemInt(IDC_MIN_DISTRIBUTE_USER,m_pGameServiceOption->wMinDistributeUser);
}
//最多人数
if (m_pGameServiceOption->wMaxDistributeUser!=0)
{
SetDlgItemInt(IDC_MAX_DISTRIBUTE_USER,m_pGameServiceOption->wMaxDistributeUser);
}
//分组间隔
if (m_pGameServiceOption->wDistributeTimeSpace!=0)
{
SetDlgItemInt(IDC_DISTRIBUTE_TIME_SPACE,m_pGameServiceOption->wDistributeTimeSpace);
}
//分组局数
if (m_pGameServiceOption->wDistributeDrawCount!=0)
{
SetDlgItemInt(IDC_DISTRIBUTE_DRAW_COUNT,m_pGameServiceOption->wDistributeDrawCount);
}
//开始延时
if (m_pGameServiceOption->wDistributeStartDelay!=0)
{
SetDlgItemInt(IDC_DISTRIBUTE_START_DELAY,m_pGameServiceOption->wDistributeStartDelay);
}
//允许分组
bool bDistributeAllow=((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_ALLOW)!=0);
((CButton *)GetDlgItem(IDC_DISTRIBUTE_ALLOW))->SetCheck((bDistributeAllow==TRUE)?BST_CHECKED:BST_UNCHECKED);
//入座选项
bool bDistributeImmediate=((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_IMMEDIATE)!=0);
((CButton *)GetDlgItem(IDC_DISTRIBUTE_IMMEDIATE))->SetCheck((bDistributeImmediate==TRUE)?BST_CHECKED:BST_UNCHECKED);
//同桌选项
bool bDistributeLastTable=((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_LAST_TABLE)!=0);
((CButton *)GetDlgItem(IDC_DISTRIBUTE_LAST_TABLE))->SetCheck((bDistributeLastTable==TRUE)?BST_CHECKED:BST_UNCHECKED);
//地址选项
bool bDistributeSameAddress=((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_SAME_ADDRESS)!=0);
((CButton *)GetDlgItem(IDC_DISTRIBUTE_SAME_ADDRESS))->SetCheck((bDistributeSameAddress==TRUE)?BST_CHECKED:BST_UNCHECKED);
//相邻选项
bool bDistributeAdjacent = ((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_ADJACENT) != 0);
((CButton *)GetDlgItem(IDC_DISTRIBUTE_ADJACENT))->SetCheck((bDistributeAdjacent == TRUE) ? BST_CHECKED : BST_UNCHECKED);
return TRUE;
}
//保存输入
bool CDlgServerOptionItem3::SaveInputInfo()
{
//属性配置
m_pGameServiceOption->wMinDistributeUser=GetDlgItemInt(IDC_MIN_DISTRIBUTE_USER);
m_pGameServiceOption->wMaxDistributeUser=GetDlgItemInt(IDC_MAX_DISTRIBUTE_USER);
m_pGameServiceOption->wDistributeTimeSpace=GetDlgItemInt(IDC_DISTRIBUTE_TIME_SPACE);
m_pGameServiceOption->wDistributeDrawCount=GetDlgItemInt(IDC_DISTRIBUTE_DRAW_COUNT);
m_pGameServiceOption->wDistributeStartDelay=GetDlgItemInt(IDC_DISTRIBUTE_START_DELAY);
//允许分组
if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_ALLOW))->GetCheck()==BST_CHECKED)
{
m_pGameServiceOption->cbDistributeRule|=DISTRIBUTE_ALLOW;
}
else
{
m_pGameServiceOption->cbDistributeRule&=~DISTRIBUTE_ALLOW;
}
//入座选项
if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_IMMEDIATE))->GetCheck()==BST_CHECKED)
{
m_pGameServiceOption->cbDistributeRule|=DISTRIBUTE_IMMEDIATE;
}
else
{
m_pGameServiceOption->cbDistributeRule&=~DISTRIBUTE_IMMEDIATE;
}
//同桌选项
if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_LAST_TABLE))->GetCheck()==BST_CHECKED)
{
m_pGameServiceOption->cbDistributeRule|=DISTRIBUTE_LAST_TABLE;
}
else
{
m_pGameServiceOption->cbDistributeRule&=~DISTRIBUTE_LAST_TABLE;
}
//地址选项
if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_SAME_ADDRESS))->GetCheck()==BST_CHECKED)
{
m_pGameServiceOption->cbDistributeRule|=DISTRIBUTE_SAME_ADDRESS;
}
else
{
m_pGameServiceOption->cbDistributeRule&=~DISTRIBUTE_SAME_ADDRESS;
}
//相邻选项
if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_ADJACENT))->GetCheck() == BST_CHECKED)
{
m_pGameServiceOption->cbDistributeRule |= DISTRIBUTE_ADJACENT;
}
else
{
m_pGameServiceOption->cbDistributeRule &= ~DISTRIBUTE_ADJACENT;
}
return true;
}
//调整控件
VOID CDlgServerOptionItem3::RectifyControl(INT nWidth, INT nHeight)
{
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerOptionItem4::CDlgServerOptionItem4() : CDlgServerOptionItem(IDD_SERVER_OPTION_4)
{
//设置变量
m_nSelectItem = -1;
}
//析构函数
CDlgServerOptionItem4::~CDlgServerOptionItem4()
{
}
//交换数据
VOID CDlgServerOptionItem4::DoDataExchange(CDataExchange* pDX)
{
//绑定控件
DDX_Control(pDX, IDC_COMBO_ENTER_HOUR, m_cbEnterHour);
DDX_Control(pDX, IDC_COMBO_ENTER_MINUTE, m_cbEnterMinute);
DDX_Control(pDX, IDC_COMBO_ENTER_SECOND, m_cbEnterSecond);
DDX_Control(pDX, IDC_COMBO_LEAVE_HOUR, m_cbLeaveHour);
DDX_Control(pDX, IDC_COMBO_LEAVE_MINUTE, m_cbLeaveMinute);
DDX_Control(pDX, IDC_COMBO_LEAVE_SECOND, m_cbLeaveSecond);
//绑定控件
DDX_Control(pDX, IDC_EDIT_ANDROID_COUNT, m_edtAndroidCount);
DDX_Control(pDX, IDC_EDIT_TAKESCORE_MIN, m_edtTableScoreMin);
DDX_Control(pDX, IDC_EDIT_TAKESCORE_MAX, m_edtTableScoreMax);
DDX_Control(pDX, IDC_EDIT_ENTERINTERVAL_MIN, m_edtEnterIntervalMin);
DDX_Control(pDX, IDC_EDIT_ENTERINTERVAL_MAX, m_edtEnterIntervalMax);
DDX_Control(pDX, IDC_EDIT_LEAVEINTERVAL_MIN, m_edtLeaveIntervalMin);
DDX_Control(pDX, IDC_EDIT_LEAVEINTERVAL_MAX, m_edtLeaveIntervalMax);
DDX_Control(pDX, IDC_EDIT_SWITCHTABLE_MIN, m_edtSwitchTableMin);
DDX_Control(pDX, IDC_EDIT_SWITCHTABLE_MAX, m_edtSwitchTableMax);
//绑定控件
DDX_Control(pDX, IDC_BT_ADD, m_btAddItem);
DDX_Control(pDX, IDC_BT_MODIFY, m_btModifyItem);
DDX_Control(pDX, IDC_BT_DELETE, m_btDeleteItem);
//绑定控件
DDX_Control(pDX, IDC_LIST_PARAMETER, m_ParemeterList);
__super::DoDataExchange(pDX);
}
//初始化函数
BOOL CDlgServerOptionItem4::OnInitDialog()
{
__super::OnInitDialog();
//输入限制
m_edtAndroidCount.LimitText(3);
m_edtTableScoreMin.LimitText(16);
m_edtTableScoreMax.LimitText(16);
m_edtSwitchTableMin.LimitText(4);
m_edtSwitchTableMax.LimitText(4);
m_edtEnterIntervalMin.LimitText(4);
m_edtEnterIntervalMax.LimitText(4);
m_edtLeaveIntervalMin.LimitText(4);
m_edtLeaveIntervalMax.LimitText(4);
//变量定义
CString strItemText;
//下拉控件
for (BYTE cbIndex = 0; cbIndex < 24; cbIndex++)
{
strItemText.Format(TEXT("%d"), cbIndex);
m_cbEnterHour.SetItemData(m_cbEnterHour.InsertString(cbIndex, strItemText), cbIndex);
m_cbLeaveHour.SetItemData(m_cbLeaveHour.InsertString(cbIndex, strItemText), cbIndex);
}
//下拉控件
for (BYTE cbIndex = 0; cbIndex < 60; cbIndex++)
{
strItemText.Format(TEXT("%d"), cbIndex);
m_cbEnterMinute.SetItemData(m_cbEnterMinute.InsertString(cbIndex, strItemText), cbIndex);
m_cbEnterSecond.SetItemData(m_cbEnterSecond.InsertString(cbIndex, strItemText), cbIndex);
m_cbLeaveMinute.SetItemData(m_cbLeaveMinute.InsertString(cbIndex, strItemText), cbIndex);
m_cbLeaveSecond.SetItemData(m_cbLeaveSecond.InsertString(cbIndex, strItemText), cbIndex);
}
//设置控件
DWORD dwExstyle = m_ParemeterList.GetExtendedStyle();
m_ParemeterList.SetExtendedStyle(dwExstyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | WS_EX_STATICEDGE);
//列表控件
m_ParemeterList.InsertColumn(0, TEXT("批次标识"), LVCFMT_CENTER, 60);
m_ParemeterList.InsertColumn(1, TEXT("机器数目"), LVCFMT_CENTER, 60);
m_ParemeterList.InsertColumn(2, TEXT("服务模式"), LVCFMT_CENTER, 60);
m_ParemeterList.InsertColumn(3, TEXT("进入时间"), LVCFMT_CENTER, 60);
m_ParemeterList.InsertColumn(4, TEXT("离开时间"), LVCFMT_CENTER, 60);
m_ParemeterList.InsertColumn(5, TEXT("携带最少分数"), LVCFMT_CENTER, 90);
m_ParemeterList.InsertColumn(6, TEXT("携带最大分数"), LVCFMT_CENTER, 90);
m_ParemeterList.InsertColumn(7, TEXT("进入最小间隔"), LVCFMT_CENTER, 90);
m_ParemeterList.InsertColumn(8, TEXT("进入最大间隔"), LVCFMT_CENTER, 90);
m_ParemeterList.InsertColumn(9, TEXT("离开最小间隔"), LVCFMT_CENTER, 90);
m_ParemeterList.InsertColumn(10, TEXT("离开最大间隔"), LVCFMT_CENTER, 90);
m_ParemeterList.InsertColumn(11, TEXT("换桌最小局数"), LVCFMT_CENTER, 90);
m_ParemeterList.InsertColumn(12, TEXT("换桌最大局数"), LVCFMT_CENTER, 90);
//获取数据
CWHArray<tagAndroidParameter> aryAndParameter;
CServerInfoManager ServerInfoManager;
ServerInfoManager.GetAndroidParameter(m_pGameServiceOption->wServerID, aryAndParameter);
OnEventAndroidParenter(SUB_GP_GET_PARAMETER, aryAndParameter.GetCount(), aryAndParameter.GetData());
return TRUE;
}
//保存输入
bool CDlgServerOptionItem4::SaveInputInfo()
{
return true;
}
//调整控件
VOID CDlgServerOptionItem4::RectifyControl(INT nWidth, INT nHeight)
{
return;
}
//添加修改
VOID CDlgServerOptionItem4::AddModifyParameter(bool bModify)
{
//变量定义
TCHAR szMessage[128] = TEXT("");
tagAndroidParameter AndroidParameter;
ZeroMemory(&AndroidParameter, sizeof(AndroidParameter));
//选择判断
if (bModify == true && m_nSelectItem == -1) return;
//机器数目
AndroidParameter.dwAndroidCount = GetDlgItemInt(IDC_EDIT_ANDROID_COUNT);
//统计机器人
DWORD dwAndroidCount = 0;
tagAndroidParameter * pItemData = NULL;
for (int nIndex = 0; nIndex < m_ParemeterList.GetItemCount(); nIndex++)
{
pItemData = (tagAndroidParameter *)m_ParemeterList.GetItemData(nIndex);
if (pItemData != NULL)
{
if (bModify == false || nIndex != m_nSelectItem)
{
dwAndroidCount += pItemData->dwAndroidCount;
}
}
}
if (AndroidParameter.dwAndroidCount <= 0 || AndroidParameter.dwAndroidCount + dwAndroidCount > MAX_ANDROID)
{
_sntprintf_s(szMessage, CountArray(szMessage), TEXT("抱歉,每个房间的机器人数目最多为%d个,请重新输入!"), MAX_ANDROID);
//消息提示
MessageBox(szMessage, TEXT("提示"));
//设置焦点
m_edtAndroidCount.SetFocus();
return;
}
//服务模式
AndroidParameter.dwServiceMode |= ((CButton *)GetDlgItem(IDC_CHECK_SERVICE_MODE1))->GetCheck() == BST_CHECKED ? ANDROID_SIMULATE : 0;
AndroidParameter.dwServiceMode |= ((CButton *)GetDlgItem(IDC_CHECK_SERVICE_MODE2))->GetCheck() == BST_CHECKED ? ANDROID_INITIATIVE : 0;
AndroidParameter.dwServiceMode |= ((CButton *)GetDlgItem(IDC_CHECK_SERVICE_MODE3))->GetCheck() == BST_CHECKED ? ANDROID_PASSIVITY : 0;
if (AndroidParameter.dwServiceMode == 0)
{
//消息提示
MessageBox(TEXT("请您至少勾选一种服务模式!"), TEXT("提示"));
return;
}
//进出时间
AndroidParameter.dwEnterTime = GetDlgItemInt(IDC_COMBO_ENTER_HOUR) * 3600 + GetDlgItemInt(IDC_COMBO_ENTER_MINUTE) * 60 + GetDlgItemInt(IDC_COMBO_ENTER_SECOND);
AndroidParameter.dwLeaveTime = GetDlgItemInt(IDC_COMBO_LEAVE_HOUR) * 3600 + GetDlgItemInt(IDC_COMBO_LEAVE_MINUTE) * 60 + GetDlgItemInt(IDC_COMBO_LEAVE_SECOND);
//计算间隔
DWORD dwIntervalTime = 0;
if (AndroidParameter.dwLeaveTime >= AndroidParameter.dwEnterTime)
{
dwIntervalTime = AndroidParameter.dwLeaveTime - AndroidParameter.dwEnterTime;
}
else
{
dwIntervalTime = AndroidParameter.dwLeaveTime + 24 * 3600 - AndroidParameter.dwEnterTime;
}
//间隔太短
if (dwIntervalTime < MIN_INOUTINTERVAL)
{
_sntprintf_s(szMessage, CountArray(szMessage), TEXT("抱歉,机器人离开的时间最少要比进入的时间晚%d分钟"), MIN_INOUTINTERVAL / 60);
//消息提示
MessageBox(szMessage, TEXT("提示"));
return;
}
//间隔太长
if (dwIntervalTime > MAX_INOUTINTERVAL)
{
_sntprintf_s(szMessage, CountArray(szMessage), TEXT("抱歉,机器人离开和进入的时间必须在%d小时之内"), MAX_INOUTINTERVAL / 3600);
//消息提示
MessageBox(szMessage, TEXT("提示"));
return;
}
//变量定义
TCHAR szValue[32] = TEXT("");
//最小分数
GetDlgItemText(IDC_EDIT_TAKESCORE_MIN, szValue, CountArray(szValue));
AndroidParameter.lTakeMinScore = _tcstoi64(szValue, NULL, 10);
//最大分数
GetDlgItemText(IDC_EDIT_TAKESCORE_MAX, szValue, CountArray(szValue));
AndroidParameter.lTakeMaxScore = _tcstoi64(szValue, NULL, 10);
//分数校验
if (AndroidParameter.lTakeMaxScore - AndroidParameter.lTakeMinScore < 0)
{
//消息提示
MessageBox(TEXT("抱歉,机器人携带的最大分数不能低于最小分数!"), TEXT("提示"));
return;
}
//进入间隔
AndroidParameter.dwEnterMinInterval = GetDlgItemInt(IDC_EDIT_ENTERINTERVAL_MIN);
AndroidParameter.dwEnterMaxInterval = GetDlgItemInt(IDC_EDIT_ENTERINTERVAL_MAX);
//间隔校验
if (AndroidParameter.dwEnterMaxInterval < AndroidParameter.dwEnterMinInterval)
{
//消息提示
MessageBox(TEXT("抱歉,机器人进入房间的最大间隔不能低于最小间隔!"), TEXT("提示"));
return;
}
//离开间隔
AndroidParameter.dwLeaveMinInterval = GetDlgItemInt(IDC_EDIT_LEAVEINTERVAL_MIN);
AndroidParameter.dwLeaveMaxInterval = GetDlgItemInt(IDC_EDIT_LEAVEINTERVAL_MAX);
//间隔校验
if (AndroidParameter.dwLeaveMaxInterval < AndroidParameter.dwLeaveMinInterval)
{
//消息提示
MessageBox(TEXT("抱歉,机器人离开房间的最大间隔不能低于最小间隔!"), TEXT("提示"));
return;
}
//离开间隔
AndroidParameter.dwSwitchMinInnings = GetDlgItemInt(IDC_EDIT_SWITCHTABLE_MIN);
AndroidParameter.dwSwitchMaxInnings = GetDlgItemInt(IDC_EDIT_SWITCHTABLE_MAX);
//局数校验
if (AndroidParameter.dwSwitchMaxInnings < AndroidParameter.dwSwitchMinInnings)
{
//消息提示
MessageBox(TEXT("抱歉,机器人换桌的最大局数不能小于最小局数!"), TEXT("提示"));
return;
}
if (m_pGameServiceOption == NULL || m_pGameServiceOption->wServerID == 0)
{
MessageBox(TEXT("请创建房间成功后再配置机器人?"));
return;
}
if (bModify == false)
{
//数目判断
if (m_ParemeterList.GetItemCount() >= MAX_BATCH)
{
_sntprintf_s(szMessage, CountArray(szMessage), TEXT("抱歉,每个房间最多只能添加%d批机器人参数"), MAX_BATCH);
MessageBox(szMessage, TEXT("提示"));
return;
}
//增加机器人
CServerInfoManager ServerInfoManager;
ServerInfoManager.AddAndroidParameter(m_pGameServiceOption->wServerID, &AndroidParameter);
OnEventAndroidParenter(SUB_GP_ADD_PARAMETER, 1, &AndroidParameter);
}
else
{
if (m_nSelectItem == -1) return;
tagAndroidParameter * pItemData = (tagAndroidParameter *)m_ParemeterList.GetItemData(m_nSelectItem);
if (pItemData == NULL) return;
//获取数据
CServerInfoManager ServerInfoManager;
AndroidParameter.dwBatchID = pItemData->dwBatchID;
ServerInfoManager.ModifyAndroidParameter(m_pGameServiceOption->wServerID, &AndroidParameter);
OnEventAndroidParenter(SUB_GP_MODIFY_PARAMETER, 1, &AndroidParameter);
}
return;
}
//选中子项
VOID CDlgServerOptionItem4::SelectItem(int nIndex)
{
//设置变量
m_nSelectItem = nIndex;
if (m_nSelectItem == -1) return;
//获取数据
tagAndroidParameter * pItemData = (tagAndroidParameter *)m_ParemeterList.GetItemData(m_nSelectItem);
if (pItemData == NULL) return;
//机器数目
SetDlgItemInt(IDC_EDIT_ANDROID_COUNT, pItemData->dwAndroidCount);
//服务模式
((CButton *)GetDlgItem(IDC_CHECK_SERVICE_MODE1))->SetCheck((pItemData->dwServiceMode&ANDROID_SIMULATE) ? BST_CHECKED : BST_UNCHECKED);
((CButton *)GetDlgItem(IDC_CHECK_SERVICE_MODE2))->SetCheck((pItemData->dwServiceMode&ANDROID_INITIATIVE) ? BST_CHECKED : BST_UNCHECKED);
((CButton *)GetDlgItem(IDC_CHECK_SERVICE_MODE3))->SetCheck((pItemData->dwServiceMode&ANDROID_PASSIVITY) ? BST_CHECKED : BST_UNCHECKED);
//进入小时
int nHourIndex = pItemData->dwEnterTime / 3600;
m_cbEnterHour.SetCurSel(nHourIndex);
//进入分钟
int nMinuteIndex = (pItemData->dwEnterTime - nHourIndex * 3600) / 60;
m_cbEnterMinute.SetCurSel(nMinuteIndex);
//进入秒钟
int nSecondIndex = pItemData->dwEnterTime - nHourIndex * 3600 - nMinuteIndex * 60;
m_cbEnterSecond.SetCurSel(nSecondIndex);
//离开小时
nHourIndex = pItemData->dwLeaveTime / 3600;
m_cbLeaveHour.SetCurSel(nHourIndex);
//离开分钟
nMinuteIndex = (pItemData->dwLeaveTime - nHourIndex * 3600) / 60;
m_cbLeaveMinute.SetCurSel(nMinuteIndex);
//离开秒钟
nSecondIndex = pItemData->dwLeaveTime - nHourIndex * 3600 - nMinuteIndex * 60;
m_cbLeaveSecond.SetCurSel(nSecondIndex);
//携带分数
TCHAR szTakeScore[32] = TEXT("");
_sntprintf_s(szTakeScore, CountArray(szTakeScore), SCORE_STRING, pItemData->lTakeMinScore);
m_edtTableScoreMin.SetWindowText(szTakeScore);
_sntprintf_s(szTakeScore, CountArray(szTakeScore), SCORE_STRING, pItemData->lTakeMaxScore);
m_edtTableScoreMax.SetWindowText(szTakeScore);
//进入间隔
SetDlgItemInt(IDC_EDIT_ENTERINTERVAL_MIN, pItemData->dwEnterMinInterval);
SetDlgItemInt(IDC_EDIT_ENTERINTERVAL_MAX, pItemData->dwEnterMaxInterval);
//离开间隔
SetDlgItemInt(IDC_EDIT_LEAVEINTERVAL_MIN, pItemData->dwLeaveMinInterval);
SetDlgItemInt(IDC_EDIT_LEAVEINTERVAL_MAX, pItemData->dwLeaveMaxInterval);
//换桌局数
SetDlgItemInt(IDC_EDIT_SWITCHTABLE_MIN, pItemData->dwSwitchMinInnings);
SetDlgItemInt(IDC_EDIT_SWITCHTABLE_MAX, pItemData->dwSwitchMaxInnings);
}
//设置子项
VOID CDlgServerOptionItem4::SetItemToParameterList(int nItemIndex, tagAndroidParameter * pAndroidParameter)
{
//参数校验
ASSERT(nItemIndex != -1 && pAndroidParameter != NULL);
if (nItemIndex == -1 || pAndroidParameter == NULL) return;
//变量定义
TCHAR szItemValue[32] = TEXT("");
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwBatchID);
m_ParemeterList.SetItemText(nItemIndex, 0, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwAndroidCount);
m_ParemeterList.SetItemText(nItemIndex, 1, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwServiceMode);
m_ParemeterList.SetItemText(nItemIndex, 2, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwEnterTime);
m_ParemeterList.SetItemText(nItemIndex, 3, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwLeaveTime);
m_ParemeterList.SetItemText(nItemIndex, 4, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), SCORE_STRING, pAndroidParameter->lTakeMinScore);
m_ParemeterList.SetItemText(nItemIndex, 5, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), SCORE_STRING, pAndroidParameter->lTakeMaxScore);
m_ParemeterList.SetItemText(nItemIndex, 6, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwEnterMinInterval);
m_ParemeterList.SetItemText(nItemIndex, 7, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwEnterMaxInterval);
m_ParemeterList.SetItemText(nItemIndex, 8, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwLeaveMinInterval);
m_ParemeterList.SetItemText(nItemIndex, 9, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwLeaveMaxInterval);
m_ParemeterList.SetItemText(nItemIndex, 10, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwSwitchMinInnings);
m_ParemeterList.SetItemText(nItemIndex, 11, szItemValue);
//设置子项
_sntprintf_s(szItemValue, CountArray(szItemValue), TEXT("%d"), pAndroidParameter->dwSwitchMaxInnings);
m_ParemeterList.SetItemText(nItemIndex, 12, szItemValue);
}
//机器参数
VOID CDlgServerOptionItem4::OnEventAndroidParenter(WORD wSubCommdID, WORD wParameterCount, tagAndroidParameter * pAndroidParameter)
{
//获取参数
if (wSubCommdID == SUB_GP_GET_PARAMETER)
{
//变量定义
int nItemIndex = -1;
tagAndroidParameter * pTempParameter = NULL;
tagAndroidParameter * pItemData = NULL;
//清除子项
m_ParemeterList.DeleteAllItems();
//变量定义
LVITEM lVItem;
lVItem.mask = LVIF_TEXT;
lVItem.iSubItem = 0;
lVItem.pszText = TEXT("");
//循环插入
for (WORD wIndex = 0; wIndex < wParameterCount; wIndex++)
{
//获取参数
pTempParameter = &pAndroidParameter[wIndex];
if (pTempParameter == NULL) continue;
//插入子项.
lVItem.iItem = wIndex;
nItemIndex = m_ParemeterList.InsertItem(&lVItem);
if (nItemIndex == -1) continue;
//设置子项
SetItemToParameterList(nItemIndex, pTempParameter);
//申请资源
pItemData = new tagAndroidParameter;
if (pItemData != NULL)
{
//拷贝数据
CopyMemory(pItemData, pTempParameter, sizeof(tagAndroidParameter));
//设置数据
m_ParemeterList.SetItemData(nItemIndex, (DWORD)pItemData);
}
}
return;
}
//添加参数
if (wSubCommdID == SUB_GP_ADD_PARAMETER)
{
//变量定义
int nItemIndex = -1;
//变量定义
LVITEM lVItem;
lVItem.mask = LVIF_TEXT;
lVItem.iSubItem = 0;
lVItem.pszText = TEXT("");
//插入子项
lVItem.iItem = m_ParemeterList.GetItemCount();
nItemIndex = m_ParemeterList.InsertItem(&lVItem);
//设置子项
SetItemToParameterList(nItemIndex, pAndroidParameter);
//申请资源
tagAndroidParameter * pItemData = new tagAndroidParameter;
if (pItemData != NULL)
{
//拷贝数据
CopyMemory(pItemData, pAndroidParameter, sizeof(tagAndroidParameter));
//设置数据
m_ParemeterList.SetItemData(nItemIndex, (DWORD)pItemData);
}
return;
}
//修改参数
if (wSubCommdID == SUB_GP_MODIFY_PARAMETER)
{
//变量定义
int nItemIndex = -1;
tagAndroidParameter * pItemData = NULL;
//查找对象
for (int nIndex = 0; nIndex < m_ParemeterList.GetItemCount(); nIndex++)
{
//获取数据
tagAndroidParameter * pItemData = (tagAndroidParameter *)m_ParemeterList.GetItemData(nIndex);
if (pItemData == NULL) continue;
if (pAndroidParameter->dwBatchID == pItemData->dwBatchID)
{
//设置子项
SetItemToParameterList(nIndex, pAndroidParameter);
//拷贝数据
CopyMemory(pItemData, pAndroidParameter, sizeof(tagAndroidParameter));
break;
}
}
return;
}
//删除参数
if (wSubCommdID == SUB_GP_DELETE_PARAMETER)
{
//查找对象
for (int nIndex = 0; nIndex < m_ParemeterList.GetItemCount(); nIndex++)
{
tagAndroidParameter * pItemData = (tagAndroidParameter *)m_ParemeterList.GetItemData(nIndex);
if (pItemData == NULL) continue;
if (pAndroidParameter->dwBatchID == pItemData->dwBatchID)
{
//设置子项
m_ParemeterList.DeleteItem(nIndex);
break;
}
}
return;
}
return;
}
//单击子项
VOID CDlgServerOptionItem4::OnHdnListParameterItemclick(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
//选中子项
SelectItem(phdr->iItem);
*pResult = 0;
}
//删除子项
VOID CDlgServerOptionItem4::OnLvnListParameterDeleteitem(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
//获取数据
tagAndroidParameter * pItemData = (tagAndroidParameter *)m_ParemeterList.GetItemData(pNMLV->iItem);
if (pItemData != NULL)
{
SafeDelete(pItemData);
}
*pResult = 0;
}
//键盘按下
VOID CDlgServerOptionItem4::OnLvnKeydownListParameter(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLVKEYDOWN pLVKeyDow = reinterpret_cast<LPNMLVKEYDOWN>(pNMHDR);
//变量定义
int nItem = -1;
POSITION pos;
switch (pLVKeyDow->wVKey)
{
case VK_DOWN:
{
pos = m_ParemeterList.GetFirstSelectedItemPosition();
while (pos)
{
//获取子项
nItem = m_ParemeterList.GetNextSelectedItem(pos);
if (nItem == -1) break;
//设置子项
nItem = __min(nItem + 1, m_ParemeterList.GetItemCount() - 1);
SelectItem(nItem);
break;
}
break;
}
case VK_UP:
{
pos = m_ParemeterList.GetFirstSelectedItemPosition();
while (pos)
{
//获取子项
nItem = m_ParemeterList.GetNextSelectedItem(pos);
if (nItem == -1) break;
//设置子项
nItem = __max(nItem - 1, 0);
SelectItem(nItem);
break;
}
break;
}
}
*pResult = 0;
}
//添加子项
VOID CDlgServerOptionItem4::OnBnClickedBtAdd()
{
//添加子项
AddModifyParameter(false);
}
//编辑子项
VOID CDlgServerOptionItem4::OnBnClickedBtModify()
{
//添加子项
AddModifyParameter(true);
}
//删除子项
VOID CDlgServerOptionItem4::OnBnClickedBtDelete()
{
//获取索引
if (m_nSelectItem == -1) return;
if (m_ParemeterList.GetItemCount() <= m_nSelectItem)
{
m_nSelectItem = -1;
return;
}
//获取数据
tagAndroidParameter * pItemData = (tagAndroidParameter *)m_ParemeterList.GetItemData(m_nSelectItem);
if (pItemData == NULL) return;
//获取时间
SYSTEMTIME SystemTime;
GetLocalTime(&SystemTime);
DWORD dwTodayTickCount = SystemTime.wHour * 3600 + SystemTime.wMinute * 60 + SystemTime.wSecond;
//时间判断
if (dwTodayTickCount >= pItemData->dwEnterTime && dwTodayTickCount <= pItemData->dwLeaveTime)
{
//选择提示
INT nRetCode = MessageBox(TEXT("该批机器人正处在服务状态,您确定要删除吗?"), TEXT("警告"), MB_YESNO);
//暂时不退出
if (nRetCode == IDNO) return;
}
if (m_pGameServiceOption==NULL||m_pGameServiceOption->wServerID == 0)
{
MessageBox(TEXT("请创建房间成功后再配置机器人?"));
return;
}
//删除参数
CServerInfoManager ServerInfoManager;
ServerInfoManager.DeleteAndroidParameter(m_pGameServiceOption->wServerID, pItemData->dwBatchID);
OnEventAndroidParenter(SUB_GP_DELETE_PARAMETER, 1, pItemData);
//设置变量
m_nSelectItem = -1;
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerOptionItemCustom::CDlgServerOptionItemCustom() : CDlgServerOptionItem(IDD_SERVER_OPTION_6)
{
//设置变量
m_hCustomRule=NULL;
m_pIGameServiceCustomRule=NULL;
return;
}
//析构函数
CDlgServerOptionItemCustom::~CDlgServerOptionItemCustom()
{
}
//初始化函数
BOOL CDlgServerOptionItemCustom::OnInitDialog()
{
__super::OnInitDialog();
//获取位置
CRect rcClient;
GetClientRect(&rcClient);
//设置变量
m_pIGameServiceCustomRule=m_pDlgServerWizard->m_pIGameServiceCustomRule;
//创建窗口
WORD wCustonSize=sizeof(m_pGameServiceOption->cbCustomRule);
m_hCustomRule=m_pIGameServiceCustomRule->CreateCustomRule(this,rcClient,m_pGameServiceOption->cbCustomRule,wCustonSize);
return TRUE;
}
//保存输入
bool CDlgServerOptionItemCustom::SaveInputInfo()
{
//保存输入
if (m_hCustomRule!=NULL)
{
//保存设置
WORD wCustonSize=sizeof(m_pGameServiceOption->cbCustomRule);
bool bSuccess=m_pIGameServiceCustomRule->SaveCustomRule(m_pGameServiceOption->cbCustomRule,wCustonSize);
return bSuccess;
}
return true;
}
//调整控件
VOID CDlgServerOptionItemCustom::RectifyControl(INT nWidth, INT nHeight)
{
//调整位置
if (m_hCustomRule!=NULL)
{
::SetWindowPos(m_hCustomRule,NULL,0,0,nWidth,nHeight,SWP_NOMOVE|SWP_NOZORDER);
}
return;
}
//消耗消息
VOID CDlgServerOptionItemCustom::OnNcDestroy()
{
//关闭窗口
if (m_hCustomRule!=NULL)
{
::DestroyWindow(m_hCustomRule);
}
//设置变量
m_hCustomRule=NULL;
m_pIGameServiceCustomRule=NULL;
__super::OnNcDestroy();
}
//焦点消息
VOID CDlgServerOptionItemCustom::OnSetFocus(CWnd * pNewWnd)
{
__super::OnSetFocus(pNewWnd);
//设置焦点
if (m_hCustomRule!=NULL)
{
::SetFocus(m_hCustomRule);
}
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerWizardItem::CDlgServerWizardItem(UINT nIDTemplate) : CDialog(nIDTemplate)
{
//设置变量
m_pDlgServerWizard=NULL;
m_pGameServiceAttrib=NULL;
m_pGameServiceOption=NULL;
return;
}
//析构函数
CDlgServerWizardItem::~CDlgServerWizardItem()
{
}
//保存数据
bool CDlgServerWizardItem::SaveItemData()
{
//保存数据
if ((m_hWnd!=NULL)&&(SaveInputInfo()==false))
{
return false;
}
return true;
}
//创建向导
bool CDlgServerWizardItem::ShowWizardItem(const CRect & rcRect, CWnd * pParentWnd)
{
//创建窗口
if (m_hWnd==NULL)
{
//设置资源
AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME));
//创建窗口
Create(m_lpszTemplateName,pParentWnd);
SetWindowPos(NULL,rcRect.left,rcRect.top,rcRect.Width(),rcRect.Height(),SWP_NOZORDER|SWP_NOACTIVATE);
//设置资源
AfxSetResourceHandle(GetModuleHandle(NULL));
}
//显示窗口
ShowWindow(SW_SHOW);
return true;
}
//确定函数
VOID CDlgServerWizardItem::OnOK()
{
//投递消息
GetParent()->PostMessage(WM_COMMAND,MAKELONG(IDOK,0),0);
return;
}
//取消消息
VOID CDlgServerWizardItem::OnCancel()
{
//投递消息
GetParent()->PostMessage(WM_COMMAND,MAKELONG(IDCANCEL,0),0);
return;
}
//位置消息
VOID CDlgServerWizardItem::OnSize(UINT nType, INT cx, INT cy)
{
__super::OnSize(nType, cx, cy);
//调整控件
RectifyControl(cx,cy);
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerWizardItem1::CDlgServerWizardItem1() : CDlgServerWizardItem(IDD_SERVER_WIZARD_1)
{
}
//析构函数
CDlgServerWizardItem1::~CDlgServerWizardItem1()
{
}
//控件绑定
VOID CDlgServerWizardItem1::DoDataExchange(CDataExchange * pDX)
{
__super::DoDataExchange(pDX);
DDX_Control(pDX, IDC_PROMPT, m_StaticPrompt);
DDX_Control(pDX, IDC_MODULE_LIST, m_ModuleListControl);
}
//初始化函数
BOOL CDlgServerWizardItem1::OnInitDialog()
{
__super::OnInitDialog();
//加载列表
LoadDBModuleItem();
return TRUE;
}
//保存输入
bool CDlgServerWizardItem1::SaveInputInfo()
{
//变量定义
tagGameModuleInfo * pGameModuleInfo=NULL;
POSITION Position=m_ModuleListControl.GetFirstSelectedItemPosition();
//获取选择
if (Position!=NULL)
{
INT nListItem=m_ModuleListControl.GetNextSelectedItem(Position);
pGameModuleInfo=(tagGameModuleInfo *)m_ModuleListControl.GetItemData(nListItem);
}
//选择判断
if (pGameModuleInfo==NULL)
{
AfxMessageBox(TEXT("请您先从游戏列表中选择游戏组件"),MB_ICONERROR);
return false;
}
//游戏模块
m_GameServiceManager.CloseInstance();
m_GameServiceManager.SetModuleCreateInfo(pGameModuleInfo->szServerDLLName,GAME_SERVICE_CREATE_NAME);
//创建判断
if (pGameModuleInfo->dwNativeVersion==0L)
{
//构造提示
TCHAR szString[512]=TEXT("");
_sntprintf_s(szString,CountArray(szString),TEXT("[ %s ] 服务组件还没有安装,请先安装服务组件"),pGameModuleInfo->szGameName);
//提示消息
AfxMessageBox(szString,MB_ICONERROR);
return false;
}
//更新判断
if (pGameModuleInfo->dwNativeVersion!=pGameModuleInfo->dwServerVersion)
{
//构造提示
TCHAR szString[512]=TEXT("");
_sntprintf_s(szString,CountArray(szString),TEXT("[ %s ] 服务组件更新了,是否还继续创建房间吗?"),pGameModuleInfo->szGameName);
//提示消息
if (AfxMessageBox(szString,MB_ICONWARNING|MB_YESNO|MB_DEFBUTTON2)!=IDYES) return false;
}
//加载模块
if (m_GameServiceManager.CreateInstance()==false)
{
//构造提示
TCHAR szString[512]=TEXT("");
_sntprintf_s(szString,CountArray(szString),TEXT("[ %s ] 服务组件加载失败,创建游戏房间失败"),pGameModuleInfo->szGameName);
//提示消息
AfxMessageBox(szString,MB_ICONERROR);
return false;
}
//配置模块
m_pDlgServerWizard->SetWizardParameter(m_GameServiceManager.GetInterface(),NULL);
//默认设置
lstrcpyn(m_pGameServiceOption->szDataBaseName,pGameModuleInfo->szDataBaseName,CountArray(m_pGameServiceOption->szDataBaseName));
lstrcpyn(m_pGameServiceOption->szDataBaseAddr,pGameModuleInfo->szDataBaseAddr,CountArray(m_pGameServiceOption->szDataBaseAddr));
return true;
}
//调整控件
VOID CDlgServerWizardItem1::RectifyControl(INT nWidth, INT nHeight)
{
//调整提示
if (m_StaticPrompt.m_hWnd!=NULL)
{
m_StaticPrompt.SetWindowPos(NULL,5,8,nWidth-10,12,SWP_NOZORDER|SWP_NOCOPYBITS);
}
//调整列表
if (m_ModuleListControl.m_hWnd!=NULL)
{
m_ModuleListControl.SetWindowPos(NULL,5,28,nWidth-10,nHeight-28,SWP_NOZORDER|SWP_NOCOPYBITS);
}
return;
}
//加载列表
bool CDlgServerWizardItem1::LoadDBModuleItem()
{
//加载信息
if (m_ModuleInfoManager.LoadGameModuleInfo(m_ModuleInfoBuffer)==true)
{
//重置列表
m_ModuleListControl.DeleteAllItems();
//变量定义
POSITION Position=m_ModuleInfoBuffer.m_GameModuleInfoMap.GetStartPosition();
//枚举模块
while (Position!=NULL)
{
//获取对象
WORD wModuleID=0L;
tagGameModuleInfo * pGameModuleInfo=NULL;
m_ModuleInfoBuffer.m_GameModuleInfoMap.GetNextAssoc(Position,wModuleID,pGameModuleInfo);
//插入列表
ASSERT(pGameModuleInfo!=NULL);
if (pGameModuleInfo!=NULL) m_ModuleListControl.InsertModuleInfo(pGameModuleInfo);
}
}
return false;
}
//双击列表
VOID CDlgServerWizardItem1::OnNMDblclkModuleList(NMHDR * pNMHDR, LRESULT * pResult)
{
//加载配置
if (((NMITEMACTIVATE *)pNMHDR)->iItem!=LB_ERR)
{
//变量定义
INT nListItem=((NMITEMACTIVATE *)pNMHDR)->iItem;
tagGameModuleInfo * pGameModuleInfo=(tagGameModuleInfo *)m_ModuleListControl.GetItemData(nListItem);
//投递消息
if (pGameModuleInfo->dwNativeVersion!=0L)
{
GetParent()->PostMessage(WM_COMMAND,MAKELONG(IDC_NEXT,0),0);
}
return;
}
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerWizardItem2::CDlgServerWizardItem2() : CDlgServerWizardItem(IDD_SERVER_WIZARD_2)
{
//设置变量
m_wItemCount=0;
m_wActiveIndex=INVALID_WORD;
ZeroMemory(m_pOptionItem,sizeof(m_pOptionItem));
return;
}
//析构函数
CDlgServerWizardItem2::~CDlgServerWizardItem2()
{
}
//控件绑定
VOID CDlgServerWizardItem2::DoDataExchange(CDataExchange * pDX)
{
__super::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB_CTRL, m_TabCtrl);
}
//初始化函数
BOOL CDlgServerWizardItem2::OnInitDialog()
{
__super::OnInitDialog();
//设置变量
m_wItemCount=0;
m_wActiveIndex=INVALID_WORD;
//基本配置
m_pOptionItem[m_wItemCount++]=&m_ServerOptionItem1;
m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_1,TEXT("基本配置"));
//房间选项
m_pOptionItem[m_wItemCount++]=&m_ServerOptionItem2;
m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_2,TEXT("房间选项"));
//附加权限
m_pOptionItem[m_wItemCount++]=&m_ServerOptionItem3;
m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_3,TEXT("分组选项"));
//机器人配置
m_pOptionItem[m_wItemCount++] = &m_ServerOptionItem4;
m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_4, TEXT("机器人配置"));
//服务定制
if (m_pDlgServerWizard->m_pIGameServiceCustomRule!=NULL)
{
m_pOptionItem[m_wItemCount++]=&m_ServerOptionItemCustom;
m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_CUSTOM,TEXT("服务定制"));
}
//激活子项
ActiveOptionItem(0);
return TRUE;
}
//保存输入
bool CDlgServerWizardItem2::SaveInputInfo()
{
//保存输入
for (INT i=0;i<m_wItemCount;i++)
{
if (m_pOptionItem[i]->SaveItemData()==false)
{
ActiveOptionItem(i);
return false;
}
}
return true;
}
//调整控件
VOID CDlgServerWizardItem2::RectifyControl(INT nWidth, INT nHeight)
{
//调整选择
if (m_TabCtrl.m_hWnd!=NULL)
{
m_TabCtrl.SetWindowPos(NULL,5,5,nWidth-10,nHeight-5,SWP_NOZORDER|SWP_NOCOPYBITS);
}
//调整选择
if ((m_TabCtrl.m_hWnd!=NULL)&&(m_wActiveIndex!=INVALID_WORD))
{
//获取位置
CRect rcItemRect;
m_TabCtrl.GetWindowRect(&rcItemRect);
//计算位置
m_TabCtrl.ScreenToClient(&rcItemRect);
m_TabCtrl.AdjustRect(FALSE,&rcItemRect);
//移动位置
m_pOptionItem[m_wActiveIndex]->MoveWindow(&rcItemRect);
}
return;
}
//激活向导
bool CDlgServerWizardItem2::ActiveOptionItem(WORD wIndex)
{
//判断状态
if (m_wActiveIndex==wIndex)
{
m_pOptionItem[m_wActiveIndex]->SetFocus();
return true;
}
//保存旧项
CDlgServerOptionItem * pItemOption=NULL;
if (m_wActiveIndex<m_wItemCount) pItemOption=m_pOptionItem[m_wActiveIndex];
//获取位置
CRect rcItemRect;
m_TabCtrl.GetWindowRect(&rcItemRect);
//计算位置
m_TabCtrl.ScreenToClient(&rcItemRect);
m_TabCtrl.AdjustRect(FALSE,&rcItemRect);
//设置新项
m_pOptionItem[wIndex]->m_pDlgServerWizard=m_pDlgServerWizard;
m_pOptionItem[wIndex]->m_pGameServiceAttrib=m_pGameServiceAttrib;
m_pOptionItem[wIndex]->m_pGameServiceOption=m_pGameServiceOption;
//创建新项
m_wActiveIndex=wIndex;
m_pOptionItem[m_wActiveIndex]->ShowOptionItem(rcItemRect,&m_TabCtrl);
//激活新项
m_pOptionItem[m_wActiveIndex]->SetFocus();
if (pItemOption!=NULL) pItemOption->ShowWindow(SW_HIDE);
//设置选择
if (m_TabCtrl.GetCurSel()!=wIndex) m_TabCtrl.SetCurSel(wIndex);
return true;
}
//焦点消息
VOID CDlgServerWizardItem2::OnSetFocus(CWnd * pNewWnd)
{
__super::OnSetFocus(pNewWnd);
//设置焦点
if ((m_wActiveIndex!=INVALID_WORD)&&(m_pOptionItem[m_wActiveIndex]->m_hWnd!=NULL))
{
m_pOptionItem[m_wActiveIndex]->SetFocus();
}
return;
}
//选择改变
VOID CDlgServerWizardItem2::OnTcnSelchangeTabCtrl(NMHDR * pNMHDR, LRESULT * pResult)
{
//设置页面
switch (m_TabCtrl.GetCurSel())
{
case ITEM_SERVER_OPTION_1:{ ActiveOptionItem(0); break; }
case ITEM_SERVER_OPTION_2:{ ActiveOptionItem(1); break; }
case ITEM_SERVER_OPTION_3:{ ActiveOptionItem(2); break; }
case ITEM_SERVER_OPTION_4:{ ActiveOptionItem(3); break; }
case ITEM_SERVER_OPTION_CUSTOM:{ ActiveOptionItem(4); break; }
}
return;
}
//////////////////////////////////////////////////////////////////////////////////
//构造函数
CDlgServerWizard::CDlgServerWizard() : CDialog(IDD_SERVER_WIZARD_MAIN)
{
//设置变量
m_wActiveIndex=INVALID_WORD;
m_pWizardItem[0]=&m_ServerWizardItem1;
m_pWizardItem[1]=&m_ServerWizardItem2;
//接口变量
m_pIGameServiceManager=NULL;
m_pIGameServiceCustomRule=NULL;
//配置信息
ZeroMemory(&m_ModuleInitParameter,sizeof(m_ModuleInitParameter));
return;
}
//析构函数
CDlgServerWizard::~CDlgServerWizard()
{
}
//初始化函数
BOOL CDlgServerWizard::OnInitDialog()
{
__super::OnInitDialog();
//设置资源
AfxSetResourceHandle(GetModuleHandle(NULL));
//激活向导
ActiveWizardItem((m_pIGameServiceManager==NULL)?0:1);
//组件属性
if (m_pIGameServiceManager!=NULL)
{
SetDlgItemInt(IDC_GAME_ID,m_ModuleInitParameter.GameServiceAttrib.wKindID);
SetDlgItemText(IDC_GAME_NAME,m_ModuleInitParameter.GameServiceAttrib.szGameName);
SetDlgItemInt(IDC_CHAIR_COUNT,m_ModuleInitParameter.GameServiceAttrib.wChairCount);
SetDlgItemText(IDC_DATABASE_NAME,m_ModuleInitParameter.GameServiceAttrib.szDataBaseName);
SetDlgItemText(IDC_CLIENT_EXE_NAME,m_ModuleInitParameter.GameServiceAttrib.szClientEXEName);
SetDlgItemText(IDC_SERVICE_DLL_NAME,m_ModuleInitParameter.GameServiceAttrib.szServerDLLName);
}
return FALSE;
}
//确定函数
VOID CDlgServerWizard::OnOK()
{
if ((m_wActiveIndex+1)<CountArray(m_pWizardItem))
{
OnBnClickedNext();
}
else
{
OnBnClickedFinish();
}
return;
}
//创建房间
bool CDlgServerWizard::CreateGameServer()
{
//设置资源
AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME));
//配置房间
if (DoModal()==IDOK)
{
return true;
}
return false;
}
//设置接口
VOID CDlgServerWizard::SetWizardParameter(IGameServiceManager * pIGameServiceManager, tagGameServiceOption * pGameServiceOption)
{
//销毁子项
if (pGameServiceOption==NULL)
{
for (WORD i=1;i<CountArray(m_pWizardItem);i++)
{
if ((m_pWizardItem[i]!=NULL)&&(m_pWizardItem[i]->m_hWnd!=NULL))
{
m_pWizardItem[i]->DestroyWindow();
}
}
}
//设置变量
m_pIGameServiceCustomRule=NULL;
ZeroMemory(&m_ModuleInitParameter,sizeof(m_ModuleInitParameter));
//获取属性
ASSERT(pIGameServiceManager!=NULL);
pIGameServiceManager->GetServiceAttrib(m_ModuleInitParameter.GameServiceAttrib);
//设置接口
m_pIGameServiceManager=pIGameServiceManager;
m_pIGameServiceCustomRule=QUERY_OBJECT_PTR_INTERFACE(m_pIGameServiceManager,IGameServiceCustomRule);
//组件属性
if (m_hWnd!=NULL)
{
SetDlgItemInt(IDC_GAME_ID,m_ModuleInitParameter.GameServiceAttrib.wKindID);
SetDlgItemText(IDC_GAME_NAME,m_ModuleInitParameter.GameServiceAttrib.szGameName);
SetDlgItemInt(IDC_CHAIR_COUNT,m_ModuleInitParameter.GameServiceAttrib.wChairCount);
SetDlgItemText(IDC_DATABASE_NAME,m_ModuleInitParameter.GameServiceAttrib.szDataBaseName);
SetDlgItemText(IDC_CLIENT_EXE_NAME,m_ModuleInitParameter.GameServiceAttrib.szClientEXEName);
SetDlgItemText(IDC_SERVICE_DLL_NAME,m_ModuleInitParameter.GameServiceAttrib.szServerDLLName);
}
//设置规则
if (pGameServiceOption==NULL)
{
//自定规则
if (m_pIGameServiceCustomRule!=NULL)
{
WORD wCustomSize=sizeof(m_ModuleInitParameter.GameServiceOption.cbCustomRule);
m_pIGameServiceCustomRule->DefaultCustomRule(m_ModuleInitParameter.GameServiceOption.cbCustomRule,wCustomSize);
}
//调整参数
ASSERT(m_pIGameServiceManager!=NULL);
m_pIGameServiceManager->RectifyParameter(m_ModuleInitParameter.GameServiceOption);
}
else
{
//拷贝规则
CopyMemory(&m_ModuleInitParameter.GameServiceOption,pGameServiceOption,sizeof(tagGameServiceOption));
}
return;
}
//激活向导
bool CDlgServerWizard::ActiveWizardItem(WORD wIndex)
{
//判断状态
if (m_wActiveIndex==wIndex)
{
m_pWizardItem[m_wActiveIndex]->SetFocus();
return true;
}
//保存旧项
CDlgServerWizardItem * pItemWizard=NULL;
if (m_wActiveIndex<CountArray(m_pWizardItem))
{
//设置变量
pItemWizard=m_pWizardItem[m_wActiveIndex];
//保存数据
if ((wIndex>m_wActiveIndex)&&(m_pWizardItem[m_wActiveIndex]->SaveItemData()==false)) return false;
}
//获取位置
CRect rcItemRect;
GetDlgItem(IDC_ITEM_FRAME)->GetWindowRect(rcItemRect);
ScreenToClient(&rcItemRect);
//设置新项
m_pWizardItem[wIndex]->m_pDlgServerWizard=this;
m_pWizardItem[wIndex]->m_pGameServiceAttrib=&m_ModuleInitParameter.GameServiceAttrib;
m_pWizardItem[wIndex]->m_pGameServiceOption=&m_ModuleInitParameter.GameServiceOption;
//创建新项
m_wActiveIndex=wIndex;
m_pWizardItem[m_wActiveIndex]->ShowWizardItem(rcItemRect,this);
//激活新项
m_pWizardItem[m_wActiveIndex]->SetFocus();
if (pItemWizard!=NULL) pItemWizard->ShowWindow(SW_HIDE);
//界面变量
CButton * pButtonLast=(CButton * )GetDlgItem(IDC_LAST);
CButton * pButtonNext=(CButton * )GetDlgItem(IDC_NEXT);
CButton * pButtonFinish=(CButton * )GetDlgItem(IDC_FINISH);
//进度界面
pButtonNext->EnableWindow(((m_wActiveIndex+1)<CountArray(m_pWizardItem))?TRUE:FALSE);
pButtonFinish->EnableWindow(((m_wActiveIndex+1)==CountArray(m_pWizardItem))?TRUE:FALSE);
pButtonLast->EnableWindow(((m_wActiveIndex>1)||((m_ModuleInitParameter.GameServiceOption.wServerID==0)&&(m_wActiveIndex>0)))?TRUE:FALSE);
//构造标题
TCHAR szTitle[128]=TEXT("");
_sntprintf_s(szTitle,CountArray(szTitle),TEXT("房间配置向导 --- [ 步骤 %d ]"),m_wActiveIndex+1);
//设置标题
SetWindowText(szTitle);
return true;
}
//上一步
VOID CDlgServerWizard::OnBnClickedLast()
{
//效验参数
ASSERT(m_wActiveIndex>0);
ASSERT(m_wActiveIndex<CountArray(m_pWizardItem));
//切换页面
ActiveWizardItem(m_wActiveIndex-1);
return;
}
//下一步
VOID CDlgServerWizard::OnBnClickedNext()
{
//效验参数
ASSERT((m_wActiveIndex+1)<CountArray(m_pWizardItem));
//激活页面
ActiveWizardItem(m_wActiveIndex+1);
return;
}
//完成按钮
VOID CDlgServerWizard::OnBnClickedFinish()
{
//保存设置
ASSERT(m_wActiveIndex>=1);
if (m_pWizardItem[m_wActiveIndex]->SaveItemData()==false) return;
//房间信息
tagGameServerCreate GameServerCreate;
ZeroMemory(&GameServerCreate,sizeof(GameServerCreate));
//参数调整
ASSERT(m_pIGameServiceManager!=NULL);
m_pIGameServiceManager->RectifyParameter(m_ModuleInitParameter.GameServiceOption);
//索引变量
GameServerCreate.wGameID=m_ModuleInitParameter.GameServiceAttrib.wKindID;
GameServerCreate.wGameID=m_ModuleInitParameter.GameServiceAttrib.wKindID;
GameServerCreate.wServerID=m_ModuleInitParameter.GameServiceOption.wServerID;
//挂接属性
GameServerCreate.wKindID=m_ModuleInitParameter.GameServiceOption.wKindID;
GameServerCreate.wNodeID=m_ModuleInitParameter.GameServiceOption.wNodeID;
GameServerCreate.wSortID=m_ModuleInitParameter.GameServiceOption.wSortID;
//税收配置
GameServerCreate.lCellScore=m_ModuleInitParameter.GameServiceOption.lCellScore;
GameServerCreate.wRevenueRatio=m_ModuleInitParameter.GameServiceOption.wRevenueRatio;
GameServerCreate.lServiceScore=m_ModuleInitParameter.GameServiceOption.lServiceScore;
//限制配置
GameServerCreate.lRestrictScore=m_ModuleInitParameter.GameServiceOption.lRestrictScore;
GameServerCreate.lMinTableScore=m_ModuleInitParameter.GameServiceOption.lMinTableScore;
GameServerCreate.lMinEnterScore=m_ModuleInitParameter.GameServiceOption.lMinEnterScore;
GameServerCreate.lMaxEnterScore=m_ModuleInitParameter.GameServiceOption.lMaxEnterScore;
//会员限制
GameServerCreate.cbMaxEnterMember=m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember;
GameServerCreate.cbMaxEnterMember=m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember;
//房间配置
GameServerCreate.dwServerRule=m_ModuleInitParameter.GameServiceOption.dwServerRule;
GameServerCreate.dwAttachUserRight=m_ModuleInitParameter.GameServiceOption.dwAttachUserRight;
//房间属性
GameServerCreate.wMaxPlayer=m_ModuleInitParameter.GameServiceOption.wMaxPlayer;
GameServerCreate.wTableCount=m_ModuleInitParameter.GameServiceOption.wTableCount;
GameServerCreate.wServerType=m_ModuleInitParameter.GameServiceOption.wServerType;
GameServerCreate.wServerPort=m_ModuleInitParameter.GameServiceOption.wServerPort;
lstrcpyn(GameServerCreate.szServerName,m_ModuleInitParameter.GameServiceOption.szServerName,CountArray(GameServerCreate.szServerName));
//分组属性
GameServerCreate.cbDistributeRule=m_ModuleInitParameter.GameServiceOption.cbDistributeRule;
GameServerCreate.wMinDistributeUser=m_ModuleInitParameter.GameServiceOption.wMinDistributeUser;
GameServerCreate.wMaxDistributeUser=m_ModuleInitParameter.GameServiceOption.wMaxDistributeUser;
GameServerCreate.wDistributeTimeSpace=m_ModuleInitParameter.GameServiceOption.wDistributeTimeSpace;
GameServerCreate.wDistributeDrawCount=m_ModuleInitParameter.GameServiceOption.wDistributeDrawCount;
GameServerCreate.wDistributeStartDelay=m_ModuleInitParameter.GameServiceOption.wDistributeStartDelay;
//连接信息
lstrcpyn(GameServerCreate.szDataBaseName,m_ModuleInitParameter.GameServiceOption.szDataBaseName,CountArray(GameServerCreate.szDataBaseName));
lstrcpyn(GameServerCreate.szDataBaseAddr,m_ModuleInitParameter.GameServiceOption.szDataBaseAddr,CountArray(GameServerCreate.szDataBaseAddr));
//扩展配置
CWHService::GetMachineID(GameServerCreate.szServiceMachine);
CopyMemory(GameServerCreate.cbCustomRule,m_ModuleInitParameter.GameServiceOption.cbCustomRule,sizeof(GameServerCreate.cbCustomRule));
//变量定义
tagGameServerInfo GameServerResult;
CServerInfoManager ServerInfoManager;
//插入房间
if (GameServerCreate.wServerID==0)
{
if (ServerInfoManager.InsertGameServer(&GameServerCreate,GameServerResult)==false) return;
//提示消息
CTraceService::TraceString(TEXT("游戏房间创建成功"),TraceLevel_Normal);
}
//修改房间
if (GameServerCreate.wServerID!=0)
{
//修改房间
if (ServerInfoManager.ModifyGameServer(&GameServerCreate,GameServerResult)==false) return;
//提示消息
CTraceService::TraceString(TEXT("游戏房间配置成功"),TraceLevel_Normal);
}
//索引变量
m_ModuleInitParameter.GameServiceOption.wServerID=GameServerResult.wServerID;
//挂接属性
m_ModuleInitParameter.GameServiceOption.wKindID=GameServerResult.wKindID;
m_ModuleInitParameter.GameServiceOption.wNodeID=GameServerResult.wNodeID;
m_ModuleInitParameter.GameServiceOption.wSortID=GameServerResult.wSortID;
//税收配置
m_ModuleInitParameter.GameServiceOption.lCellScore=GameServerResult.lCellScore;
m_ModuleInitParameter.GameServiceOption.wRevenueRatio=m_ModuleInitParameter.GameServiceOption.wRevenueRatio;
m_ModuleInitParameter.GameServiceOption.lServiceScore=m_ModuleInitParameter.GameServiceOption.lServiceScore;
//限制配置
m_ModuleInitParameter.GameServiceOption.lRestrictScore=GameServerResult.lRestrictScore;
m_ModuleInitParameter.GameServiceOption.lMinTableScore=GameServerResult.lMinTableScore;
m_ModuleInitParameter.GameServiceOption.lMinEnterScore=GameServerResult.lMinEnterScore;
m_ModuleInitParameter.GameServiceOption.lMaxEnterScore=GameServerResult.lMaxEnterScore;
//会员限制
m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember=GameServerResult.cbMaxEnterMember;
m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember=GameServerResult.cbMaxEnterMember;
//房间配置
m_ModuleInitParameter.GameServiceOption.dwServerRule=GameServerResult.dwServerRule;
m_ModuleInitParameter.GameServiceOption.dwAttachUserRight=GameServerResult.dwAttachUserRight;
//房间属性
m_ModuleInitParameter.GameServiceOption.wMaxPlayer=GameServerResult.wMaxPlayer;
m_ModuleInitParameter.GameServiceOption.wTableCount=GameServerResult.wTableCount;
m_ModuleInitParameter.GameServiceOption.wServerType=GameServerResult.wServerType;
m_ModuleInitParameter.GameServiceOption.wServerPort=GameServerResult.wServerPort;
lstrcpyn(m_ModuleInitParameter.GameServiceOption.szServerName,GameServerResult.szServerName,LEN_SERVER);
//分组属性
m_ModuleInitParameter.GameServiceOption.cbDistributeRule=GameServerResult.cbDistributeRule;
m_ModuleInitParameter.GameServiceOption.wMinDistributeUser=GameServerResult.wMinDistributeUser;
m_ModuleInitParameter.GameServiceOption.wMaxDistributeUser=GameServerResult.wMaxDistributeUser;
m_ModuleInitParameter.GameServiceOption.wDistributeTimeSpace=GameServerResult.wDistributeTimeSpace;
m_ModuleInitParameter.GameServiceOption.wDistributeDrawCount=GameServerResult.wDistributeDrawCount;
m_ModuleInitParameter.GameServiceOption.wDistributeStartDelay=GameServerResult.wDistributeStartDelay;
//扩展配置
UINT uCustomRuleSize=sizeof(m_ModuleInitParameter.GameServiceOption.cbCustomRule);
CopyMemory(m_ModuleInitParameter.GameServiceOption.cbCustomRule,GameServerResult.cbCustomRule,uCustomRuleSize);
//关闭窗口
EndDialog(IDOK);
return;
}
//////////////////////////////////////////////////////////////////////////////////
void CDlgServerOptionItem1::OnBnClickedRevenueRadio()
{
//
GetDlgItem(IDC_STATIC_REVENUE_SERVICE)->SetWindowText(TEXT("税收比例:"));
((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->SetWindowText(TEXT(""));
((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->LimitText(3);
}
void CDlgServerOptionItem1::OnBnClickedServiceRadio()
{
//
GetDlgItem(IDC_STATIC_REVENUE_SERVICE)->SetWindowText(TEXT("服务费数:"));
((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->SetWindowText(TEXT(""));
((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->LimitText(9);
}