诸暨麻将添加redis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2133 lines
70 KiB

  1. #include "StdAfx.h"
  2. #include "Resource.h"
  3. #include "DlgServerWizard.h"
  4. #include "ModuleDBParameter.h"
  5. #include ".\dlgserverwizard.h"
  6. //////////////////////////////////////////////////////////////////////////////////
  7. //页面定义
  8. #define ITEM_SERVER_OPTION_1 0 //配置选择
  9. #define ITEM_SERVER_OPTION_2 1 //配置选择
  10. #define ITEM_SERVER_OPTION_3 2 //配置选择
  11. #define ITEM_SERVER_OPTION_CUSTOM 3 //定制配置
  12. //////////////////////////////////////////////////////////////////////////////////
  13. BEGIN_MESSAGE_MAP(CDlgServerOptionItem, CDialog)
  14. ON_WM_SIZE()
  15. END_MESSAGE_MAP()
  16. BEGIN_MESSAGE_MAP(CDlgServerWizardItem, CDialog)
  17. ON_WM_SIZE()
  18. END_MESSAGE_MAP()
  19. //////////////////////////////////////////////////////////////////////////////////
  20. BEGIN_MESSAGE_MAP(CDlgServerOptionItem1, CDlgServerOptionItem)
  21. ON_CBN_SELCHANGE(IDC_SERVER_TYPE, OnSelchangeServerType)
  22. ON_CBN_SELCHANGE(IDC_VENUE_TYPE, OnSelchangeVenueType)
  23. ON_CBN_SELCHANGE(IDC_SERVER_KIND, OnSelchangeServerKind)
  24. ON_BN_CLICKED(IDC_REVENUE_RADIO, OnBnClickedRevenueRadio)
  25. ON_BN_CLICKED(IDC_SERVICE_RADIO, OnBnClickedServiceRadio)
  26. END_MESSAGE_MAP()
  27. BEGIN_MESSAGE_MAP(CDlgServerOptionItem2, CDlgServerOptionItem)
  28. END_MESSAGE_MAP()
  29. BEGIN_MESSAGE_MAP(CDlgServerOptionItem3, CDlgServerOptionItem)
  30. END_MESSAGE_MAP()
  31. BEGIN_MESSAGE_MAP(CDlgServerOptionItemCustom, CDlgServerOptionItem)
  32. ON_WM_SETFOCUS()
  33. ON_WM_NCDESTROY()
  34. END_MESSAGE_MAP()
  35. //////////////////////////////////////////////////////////////////////////////////
  36. BEGIN_MESSAGE_MAP(CDlgServerWizardItem1, CDlgServerWizardItem)
  37. ON_NOTIFY(NM_DBLCLK, IDC_MODULE_LIST, OnNMDblclkModuleList)
  38. END_MESSAGE_MAP()
  39. BEGIN_MESSAGE_MAP(CDlgServerWizardItem2, CDlgServerWizardItem)
  40. ON_WM_SETFOCUS()
  41. ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_CTRL, OnTcnSelchangeTabCtrl)
  42. END_MESSAGE_MAP()
  43. BEGIN_MESSAGE_MAP(CDlgServerWizard, CDialog)
  44. ON_BN_CLICKED(IDC_LAST, OnBnClickedLast)
  45. ON_BN_CLICKED(IDC_NEXT, OnBnClickedNext)
  46. ON_BN_CLICKED(IDC_FINISH, OnBnClickedFinish)
  47. END_MESSAGE_MAP()
  48. //////////////////////////////////////////////////////////////////////////////////
  49. //构造函数
  50. CDlgServerOptionItem::CDlgServerOptionItem(UINT nIDTemplate) : CDialogEx(nIDTemplate)
  51. {
  52. //设置变量
  53. m_pDlgServerWizard = NULL;
  54. m_pGameServiceAttrib = NULL;
  55. m_pGameServiceOption = NULL;
  56. return;
  57. }
  58. //析构函数
  59. CDlgServerOptionItem::~CDlgServerOptionItem()
  60. {
  61. }
  62. //保存数据
  63. bool CDlgServerOptionItem::SaveItemData()
  64. {
  65. //保存数据
  66. if ((m_hWnd != NULL) && (SaveInputInfo() == false))
  67. {
  68. return false;
  69. }
  70. return true;
  71. }
  72. //显示配置
  73. bool CDlgServerOptionItem::ShowOptionItem(const CRect & rcRect, CWnd * pParentWnd)
  74. {
  75. //创建窗口
  76. if (m_hWnd == NULL)
  77. {
  78. //设置资源
  79. AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME));
  80. //创建窗口
  81. Create(m_lpszTemplateName, pParentWnd);
  82. SetWindowPos(NULL, rcRect.left, rcRect.top, rcRect.Width(), rcRect.Height(), SWP_NOZORDER | SWP_NOACTIVATE);
  83. //设置资源
  84. AfxSetResourceHandle(GetModuleHandle(NULL));
  85. }
  86. //显示窗口
  87. ShowWindow(SW_SHOW);
  88. return true;
  89. }
  90. //确定函数
  91. VOID CDlgServerOptionItem::OnOK()
  92. {
  93. //投递消息
  94. m_pDlgServerWizard->PostMessage(WM_COMMAND, MAKELONG(IDOK, 0), 0);
  95. return;
  96. }
  97. //取消消息
  98. VOID CDlgServerOptionItem::OnCancel()
  99. {
  100. //投递消息
  101. m_pDlgServerWizard->PostMessage(WM_COMMAND, MAKELONG(IDCANCEL, 0), 0);
  102. return;
  103. }
  104. //位置消息
  105. VOID CDlgServerOptionItem::OnSize(UINT nType, INT cx, INT cy)
  106. {
  107. __super::OnSize(nType, cx, cy);
  108. //调整控件
  109. RectifyControl(cx, cy);
  110. return;
  111. }
  112. //////////////////////////////////////////////////////////////////////////////////
  113. //构造函数
  114. CDlgServerOptionItem1::CDlgServerOptionItem1() : CDlgServerOptionItem(IDD_SERVER_OPTION_1)
  115. {
  116. }
  117. //析构函数
  118. CDlgServerOptionItem1::~CDlgServerOptionItem1()
  119. {
  120. }
  121. //初始化函数
  122. BOOL CDlgServerOptionItem1::OnInitDialog()
  123. {
  124. __super::OnInitDialog();
  125. //构造控件
  126. InitCtrlWindow();
  127. //变量定义
  128. CComboBox * pServerType = (CComboBox *)GetDlgItem(IDC_SERVER_TYPE); ///---游戏类型(财富类型,点值类型,比赛类型,练习类型)
  129. CComboBox * pServerKind = (CComboBox *)GetDlgItem(IDC_SERVER_KIND); ///---房间类型(普通房间、密码房间)
  130. //房间名字
  131. if (m_pGameServiceOption->szServerName[0] == 0) ///---如:黄石晃晃
  132. {
  133. SetDlgItemText(IDC_SERVER_NAME, m_pGameServiceAttrib->szGameName);
  134. }
  135. else
  136. {
  137. SetDlgItemText(IDC_SERVER_NAME, m_pGameServiceOption->szServerName);
  138. }
  139. ///+++修改下桌子数目
  140. if (0 == m_pGameServiceOption->wTableCount)
  141. {
  142. m_pGameServiceOption->wTableCount = 100;
  143. m_pGameServiceOption->wMaxPlayer = 400;
  144. }
  145. //桌子数目
  146. if (m_pGameServiceOption->wTableCount != 0)
  147. {
  148. SetDlgItemInt(IDC_TABLE_COUNT, m_pGameServiceOption->wTableCount);
  149. }
  150. else if (m_pGameServiceAttrib->wChairCount >= MAX_CHAIR)
  151. {
  152. SetDlgItemInt(IDC_TABLE_COUNT, 1);
  153. }
  154. else
  155. {
  156. SetDlgItemInt(IDC_TABLE_COUNT, 60);
  157. }
  158. //服务端口
  159. if (m_pGameServiceOption->wServerPort != 0)
  160. {
  161. SetDlgItemInt(IDC_SERVER_PORT, m_pGameServiceOption->wServerPort);
  162. }
  163. //数据库名
  164. if (m_pGameServiceOption->szDataBaseName[0] != 0)
  165. {
  166. SetDlgItemText(IDC_DATABASE_NAME, m_pGameServiceOption->szDataBaseName);
  167. }
  168. else
  169. {
  170. SetDlgItemText(IDC_DATABASE_NAME, m_pGameServiceAttrib->szDataBaseName);
  171. }
  172. //连接地址
  173. if (m_pGameServiceOption->szDataBaseAddr[0] != 0)
  174. {
  175. DWORD dwDataBaseAddr = inet_addr(CT2CA(m_pGameServiceOption->szDataBaseAddr));
  176. ((CIPAddressCtrl *)GetDlgItem(IDC_DATABASE_ADDR))->SetAddress(htonl(dwDataBaseAddr));
  177. }
  178. //游戏类型
  179. for (INT i = 0; i < pServerType->GetCount(); i++)
  180. {
  181. if (pServerType->GetItemData(i) == m_pGameServiceOption->wServerType)
  182. {
  183. pServerType->SetCurSel(i);
  184. }
  185. }
  186. //房间密码
  187. if (m_pGameServiceOption->wServerKind&SERVER_GENRE_PASSWD)
  188. {
  189. GetDlgItem(IDC_SERVER_PASSWD)->EnableWindow(true);
  190. SetDlgItemText(IDC_SERVER_PASSWD, m_pGameServiceOption->szServerPasswd);
  191. }
  192. else
  193. {
  194. GetDlgItem(IDC_SERVER_PASSWD)->EnableWindow(false);
  195. SetDlgItemText(IDC_SERVER_PASSWD, TEXT(""));
  196. }
  197. //房间类型
  198. for (INT i = 0; i < pServerKind->GetCount(); i++)
  199. {
  200. if (pServerKind->GetItemData(i) == m_pGameServiceOption->wServerKind)
  201. {
  202. pServerKind->SetCurSel(i);
  203. }
  204. }
  205. //房间配置
  206. if (m_pGameServiceOption->wServerType == GAME_GENRE_GOLD) ///---设置财富场的底分
  207. {
  208. if (m_pGameServiceOption->lCellScore != 0)
  209. {
  210. SetDlgItemInt(IDC_CELL_SCORE, (LONG)m_pGameServiceOption->lCellScore); ///---游戏底分
  211. }
  212. }
  213. if (m_pGameServiceOption->wMaxPlayer != 0)
  214. {
  215. SetDlgItemInt(IDC_MAX_PLAYER, (LONG)m_pGameServiceOption->wMaxPlayer); ///---房间最大人数
  216. }
  217. if (m_pGameServiceOption->lRestrictScore != 0)
  218. {
  219. SetDlgItemInt(IDC_RESTRICT_SCORE, (LONG)m_pGameServiceOption->lRestrictScore); ///---每局封顶
  220. }
  221. if (m_pGameServiceOption->wRevenueRatio != 0)
  222. {
  223. OnBnClickedRevenueRadio();
  224. SetDlgItemInt(IDC_SERVICE_REVENUE, (LONG)m_pGameServiceOption->wRevenueRatio); ///---税收比例
  225. ((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->SetCheck(BST_CHECKED);
  226. ((CButton*)GetDlgItem(IDC_SERVICE_RADIO))->SetCheck(BST_UNCHECKED);
  227. }
  228. else if (m_pGameServiceOption->lServiceScore != 0)
  229. {
  230. OnBnClickedServiceRadio();
  231. SetDlgItemInt(IDC_SERVICE_REVENUE, (LONG)m_pGameServiceOption->lServiceScore); ///---服务费数
  232. ((CButton*)GetDlgItem(IDC_SERVICE_RADIO))->SetCheck(BST_CHECKED);
  233. ((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->SetCheck(BST_UNCHECKED);
  234. }
  235. //百人游戏无底分配置
  236. if (m_pGameServiceAttrib->wChairCount >= MAX_CHAIR)
  237. {
  238. GetDlgItem(IDC_CELL_SCORE)->EnableWindow(FALSE); ///---游戏底分
  239. }
  240. //挂接配置
  241. WORD wGameKindID = m_pGameServiceOption->wKindID;
  242. WORD wAttribKindID = m_pGameServiceAttrib->wKindID;
  243. ///+++disable
  244. GetDlgItem(IDC_NODE_ID)->EnableWindow(FALSE);
  245. GetDlgItem(IDC_SORT_ID)->EnableWindow(FALSE);
  246. GetDlgItem(IDC_KIND_ID)->EnableWindow(FALSE);
  247. if (m_pGameServiceOption->wNodeID != 0)
  248. {
  249. SetDlgItemInt(IDC_NODE_ID, m_pGameServiceOption->wNodeID); ///---挂接节点 ///金币场时,作为场馆ID用
  250. }
  251. if (m_pGameServiceOption->wSortID != 0)
  252. {
  253. SetDlgItemInt(IDC_SORT_ID, m_pGameServiceOption->wSortID); ///---排序标识
  254. }
  255. if ((wGameKindID != 0) && (wGameKindID != wAttribKindID))
  256. {
  257. SetDlgItemInt(IDC_KIND_ID, m_pGameServiceOption->wKindID); ///---挂接类型
  258. }
  259. //默认选择
  260. if (pServerType->GetCurSel() == LB_ERR)
  261. {
  262. //获取名字
  263. TCHAR szDataBase[32] = TEXT("");
  264. GetDlgItemText(IDC_DATABASE_NAME, szDataBase, CountArray(szDataBase)); ///---数据库名字
  265. //变量定义
  266. WORD wServerType = 0;
  267. bool bGoldDataBase = (lstrcmpi(szDataBase, szTreasureDB) == 0);
  268. bool bDefaultDataBase = (lstrcmpi(szDataBase, m_pGameServiceAttrib->szDataBaseName) == 0);
  269. //类型定义
  270. if ((wServerType == 0) && (bGoldDataBase == true))
  271. {
  272. wServerType = GAME_GENRE_GOLD;
  273. }
  274. if ((wServerType == 0) && (bGoldDataBase == false) && (bDefaultDataBase == true))
  275. {
  276. wServerType = GAME_GENRE_SCORE;
  277. }
  278. //分析类型
  279. if ((m_pGameServiceAttrib->wSupporType&wServerType) != 0L)
  280. {
  281. for (INT i = 0; i < pServerType->GetCount(); i++)
  282. {
  283. if (pServerType->GetItemData(i) == wServerType)
  284. {
  285. pServerType->SetCurSel(i);
  286. break;
  287. }
  288. }
  289. }
  290. }
  291. return TRUE;
  292. }
  293. //保存输入
  294. bool CDlgServerOptionItem1::SaveInputInfo()
  295. {
  296. //变量定义 ///---下拉列表框
  297. CComboBox * pServerType = (CComboBox *)GetDlgItem(IDC_SERVER_TYPE); ///---房间类型 (普通房间、密码房间)
  298. CComboBox * pServerKind = (CComboBox *)GetDlgItem(IDC_SERVER_KIND); ///---游戏类型(财富类型,点值类型,比赛类型,练习类型)
  299. CComboBox * pVenueType = (CComboBox *)GetDlgItem(IDC_VENUE_TYPE); ///---场馆ID
  300. CIPAddressCtrl * pIPAddressCtrl = (CIPAddressCtrl *)GetDlgItem(IDC_DATABASE_ADDR); ///---数据库地址
  301. //挂接属性
  302. m_pGameServiceOption->wKindID = GetDlgItemInt(IDC_KIND_ID);
  303. m_pGameServiceOption->wNodeID = GetDlgItemInt(IDC_NODE_ID); ///---对应金币场ID****
  304. m_pGameServiceOption->wSortID = GetDlgItemInt(IDC_SORT_ID);
  305. //属性配置
  306. m_pGameServiceOption->lCellScore = GetDlgItemInt(IDC_CELL_SCORE); ///---游戏底分, 这个值从Venue表配置中读取
  307. m_pGameServiceOption->lMinEnterScore = GetDlgItemInt(IDC_MIN_SCORE); ///---下限*******
  308. m_pGameServiceOption->lMaxEnterScore = GetDlgItemInt(IDC_MAX_SCORE); ///---上限*******
  309. m_pGameServiceOption->lRestrictScore = GetDlgItemInt(IDC_RESTRICT_SCORE);
  310. if (((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->GetCheck() == BST_CHECKED)
  311. {
  312. m_pGameServiceOption->wRevenueRatio = GetDlgItemInt(IDC_SERVICE_REVENUE);
  313. m_pGameServiceOption->lServiceScore = 0L;
  314. }
  315. else
  316. {
  317. m_pGameServiceOption->lServiceScore = GetDlgItemInt(IDC_SERVICE_REVENUE);
  318. m_pGameServiceOption->wRevenueRatio = 0L;
  319. }
  320. //选择控件
  321. m_pGameServiceOption->wServerType = (WORD)pServerType->GetItemData(pServerType->GetCurSel());
  322. m_pGameServiceOption->wServerKind = (WORD)pServerKind->GetItemData(pServerKind->GetCurSel());
  323. if (GAME_GENRE_SCORE == m_pGameServiceOption->wServerType && pVenueType->GetCurSel() >= 0)
  324. {
  325. m_pGameServiceOption->wNodeID = pVenueType->GetItemData(pVenueType->GetCurSel()); ///---场id
  326. }
  327. else
  328. {
  329. m_pGameServiceOption->wNodeID = 0; ///非金币场,无场馆ID
  330. }
  331. //房间属性
  332. m_pGameServiceOption->wTableCount = GetDlgItemInt(IDC_TABLE_COUNT);
  333. m_pGameServiceOption->wServerPort = GetDlgItemInt(IDC_SERVER_PORT);
  334. m_pGameServiceOption->wMaxPlayer = GetDlgItemInt(IDC_MAX_PLAYER);
  335. GetDlgItemText(IDC_SERVER_NAME, m_pGameServiceOption->szServerName, CountArray(m_pGameServiceOption->szServerName));
  336. GetDlgItemText(IDC_DATABASE_NAME, m_pGameServiceOption->szDataBaseName, CountArray(m_pGameServiceOption->szDataBaseName));
  337. GetDlgItemText(IDC_SERVER_PASSWD, m_pGameServiceOption->szServerPasswd, CountArray(m_pGameServiceOption->szServerPasswd));
  338. //连接地址
  339. DWORD dwDataBaseAddr = INADDR_NONE;
  340. pIPAddressCtrl->GetAddress(dwDataBaseAddr);
  341. _sntprintf(m_pGameServiceOption->szDataBaseAddr, CountArray(m_pGameServiceOption->szDataBaseAddr), TEXT("%d.%d.%d.%d"),
  342. *(((BYTE *)&dwDataBaseAddr) + 3), *(((BYTE *)&dwDataBaseAddr) + 2), *(((BYTE *)&dwDataBaseAddr) + 1), *((BYTE *)&dwDataBaseAddr));
  343. //房间名字
  344. if (m_pGameServiceOption->szServerName[0] == 0)
  345. {
  346. AfxMessageBox(TEXT("游戏房间名字不能为空,请输入游戏房间名字"), MB_ICONERROR);
  347. return false;
  348. }
  349. ///+++如果是金币场增加场馆名称信息(如:黄石晃晃--菜鸟场)
  350. if (m_pGameServiceOption->wNodeID > 0)
  351. {
  352. tagVenueInfo venue = GetVenue(m_pGameServiceOption->wNodeID);
  353. lstrcat(m_pGameServiceOption->szServerName, L" -- ");
  354. lstrcat(m_pGameServiceOption->szServerName, venue.szVenuName);
  355. }
  356. //类别判断
  357. if ((m_pGameServiceOption->wServerKind&SERVER_GENRE_PASSWD) != 0 && (m_pGameServiceOption->szServerPasswd[0] == 0))
  358. {
  359. AfxMessageBox(TEXT("游戏房间密码不能为空,请输入游戏房间密码"), MB_ICONERROR);
  360. return false;
  361. }
  362. //类型判断
  363. if (m_pGameServiceOption->wServerType == 0)
  364. {
  365. AfxMessageBox(TEXT("游戏房间类型不能为空,请重新选择游戏房间类型"), MB_ICONERROR);
  366. return false;
  367. }
  368. //数据库名
  369. if (m_pGameServiceOption->szDataBaseName[0] == 0)
  370. {
  371. AfxMessageBox(TEXT("游戏数据库名不能为空,请输入游戏数据库名"), MB_ICONERROR);
  372. return false;
  373. }
  374. //连接地址
  375. if (INVALID_IP_ADDRESS(dwDataBaseAddr))
  376. {
  377. AfxMessageBox(TEXT("游戏数据库地址格式不正确,请重新输入游戏数据库地址"), MB_ICONERROR);
  378. return false;
  379. }
  380. //桌子数目
  381. if ((m_pGameServiceOption->wTableCount == 0) || (m_pGameServiceOption->wTableCount > MAX_TABLE))
  382. {
  383. AfxMessageBox(TEXT("游戏桌子数目无效,请重新输入游戏桌子数目,有效数值范围为 1 - 512"), MB_ICONERROR);
  384. return false;
  385. }
  386. return true;
  387. }
  388. //调整控件
  389. VOID CDlgServerOptionItem1::RectifyControl(INT nWidth, INT nHeight)
  390. {
  391. return;
  392. }
  393. //构造控件
  394. VOID CDlgServerOptionItem1::InitCtrlWindow()
  395. {
  396. //列表配置
  397. ((CEdit *)GetDlgItem(IDC_KIND_ID))->LimitText(5);
  398. ((CEdit *)GetDlgItem(IDC_NODE_ID))->LimitText(5);
  399. ((CEdit *)GetDlgItem(IDC_SORT_ID))->LimitText(5);
  400. //属性配置
  401. ((CEdit *)GetDlgItem(IDC_MAX_PLAYER))->LimitText(5);
  402. ((CEdit *)GetDlgItem(IDC_CELL_SCORE))->LimitText(6);
  403. ((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->LimitText(3);
  404. ((CButton*)GetDlgItem(IDC_REVENUE_RADIO))->SetCheck(BST_CHECKED);
  405. //常规配置
  406. ((CEdit *)GetDlgItem(IDC_TABLE_COUNT))->LimitText(5);
  407. ((CEdit *)GetDlgItem(IDC_SERVER_PORT))->LimitText(5);
  408. ((CEdit *)GetDlgItem(IDC_SERVER_NAME))->LimitText(31);
  409. ((CEdit *)GetDlgItem(IDC_DATABASE_NAME))->LimitText(31);
  410. //变量定义
  411. CComboBox * pComboBox = (CComboBox *)GetDlgItem(IDC_SERVER_TYPE);
  412. WORD wServerType[4] = { GAME_GENRE_GOLD, GAME_GENRE_SCORE, GAME_GENRE_MATCH, GAME_GENRE_EDUCATE };
  413. LPCTSTR pszServerType[4] = { TEXT("财富类型"), TEXT("金币场类型")/*TEXT("点值类型")*/, TEXT("比赛类型"), TEXT("练习类型") };
  414. //构造类型
  415. for (INT i = 0; i < CountArray(wServerType) - 2/*后面两个暂不支持*/; i++)
  416. {
  417. if ((m_pGameServiceAttrib->wSupporType&wServerType[i]) == 0) continue;
  418. pComboBox->SetItemData(pComboBox->AddString(pszServerType[i]), wServerType[i]);
  419. }
  420. //变量定义
  421. pComboBox = (CComboBox *)GetDlgItem(IDC_SERVER_KIND);
  422. WORD wServerKind[2] = { SERVER_GENRE_NORMAL, SERVER_GENRE_PASSWD };
  423. LPCTSTR pszServerKind[2] = { TEXT("普通房间"), TEXT("密码房间") };
  424. //构造类型
  425. for (INT i = 0; i < CountArray(wServerKind); i++)
  426. {
  427. pComboBox->SetItemData(pComboBox->InsertString(i, pszServerKind[i]), wServerKind[i]);
  428. }
  429. if (pComboBox->GetCurSel() == LB_ERR) pComboBox->SetCurSel(0);
  430. //场馆类型
  431. pComboBox = (CComboBox *)GetDlgItem(IDC_VENUE_TYPE);
  432. ///---加载该游戏的场馆配置
  433. CServerInfoManager svrInfoManager;
  434. svrInfoManager.LoadVenueInfos(m_pGameServiceAttrib->wKindID, m_vecVenueInfo);
  435. int curVenueSel = -1;
  436. for (INT i = 0; i < m_vecVenueInfo.size(); i++)
  437. {
  438. pComboBox->SetItemData(pComboBox->InsertString(i, m_vecVenueInfo[i].szVenuName), m_vecVenueInfo[i].wVenueID);
  439. if (m_pGameServiceOption->wNodeID == m_vecVenueInfo[i].wVenueID)
  440. {
  441. curVenueSel = i;
  442. }
  443. }
  444. ///---金币场
  445. if (m_pGameServiceOption->wServerType == GAME_GENRE_SCORE)
  446. {
  447. pComboBox->SetCurSel(curVenueSel);
  448. OnSelchangeVenueType();
  449. GetDlgItem(IDC_VENUE_TYPE)->EnableWindow(true);
  450. GetDlgItem(IDC_STATIC_VENUE)->ShowWindow(SW_SHOW);
  451. GetDlgItem(IDC_VENUE_TYPE)->ShowWindow(SW_SHOW);
  452. GetDlgItem(IDC_STATIC_MINSCORE)->ShowWindow(SW_SHOW);
  453. GetDlgItem(IDC_MIN_SCORE)->ShowWindow(SW_SHOW);
  454. GetDlgItem(IDC_STATIC_MAXSCORE)->ShowWindow(SW_SHOW);
  455. GetDlgItem(IDC_MAX_SCORE)->ShowWindow(SW_SHOW);
  456. }
  457. else
  458. {
  459. GetDlgItem(IDC_VENUE_TYPE)->EnableWindow(false);
  460. SetDlgItemText(IDC_CELL_SCORE, TEXT(""));
  461. SetDlgItemText(IDC_MIN_SCORE, TEXT(""));
  462. GetDlgItem(IDC_STATIC_VENUE)->ShowWindow(SW_HIDE);
  463. GetDlgItem(IDC_VENUE_TYPE)->ShowWindow(SW_HIDE);
  464. GetDlgItem(IDC_STATIC_MINSCORE)->ShowWindow(SW_HIDE);
  465. GetDlgItem(IDC_MIN_SCORE)->ShowWindow(SW_HIDE);
  466. GetDlgItem(IDC_STATIC_MAXSCORE)->ShowWindow(SW_HIDE);
  467. GetDlgItem(IDC_MAX_SCORE)->ShowWindow(SW_HIDE);
  468. }
  469. GetDlgItem(IDC_MIN_SCORE)->EnableWindow(false);
  470. GetDlgItem(IDC_MAX_SCORE)->EnableWindow(false);
  471. return;
  472. }
  473. //更新数据
  474. VOID CDlgServerOptionItem1::UpdateDataBaseName()
  475. {
  476. //变量定义
  477. CComboBox * pServerType = (CComboBox *)GetDlgItem(IDC_SERVER_TYPE);
  478. GetDlgItem(IDC_VENUE_TYPE)->EnableWindow(false);
  479. CComboBox * pVenueComboBox = (CComboBox *)GetDlgItem(IDC_VENUE_TYPE);
  480. GetDlgItem(IDC_STATIC_VENUE)->ShowWindow(SW_SHOW);
  481. GetDlgItem(IDC_VENUE_TYPE)->ShowWindow(SW_SHOW);
  482. GetDlgItem(IDC_STATIC_MINSCORE)->ShowWindow(SW_SHOW);
  483. GetDlgItem(IDC_MIN_SCORE)->ShowWindow(SW_SHOW);
  484. GetDlgItem(IDC_STATIC_MAXSCORE)->ShowWindow(SW_SHOW);
  485. GetDlgItem(IDC_MAX_SCORE)->ShowWindow(SW_SHOW);
  486. //数据调整
  487. switch ((WORD)pServerType->GetItemData(pServerType->GetCurSel()))
  488. {
  489. case GAME_GENRE_GOLD: //财富类型
  490. {
  491. SetDlgItemText(IDC_DATABASE_NAME, szTreasureDB);
  492. SetDlgItemInt(IDC_CELL_SCORE, (LONG)m_pGameServiceOption->lCellScore);
  493. SetDlgItemText(IDC_MIN_SCORE, TEXT(""));
  494. SetDlgItemText(IDC_MAX_SCORE, TEXT(""));
  495. pVenueComboBox->SetCurSel(-1);
  496. GetDlgItem(IDC_STATIC_VENUE)->ShowWindow(SW_HIDE);
  497. GetDlgItem(IDC_VENUE_TYPE)->ShowWindow(SW_HIDE);
  498. GetDlgItem(IDC_STATIC_MINSCORE)->ShowWindow(SW_HIDE);
  499. GetDlgItem(IDC_MIN_SCORE)->ShowWindow(SW_HIDE);
  500. GetDlgItem(IDC_STATIC_MAXSCORE)->ShowWindow(SW_HIDE);
  501. GetDlgItem(IDC_MAX_SCORE)->ShowWindow(SW_HIDE);
  502. break;
  503. }
  504. case GAME_GENRE_SCORE: //点值类型
  505. {
  506. //还没有配置金币场的场馆信息
  507. if (m_vecVenueInfo.size() <= 0)
  508. {
  509. AfxMessageBox(TEXT("还没有配置该玩法的场馆的信息,请前往配置表[Venue]"), MB_ICONERROR);
  510. CComboBox * pServerType = (CComboBox *)GetDlgItem(IDC_SERVER_TYPE);
  511. pServerType->SetCurSel(0);
  512. return;
  513. }
  514. SetDlgItemText(IDC_DATABASE_NAME, szTreasureDB/*m_pGameServiceAttrib->szDataBaseName*/);
  515. GetDlgItem(IDC_VENUE_TYPE)->EnableWindow(true);
  516. pVenueComboBox->SetCurSel(0);
  517. OnSelchangeVenueType();
  518. break;
  519. }
  520. case GAME_GENRE_MATCH: //比赛类型
  521. {
  522. SetDlgItemText(IDC_DATABASE_NAME, szGameMatchDB);
  523. SetDlgItemInt(IDC_CELL_SCORE, (LONG)m_pGameServiceOption->lCellScore);
  524. SetDlgItemText(IDC_MIN_SCORE, TEXT(""));
  525. SetDlgItemText(IDC_MAX_SCORE, TEXT(""));
  526. pVenueComboBox->SetCurSel(-1);
  527. break;
  528. }
  529. default:
  530. {
  531. SetDlgItemInt(IDC_CELL_SCORE, (LONG)m_pGameServiceOption->lCellScore);
  532. SetDlgItemText(IDC_MIN_SCORE, TEXT(""));
  533. SetDlgItemText(IDC_MAX_SCORE, TEXT(""));
  534. pVenueComboBox->SetCurSel(-1);
  535. //获取名字
  536. TCHAR szDataBase[32] = TEXT("");
  537. GetDlgItemText(IDC_DATABASE_NAME, szDataBase, CountArray(szDataBase));
  538. //名字判断
  539. if (lstrcmpi(szDataBase, szTreasureDB) == 0)
  540. {
  541. SetDlgItemText(IDC_DATABASE_NAME, TEXT(""));
  542. }
  543. if (lstrcmpi(szDataBase, m_pGameServiceAttrib->szDataBaseName) == 0)
  544. {
  545. SetDlgItemText(IDC_DATABASE_NAME, TEXT(""));
  546. }
  547. break;
  548. }
  549. }
  550. return;
  551. }
  552. //选择改变
  553. VOID CDlgServerOptionItem1::OnSelchangeServerType()
  554. {
  555. //更新数据
  556. UpdateDataBaseName();
  557. return;
  558. }
  559. //选择改变
  560. VOID CDlgServerOptionItem1::OnSelchangeServerKind()
  561. {
  562. //变量定义
  563. CComboBox * pServerKind = (CComboBox *)GetDlgItem(IDC_SERVER_KIND);
  564. //数据调整
  565. int nCurSelIndex = pServerKind->GetCurSel();
  566. switch (pServerKind->GetItemData(nCurSelIndex))
  567. {
  568. case SERVER_GENRE_NORMAL: //普通房间
  569. {
  570. GetDlgItem(IDC_SERVER_PASSWD)->EnableWindow(false);
  571. break;
  572. }
  573. case SERVER_GENRE_PASSWD: //密码类型
  574. {
  575. GetDlgItem(IDC_SERVER_PASSWD)->EnableWindow(true);
  576. break;
  577. }
  578. }
  579. return;
  580. }
  581. tagVenueInfo& CDlgServerOptionItem1::GetVenue(WORD wVenueID)
  582. {
  583. for (std::vector<tagVenueInfo>::iterator it = m_vecVenueInfo.begin(); it != m_vecVenueInfo.end(); it++)
  584. {
  585. if (it->wVenueID == wVenueID)
  586. {
  587. return *it;
  588. }
  589. }
  590. }
  591. VOID CDlgServerOptionItem1::OnSelchangeVenueType()
  592. {
  593. //变量定义
  594. CComboBox * pVenueType = (CComboBox *)GetDlgItem(IDC_VENUE_TYPE);
  595. //数据调整
  596. int nCurSelIndex = pVenueType->GetCurSel();
  597. int venueID = pVenueType->GetItemData(nCurSelIndex);
  598. ///保存下
  599. m_pGameServiceOption->wNodeID = venueID;
  600. std::vector<tagVenueInfo>::iterator it = m_vecVenueInfo.begin();
  601. while (it != m_vecVenueInfo.end())
  602. {
  603. if (it->wVenueID == venueID)
  604. {
  605. SetDlgItemInt(IDC_CELL_SCORE, it->sBaseScore);
  606. SetDlgItemInt(IDC_MIN_SCORE, it->sMinScore);
  607. SetDlgItemInt(IDC_MAX_SCORE, it->sMaxScore);
  608. break;
  609. }
  610. it++;
  611. }
  612. }
  613. //////////////////////////////////////////////////////////////////////////////////
  614. //构造函数
  615. CDlgServerOptionItem2::CDlgServerOptionItem2() : CDlgServerOptionItem(IDD_SERVER_OPTION_2)
  616. {
  617. }
  618. //析构函数
  619. CDlgServerOptionItem2::~CDlgServerOptionItem2()
  620. {
  621. }
  622. //初始化函数 ///---房间选项
  623. BOOL CDlgServerOptionItem2::OnInitDialog()
  624. {
  625. __super::OnInitDialog();
  626. //构造控件
  627. InitCtrlWindow();
  628. //变量定义
  629. CComboBox * pMinMember = (CComboBox *)GetDlgItem(IDC_MIN_ENTER_MEMBER); ///---进入房间最低成绩
  630. CComboBox * pMaxMember = (CComboBox *)GetDlgItem(IDC_MAX_ENTER_MEMBER); ///---进入房间最高成绩
  631. //房间配置
  632. if (m_pGameServiceOption->lMinEnterScore != 0) SetDlgItemInt(IDC_MIN_ENTER_SCORE, (LONG)m_pGameServiceOption->lMinEnterScore);
  633. if (m_pGameServiceOption->lMaxEnterScore != 0) SetDlgItemInt(IDC_MAX_ENTER_SCORE, (LONG)m_pGameServiceOption->lMaxEnterScore);
  634. if (m_pGameServiceOption->lMinTableScore != 0) SetDlgItemInt(IDC_MIN_TABLE_SCORE, (LONG)m_pGameServiceOption->lMinTableScore); ///---坐下游戏的最低成绩
  635. //会员限制
  636. //if (m_pGameServiceOption->cbMaxEnterMember!=0)
  637. {
  638. //最低会员
  639. for (INT i = 0; i < pMinMember->GetCount(); i++)
  640. {
  641. if (pMinMember->GetItemData(i) == m_pGameServiceOption->cbMinEnterMember)
  642. {
  643. pMinMember->SetCurSel(i);
  644. break;
  645. }
  646. }
  647. //最高会员
  648. for (INT i = 0; i < pMaxMember->GetCount(); i++)
  649. {
  650. if (pMaxMember->GetItemData(i) == m_pGameServiceOption->cbMaxEnterMember)
  651. {
  652. pMaxMember->SetCurSel(i);
  653. break;
  654. }
  655. }
  656. }
  657. //禁止公聊
  658. bool bForfendGameChat = CServerRule::IsForfendGameChat(m_pGameServiceOption->dwServerRule);
  659. ((CButton *)GetDlgItem(IDC_FORFEND_GAME_CHAT))->SetCheck((bForfendGameChat == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  660. //禁止公聊
  661. bool bForfendRoomChat = CServerRule::IsForfendRoomChat(m_pGameServiceOption->dwServerRule);
  662. ((CButton *)GetDlgItem(IDC_FORFEND_ROOM_CHAT))->SetCheck((bForfendRoomChat == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  663. //禁止私聊
  664. bool bForfendWisperChat = CServerRule::IsForfendWisperChat(m_pGameServiceOption->dwServerRule);
  665. ((CButton *)GetDlgItem(IDC_FORFEND_WISPER_CHAT))->SetCheck((bForfendWisperChat == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  666. //禁止私聊
  667. bool bForfendWisperOnGame = CServerRule::IsForfendWisperOnGame(m_pGameServiceOption->dwServerRule);
  668. ((CButton *)GetDlgItem(IDC_FORFEND_WISPER_ON_GAME))->SetCheck((bForfendWisperOnGame == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  669. //禁止进入
  670. bool bForfendRoomEnter = CServerRule::IsForfendRoomEnter(m_pGameServiceOption->dwServerRule);
  671. ((CButton *)GetDlgItem(IDC_FORFEND_ROOM_ENTER))->SetCheck((bForfendRoomEnter == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  672. //禁止进入
  673. bool bForfendGameEnter = CServerRule::IsForfendGameEnter(m_pGameServiceOption->dwServerRule);
  674. ((CButton *)GetDlgItem(IDC_FORFEND_GAME_ENTER))->SetCheck((bForfendGameEnter == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  675. //禁止旁观
  676. bool bForfendGameLookon = CServerRule::IsForfendGameLookon(m_pGameServiceOption->dwServerRule);
  677. ((CButton *)GetDlgItem(IDC_FORFEND_GAME_LOOKON))->SetCheck((bForfendGameLookon == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  678. //禁止规则
  679. if (m_pGameServiceAttrib->wChairCount > MAX_CHAIR_GENERAL) CServerRule::SetForfendGameRule(m_pGameServiceOption->dwServerRule, true);
  680. if (m_pGameServiceAttrib->wChairCount > MAX_CHAIR_GENERAL) ((CButton *)GetDlgItem(IDC_FORFEND_GAME_RULE))->EnableWindow(FALSE);
  681. bool bForfendGameRule = CServerRule::IsForfendGameRule(m_pGameServiceOption->dwServerRule);
  682. ((CButton *)GetDlgItem(IDC_FORFEND_GAME_RULE))->SetCheck((bForfendGameRule == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  683. //禁止锁桌
  684. if (m_pGameServiceAttrib->wChairCount > MAX_CHAIR_GENERAL) CServerRule::SetForfendLockTable(m_pGameServiceOption->dwServerRule, true);
  685. if (m_pGameServiceAttrib->wChairCount > MAX_CHAIR_GENERAL) ((CButton *)GetDlgItem(IDC_FORFEND_LOCK_TABLE))->EnableWindow(FALSE);
  686. bool bForfendLockTable = CServerRule::IsForfendLockTable(m_pGameServiceOption->dwServerRule);
  687. ((CButton *)GetDlgItem(IDC_FORFEND_LOCK_TABLE))->SetCheck((bForfendLockTable == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  688. //记录积分
  689. bool bRecordGameScore = CServerRule::IsRecordGameScore(m_pGameServiceOption->dwServerRule);
  690. ((CButton *)GetDlgItem(IDC_RECORD_GAME_SCORE))->SetCheck((bRecordGameScore == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  691. //记录过程
  692. //bool bRecordGameTrack=CServerRule::IsRecordGameTrack(m_pGameServiceOption->dwServerRule);
  693. //((CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK))->SetCheck((bRecordGameTrack==TRUE)?BST_CHECKED:BST_UNCHECKED);
  694. ((CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK))->SetCheck(BST_UNCHECKED);
  695. ((CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK))->EnableWindow(FALSE);
  696. //所有财富游戏,每局即时写分,记录每局成绩,默认为直接勾选灰色状态
  697. if (m_pGameServiceOption->wServerType == GAME_GENRE_GOLD)
  698. {
  699. CServerRule::SetImmediateWriteScore(m_pGameServiceOption->dwServerRule, true);
  700. GetDlgItem(IDC_IMMEDIATE_WRITE_SCORE)->EnableWindow(FALSE);
  701. }
  702. //即时写分
  703. bool bImmediateWriteScore = CServerRule::IsImmediateWriteScore(m_pGameServiceOption->dwServerRule);
  704. ((CButton *)GetDlgItem(IDC_IMMEDIATE_WRITE_SCORE))->SetCheck((bImmediateWriteScore == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  705. //动态底分
  706. //bool bDynamicCellScore=CServerRule::IsDynamicCellScore(m_pGameServiceOption->dwServerRule);
  707. //((CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE))->SetCheck((bDynamicCellScore==TRUE)?BST_CHECKED:BST_UNCHECKED);
  708. ((CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE))->SetCheck(BST_UNCHECKED);
  709. ((CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE))->EnableWindow(FALSE);
  710. //隐藏信息
  711. bool bAllowAvertCheatMode = CServerRule::IsAllowAvertCheatMode(m_pGameServiceOption->dwServerRule);
  712. ((CButton *)GetDlgItem(IDC_ALLOW_AVERT_CHEAT_MODE))->SetCheck((bAllowAvertCheatMode == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  713. //禁止存钱
  714. bool bForfendSaveInRoom = CServerRule::IsForfendSaveInRoom(m_pGameServiceOption->dwServerRule);
  715. ((CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_ROOM))->SetCheck((bForfendSaveInRoom == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  716. //禁止存钱
  717. bool bForfendSaveInGame = CServerRule::IsForfendSaveInGame(m_pGameServiceOption->dwServerRule);
  718. ((CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_GAME))->SetCheck((bForfendSaveInGame == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  719. //允许占位
  720. bool bAllowAndroidSimulate = CServerRule::IsAllowAndroidSimulate(m_pGameServiceOption->dwServerRule);
  721. ((CButton *)GetDlgItem(IDC_ALLOW_ANDROID_SIMULATE))->SetCheck((bAllowAndroidSimulate == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  722. //动态加入
  723. if (m_pGameServiceAttrib->cbDynamicJoin == TRUE)
  724. {
  725. bool bAllowDynamicJoin = CServerRule::IsAllowDynamicJoin(m_pGameServiceOption->dwServerRule);
  726. ((CButton *)GetDlgItem(IDC_ALLOW_DYNAMIC_JOIN))->SetCheck((bAllowDynamicJoin == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  727. }
  728. //允许机器
  729. if (m_pGameServiceAttrib->cbAndroidUser == TRUE)
  730. {
  731. bool bAllowAndroidAttend = CServerRule::IsAllowAndroidAttend(m_pGameServiceOption->dwServerRule);
  732. ((CButton *)GetDlgItem(IDC_ALLOW_ANDROID_ATTEND))->SetCheck((bAllowAndroidAttend == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  733. }
  734. //断线代打
  735. if (m_pGameServiceAttrib->cbOffLineTrustee == TRUE)
  736. {
  737. bool bAllowOffLineTrustee = CServerRule::IsAllowOffLineTrustee(m_pGameServiceOption->dwServerRule);
  738. if (m_pGameServiceOption->wServerType != GAME_GENRE_MATCH)
  739. ((CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE))->SetCheck((bAllowOffLineTrustee == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  740. else
  741. ((CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE))->SetCheck(BST_CHECKED);
  742. }
  743. //((CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE))->SetCheck(BST_UNCHECKED);
  744. //((CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE))->EnableWindow(FALSE);
  745. return TRUE;
  746. }
  747. //保存输入
  748. bool CDlgServerOptionItem2::SaveInputInfo()
  749. {
  750. //变量定义
  751. CComboBox * pMinMember = (CComboBox *)GetDlgItem(IDC_MIN_ENTER_MEMBER);
  752. CComboBox * pMaxMember = (CComboBox *)GetDlgItem(IDC_MAX_ENTER_MEMBER);
  753. //积分限制
  754. m_pGameServiceOption->cbMinEnterMember = 0;
  755. m_pGameServiceOption->cbMaxEnterMember = 0;
  756. m_pGameServiceOption->lMinEnterScore = GetDlgItemInt(IDC_MIN_ENTER_SCORE);
  757. m_pGameServiceOption->lMaxEnterScore = GetDlgItemInt(IDC_MAX_ENTER_SCORE);
  758. m_pGameServiceOption->lMinTableScore = GetDlgItemInt(IDC_MIN_TABLE_SCORE);
  759. //会员限制
  760. if (pMinMember->GetCurSel() != LB_ERR)
  761. {
  762. INT nCurSelect = pMinMember->GetCurSel();
  763. m_pGameServiceOption->cbMinEnterMember = (BYTE)pMinMember->GetItemData(nCurSelect);
  764. }
  765. //最高会员
  766. if (pMaxMember->GetCurSel() != LB_ERR)
  767. {
  768. INT nCurSelect = pMaxMember->GetCurSel();
  769. m_pGameServiceOption->cbMaxEnterMember = (BYTE)pMaxMember->GetItemData(nCurSelect);
  770. }
  771. //参数效验
  772. if ((m_pGameServiceOption->lMaxEnterScore != 0L) && (m_pGameServiceOption->lMaxEnterScore < m_pGameServiceOption->lMinEnterScore))
  773. {
  774. AfxMessageBox(TEXT("进入房间最低成绩比最高成绩还高,将会造成任何玩家都不能进入"), MB_ICONERROR);
  775. return false;
  776. }
  777. //参数效验
  778. if ((m_pGameServiceOption->cbMaxEnterMember != 0L) && (m_pGameServiceOption->cbMaxEnterMember < m_pGameServiceOption->cbMinEnterMember))
  779. {
  780. AfxMessageBox(TEXT("进入房间最低会员级别比最高会员级别还高,将会造成任何玩家都不能进入"), MB_ICONERROR);
  781. return false;
  782. }
  783. //禁止公聊
  784. CButton * pForfendGameChat = (CButton *)GetDlgItem(IDC_FORFEND_GAME_CHAT);
  785. CServerRule::SetForfendGameChat(m_pGameServiceOption->dwServerRule, (pForfendGameChat->GetCheck() == BST_CHECKED));
  786. //禁止公聊
  787. CButton * pForfendRoomChat = (CButton *)GetDlgItem(IDC_FORFEND_ROOM_CHAT);
  788. CServerRule::SetForfendRoomChat(m_pGameServiceOption->dwServerRule, (pForfendRoomChat->GetCheck() == BST_CHECKED));
  789. //禁止私聊
  790. CButton * pForfendWisperChat = (CButton *)GetDlgItem(IDC_FORFEND_WISPER_CHAT);
  791. CServerRule::SetForfendWisperChat(m_pGameServiceOption->dwServerRule, (pForfendWisperChat->GetCheck() == BST_CHECKED));
  792. //禁止私聊
  793. CButton * pForfendWisperOnGame = (CButton *)GetDlgItem(IDC_FORFEND_WISPER_ON_GAME);
  794. CServerRule::SetForfendWisperOnGame(m_pGameServiceOption->dwServerRule, (pForfendWisperOnGame->GetCheck() == BST_CHECKED));
  795. //禁止进入
  796. CButton * pForfendRoomEnter = (CButton *)GetDlgItem(IDC_FORFEND_ROOM_ENTER);
  797. CServerRule::SetForfendRoomEnter(m_pGameServiceOption->dwServerRule, (pForfendRoomEnter->GetCheck() == BST_CHECKED));
  798. //禁止进入
  799. CButton * pForfendGameEnter = (CButton *)GetDlgItem(IDC_FORFEND_GAME_ENTER);
  800. CServerRule::SetForfendGameEnter(m_pGameServiceOption->dwServerRule, (pForfendGameEnter->GetCheck() == BST_CHECKED));
  801. //禁止旁观
  802. CButton * pForfendGameLookon = (CButton *)GetDlgItem(IDC_FORFEND_GAME_LOOKON);
  803. CServerRule::SetForfendGameLookon(m_pGameServiceOption->dwServerRule, (pForfendGameLookon->GetCheck() == BST_CHECKED));
  804. //禁止规则
  805. CButton * pForfendGameRule = (CButton *)GetDlgItem(IDC_FORFEND_GAME_RULE);
  806. CServerRule::SetForfendGameRule(m_pGameServiceOption->dwServerRule, (pForfendGameRule->GetCheck() == BST_CHECKED));
  807. //禁止锁桌
  808. CButton * pForfendLockTable = (CButton *)GetDlgItem(IDC_FORFEND_LOCK_TABLE);
  809. CServerRule::SetForfendLockTable(m_pGameServiceOption->dwServerRule, (pForfendLockTable->GetCheck() == BST_CHECKED));
  810. //记录积分
  811. CButton * pRecordGameScore = (CButton *)GetDlgItem(IDC_RECORD_GAME_SCORE);
  812. CServerRule::SetRecordGameScore(m_pGameServiceOption->dwServerRule, (pRecordGameScore->GetCheck() == BST_CHECKED));
  813. //记录过程
  814. CButton * pRecordGameTrack = (CButton *)GetDlgItem(IDC_RECORD_GAME_TRACK);
  815. CServerRule::SetRecordGameTrack(m_pGameServiceOption->dwServerRule, (pRecordGameTrack->GetCheck() == BST_CHECKED));
  816. //即时写分
  817. CButton * pImmediateWriteScore = (CButton *)GetDlgItem(IDC_IMMEDIATE_WRITE_SCORE);
  818. CServerRule::SetImmediateWriteScore(m_pGameServiceOption->dwServerRule, (pImmediateWriteScore->GetCheck() == BST_CHECKED));
  819. //动态底分
  820. CButton * pDynamicCellScore = (CButton *)GetDlgItem(IDC_DYNAMIC_CELL_SCORE);
  821. CServerRule::SetDynamicCellScore(m_pGameServiceOption->dwServerRule, (pDynamicCellScore->GetCheck() == BST_CHECKED));
  822. //隐藏信息
  823. CButton * pAvertCheatMode = (CButton *)GetDlgItem(IDC_ALLOW_AVERT_CHEAT_MODE);
  824. CServerRule::SetAllowAvertCheatMode(m_pGameServiceOption->dwServerRule, (pAvertCheatMode->GetCheck() == BST_CHECKED));
  825. //禁止存钱
  826. CButton * pForfendSaveInRoom = (CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_ROOM);
  827. CServerRule::SetForfendSaveInRoom(m_pGameServiceOption->dwServerRule, (pForfendSaveInRoom->GetCheck() == BST_CHECKED));
  828. //禁止存钱
  829. CButton * pForfendSaveInGame = (CButton *)GetDlgItem(IDC_FORFEND_SAVE_IN_GAME);
  830. CServerRule::SetForfendSaveInGame(m_pGameServiceOption->dwServerRule, (pForfendSaveInGame->GetCheck() == BST_CHECKED));
  831. //允许占位
  832. CButton * pAllowAndroidSimulate = (CButton *)GetDlgItem(IDC_ALLOW_ANDROID_SIMULATE);
  833. CServerRule::SetAllowAndroidSimulate(m_pGameServiceOption->dwServerRule, (pAllowAndroidSimulate->GetCheck() == BST_CHECKED));
  834. //动态加入
  835. if (m_pGameServiceAttrib->cbDynamicJoin == TRUE)
  836. {
  837. CButton * pAllowDynamicJoin = (CButton *)GetDlgItem(IDC_ALLOW_DYNAMIC_JOIN);
  838. CServerRule::SetAllowDynamicJoin(m_pGameServiceOption->dwServerRule, (pAllowDynamicJoin->GetCheck() == BST_CHECKED));
  839. }
  840. //允许陪玩
  841. if (m_pGameServiceAttrib->cbAndroidUser == TRUE)
  842. {
  843. CButton * pAllowAndroidUser = (CButton *)GetDlgItem(IDC_ALLOW_ANDROID_ATTEND);
  844. CServerRule::SetAllowAndroidAttend(m_pGameServiceOption->dwServerRule, (pAllowAndroidUser->GetCheck() == BST_CHECKED));
  845. }
  846. //断线代打
  847. if (m_pGameServiceAttrib->cbOffLineTrustee == TRUE)
  848. {
  849. CButton * pAllowOffLineTrustee = (CButton *)GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE);
  850. CServerRule::SetAllowOffLineTrustee(m_pGameServiceOption->dwServerRule, (pAllowOffLineTrustee->GetCheck() == BST_CHECKED));
  851. }
  852. return true;
  853. }
  854. //调整控件
  855. VOID CDlgServerOptionItem2::RectifyControl(INT nWidth, INT nHeight)
  856. {
  857. return;
  858. }
  859. //构造控件
  860. VOID CDlgServerOptionItem2::InitCtrlWindow()
  861. {
  862. //条件限制
  863. ((CEdit *)GetDlgItem(IDC_MIN_ENTER_SCORE))->LimitText(18);
  864. ((CEdit *)GetDlgItem(IDC_MAX_ENTER_SCORE))->LimitText(18);
  865. ((CEdit *)GetDlgItem(IDC_MIN_TABLE_SCORE))->LimitText(18);
  866. //会员配置
  867. CComboBox * pMinMember = (CComboBox *)GetDlgItem(IDC_MIN_ENTER_MEMBER);
  868. CComboBox * pMaxMember = (CComboBox *)GetDlgItem(IDC_MAX_ENTER_MEMBER);
  869. LPCTSTR pszMember[] = { TEXT("没有限制"), TEXT("蓝钻会员"), TEXT("黄钻会员"), TEXT("白钻会员"), TEXT("红钻会员"), TEXT("VIP会员") };
  870. //会员信息
  871. for (INT i = 0; i < CountArray(pszMember); i++)
  872. {
  873. pMinMember->SetItemData(pMinMember->AddString(pszMember[i]), i);
  874. pMaxMember->SetItemData(pMaxMember->AddString(pszMember[i]), i);
  875. }
  876. //控件禁用
  877. GetDlgItem(IDC_ALLOW_DYNAMIC_JOIN)->EnableWindow((m_pGameServiceAttrib->cbDynamicJoin == TRUE) ? TRUE : FALSE); ///---允许动态加入
  878. GetDlgItem(IDC_ALLOW_ANDROID_ATTEND)->EnableWindow((m_pGameServiceAttrib->cbAndroidUser == TRUE) ? TRUE : FALSE); ///---允许机器人陪玩
  879. GetDlgItem(IDC_ALLOW_OFFLINE_TRUSTEE)->EnableWindow((m_pGameServiceAttrib->cbOffLineTrustee == TRUE) ? TRUE : FALSE);///---断线托管代打
  880. return;
  881. }
  882. //////////////////////////////////////////////////////////////////////////////////
  883. //构造函数
  884. CDlgServerOptionItem3::CDlgServerOptionItem3() : CDlgServerOptionItem(IDD_SERVER_OPTION_3)
  885. {
  886. }
  887. //析构函数
  888. CDlgServerOptionItem3::~CDlgServerOptionItem3()
  889. {
  890. }
  891. //初始化函数 ///---分组选项
  892. BOOL CDlgServerOptionItem3::OnInitDialog()
  893. {
  894. __super::OnInitDialog();
  895. //最少人数
  896. if (m_pGameServiceOption->wMinDistributeUser != 0)
  897. {
  898. SetDlgItemInt(IDC_MIN_DISTRIBUTE_USER, m_pGameServiceOption->wMinDistributeUser);
  899. }
  900. //分组间隔
  901. if (m_pGameServiceOption->wDistributeTimeSpace != 0)
  902. {
  903. SetDlgItemInt(IDC_DISTRIBUTE_TIME_SPACE, m_pGameServiceOption->wDistributeTimeSpace);
  904. }
  905. //分组局数
  906. if (m_pGameServiceOption->wDistributeDrawCount != 0)
  907. {
  908. SetDlgItemInt(IDC_DISTRIBUTE_DRAW_COUNT, m_pGameServiceOption->wDistributeDrawCount);
  909. }
  910. //最少人数
  911. if (m_pGameServiceOption->wMinPartakeGameUser != 0)
  912. {
  913. SetDlgItemInt(IDC_DISTRIBUTE_START_MIN_USER, m_pGameServiceOption->wMinPartakeGameUser);
  914. }
  915. //最大人数
  916. if (m_pGameServiceOption->wMaxPartakeGameUser != 0)
  917. {
  918. SetDlgItemInt(IDC_DISTRIBUTE_START_MAX_USER, m_pGameServiceOption->wMaxPartakeGameUser);
  919. }
  920. //允许分组
  921. bool bDistributeAllow = ((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_ALLOW) != 0);
  922. ((CButton *)GetDlgItem(IDC_DISTRIBUTE_ALLOW))->SetCheck((bDistributeAllow == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  923. //入座选项
  924. bool bDistributeImmediate = ((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_IMMEDIATE) != 0);
  925. ((CButton *)GetDlgItem(IDC_DISTRIBUTE_IMMEDIATE))->SetCheck((bDistributeImmediate == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  926. //同桌选项
  927. bool bDistributeLastTable = ((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_LAST_TABLE) != 0);
  928. ((CButton *)GetDlgItem(IDC_DISTRIBUTE_LAST_TABLE))->SetCheck((bDistributeLastTable == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  929. //地址选项
  930. bool bDistributeSameAddress = ((m_pGameServiceOption->cbDistributeRule&DISTRIBUTE_SAME_ADDRESS) != 0);
  931. ((CButton *)GetDlgItem(IDC_DISTRIBUTE_SAME_ADDRESS))->SetCheck((bDistributeSameAddress == TRUE) ? BST_CHECKED : BST_UNCHECKED);
  932. return TRUE;
  933. }
  934. //保存输入
  935. bool CDlgServerOptionItem3::SaveInputInfo()
  936. {
  937. //属性配置
  938. m_pGameServiceOption->wMinDistributeUser = GetDlgItemInt(IDC_MIN_DISTRIBUTE_USER);
  939. m_pGameServiceOption->wDistributeTimeSpace = GetDlgItemInt(IDC_DISTRIBUTE_TIME_SPACE);
  940. m_pGameServiceOption->wDistributeDrawCount = GetDlgItemInt(IDC_DISTRIBUTE_DRAW_COUNT);
  941. m_pGameServiceOption->wMinPartakeGameUser = GetDlgItemInt(IDC_DISTRIBUTE_START_MIN_USER);
  942. m_pGameServiceOption->wMaxPartakeGameUser = GetDlgItemInt(IDC_DISTRIBUTE_START_MAX_USER);
  943. //允许分组
  944. if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_ALLOW))->GetCheck() == BST_CHECKED)
  945. {
  946. m_pGameServiceOption->cbDistributeRule |= DISTRIBUTE_ALLOW;
  947. }
  948. else
  949. {
  950. m_pGameServiceOption->cbDistributeRule &= ~DISTRIBUTE_ALLOW;
  951. }
  952. //入座选项
  953. if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_IMMEDIATE))->GetCheck() == BST_CHECKED)
  954. {
  955. m_pGameServiceOption->cbDistributeRule |= DISTRIBUTE_IMMEDIATE;
  956. }
  957. else
  958. {
  959. m_pGameServiceOption->cbDistributeRule &= ~DISTRIBUTE_IMMEDIATE;
  960. }
  961. //同桌选项
  962. if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_LAST_TABLE))->GetCheck() == BST_CHECKED)
  963. {
  964. m_pGameServiceOption->cbDistributeRule |= DISTRIBUTE_LAST_TABLE;
  965. }
  966. else
  967. {
  968. m_pGameServiceOption->cbDistributeRule &= ~DISTRIBUTE_LAST_TABLE;
  969. }
  970. //地址选项
  971. if (((CButton *)GetDlgItem(IDC_DISTRIBUTE_SAME_ADDRESS))->GetCheck() == BST_CHECKED)
  972. {
  973. m_pGameServiceOption->cbDistributeRule |= DISTRIBUTE_SAME_ADDRESS;
  974. }
  975. else
  976. {
  977. m_pGameServiceOption->cbDistributeRule &= ~DISTRIBUTE_SAME_ADDRESS;
  978. }
  979. return true;
  980. }
  981. //调整控件
  982. VOID CDlgServerOptionItem3::RectifyControl(INT nWidth, INT nHeight)
  983. {
  984. return;
  985. }
  986. //////////////////////////////////////////////////////////////////////////////////
  987. //构造函数
  988. CDlgServerOptionItemCustom::CDlgServerOptionItemCustom() : CDlgServerOptionItem(IDD_SERVER_OPTION_4)
  989. {
  990. //设置变量
  991. m_hCustomRule = NULL;
  992. m_pIGameServiceCustomRule = NULL;
  993. return;
  994. }
  995. //析构函数
  996. CDlgServerOptionItemCustom::~CDlgServerOptionItemCustom()
  997. {
  998. }
  999. //初始化函数
  1000. BOOL CDlgServerOptionItemCustom::OnInitDialog()
  1001. {
  1002. __super::OnInitDialog();
  1003. //获取位置
  1004. CRect rcClient;
  1005. GetClientRect(&rcClient);
  1006. //设置变量
  1007. m_pIGameServiceCustomRule = m_pDlgServerWizard->m_pIGameServiceCustomRule;
  1008. //创建窗口
  1009. WORD wCustonSize = sizeof(m_pGameServiceOption->cbCustomRule);
  1010. m_hCustomRule = m_pIGameServiceCustomRule->CreateCustomRule(this, rcClient, m_pGameServiceOption->cbCustomRule, wCustonSize);
  1011. return TRUE;
  1012. }
  1013. //保存输入
  1014. bool CDlgServerOptionItemCustom::SaveInputInfo()
  1015. {
  1016. //保存输入
  1017. if (m_hCustomRule != NULL)
  1018. {
  1019. //保存设置
  1020. WORD wCustonSize = sizeof(m_pGameServiceOption->cbCustomRule);
  1021. bool bSuccess = m_pIGameServiceCustomRule->SaveCustomRule(m_pGameServiceOption->cbCustomRule, wCustonSize);
  1022. return bSuccess;
  1023. }
  1024. return true;
  1025. }
  1026. //调整控件
  1027. VOID CDlgServerOptionItemCustom::RectifyControl(INT nWidth, INT nHeight)
  1028. {
  1029. //调整位置
  1030. if (m_hCustomRule != NULL)
  1031. {
  1032. ::SetWindowPos(m_hCustomRule, NULL, 0, 0, nWidth, nHeight, SWP_NOMOVE | SWP_NOZORDER);
  1033. }
  1034. return;
  1035. }
  1036. //消耗消息
  1037. VOID CDlgServerOptionItemCustom::OnNcDestroy()
  1038. {
  1039. //关闭窗口
  1040. if (m_hCustomRule != NULL)
  1041. {
  1042. ::DestroyWindow(m_hCustomRule);
  1043. }
  1044. //设置变量
  1045. m_hCustomRule = NULL;
  1046. m_pIGameServiceCustomRule = NULL;
  1047. __super::OnNcDestroy();
  1048. }
  1049. //焦点消息
  1050. VOID CDlgServerOptionItemCustom::OnSetFocus(CWnd * pNewWnd)
  1051. {
  1052. __super::OnSetFocus(pNewWnd);
  1053. //设置焦点
  1054. if (m_hCustomRule != NULL)
  1055. {
  1056. ::SetFocus(m_hCustomRule);
  1057. }
  1058. return;
  1059. }
  1060. //////////////////////////////////////////////////////////////////////////////////
  1061. //构造函数
  1062. CDlgServerWizardItem::CDlgServerWizardItem(UINT nIDTemplate) : CDialogEx(nIDTemplate)
  1063. {
  1064. //设置变量
  1065. m_pDlgServerWizard = NULL;
  1066. m_pGameServiceAttrib = NULL;
  1067. m_pGameServiceOption = NULL;
  1068. return;
  1069. }
  1070. //析构函数
  1071. CDlgServerWizardItem::~CDlgServerWizardItem()
  1072. {
  1073. }
  1074. //保存数据
  1075. bool CDlgServerWizardItem::SaveItemData()
  1076. {
  1077. //保存数据
  1078. if ((m_hWnd != NULL) && (SaveInputInfo() == false))
  1079. {
  1080. return false;
  1081. }
  1082. return true;
  1083. }
  1084. //创建向导
  1085. bool CDlgServerWizardItem::ShowWizardItem(const CRect & rcRect, CWnd * pParentWnd)
  1086. {
  1087. //创建窗口
  1088. if (m_hWnd == NULL)
  1089. {
  1090. //设置资源
  1091. AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME));
  1092. //创建窗口
  1093. Create(m_lpszTemplateName, pParentWnd);
  1094. SetWindowPos(NULL, rcRect.left, rcRect.top, rcRect.Width(), rcRect.Height(), SWP_NOZORDER | SWP_NOACTIVATE);
  1095. //设置资源
  1096. AfxSetResourceHandle(GetModuleHandle(NULL));
  1097. }
  1098. //显示窗口
  1099. ShowWindow(SW_SHOW);
  1100. return true;
  1101. }
  1102. //确定函数
  1103. VOID CDlgServerWizardItem::OnOK()
  1104. {
  1105. //投递消息
  1106. GetParent()->PostMessage(WM_COMMAND, MAKELONG(IDOK, 0), 0);
  1107. return;
  1108. }
  1109. //取消消息
  1110. VOID CDlgServerWizardItem::OnCancel()
  1111. {
  1112. //投递消息
  1113. GetParent()->PostMessage(WM_COMMAND, MAKELONG(IDCANCEL, 0), 0);
  1114. return;
  1115. }
  1116. //位置消息
  1117. VOID CDlgServerWizardItem::OnSize(UINT nType, INT cx, INT cy)
  1118. {
  1119. __super::OnSize(nType, cx, cy);
  1120. //调整控件
  1121. RectifyControl(cx, cy);
  1122. return;
  1123. }
  1124. //////////////////////////////////////////////////////////////////////////////////
  1125. //构造函数
  1126. CDlgServerWizardItem1::CDlgServerWizardItem1() : CDlgServerWizardItem(IDD_SERVER_WIZARD_1)
  1127. {
  1128. }
  1129. //析构函数
  1130. CDlgServerWizardItem1::~CDlgServerWizardItem1()
  1131. {
  1132. }
  1133. //控件绑定
  1134. VOID CDlgServerWizardItem1::DoDataExchange(CDataExchange * pDX)
  1135. {
  1136. __super::DoDataExchange(pDX);
  1137. DDX_Control(pDX, IDC_PROMPT, m_StaticPrompt);
  1138. DDX_Control(pDX, IDC_MODULE_LIST, m_ModuleListControl);
  1139. }
  1140. //初始化函数
  1141. BOOL CDlgServerWizardItem1::OnInitDialog()
  1142. {
  1143. __super::OnInitDialog();
  1144. //加载列表
  1145. LoadDBModuleItem();
  1146. return TRUE;
  1147. }
  1148. //保存输入
  1149. bool CDlgServerWizardItem1::SaveInputInfo()
  1150. {
  1151. //变量定义
  1152. tagGameModuleInfo * pGameModuleInfo = NULL;
  1153. POSITION Position = m_ModuleListControl.GetFirstSelectedItemPosition();
  1154. //获取选择
  1155. if (Position != NULL)
  1156. {
  1157. INT nListItem = m_ModuleListControl.GetNextSelectedItem(Position);
  1158. pGameModuleInfo = (tagGameModuleInfo *)m_ModuleListControl.GetItemData(nListItem);
  1159. }
  1160. //选择判断
  1161. if (pGameModuleInfo == NULL)
  1162. {
  1163. AfxMessageBox(TEXT("请您先从游戏列表中选择游戏组件"), MB_ICONERROR);
  1164. return false;
  1165. }
  1166. //游戏模块
  1167. m_GameServiceManager.CloseInstance();
  1168. m_GameServiceManager.SetModuleCreateInfo(pGameModuleInfo->szServerDLLName, GAME_SERVICE_CREATE_NAME);
  1169. //创建判断
  1170. if (pGameModuleInfo->dwNativeVersion == 0L)
  1171. {
  1172. //构造提示
  1173. TCHAR szString[512] = TEXT("");
  1174. _sntprintf(szString, CountArray(szString), TEXT("[ %s ] 服务组件还没有安装,请先安装服务组件"), pGameModuleInfo->szGameName);
  1175. //提示消息
  1176. AfxMessageBox(szString, MB_ICONERROR);
  1177. return false;
  1178. }
  1179. //更新判断
  1180. if (pGameModuleInfo->dwNativeVersion != pGameModuleInfo->dwServerVersion)
  1181. {
  1182. //构造提示
  1183. TCHAR szString[512] = TEXT("");
  1184. _sntprintf(szString, CountArray(szString), TEXT("[ %s ] 服务组件更新了,是否还继续创建房间吗?"), pGameModuleInfo->szGameName);
  1185. //提示消息
  1186. if (AfxMessageBox(szString, MB_ICONWARNING | MB_YESNO | MB_DEFBUTTON2) != IDYES) return false;
  1187. }
  1188. //加载模块
  1189. if (m_GameServiceManager.CreateInstance() == false)
  1190. {
  1191. //构造提示
  1192. TCHAR szString[512] = TEXT("");
  1193. _sntprintf(szString, CountArray(szString), TEXT("[ %s ] 服务组件加载失败,创建游戏房间失败"), pGameModuleInfo->szGameName);
  1194. //提示消息
  1195. AfxMessageBox(szString, MB_ICONERROR);
  1196. return false;
  1197. }
  1198. //配置模块
  1199. m_pDlgServerWizard->SetWizardParameter(m_GameServiceManager.GetInterface(), NULL);
  1200. //默认设置
  1201. lstrcpyn(m_pGameServiceOption->szDataBaseName, pGameModuleInfo->szDataBaseName, CountArray(m_pGameServiceOption->szDataBaseName));
  1202. lstrcpyn(m_pGameServiceOption->szDataBaseAddr, pGameModuleInfo->szDataBaseAddr, CountArray(m_pGameServiceOption->szDataBaseAddr));
  1203. return true;
  1204. }
  1205. //调整控件
  1206. VOID CDlgServerWizardItem1::RectifyControl(INT nWidth, INT nHeight)
  1207. {
  1208. //调整提示
  1209. if (m_StaticPrompt.m_hWnd != NULL)
  1210. {
  1211. m_StaticPrompt.SetWindowPos(NULL, 5, 8, nWidth - 10, 12, SWP_NOZORDER | SWP_NOCOPYBITS);
  1212. }
  1213. //调整列表
  1214. if (m_ModuleListControl.m_hWnd != NULL)
  1215. {
  1216. m_ModuleListControl.SetWindowPos(NULL, 5, 28, nWidth - 10, nHeight - 28, SWP_NOZORDER | SWP_NOCOPYBITS);
  1217. }
  1218. return;
  1219. }
  1220. //加载列表
  1221. bool CDlgServerWizardItem1::LoadDBModuleItem()
  1222. {
  1223. //加载信息
  1224. if (m_ModuleInfoManager.LoadGameModuleInfo(m_ModuleInfoBuffer) == true)
  1225. {
  1226. //重置列表
  1227. m_ModuleListControl.DeleteAllItems();
  1228. //变量定义
  1229. POSITION Position = m_ModuleInfoBuffer.m_GameModuleInfoMap.GetStartPosition();
  1230. //枚举模块
  1231. while (Position != NULL)
  1232. {
  1233. //获取对象
  1234. WORD wModuleID = 0L;
  1235. tagGameModuleInfo * pGameModuleInfo = NULL;
  1236. m_ModuleInfoBuffer.m_GameModuleInfoMap.GetNextAssoc(Position, wModuleID, pGameModuleInfo);
  1237. //插入列表
  1238. ASSERT(pGameModuleInfo != NULL);
  1239. if (pGameModuleInfo != NULL) m_ModuleListControl.InsertModuleInfo(pGameModuleInfo);
  1240. }
  1241. }
  1242. return false;
  1243. }
  1244. //双击列表
  1245. VOID CDlgServerWizardItem1::OnNMDblclkModuleList(NMHDR * pNMHDR, LRESULT * pResult)
  1246. {
  1247. //加载配置
  1248. if (((NMITEMACTIVATE *)pNMHDR)->iItem != LB_ERR)
  1249. {
  1250. //变量定义
  1251. INT nListItem = ((NMITEMACTIVATE *)pNMHDR)->iItem;
  1252. tagGameModuleInfo * pGameModuleInfo = (tagGameModuleInfo *)m_ModuleListControl.GetItemData(nListItem);
  1253. //投递消息
  1254. if (pGameModuleInfo->dwNativeVersion != 0L)
  1255. {
  1256. GetParent()->PostMessage(WM_COMMAND, MAKELONG(IDC_NEXT, 0), 0);
  1257. }
  1258. return;
  1259. }
  1260. return;
  1261. }
  1262. //////////////////////////////////////////////////////////////////////////////////
  1263. //构造函数
  1264. CDlgServerWizardItem2::CDlgServerWizardItem2() : CDlgServerWizardItem(IDD_SERVER_WIZARD_2)
  1265. {
  1266. //设置变量
  1267. m_wItemCount = 0;
  1268. m_wActiveIndex = INVALID_WORD;
  1269. ZeroMemory(m_pOptionItem, sizeof(m_pOptionItem));
  1270. return;
  1271. }
  1272. //析构函数
  1273. CDlgServerWizardItem2::~CDlgServerWizardItem2()
  1274. {
  1275. }
  1276. //控件绑定
  1277. VOID CDlgServerWizardItem2::DoDataExchange(CDataExchange * pDX)
  1278. {
  1279. __super::DoDataExchange(pDX);
  1280. DDX_Control(pDX, IDC_TAB_CTRL, m_TabCtrl);
  1281. }
  1282. //初始化函数
  1283. BOOL CDlgServerWizardItem2::OnInitDialog()
  1284. {
  1285. __super::OnInitDialog();
  1286. //设置变量
  1287. m_wItemCount = 0;
  1288. m_wActiveIndex = INVALID_WORD;
  1289. //基本配置
  1290. m_pOptionItem[m_wItemCount++] = &m_ServerOptionItem1;
  1291. m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_1, TEXT("基本配置"));
  1292. //房间选项
  1293. m_pOptionItem[m_wItemCount++] = &m_ServerOptionItem2;
  1294. m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_2, TEXT("房间选项"));
  1295. //附加权限
  1296. m_pOptionItem[m_wItemCount++] = &m_ServerOptionItem3;
  1297. m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_3, TEXT("分组选项"));
  1298. //服务定制
  1299. if (m_pDlgServerWizard->m_pIGameServiceCustomRule != NULL)
  1300. {
  1301. m_pOptionItem[m_wItemCount++] = &m_ServerOptionItemCustom;
  1302. m_TabCtrl.InsertItem(ITEM_SERVER_OPTION_CUSTOM, TEXT("服务定制"));
  1303. }
  1304. //激活子项
  1305. ActiveOptionItem(0);
  1306. return TRUE;
  1307. }
  1308. //保存输入
  1309. bool CDlgServerWizardItem2::SaveInputInfo()
  1310. {
  1311. //保存输入
  1312. for (INT i = 0; i < m_wItemCount; i++)
  1313. {
  1314. if (m_pOptionItem[i]->SaveItemData() == false)
  1315. {
  1316. ActiveOptionItem(i);
  1317. return false;
  1318. }
  1319. }
  1320. return true;
  1321. }
  1322. //调整控件
  1323. VOID CDlgServerWizardItem2::RectifyControl(INT nWidth, INT nHeight)
  1324. {
  1325. //调整选择
  1326. if (m_TabCtrl.m_hWnd != NULL)
  1327. {
  1328. m_TabCtrl.SetWindowPos(NULL, 5, 5, nWidth - 10, nHeight - 5, SWP_NOZORDER | SWP_NOCOPYBITS);
  1329. }
  1330. //调整选择
  1331. if ((m_TabCtrl.m_hWnd != NULL) && (m_wActiveIndex != INVALID_WORD))
  1332. {
  1333. //获取位置
  1334. CRect rcItemRect;
  1335. m_TabCtrl.GetWindowRect(&rcItemRect);
  1336. //计算位置
  1337. m_TabCtrl.ScreenToClient(&rcItemRect);
  1338. m_TabCtrl.AdjustRect(FALSE, &rcItemRect);
  1339. //移动位置
  1340. m_pOptionItem[m_wActiveIndex]->MoveWindow(&rcItemRect);
  1341. }
  1342. return;
  1343. }
  1344. //激活向导
  1345. bool CDlgServerWizardItem2::ActiveOptionItem(WORD wIndex)
  1346. {
  1347. //判断状态
  1348. if (m_wActiveIndex == wIndex)
  1349. {
  1350. m_pOptionItem[m_wActiveIndex]->SetFocus();
  1351. return true;
  1352. }
  1353. //保存旧项
  1354. CDlgServerOptionItem * pItemOption = NULL;
  1355. if (m_wActiveIndex < m_wItemCount) pItemOption = m_pOptionItem[m_wActiveIndex];
  1356. //获取位置
  1357. CRect rcItemRect;
  1358. m_TabCtrl.GetWindowRect(&rcItemRect);
  1359. //计算位置
  1360. m_TabCtrl.ScreenToClient(&rcItemRect);
  1361. m_TabCtrl.AdjustRect(FALSE, &rcItemRect);
  1362. //设置新项
  1363. m_pOptionItem[wIndex]->m_pDlgServerWizard = m_pDlgServerWizard;
  1364. m_pOptionItem[wIndex]->m_pGameServiceAttrib = m_pGameServiceAttrib;
  1365. m_pOptionItem[wIndex]->m_pGameServiceOption = m_pGameServiceOption;
  1366. //创建新项
  1367. m_wActiveIndex = wIndex;
  1368. m_pOptionItem[m_wActiveIndex]->ShowOptionItem(rcItemRect, &m_TabCtrl);
  1369. //激活新项
  1370. m_pOptionItem[m_wActiveIndex]->SetFocus();
  1371. if (pItemOption != NULL) pItemOption->ShowWindow(SW_HIDE);
  1372. //设置选择
  1373. if (m_TabCtrl.GetCurSel() != wIndex) m_TabCtrl.SetCurSel(wIndex);
  1374. return true;
  1375. }
  1376. //焦点消息
  1377. VOID CDlgServerWizardItem2::OnSetFocus(CWnd * pNewWnd)
  1378. {
  1379. __super::OnSetFocus(pNewWnd);
  1380. //设置焦点
  1381. if ((m_wActiveIndex != INVALID_WORD) && (m_pOptionItem[m_wActiveIndex]->m_hWnd != NULL))
  1382. {
  1383. m_pOptionItem[m_wActiveIndex]->SetFocus();
  1384. }
  1385. return;
  1386. }
  1387. //选择改变
  1388. VOID CDlgServerWizardItem2::OnTcnSelchangeTabCtrl(NMHDR * pNMHDR, LRESULT * pResult)
  1389. {
  1390. //设置页面
  1391. switch (m_TabCtrl.GetCurSel())
  1392. {
  1393. case ITEM_SERVER_OPTION_1:{ ActiveOptionItem(0); break; }
  1394. case ITEM_SERVER_OPTION_2:{ ActiveOptionItem(1); break; }
  1395. case ITEM_SERVER_OPTION_3:{ ActiveOptionItem(2); break; }
  1396. case ITEM_SERVER_OPTION_CUSTOM:{ ActiveOptionItem(3); break; }
  1397. }
  1398. return;
  1399. }
  1400. //////////////////////////////////////////////////////////////////////////////////
  1401. //构造函数
  1402. CDlgServerWizard::CDlgServerWizard() : CDialogEx(IDD_SERVER_WIZARD_MAIN)
  1403. {
  1404. //设置变量
  1405. m_wActiveIndex = INVALID_WORD;
  1406. m_pWizardItem[0] = &m_ServerWizardItem1;
  1407. m_pWizardItem[1] = &m_ServerWizardItem2;
  1408. //接口变量
  1409. m_pIGameServiceManager = NULL;
  1410. m_pIGameServiceCustomRule = NULL;
  1411. //配置信息
  1412. ZeroMemory(&m_ModuleInitParameter, sizeof(m_ModuleInitParameter));
  1413. return;
  1414. }
  1415. //析构函数
  1416. CDlgServerWizard::~CDlgServerWizard()
  1417. {
  1418. }
  1419. //初始化函数
  1420. BOOL CDlgServerWizard::OnInitDialog()
  1421. {
  1422. __super::OnInitDialog();
  1423. //设置资源
  1424. AfxSetResourceHandle(GetModuleHandle(NULL));
  1425. //激活向导
  1426. ActiveWizardItem((m_pIGameServiceManager == NULL) ? 0 : 1);
  1427. //组件属性
  1428. if (m_pIGameServiceManager != NULL)
  1429. {
  1430. SetDlgItemInt(IDC_GAME_ID, m_ModuleInitParameter.GameServiceAttrib.wKindID); ///---类型标识(如:303)
  1431. SetDlgItemText(IDC_GAME_NAME, m_ModuleInitParameter.GameServiceAttrib.szGameName); ///---游戏名字(黄石晃晃)
  1432. SetDlgItemInt(IDC_CHAIR_COUNT, m_ModuleInitParameter.GameServiceAttrib.wChairCount); ///---椅子数目 (4)
  1433. SetDlgItemText(IDC_DATABASE_NAME, m_ModuleInitParameter.GameServiceAttrib.szDataBaseName); ///---默认数据库
  1434. SetDlgItemText(IDC_CLIENT_EXE_NAME, m_ModuleInitParameter.GameServiceAttrib.szClientEXEName); ///---客户端进程
  1435. SetDlgItemText(IDC_SERVICE_DLL_NAME, m_ModuleInitParameter.GameServiceAttrib.szServerDLLName); ///---服务组件名
  1436. }
  1437. return FALSE;
  1438. }
  1439. //确定函数
  1440. VOID CDlgServerWizard::OnOK()
  1441. {
  1442. if ((m_wActiveIndex + 1) < CountArray(m_pWizardItem))
  1443. {
  1444. OnBnClickedNext();
  1445. }
  1446. else
  1447. {
  1448. OnBnClickedFinish();
  1449. }
  1450. return;
  1451. }
  1452. //创建房间
  1453. bool CDlgServerWizard::CreateGameServer()
  1454. {
  1455. //设置资源
  1456. AfxSetResourceHandle(GetModuleHandle(MODULE_MANAGER_DLL_NAME));
  1457. //配置房间
  1458. if (DoModal() == IDOK)
  1459. {
  1460. return true;
  1461. }
  1462. return false;
  1463. }
  1464. //设置接口
  1465. VOID CDlgServerWizard::SetWizardParameter(IGameServiceManager * pIGameServiceManager, tagGameServiceOption * pGameServiceOption)
  1466. {
  1467. //销毁子项
  1468. if (pGameServiceOption == NULL)
  1469. {
  1470. for (WORD i = 1; i < CountArray(m_pWizardItem); i++)
  1471. {
  1472. if ((m_pWizardItem[i] != NULL) && (m_pWizardItem[i]->m_hWnd != NULL))
  1473. {
  1474. m_pWizardItem[i]->DestroyWindow();
  1475. }
  1476. }
  1477. }
  1478. //设置变量
  1479. m_pIGameServiceCustomRule = NULL;
  1480. ZeroMemory(&m_ModuleInitParameter, sizeof(m_ModuleInitParameter));
  1481. //获取属性
  1482. ASSERT(pIGameServiceManager != NULL);
  1483. pIGameServiceManager->GetServiceAttrib(m_ModuleInitParameter.GameServiceAttrib);
  1484. //设置接口
  1485. m_pIGameServiceManager = pIGameServiceManager;
  1486. m_pIGameServiceCustomRule = QUERY_OBJECT_PTR_INTERFACE(m_pIGameServiceManager, IGameServiceCustomRule);
  1487. //组件属性
  1488. if (m_hWnd != NULL)
  1489. {
  1490. SetDlgItemInt(IDC_GAME_ID, m_ModuleInitParameter.GameServiceAttrib.wKindID);
  1491. SetDlgItemText(IDC_GAME_NAME, m_ModuleInitParameter.GameServiceAttrib.szGameName);
  1492. SetDlgItemInt(IDC_CHAIR_COUNT, m_ModuleInitParameter.GameServiceAttrib.wChairCount);
  1493. SetDlgItemText(IDC_DATABASE_NAME, m_ModuleInitParameter.GameServiceAttrib.szDataBaseName);
  1494. SetDlgItemText(IDC_CLIENT_EXE_NAME, m_ModuleInitParameter.GameServiceAttrib.szClientEXEName);
  1495. SetDlgItemText(IDC_SERVICE_DLL_NAME, m_ModuleInitParameter.GameServiceAttrib.szServerDLLName);
  1496. }
  1497. //设置规则
  1498. if (pGameServiceOption == NULL)
  1499. {
  1500. //自定规则
  1501. if (m_pIGameServiceCustomRule != NULL)
  1502. {
  1503. WORD wCustomSize = sizeof(m_ModuleInitParameter.GameServiceOption.cbCustomRule);
  1504. m_pIGameServiceCustomRule->DefaultCustomRule(m_ModuleInitParameter.GameServiceOption.cbCustomRule, wCustomSize);
  1505. }
  1506. //调整参数
  1507. ASSERT(m_pIGameServiceManager != NULL);
  1508. m_pIGameServiceManager->RectifyParameter(m_ModuleInitParameter.GameServiceOption);
  1509. }
  1510. else
  1511. {
  1512. //拷贝规则
  1513. CopyMemory(&m_ModuleInitParameter.GameServiceOption, pGameServiceOption, sizeof(tagGameServiceOption));
  1514. }
  1515. return;
  1516. }
  1517. //激活向导
  1518. bool CDlgServerWizard::ActiveWizardItem(WORD wIndex)
  1519. {
  1520. //判断状态
  1521. if (m_wActiveIndex == wIndex)
  1522. {
  1523. m_pWizardItem[m_wActiveIndex]->SetFocus();
  1524. return true;
  1525. }
  1526. //保存旧项
  1527. CDlgServerWizardItem * pItemWizard = NULL;
  1528. if (m_wActiveIndex<CountArray(m_pWizardItem))
  1529. {
  1530. //设置变量
  1531. pItemWizard = m_pWizardItem[m_wActiveIndex];
  1532. //保存数据
  1533. if ((wIndex>m_wActiveIndex) && (m_pWizardItem[m_wActiveIndex]->SaveItemData() == false)) return false;
  1534. }
  1535. //获取位置
  1536. CRect rcItemRect;
  1537. GetDlgItem(IDC_ITEM_FRAME)->GetWindowRect(rcItemRect);
  1538. ScreenToClient(&rcItemRect);
  1539. //设置新项
  1540. m_pWizardItem[wIndex]->m_pDlgServerWizard = this;
  1541. m_pWizardItem[wIndex]->m_pGameServiceAttrib = &m_ModuleInitParameter.GameServiceAttrib;
  1542. m_pWizardItem[wIndex]->m_pGameServiceOption = &m_ModuleInitParameter.GameServiceOption;
  1543. //创建新项
  1544. m_wActiveIndex = wIndex;
  1545. m_pWizardItem[m_wActiveIndex]->ShowWizardItem(rcItemRect, this);
  1546. //激活新项
  1547. m_pWizardItem[m_wActiveIndex]->SetFocus();
  1548. if (pItemWizard != NULL) pItemWizard->ShowWindow(SW_HIDE);
  1549. //界面变量
  1550. CButton * pButtonLast = (CButton *)GetDlgItem(IDC_LAST);
  1551. CButton * pButtonNext = (CButton *)GetDlgItem(IDC_NEXT);
  1552. CButton * pButtonFinish = (CButton *)GetDlgItem(IDC_FINISH);
  1553. //进度界面
  1554. pButtonNext->EnableWindow(((m_wActiveIndex + 1)<CountArray(m_pWizardItem)) ? TRUE : FALSE);
  1555. pButtonFinish->EnableWindow(((m_wActiveIndex + 1) == CountArray(m_pWizardItem)) ? TRUE : FALSE);
  1556. pButtonLast->EnableWindow(((m_wActiveIndex>1) || ((m_ModuleInitParameter.GameServiceOption.wServerID == 0) && (m_wActiveIndex > 0))) ? TRUE : FALSE);
  1557. //构造标题
  1558. TCHAR szTitle[128] = TEXT("");
  1559. _sntprintf(szTitle, CountArray(szTitle), TEXT("房间配置向导 --- [ 步骤 %d ]"), m_wActiveIndex + 1);
  1560. //设置标题
  1561. SetWindowText(szTitle);
  1562. return true;
  1563. }
  1564. //上一步
  1565. VOID CDlgServerWizard::OnBnClickedLast()
  1566. {
  1567. //效验参数
  1568. ASSERT(m_wActiveIndex > 0);
  1569. ASSERT(m_wActiveIndex < CountArray(m_pWizardItem));
  1570. //切换页面
  1571. ActiveWizardItem(m_wActiveIndex - 1);
  1572. return;
  1573. }
  1574. //下一步
  1575. VOID CDlgServerWizard::OnBnClickedNext()
  1576. {
  1577. //效验参数
  1578. ASSERT((m_wActiveIndex + 1) < CountArray(m_pWizardItem));
  1579. //激活页面
  1580. ActiveWizardItem(m_wActiveIndex + 1);
  1581. return;
  1582. }
  1583. //完成按钮
  1584. VOID CDlgServerWizard::OnBnClickedFinish()
  1585. {
  1586. //保存设置
  1587. ASSERT(m_wActiveIndex >= 1);
  1588. if (m_pWizardItem[m_wActiveIndex]->SaveItemData() == false) return;
  1589. //房间信息
  1590. tagGameServerCreate GameServerCreate;
  1591. ZeroMemory(&GameServerCreate, sizeof(GameServerCreate));
  1592. //参数调整
  1593. ASSERT(m_pIGameServiceManager != NULL);
  1594. m_pIGameServiceManager->RectifyParameter(m_ModuleInitParameter.GameServiceOption);
  1595. //索引变量
  1596. GameServerCreate.wGameID = m_ModuleInitParameter.GameServiceAttrib.wKindID;
  1597. GameServerCreate.wServerID = m_ModuleInitParameter.GameServiceOption.wServerID;
  1598. //挂接属性
  1599. GameServerCreate.wKindID = m_ModuleInitParameter.GameServiceOption.wKindID;
  1600. GameServerCreate.wNodeID = m_ModuleInitParameter.GameServiceOption.wNodeID;
  1601. GameServerCreate.wSortID = m_ModuleInitParameter.GameServiceOption.wSortID;
  1602. //税收配置
  1603. GameServerCreate.lCellScore = m_ModuleInitParameter.GameServiceOption.lCellScore;
  1604. GameServerCreate.wRevenueRatio = m_ModuleInitParameter.GameServiceOption.wRevenueRatio;
  1605. GameServerCreate.lServiceScore = m_ModuleInitParameter.GameServiceOption.lServiceScore;
  1606. //限制配置
  1607. GameServerCreate.lRestrictScore = m_ModuleInitParameter.GameServiceOption.lRestrictScore;
  1608. GameServerCreate.lMinTableScore = m_ModuleInitParameter.GameServiceOption.lMinTableScore;
  1609. GameServerCreate.lMinEnterScore = m_ModuleInitParameter.GameServiceOption.lMinEnterScore;
  1610. GameServerCreate.lMaxEnterScore = m_ModuleInitParameter.GameServiceOption.lMaxEnterScore;
  1611. //会员限制
  1612. GameServerCreate.cbMaxEnterMember = m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember;
  1613. GameServerCreate.cbMaxEnterMember = m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember;
  1614. //房间配置
  1615. GameServerCreate.dwServerRule = m_ModuleInitParameter.GameServiceOption.dwServerRule;
  1616. GameServerCreate.dwAttachUserRight = m_ModuleInitParameter.GameServiceOption.dwAttachUserRight;
  1617. //房间属性
  1618. GameServerCreate.wMaxPlayer = m_ModuleInitParameter.GameServiceOption.wMaxPlayer;
  1619. GameServerCreate.wTableCount = m_ModuleInitParameter.GameServiceOption.wTableCount;
  1620. GameServerCreate.wServerType = m_ModuleInitParameter.GameServiceOption.wServerType;
  1621. GameServerCreate.wServerKind = m_ModuleInitParameter.GameServiceOption.wServerKind;
  1622. GameServerCreate.wServerPort = m_ModuleInitParameter.GameServiceOption.wServerPort;
  1623. lstrcpyn(GameServerCreate.szServerName, m_ModuleInitParameter.GameServiceOption.szServerName, CountArray(GameServerCreate.szServerName));
  1624. lstrcpyn(GameServerCreate.szServerPasswd, m_ModuleInitParameter.GameServiceOption.szServerPasswd, CountArray(GameServerCreate.szServerPasswd));
  1625. //分组属性
  1626. GameServerCreate.cbDistributeRule = m_ModuleInitParameter.GameServiceOption.cbDistributeRule;
  1627. GameServerCreate.wMinDistributeUser = m_ModuleInitParameter.GameServiceOption.wMinDistributeUser;
  1628. GameServerCreate.wDistributeTimeSpace = m_ModuleInitParameter.GameServiceOption.wDistributeTimeSpace;
  1629. GameServerCreate.wDistributeDrawCount = m_ModuleInitParameter.GameServiceOption.wDistributeDrawCount;
  1630. GameServerCreate.wMinPartakeGameUser = m_ModuleInitParameter.GameServiceOption.wMinPartakeGameUser;
  1631. GameServerCreate.wMaxPartakeGameUser = m_ModuleInitParameter.GameServiceOption.wMaxPartakeGameUser;
  1632. //连接信息
  1633. lstrcpyn(GameServerCreate.szDataBaseName, m_ModuleInitParameter.GameServiceOption.szDataBaseName, CountArray(GameServerCreate.szDataBaseName));
  1634. lstrcpyn(GameServerCreate.szDataBaseAddr, m_ModuleInitParameter.GameServiceOption.szDataBaseAddr, CountArray(GameServerCreate.szDataBaseAddr));
  1635. //扩展配置
  1636. CWHService::GetMachineID(GameServerCreate.szServiceMachine);
  1637. CopyMemory(GameServerCreate.cbCustomRule, m_ModuleInitParameter.GameServiceOption.cbCustomRule, sizeof(GameServerCreate.cbCustomRule));
  1638. //变量定义
  1639. tagGameServerInfo GameServerResult;
  1640. CServerInfoManager ServerInfoManager;
  1641. //插入房间
  1642. if (GameServerCreate.wServerID == 0)
  1643. {
  1644. ///---保存入库
  1645. if (ServerInfoManager.InsertGameServer(&GameServerCreate, GameServerResult) == false)
  1646. {
  1647. return;
  1648. }
  1649. //提示消息
  1650. CTraceService::TraceString(TEXT("游戏房间创建成功"), TraceLevel_Normal);
  1651. }
  1652. //修改房间
  1653. if (GameServerCreate.wServerID != 0)
  1654. {
  1655. //修改房间
  1656. if (ServerInfoManager.ModifyGameServer(&GameServerCreate, GameServerResult) == false) return;
  1657. //提示消息
  1658. CTraceService::TraceString(TEXT("游戏房间配置成功"), TraceLevel_Normal);
  1659. }
  1660. //索引变量
  1661. m_ModuleInitParameter.GameServiceOption.wServerID = GameServerResult.wServerID;
  1662. //挂接属性
  1663. m_ModuleInitParameter.GameServiceOption.wKindID = GameServerResult.wKindID;
  1664. m_ModuleInitParameter.GameServiceOption.wNodeID = GameServerResult.wNodeID;
  1665. m_ModuleInitParameter.GameServiceOption.wSortID = GameServerResult.wSortID;
  1666. //税收配置
  1667. m_ModuleInitParameter.GameServiceOption.lCellScore = GameServerResult.lCellScore;
  1668. m_ModuleInitParameter.GameServiceOption.wRevenueRatio = m_ModuleInitParameter.GameServiceOption.wRevenueRatio;
  1669. m_ModuleInitParameter.GameServiceOption.lServiceScore = m_ModuleInitParameter.GameServiceOption.lServiceScore;
  1670. //限制配置
  1671. m_ModuleInitParameter.GameServiceOption.lRestrictScore = GameServerResult.lRestrictScore;
  1672. m_ModuleInitParameter.GameServiceOption.lMinTableScore = GameServerResult.lMinTableScore;
  1673. m_ModuleInitParameter.GameServiceOption.lMinEnterScore = GameServerResult.lMinEnterScore;
  1674. m_ModuleInitParameter.GameServiceOption.lMaxEnterScore = GameServerResult.lMaxEnterScore;
  1675. //会员限制
  1676. m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember = GameServerResult.cbMaxEnterMember;
  1677. m_ModuleInitParameter.GameServiceOption.cbMaxEnterMember = GameServerResult.cbMaxEnterMember;
  1678. //房间配置
  1679. m_ModuleInitParameter.GameServiceOption.dwServerRule = GameServerResult.dwServerRule;
  1680. m_ModuleInitParameter.GameServiceOption.dwAttachUserRight = GameServerResult.dwAttachUserRight;
  1681. //房间属性
  1682. m_ModuleInitParameter.GameServiceOption.wMaxPlayer = GameServerResult.wMaxPlayer;
  1683. m_ModuleInitParameter.GameServiceOption.wTableCount = GameServerResult.wTableCount;
  1684. m_ModuleInitParameter.GameServiceOption.wServerType = GameServerResult.wServerType;
  1685. m_ModuleInitParameter.GameServiceOption.wServerPort = GameServerResult.wServerPort;
  1686. lstrcpyn(m_ModuleInitParameter.GameServiceOption.szServerName, GameServerResult.szServerName, LEN_SERVER);
  1687. //分组属性
  1688. m_ModuleInitParameter.GameServiceOption.cbDistributeRule = GameServerResult.cbDistributeRule;
  1689. m_ModuleInitParameter.GameServiceOption.wMinDistributeUser = GameServerResult.wMinDistributeUser;
  1690. m_ModuleInitParameter.GameServiceOption.wDistributeTimeSpace = GameServerResult.wDistributeTimeSpace;
  1691. m_ModuleInitParameter.GameServiceOption.wDistributeDrawCount = GameServerResult.wDistributeDrawCount;
  1692. m_ModuleInitParameter.GameServiceOption.wMinPartakeGameUser = GameServerResult.wMinPartakeGameUser;
  1693. m_ModuleInitParameter.GameServiceOption.wMaxPartakeGameUser = GameServerResult.wMaxPartakeGameUser;
  1694. //扩展配置
  1695. UINT uCustomRuleSize = sizeof(m_ModuleInitParameter.GameServiceOption.cbCustomRule);
  1696. CopyMemory(m_ModuleInitParameter.GameServiceOption.cbCustomRule, GameServerResult.cbCustomRule, uCustomRuleSize);
  1697. ///---加载该游戏的场馆配置
  1698. std::vector<tagVenueInfo> vecVenueInfo;
  1699. CServerInfoManager svrInfoManager;
  1700. svrInfoManager.LoadVenueInfos(m_ModuleInitParameter.GameServiceAttrib.wKindID, vecVenueInfo);
  1701. m_ModuleInitParameter.vecVenueInfo = vecVenueInfo;
  1702. ///+++如果是金币场,使用场馆的最新配置
  1703. if (m_ModuleInitParameter.GameServiceOption.wNodeID > 0)
  1704. {
  1705. for (std::vector<tagVenueInfo>::iterator it = vecVenueInfo.begin(); it != vecVenueInfo.end(); it++)
  1706. {
  1707. if (it->wVenueID == m_ModuleInitParameter.GameServiceOption.wNodeID)
  1708. {
  1709. m_ModuleInitParameter.GameServiceOption.lCellScore = it->sBaseScore;
  1710. m_ModuleInitParameter.GameServiceOption.lMinEnterScore = it->sMinScore;
  1711. m_ModuleInitParameter.GameServiceOption.lMaxEnterScore = it->sMaxScore;
  1712. m_ModuleInitParameter.GameServiceOption.lRestrictScore = it->lRestrictScore;
  1713. m_ModuleInitParameter.GameServiceOption.lServiceScore = it->sServiceScore;
  1714. m_ModuleInitParameter.GameServiceOption.wRevenueRatio = it->wRevenueRatio;
  1715. lstrcpyn(m_ModuleInitParameter.GameServiceOption.szExtConfig, it->szExtConfig, CountArray(it->szExtConfig));
  1716. break;
  1717. }
  1718. }
  1719. }
  1720. //关闭窗口
  1721. EndDialog(IDOK);
  1722. return;
  1723. }
  1724. //////////////////////////////////////////////////////////////////////////////////
  1725. void CDlgServerOptionItem1::OnBnClickedRevenueRadio()
  1726. {
  1727. //
  1728. GetDlgItem(IDC_STATIC_REVENUE_SERVICE)->SetWindowText(TEXT("税收比例:"));
  1729. ((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->SetWindowText(TEXT(""));
  1730. ((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->LimitText(3);
  1731. }
  1732. void CDlgServerOptionItem1::OnBnClickedServiceRadio()
  1733. {
  1734. //
  1735. GetDlgItem(IDC_STATIC_REVENUE_SERVICE)->SetWindowText(TEXT("服务费数:"));
  1736. ((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->SetWindowText(TEXT(""));
  1737. ((CEdit *)GetDlgItem(IDC_SERVICE_REVENUE))->LimitText(9);
  1738. }