|
-
- // GameServerDlg.cpp : 实现文件
- //
-
- #include "stdafx.h"
- #include "GameServer.h"
- #include "GameServerDlg.h"
- #include "afxdialogex.h"
- #include "..\..\..\Games\Normal\松滋晃晃血流\消息定义\CMD_Sparrow.h"
- #include "BaiDuMap.h"
- #include "StatisticalUser.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
-
- //消息定义
- #define WM_PROCESS_CMD_LINE (WM_USER+100) //处理命令
- #define WM_MY_CMD_LINE (WM_USER+101) //更新数据
- #define WM_MYMSG (WM_USER+110) //禁止加入房间与禁止分配
- #define WM_MYMSGACK (WM_USER+111) //禁止加入房间与禁止分配的结果回复
- // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
-
- class CAboutDlg : public CDialogEx
- {
- public:
- CAboutDlg();
-
- // 对话框数据
- enum { IDD = IDD_ABOUTBOX };
-
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
-
- // 实现
- protected:
- DECLARE_MESSAGE_MAP()
- };
-
- CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
- {
- }
-
- void CAboutDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- }
-
- BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
- END_MESSAGE_MAP()
-
-
- // CGameServerDlg 对话框
- STARTP CGameServerDlg::g_StartP;
- bool CGameServerDlg::g_bGameLog = true;
-
- CGameServerDlg::CGameServerDlg(CWnd* pParent /*=NULL*/)
- : CDialogEx(CGameServerDlg::IDD, pParent)
- {
- ZeroMemory(&m_Data, sizeof(m_Data));
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- iRenWuID = 0;
- }
-
- void CGameServerDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_TRACE_MESSAGE, m_TraceServiceControl);
- DDX_Control(pDX, IDC_COMBO1, mListBox);
- DDX_Control(pDX, IDC_GAME_NAME2, a1);
- DDX_Control(pDX, IDC_SERVER_PORT2, a2);
- DDX_Control(pDX, IDC_GAME_NAME3, b1);
- DDX_Control(pDX, IDC_SERVER_PORT3, b2);
- DDX_Control(pDX, IDC_GAME_NAME4, c1);
- DDX_Control(pDX, IDC_SERVER_PORT4, c2);
- DDX_Control(pDX, IDC_GAME_NAME5, d1);
- DDX_Control(pDX, IDC_SERVER_PORT5, d2);
- DDX_Control(pDX, IDC_GAME_NAME6, e1);
- DDX_Control(pDX, IDC_SERVER_PORT6, e2);
- DDX_Control(pDX, IDC_GAME_NAME7, f1);
- DDX_Control(pDX, IDC_SERVER_PORT7, f2);
- DDX_Control(pDX, IDC_GAME_NAME8, g1);
- DDX_Control(pDX, IDC_SERVER_PORT8, g2);
- DDX_Control(pDX, IDC_GAME_NAME9, h1);
- DDX_Control(pDX, IDC_SERVER_PORT9, h2);
- DDX_Control(pDX, IDC_GAME_NAME10, i1);
- DDX_Control(pDX, IDC_SERVER_PORT10, i2);
- DDX_Control(pDX, IDC_GAME_NAME11, j1);
- DDX_Control(pDX, IDC_GAME_NAME12, game1);
- DDX_Control(pDX, IDC_GAME_NAME13, game2);
- DDX_Control(pDX, IDC_GAME_NAME14, game3);
- DDX_Control(pDX, IDC_GAME_NAME15, game4);
- DDX_Control(pDX, IDC_GAME_NAME16, game5);
- DDX_Control(pDX, IDC_GAME_NAME17, game6);
- DDX_Control(pDX, IDC_GAME_NAME18, game7);
- DDX_Control(pDX, IDC_GAME_NAME19, game8);
-
-
- DDX_Control(pDX, IDC_COMBO2, j2);
- DDX_Control(pDX, IDC_COMBO3, j3);
- DDX_Control(pDX, IDC_EDIT1, j4);
- DDX_Control(pDX, IDC_EDIT2, j5);
- DDX_Control(pDX, IDC_EDIT3, j6);
- DDX_Control(pDX, IDC_EDIT4, j7);
- DDX_Control(pDX, IDC_LIST1, bbb);
- DDX_Control(pDX, IDC_LIST2, ccc); ///---桌子列表
- }
-
- BEGIN_MESSAGE_MAP(CGameServerDlg, CDialogEx)
- ON_WM_SYSCOMMAND()
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_WM_QUERYENDSESSION()
- ON_BN_CLICKED(IDC_START_SERVICE, &CGameServerDlg::OnBnClickedStartService)
- ON_BN_CLICKED(IDC_STOP_SERVICE, &CGameServerDlg::OnBnClickedStopService)
- ON_BN_CLICKED(IDC_OPEN_SERVER, &CGameServerDlg::OnBnClickedOpenServer)
- ON_BN_CLICKED(IDC_OPEN_MATCH, &CGameServerDlg::OnBnClickedOpenMatch)
- ON_BN_CLICKED(IDC_CREATE_SERVER, &CGameServerDlg::OnBnClickedCreateServer)
- ON_BN_CLICKED(IDC_OPTION_SERVER, &CGameServerDlg::OnBnClickedOptionServer)
- ON_BN_CLICKED(IDC_OPTION_MATCH, &CGameServerDlg::OnBnClickedOptionMatch)
- ON_MESSAGE(WM_PROCESS_CMD_LINE, &CGameServerDlg::OnMessageProcessCmdLine)
- ON_MESSAGE(WM_MY_CMD_LINE, &CGameServerDlg::OnMessageUpdata)
- ON_MESSAGE(WM_MYMSG, &CGameServerDlg::OnMessageStop)
- ON_WM_TIMER()
- ON_BN_CLICKED(IDC_BUTTON1, &CGameServerDlg::OnSendGongGaoButton1)
- ON_BN_CLICKED(IDC_BUTTON2, &CGameServerDlg::OnBnClickedButton2)
- ON_NOTIFY(BCN_HOTITEMCHANGE, IDC_CHECK2, &CGameServerDlg::OnBnHotItemChangeCheck2)
- ON_BN_CLICKED(IDC_CHECK2, &CGameServerDlg::OnBnClickedCheck2)
- ON_BN_CLICKED(IDC_CHECK3, &CGameServerDlg::OnBnClickedCheck3)
- ON_BN_CLICKED(IDC_BUTTON7, &CGameServerDlg::OnBnClickedButton7)
- ON_BN_CLICKED(IDC_BUTTON4, &CGameServerDlg::OnBnClickedButton4)
- ON_BN_CLICKED(IDC_CHECK4, &CGameServerDlg::OnBnClickedCheck4)
- ON_BN_CLICKED(IDC_BUTTON5, &CGameServerDlg::OnBnClickedButton5)
- ON_BN_CLICKED(IDC_BUTTON6, &CGameServerDlg::OnBnClickedButton6)
- ON_BN_CLICKED(IDC_BUTTON3, &CGameServerDlg::OnBnClickedButton3)
- ON_BN_CLICKED(IDC_BUTTON8, &CGameServerDlg::OnBnClickedButton8)
- ON_BN_CLICKED(IDC_CHECK5, &CGameServerDlg::OnBnClickedCheck5)
- ON_LBN_SELCHANGE(IDC_LIST2, &CGameServerDlg::OnLbnSelchangeList2)
- ON_BN_CLICKED(IDC_CHECK6, &CGameServerDlg::OnBnClickedCheck6)
- ON_BN_CLICKED(IDC_CHECK7, &CGameServerDlg::OnBnClickedCheck7)
- ON_BN_CLICKED(IDC_BUTTON9, &CGameServerDlg::OnBnClickedButton9)
- END_MESSAGE_MAP()
-
-
- // CGameServerDlg 消息处理程序
-
- BOOL CGameServerDlg::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
-
- //设置标题
- SetWindowText(TEXT("游戏服务器 -- [ 停止 ]"));
-
- // IDM_ABOUTBOX 必须在系统命令范围内。
- ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
- ASSERT(IDM_ABOUTBOX < 0xF000);
-
- CMenu* pSysMenu = GetSystemMenu(FALSE);
- if (pSysMenu != NULL)
- {
- BOOL bNameValid;
- CString strAboutMenu;
- bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
- ASSERT(bNameValid);
- if (!strAboutMenu.IsEmpty())
- {
- pSysMenu->AppendMenu(MF_SEPARATOR);
- pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
- }
- }
-
- // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- SetIcon(m_hIcon, TRUE); // 设置大图标
- SetIcon(m_hIcon, FALSE); // 设置小图标
-
- //设置组件
- m_ServiceUnits.SetServiceUnitsSink(this);
-
- mListBox.InsertString(0, _T("一级(红名服务器)"));
- mListBox.InsertString(1, _T("二级(默认服务器)"));
- mListBox.InsertString(2, _T("VIP一级"));
- mListBox.InsertString(3, _T("VIP二级"));
- mListBox.InsertString(4, _T("VIP三级"));
- mListBox.InsertString(5, _T("VIP四级"));
- mListBox.InsertString(6, _T("VIP五级"));
- mListBox.InsertString(7, _T("VIP六级"));
-
- j2.InsertString(0, _T("五秒循环一次"));
- j2.InsertString(1, _T("十秒循环一次"));
- j2.InsertString(2, _T("十五秒循环一次"));
- j2.InsertString(3, _T("二十秒循环一次"));
- j2.InsertString(4, _T("三十秒循环一次"));
- j2.InsertString(5, _T("一分钟循环一次"));
- j2.InsertString(6, _T("一小时循环一次"));
- j2.SetCurSel(0);
-
- j3.InsertString(0, _T("十五秒后"));
- j3.InsertString(1, _T("三十秒后"));
- j3.InsertString(2, _T("四十五秒后"));
- j3.InsertString(3, _T("六十秒后"));
- j3.InsertString(4, _T("一百二十秒后"));
- j3.InsertString(5, _T("一小时后"));
- j3.InsertString(6, _T("一天后"));
- j3.SetCurSel(0);
-
- CButton *pCheckbox = (CButton*)GetDlgItem(IDC_CHECK1);
- pCheckbox->SetCheck(true);
-
- pCheckbox = (CButton*)GetDlgItem(IDC_RADIO2);
- pCheckbox->SetCheck(true);
-
- ((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(true);
- ((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(true);
- ((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(true);
- ((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(true);
-
- LoadInitParameter();
-
- StatisticalUser::EnablePriv();
-
- //SetTimer(100, 1000, NULL);
- //命令处理
- LPCTSTR pszCmdLine = AfxGetApp()->m_lpCmdLine;
- if (pszCmdLine[0] != 0) PostMessage(WM_PROCESS_CMD_LINE, 0, (LPARAM)pszCmdLine);
-
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
-
- BOOL CGameServerDlg::UpData(TagUpData Data)
- {
- CGameServerDlg *pCGameServerDlg = (CGameServerDlg *)theApp.m_pMainWnd;
- pCGameServerDlg->m_Data = Data;
- if (pCGameServerDlg) pCGameServerDlg->PostMessage(WM_MY_CMD_LINE, 0, (LPARAM)&(pCGameServerDlg->m_Data));
- return TRUE;
- }
-
- void CGameServerDlg::OnSysCommand(UINT nID, LPARAM lParam)
- {
- if ((nID & 0xFFF0) == IDM_ABOUTBOX)
- {
- CAboutDlg dlgAbout;
- dlgAbout.DoModal();
- }
- else
- {
- CDialogEx::OnSysCommand(nID, lParam);
- }
- }
-
- // 如果向对话框添加最小化按钮,则需要下面的代码
- // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
- // 这将由框架自动完成。
-
- void CGameServerDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // 用于绘制的设备上下文
-
- SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
-
- // 使图标在工作区矩形中居中
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
-
- // 绘制图标
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialogEx::OnPaint();
- }
- }
-
- //当用户拖动最小化窗口时系统调用此函数取得光标
- //显示。
- HCURSOR CGameServerDlg::OnQueryDragIcon()
- {
- return static_cast<HCURSOR>(m_hIcon);
- }
-
-
- BOOL CGameServerDlg::OnQueryEndSession()
- {
- if (!CDialogEx::OnQueryEndSession())
- return FALSE;
-
- // TODO: 在此添加专用的查询结束会话代码
-
- return TRUE;
- }
-
-
- void CGameServerDlg::OnCancel()
- {
- //关闭询问
- if (m_ServiceUnits.GetServiceStatus() != ServiceStatus_Stop)
- {
- LPCTSTR pszQuestion = TEXT("游戏服务器正在运行中,您确实要关闭服务器吗?");
- if (AfxMessageBox(pszQuestion, MB_YESNO | MB_DEFBUTTON2 | MB_ICONQUESTION) != IDYES) return;
- }
-
- //停止服务
- StopService();
-
- __super::OnCancel();
- }
-
-
- void CGameServerDlg::OnOK()
- {
- return;
- }
-
-
- BOOL CGameServerDlg::PreTranslateMessage(MSG* pMsg)
- {
- //按键过滤
- if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE))
- {
- return TRUE;
- }
-
- return __super::PreTranslateMessage(pMsg);
- }
-
- //停止业务
- LRESULT CGameServerDlg::OnMessageStop(WPARAM wParam, LPARAM lParam)
- {
- WORD wTest = lParam;
- if (wTest != g_StartP.wServerID)
- {
- return 0;
- }
-
- iRenWuID = wParam;//任务ID
-
- //停止业务
- ((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(0);
- ((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(0);
- ((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(0);
-
- int iRet = 0;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_CJ, 0, &iRet, sizeof(int));
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_WORK, 0, &iRet, sizeof(int));
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_HUA_CREATE, 0, &iRet, sizeof(int));
-
- //启动定时器检测停止结果
- SetTimer(100, 10 * 1000, NULL);
- //强制关闭时间
- SetTimer(101, 30 * 60 * 1000, NULL);
- return 0L;
- }
-
- LRESULT CGameServerDlg::OnMessageUpdata(WPARAM wParam, LPARAM lParam)
- {
- CTime Now = CTime::GetCurrentTime();
-
- CString csTime = Now.Format(_T("%Y-%m-%d %H:%M:%S"));
- i2.SetWindowText(csTime); ///---上次上报
-
- CString csTest;
- csTest.Format(L"%d", m_Data.iTableCount);
- a1.SetWindowText(csTest);
- csTest.Format(L"%d", m_Data.iPlayingTableCount);
- a2.SetWindowText(csTest);
-
- csTest.Format(L"%d", m_Data.iFreeTableCount);
- b1.SetWindowText(csTest);
- csTest.Format(L"%d", m_Data.iDownTableCount);
- b2.SetWindowText(csTest);
-
- csTest.Format(L"%d", m_Data.iLoginBody);
- c1.SetWindowText(csTest);
- csTest.Format(L"%d", m_Data.iDownBody);
- c2.SetWindowText(csTest);
-
- csTest.Format(L"%d", m_Data.iDaTingBody);
- d1.SetWindowText(csTest);
- csTest.Format(L"%d", m_Data.iLinkBody);
- d2.SetWindowText(csTest);
-
- csTest.Format(L"%d", m_Data.iSocketNum);
- e1.SetWindowText(csTest);
- csTest.Format(L"%d", m_Data.iErrQ);
- e2.SetWindowText(csTest);
-
- csTest.Format(L"%d", m_Data.iFreeCon);
- f1.SetWindowText(csTest);
- csTest.Format(L"%d", m_Data.iQNum);
- f2.SetWindowText(csTest);
-
- csTest.Format(L"%d/%d", m_Data.dLoginQ, m_Data.dLoginQOK);
- g1.SetWindowText(csTest);
- csTest.Format(L"%d/%d", m_Data.dChongZhi, m_Data.dChongZhiOK);
- g2.SetWindowText(csTest);
-
- csTest.Format(L"%d", m_Data.dCreateTable);
- h1.SetWindowText(csTest);
- csTest.Format(L"%d/%d", m_Data.dAddRoom, m_Data.dAddRoomChange);
- h2.SetWindowText(csTest);
-
- csTest.Format(L"%d", m_Data.dLoginDuanXianOK);
- j1.SetWindowText(csTest);
-
- ccc.ResetContent();
-
- for (int i = 0; i < m_Data.iTableCount; i++)
- {
- csTest.Format(L"%d", m_Data.PrivteTable[i]);
- ccc.InsertString(i, csTest);
- }
-
- return 0L;
- }
- LRESULT CGameServerDlg::OnMessageProcessCmdLine(WPARAM wParam, LPARAM lParam)
- {
- //变量定义
- CWHCommandLine CommandLine;
- LPCTSTR pszCommandLine = (LPCTSTR)(lParam);
-
- //房间标识
- TCHAR szSrverID[32] = TEXT("");
- if (CommandLine.SearchCommandItem(pszCommandLine, TEXT("/ServerID:"), szSrverID, CountArray(szSrverID)) == true)
- {
- //获取房间
- WORD wServerID = (WORD)(_tstol(szSrverID));
-
- //启动房间
- if (wServerID != 0)
- {
- //设置变量
- m_bAutoControl = true;
-
- //启动房间
- StartServerService(wServerID);
- }
- }
-
- return 0L;
- }
-
- VOID CGameServerDlg::OnServiceUnitsStatus(enServiceStatus ServiceStatus)
- {
- //状态设置
- switch (ServiceStatus)
- {
- case ServiceStatus_Stop: //停止状态
- {
- //更新标题
- UpdateServerTitle(ServiceStatus);
-
- //服务按钮
- GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(FALSE);
- GetDlgItem(IDC_START_SERVICE)->EnableWindow(TRUE);
-
- //配置按钮
- GetDlgItem(IDC_OPEN_MATCH)->EnableWindow(TRUE);
- GetDlgItem(IDC_OPEN_SERVER)->EnableWindow(TRUE);
- GetDlgItem(IDC_CREATE_SERVER)->EnableWindow(TRUE);
- GetDlgItem(IDC_OPTION_SERVER)->EnableWindow(TRUE);
- if ((m_ModuleInitParameter.GameServiceOption.wServerType&GAME_GENRE_MATCH) != 0)
- GetDlgItem(IDC_OPTION_MATCH)->EnableWindow(TRUE);
-
- //运行按钮
- GetDlgItem(IDC_RUN_PARAMETER)->EnableWindow(FALSE);
- GetDlgItem(IDC_SERVICE_CONTROL)->EnableWindow(FALSE);
-
- //提示信息
- LPCTSTR pszDescribe = TEXT("服务停止成功");
- CTraceService::TraceString(pszDescribe, TraceLevel_Normal);
-
- break;
- }
- case ServiceStatus_Config: //配置状态
- {
- //更新标题
- UpdateServerTitle(ServiceStatus);
-
- //设置按钮
- GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
- GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
-
- //配置按钮
- GetDlgItem(IDC_OPEN_MATCH)->EnableWindow(FALSE);
- GetDlgItem(IDC_OPEN_SERVER)->EnableWindow(FALSE);
- GetDlgItem(IDC_CREATE_SERVER)->EnableWindow(FALSE);
- GetDlgItem(IDC_OPTION_SERVER)->EnableWindow(FALSE);
- GetDlgItem(IDC_OPTION_MATCH)->EnableWindow(FALSE);
-
- //运行按钮
- GetDlgItem(IDC_RUN_PARAMETER)->EnableWindow(FALSE);
- GetDlgItem(IDC_SERVICE_CONTROL)->EnableWindow(FALSE);
-
- //提示信息
- LPCTSTR pszDescribe = TEXT("正在初始化组件...");
- CTraceService::TraceString(pszDescribe, TraceLevel_Normal);
-
- break;
- }
- case ServiceStatus_Service: //服务状态
- {
- //更新标题
- //UpdateServerTitle(ServiceStatus);
- TCHAR buf[100] = {0};
- GetCurrentDirectory(sizeof(buf), buf);
- HINSTANCE hInst = NULL;
- hInst = AfxGetApp()->m_hInstance;
- TCHAR path_buffer[_MAX_PATH] = {0};
- GetModuleFileName(hInst, path_buffer, sizeof(path_buffer));//得到exe文件的全路径
-
- CString csTest = L"";
- //csTest.Format(TEXT("游戏服务器V1.2 -- [ 运行 ] -- [服务器编号:%d]-- [ 启动路径:%s ]"), m_ServiceUnits.GetGameServiceOption()->wServerID, path_buffer);
- csTest.Format(TEXT("[ %s ] -- [ 运行 ] -- [服务器编号:%d]-- [ 启动路径:%s ]"), m_ServiceUnits.GetGameServiceOption()->szServerName, m_ServiceUnits.GetGameServiceOption()->wServerID, path_buffer);
- SetWindowText(csTest);
- //服务按钮
- GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
- GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
-
- //配置按钮
- GetDlgItem(IDC_OPEN_MATCH)->EnableWindow(FALSE);
- GetDlgItem(IDC_OPEN_SERVER)->EnableWindow(FALSE);
- GetDlgItem(IDC_CREATE_SERVER)->EnableWindow(FALSE);
- GetDlgItem(IDC_OPTION_SERVER)->EnableWindow(FALSE);
-
- //运行按钮
- GetDlgItem(IDC_RUN_PARAMETER)->EnableWindow(TRUE);
- GetDlgItem(IDC_SERVICE_CONTROL)->EnableWindow(TRUE);
-
- //提示信息
- LPCTSTR pszDescribe = TEXT("服务启动成功");
- CTraceService::TraceString(pszDescribe, TraceLevel_Normal);
-
- break;
- }
- }
-
- return;
- }
-
- VOID CGameServerDlg::UpdateServerLogo(LPCTSTR pszServerDLL)
- {
- //加载资源
- HINSTANCE hInstance = AfxLoadLibrary(pszServerDLL);
-
- //加载图形
- if (hInstance != NULL)
- {
- //设置资源
- AfxSetResourceHandle(hInstance);
-
- //设置资源
- CStatic * pServerLogo = (CStatic *)GetDlgItem(IDC_SERVER_LOGO);
- pServerLogo->SetIcon(::LoadIcon(hInstance, TEXT("SERVER_ICON")));
-
- //释放资源
- AfxFreeLibrary(hInstance);
- AfxSetResourceHandle(GetModuleHandle(NULL));
- }
-
- return;
- }
-
- VOID CGameServerDlg::UpdateServerTitle(enServiceStatus ServiceStatus)
- {
- //变量定义
- LPCTSTR pszStatusName = NULL;
- LPCTSTR pszServerName = NULL;
-
- //状态字符
- switch (ServiceStatus)
- {
- case ServiceStatus_Stop: //停止状态
- {
- pszStatusName = TEXT("停止");
- break;
- }
- case ServiceStatus_Config: //配置状态
- {
- pszStatusName = TEXT("初始化");
- break;
- }
- case ServiceStatus_Service: //运行状态
- {
- pszStatusName = TEXT("运行");
- break;
- }
- }
-
- //房间名字
- if (m_bOptionSuccess == false) pszServerName = TEXT("游戏服务器");
- else pszServerName = m_ModuleInitParameter.GameServiceOption.szServerName;
-
- //构造标题
- TCHAR szTitle[128] = TEXT("");
- _sntprintf(szTitle, CountArray(szTitle), TEXT("[ %s ] -- [ %s ]"), pszServerName, pszStatusName);
-
- //设置标题
- SetWindowText(szTitle);
-
- return;
- }
-
- VOID CGameServerDlg::UpdateParameterStatus(tagModuleInitParameter & ModuleInitParameter)
- {
- //设置变量
- m_bOptionSuccess = true;
- m_ModuleInitParameter = ModuleInitParameter;
-
- //更新标题
- UpdateServerTitle(ServiceStatus_Stop);
- UpdateServerLogo(ModuleInitParameter.GameServiceAttrib.szServerDLLName);
-
- //设置按钮
- GetDlgItem(IDC_START_SERVICE)->EnableWindow(TRUE);
- GetDlgItem(IDC_OPTION_SERVER)->EnableWindow(TRUE);
-
- //不是比赛就过滤
- if ((ModuleInitParameter.GameServiceOption.wServerType&GAME_GENRE_MATCH) != 0)
- {
- GetDlgItem(IDC_OPTION_MATCH)->EnableWindow(TRUE);
- }
- else
- {
- GetDlgItem(IDC_OPTION_MATCH)->EnableWindow(FALSE);
- }
-
- //设置控件
- SetDlgItemText(IDC_GAME_NAME, m_ModuleInitParameter.GameServiceAttrib.szGameName);
- SetDlgItemText(IDC_SERVER_NAME, m_ModuleInitParameter.GameServiceOption.szServerName);
-
- //监听端口
- if (m_ModuleInitParameter.GameServiceOption.wServerPort == 0)
- {
- SetDlgItemText(IDC_SERVER_PORT, TEXT("自动适配"));
- }
- else
- {
- SetDlgItemInt(IDC_SERVER_PORT, m_ModuleInitParameter.GameServiceOption.wServerPort);
- }
-
- //设置模块
- LPCTSTR pszServerDLLName = m_ModuleInitParameter.GameServiceAttrib.szServerDLLName;
- m_ServiceUnits.CollocateService(pszServerDLLName, m_ModuleInitParameter.GameServiceOption, m_ModuleInitParameter.vecVenueInfo);
-
- //构造提示
- TCHAR szString[256] = TEXT("");
- LPCTSTR pszServerName = m_ModuleInitParameter.GameServiceOption.szServerName;
- _sntprintf(szString, CountArray(szString), TEXT("[ %s ] 房间参数加载成功"), pszServerName);
-
- //输出信息
- CTraceService::TraceString(szString, TraceLevel_Normal);
-
- return;
- }
-
- bool CGameServerDlg::StartServerService(WORD wServerID)
- {
- //变量定义
- tagDataBaseParameter DataBaseParameter;
- ZeroMemory(&DataBaseParameter, sizeof(DataBaseParameter));
-
- //设置参数
- InitDataBaseParameter(DataBaseParameter);
- m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
-
- //读取配置
- CDlgServerItem DlgServerItem;
- if (DlgServerItem.OpenGameServer(wServerID) == false)
- {
- CTraceService::TraceString(TEXT("房间配置参数不存在或者加载失败"), TraceLevel_Exception);
- return false;
- }
-
- //更新状态
- UpdateParameterStatus(DlgServerItem.m_ModuleInitParameter);
-
- //启动服务
- try
- {
- m_ServiceUnits.StartService();
- }
- catch (...)
- {
- ASSERT(FALSE);
- }
-
- return true;
- }
-
- bool CGameServerDlg::InitDataBaseParameter(tagDataBaseParameter & DataBaseParameter)
- {
- //获取路径
- TCHAR szWorkDir[MAX_PATH] = TEXT("");
- CWHService::GetWorkDirectory(szWorkDir, CountArray(szWorkDir));
-
- //构造路径
- TCHAR szIniFile[MAX_PATH] = TEXT("");
- _sntprintf(szIniFile, CountArray(szIniFile), TEXT("%s\\ServerParameter.ini"), szWorkDir);
-
- //读取配置
- CWHIniData IniData;
- IniData.SetIniFilePath(szIniFile);
-
- //连接信息
- DataBaseParameter.wDataBasePort = (WORD)IniData.ReadInt(TEXT("PlatformDB"), TEXT("DBPort"), 1433);
- IniData.ReadEncryptString(TEXT("PlatformDB"), TEXT("DBAddr"), NULL, DataBaseParameter.szDataBaseAddr, CountArray(DataBaseParameter.szDataBaseAddr));
- IniData.ReadEncryptString(TEXT("PlatformDB"), TEXT("DBUser"), NULL, DataBaseParameter.szDataBaseUser, CountArray(DataBaseParameter.szDataBaseUser));
- IniData.ReadEncryptString(TEXT("PlatformDB"), TEXT("DBPass"), NULL, DataBaseParameter.szDataBasePass, CountArray(DataBaseParameter.szDataBasePass));
- IniData.ReadEncryptString(TEXT("PlatformDB"), TEXT("DBName"), szPlatformDB, DataBaseParameter.szDataBaseName, CountArray(DataBaseParameter.szDataBaseName));
-
- CString m_HttpPath;
- //读取字符
- DWORD dwReadCount = GetPrivateProfileString(TEXT("HTTP"), TEXT("PATH"), NULL, CServiceUnits::g_pServiceUnits->m_InitParameter.m_HttpPath, 512, szIniFile);
- //读取字符
- DWORD dwReadCount2 = GetPrivateProfileString(TEXT("HTTP2"), TEXT("PATH2"), NULL, CServiceUnits::g_pServiceUnits->m_InitParameter.m_HttpPath2, 512, szIniFile);
- //读取字符
- DWORD dwReadCount3 = GetPrivateProfileString(TEXT("HTTP3"), TEXT("PATH3"), NULL, CServiceUnits::g_pServiceUnits->m_InitParameter.m_HttpPath3, 512, szIniFile);
-
- DWORD dwReadCount4 = GetPrivateProfileString(TEXT("HTTP4"), TEXT("PATH4"), NULL, CServiceUnits::g_pServiceUnits->m_InitParameter.m_HttpPath4, 512, szIniFile);
-
- ///+++客户端最低要求版本号
- GetPrivateProfileString(TEXT("ClientVer"), TEXT("version"), L"1.0.0", CServiceUnits::g_pServiceUnits->m_InitParameter.m_szMinClientVer, 32, szIniFile);
-
- return true;
-
- }
-
-
- void CGameServerDlg::OnBnClickedStartService()
- {
- //启动服务
- try
- {
- int iRet = 0;
- CString csText;
- iRet = mListBox.GetCurSel();
- iRet++;
- csText.Format(L"%d", iRet);
-
- //获取路径
- TCHAR szWorkDir[MAX_PATH] = TEXT("");
- CWHService::GetWorkDirectory(szWorkDir, CountArray(szWorkDir));
-
- //构造路径
- TCHAR szIniFile[MAX_PATH] = TEXT("");
- _sntprintf(szIniFile, CountArray(szIniFile), TEXT("%s\\Parameter.ini"), szWorkDir);
-
- //保存
- BOOL bRet = WritePrivateProfileString(TEXT("Server"), TEXT("Level"), csText, szIniFile);
-
- m_ServiceUnits.m_InitParameter.m_ServiceLevel = iRet;
-
- m_StartTime = CTime::GetCurrentTime();
- SetTimer(1, 30000, NULL);
-
- //启用共享内存
- HANDLE m_hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, _T("GAMESERVERINFOG__"));
- if (m_hMapFile)
- {
- //显示共享的文件数据。
- LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
-
- HINSTANCE hInst = NULL;
- hInst = AfxGetApp()->m_hInstance;
- TCHAR path_buffer[_MAX_PATH] = { 0 };
- GetModuleFileName(hInst, path_buffer, sizeof(path_buffer));//得到exe文件的全路径
-
- GAMESERVERINFOALL *pBuffer = (GAMESERVERINFOALL *)lpMapAddr;
-
- //检测当前节点是否存在
- if (pBuffer->iNum > 20)
- {
- CTraceService::TraceString(TEXT("共享内存数据数据混乱"), TraceLevel_Warning);
- goto look;
- }
-
- //查找节点是否已经存在
- for (int i = 0; i < pBuffer->iNum; i++)
- {
- if (pBuffer->Data[i].dServerID == g_StartP.wServerID)
- {
- StringCchCopy(pBuffer->Data[i].szPath, 256, path_buffer);
- pBuffer->Data[i].iStat = 1;
- pBuffer->Data[i].Pid = GetCurrentProcessId();
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- goto look;
- }
- }
-
- (pBuffer->iNum)++;
- pBuffer->Data[pBuffer->iNum - 1].dServerID = g_StartP.wServerID;
- StringCchCopy(pBuffer->Data[pBuffer->iNum - 1].szPath, 256, path_buffer);
- pBuffer->Data[pBuffer->iNum - 1].iStat = 1;
- pBuffer->Data[pBuffer->iNum - 1].Pid = GetCurrentProcessId();
-
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- }
- else
- {
- //创建共享文件。
- m_hMapFile = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL,
- PAGE_READWRITE, 0, 0x10000, _T("GAMESERVERINFOG__"));
-
- //拷贝数据到共享文件里。
- LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
-
- HINSTANCE hInst = NULL;
- hInst = AfxGetApp()->m_hInstance;
- TCHAR path_buffer[_MAX_PATH] = { 0 };
- GetModuleFileName(hInst, path_buffer, sizeof(path_buffer));//得到exe文件的全路径
-
- GAMESERVERINFOALL Buffer;
- ZeroMemory(&Buffer, sizeof(GAMESERVERINFOALL));
- Buffer.iNum++;
- Buffer.Data[Buffer.iNum - 1].dServerID = g_StartP.wServerID;
- StringCchCopy(Buffer.Data[Buffer.iNum - 1].szPath, 256, path_buffer);
- Buffer.Data[Buffer.iNum - 1].iStat = 1;
- Buffer.Data[Buffer.iNum - 1].Pid = GetCurrentProcessId();
- StringCchCopy(Buffer.szCtrl, 256, g_StartP.szCeLv);
-
- memcpy(lpMapAddr, &Buffer, sizeof(GAMESERVERINFOALL));
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- }
- look:
- m_ServiceUnits.StartService();
- }
- catch (...)
- {
- ASSERT(FALSE);
- }
-
- return;
- }
-
-
- void CGameServerDlg::OnBnClickedStopService()
- {
- int iRet = MessageBox(L"确定关闭吗?", L"真的确定关闭我吗", MB_YESNO);
-
- if (IDYES != iRet)
- {
- return;
- }
-
- //停止服务
- try
- {
- StopService();
- }
- catch (...)
- {
- ASSERT(FALSE);
- }
-
- return;
- }
-
-
- void CGameServerDlg::OnBnClickedOpenServer()
- {
- //变量定义
- tagDataBaseParameter DataBaseParameter;
- ZeroMemory(&DataBaseParameter, sizeof(DataBaseParameter));
-
- //设置参数
- InitDataBaseParameter(DataBaseParameter);
- m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
-
- //配置房间
- CDlgServerItem DlgServerItem;
- DlgServerItem.g_StartP = g_StartP; //启动参数
- if (DlgServerItem.OpenGameServer() == false) return;
-
- //更新状态
- UpdateParameterStatus(DlgServerItem.m_ModuleInitParameter);
-
- return;
- }
-
-
- void CGameServerDlg::OnBnClickedOpenMatch()
- {
- // TODO: 在此添加控件通知处理程序代码
- }
-
-
- void CGameServerDlg::OnBnClickedCreateServer()
- {
- //变量定义
- tagDataBaseParameter DataBaseParameter;
- ZeroMemory(&DataBaseParameter, sizeof(DataBaseParameter));
-
- //设置参数
- InitDataBaseParameter(DataBaseParameter);
- m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
-
- //创建房间
- CDlgServerWizard DlgServerWizard;
- if (DlgServerWizard.CreateGameServer() == false) return;
-
- //更新状态
- UpdateParameterStatus(DlgServerWizard.m_ModuleInitParameter);
-
- return;
- }
-
-
- void CGameServerDlg::OnBnClickedOptionServer()
- {
- //游戏模块
- CGameServiceManagerHelper GameServiceManager;
- GameServiceManager.SetModuleCreateInfo(m_ModuleInitParameter.GameServiceAttrib.szServerDLLName, GAME_SERVICE_CREATE_NAME);
-
- //加载模块
- if (GameServiceManager.CreateInstance() == false)
- {
- AfxMessageBox(TEXT("服务组件不存在或者加载失败,配置房间失败"), MB_ICONERROR);
- return;
- }
-
- //配置房间
- CDlgServerWizard DlgServerWizard;
- DlgServerWizard.SetWizardParameter(GameServiceManager.GetInterface(), &m_ModuleInitParameter.GameServiceOption);
-
- //创建房间
- if (DlgServerWizard.CreateGameServer() == false) return;
-
- //更新状态
- UpdateParameterStatus(DlgServerWizard.m_ModuleInitParameter);
-
- return;
- }
-
-
- void CGameServerDlg::OnBnClickedOptionMatch()
- {
- //不是比赛就过滤
- if ((m_ModuleInitParameter.GameServiceOption.wServerType&GAME_GENRE_MATCH) == 0) return;
-
- //变量定义
- tagDataBaseParameter DataBaseParameter;
- ZeroMemory(&DataBaseParameter, sizeof(DataBaseParameter));
-
- //设置参数
- InitDataBaseParameter(DataBaseParameter);
- m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
-
- //配置房间
- CDlgServerMatch DlgServerMatch;
- if (DlgServerMatch.OpenGameMatch(m_ModuleInitParameter.GameServiceAttrib.wKindID) == false) return;
-
- //拷贝数据
- CopyMemory(&m_ModuleInitParameter.GameMatchOption, &DlgServerMatch.m_GameMatchOption, sizeof(m_ModuleInitParameter.GameMatchOption));
-
- //配置游戏
- m_ServiceUnits.CollocateService(m_ModuleInitParameter.GameMatchOption, m_ModuleInitParameter.vecVenueInfo);
-
- //输出信息
- CTraceService::TraceString(TEXT("比赛配置加载成功"), TraceLevel_Normal);
-
- }
-
- //加载配置
- VOID CGameServerDlg::LoadInitParameter()
- {
- //获取路径
- TCHAR szWorkDir[MAX_PATH] = TEXT("");
- CWHService::GetWorkDirectory(szWorkDir, CountArray(szWorkDir));
-
- //构造路径
- TCHAR szIniFile[MAX_PATH] = TEXT("");
- _sntprintf(szIniFile, CountArray(szIniFile), TEXT("%s\\Parameter.ini"), szWorkDir);
-
- //读取配置
- CWHIniData IniData;
- IniData.SetIniFilePath(szIniFile);
-
- g_StartP.iLevel = IniData.ReadInt(TEXT("Server"), TEXT("Level"), 1);
- g_StartP.iAuto = IniData.ReadInt(TEXT("Server"), TEXT("Auto"), 0);
- g_StartP.wServerID = IniData.ReadInt(TEXT("Server"), TEXT("ServerID"), 0);
- CGameServerDlg::g_bGameLog = IniData.ReadInt(TEXT("Gamelog"), TEXT("ServerID"), 1);
-
- IniData.ReadString(TEXT("SYS"), TEXT("守护进程"), TEXT(""), g_StartP.szShouHu, CountArray(g_StartP.szShouHu));
- IniData.ReadString(TEXT("SYS"), TEXT("策略获取地址"), TEXT(""), g_StartP.szCeLv, CountArray(g_StartP.szCeLv));
-
- switch (g_StartP.iLevel)
- {
- case 1:
- mListBox.SetCurSel(0);
- break;
- case 2:
- mListBox.SetCurSel(1);
- break;
- case 3:
- mListBox.SetCurSel(2);
- break;
- case 4:
- mListBox.SetCurSel(3);
- break;
- case 5:
- mListBox.SetCurSel(4);
- break;
- case 6:
- mListBox.SetCurSel(5);
- break;
- case 7:
- mListBox.SetCurSel(6);
- break;
- case 8:
- mListBox.SetCurSel(7);
- break;
- default:
- break;
- }
-
- ((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(g_StartP.iAuto);
-
- if (g_StartP.iAuto == 1) SetTimer(2, 3000, NULL); //自动化调用
- return;
- }
-
- void CGameServerDlg::OnTimer(UINT_PTR nIDEvent)
- {
- // TODO: 在此添加消息处理程序代码和/或调用默认值
- if (nIDEvent == 1)
- {
- CTime End = CTime::GetCurrentTime();
- CTimeSpan csTest = End - m_StartTime;
-
- CString csTime = m_StartTime.Format(_T("%Y-%m-%d %H:%M:%S"));
- CString csTime1 = End.Format(_T("%Y-%m-%d %H:%M:%S"));
-
- int a, b, c,d;
- a = csTest.GetHours();
- b = csTest.GetMinutes();
- c = csTest.GetSeconds();
- d = csTest.GetTotalHours() / 24;
- CString cs;
- cs.Format(L"%ld天 %2ld:%2ld:%2ld", d, a, b, c);
- i1.SetWindowText(cs);
- }
- else if (nIDEvent == 2)
- {
- KillTimer(nIDEvent);
- CGameServerDlg::OnBnClickedOpenServer();
-
- if (g_StartP.iAuto == 1
- && g_StartP.iErr == 0)
- {
- OnBnClickedStartService();
- }
- else
- {
- if (g_StartP.iAuto == 1
- && g_StartP.iErr == -2)
- {
- CTraceService::TraceString(TEXT("未找指定节点的服务器信息"), TraceLevel_Warning);
- }
- }
- }
- else if (nIDEvent == 100)
- {
- if (m_Data.iPlayingTableCount == 0)
- {
- KillTimer(nIDEvent);
- //检测人数是否已经退出,若都退出则关闭。
- DWORD dwProcessID = NULL;
- if (!StatisticalUser::GetTokenByName(dwProcessID, g_StartP.szShouHu))
- {
- CTraceService::TraceString(TEXT("未找守护进程,无法回报信息。"), TraceLevel_Warning);
- return;
- }
-
- CList<HWND> mList;
-
- if (!StatisticalUser::GetWindowHwndByPid(dwProcessID, mList))
- {
- CTraceService::TraceString(TEXT("未找守护进程对应的窗口,无法回报信息。"), TraceLevel_Warning);
- return;
- }
-
- StopService();
- Sleep(100);
-
- CString csTest;
- csTest.Format(L"守护进程包含 %d 个窗口,任务ID:%d,实例ID:%d", mList.GetCount(), iRenWuID, g_StartP.wServerID);
- CTraceService::TraceString(csTest, TraceLevel_Normal);
-
- //发送信息
- POSITION pos = mList.GetTailPosition();
- CString data;
- while (pos != NULL)
- {
- HWND hHandle = mList.GetNext(pos);
- DWORD dRet = ::SendMessage(hHandle, WM_MYMSGACK, iRenWuID, g_StartP.wServerID);
-
- DWORD dLastID = GetLastError();
-
- CString csTest;
- csTest.Format(L"发送消息返回:%d,LastID:%d", dRet, dLastID);
- CTraceService::TraceString(csTest, TraceLevel_Normal);
- }
- }
- }
- else if (nIDEvent == 101)
- {
- KillTimer(nIDEvent);
- //30分钟后,强制关闭
- DWORD dwProcessID = NULL;
- if (!StatisticalUser::GetTokenByName(dwProcessID, g_StartP.szShouHu))
- {
- CTraceService::TraceString(TEXT("未找守护进程,无法回报信息。"), TraceLevel_Warning);
- return;
- }
-
- CList<HWND> mList;
-
- if (!StatisticalUser::GetWindowHwndByPid(dwProcessID, mList))
- {
- CTraceService::TraceString(TEXT("未找守护进程对应的窗口,无法回报信息。"), TraceLevel_Warning);
- return;
- }
-
- StopService();
- Sleep(100);
-
- CString csTest;
- csTest.Format(L"守护进程包含 %d 个窗口,任务ID:%d,实例ID:%d", mList.GetCount(), iRenWuID, g_StartP.wServerID);
- CTraceService::TraceString(csTest, TraceLevel_Normal);
-
- //发送信息
- POSITION pos = mList.GetTailPosition();
- CString data;
- while (pos != NULL)
- {
- HWND hHandle = mList.GetNext(pos);
- ::SendMessage(hHandle, WM_MYMSGACK, iRenWuID, g_StartP.wServerID);
- }
- }
- __super::OnTimer(nIDEvent);
- }
-
-
- //发布全服公告
- void CGameServerDlg::OnSendGongGaoButton1()
- {
- // TODO: 在此添加控件通知处理程序代码
- CMD_GR_SendMessage SysMessage;
- ZeroMemory(&SysMessage, sizeof(SysMessage));
-
- CString csTest;
- j4.GetWindowText(csTest);
-
- if (csTest.GetLength() == 0 || csTest.GetLength() > 128)
- {
- MessageBox(L"发布信息长度不能为空,或大于128个字节。");
- return;
- }
- // TODO: 在此添加控件通知处理程序代码
- DWORD dwState = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
- if (BST_UNCHECKED == dwState)
- {
- SysMessage.cbLoop = FALSE;
- }
- else
- {
- SysMessage.cbLoop = TRUE;
- }
-
- dwState = ((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck();
- if (BST_UNCHECKED == dwState)
- {
- SysMessage.cbAllRoom = TRUE;
- }
- else
- {
- SysMessage.cbAllRoom = FALSE;
- }
-
- SysMessage.cbGame = TRUE;
- SysMessage.cbRoom = TRUE;
-
- //读取时间
- SYSTEMTIME systime;
- ZeroMemory(&systime, sizeof(systime));
-
- int iHouMiao = 15;
- int iHouXunHuan = j3.GetCurSel();
- switch (iHouXunHuan)
- {
- case 0:
- iHouMiao = 15;
- break;
- case 1:
- iHouMiao = 30;
- break;
- case 2:
- iHouMiao = 45;
- break;
- case 3:
- iHouMiao = 60;
- break;
- case 4:
- iHouMiao = 120;
- break;
- case 5:
- iHouMiao = 3600;
- break;
- case 6:
- iHouMiao = 3600 * 24;
- break;
- default:
- break;
- }
-
- int iMiao = 5;
- int iXunHuan = j2.GetCurSel();
- switch (iXunHuan)
- {
- case 0:
- iMiao = 5;
- break;
- case 1:
- iMiao = 10;
- break;
- case 2:
- iMiao = 15;
- break;
- case 3:
- iMiao = 20;
- break;
- case 4:
- iMiao = 30;
- break;
- case 5:
- iMiao = 60;
- break;
- case 6:
- iMiao = 3600;
- break;
- default:
- break;
- }
- int iEndXunHuan = j3.GetCurSel();
-
- CTime ConcludeTime(systime);
- SysMessage.tConcludeTime = ConcludeTime.GetTime() + 1000 * iHouMiao;
- SysMessage.dwTimeRate = 1000 * iMiao;
-
-
- StringCchCat(SysMessage.szSystemMessage, _countof(SysMessage.szSystemMessage), csTest/*.GetBuffer()*/);
-
- SysMessage.wChatLength = (_countof(SysMessage.szSystemMessage));
-
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_GG, 0, &SysMessage, sizeof(SysMessage));
- }
-
-
- void CGameServerDlg::OnBnClickedButton2()
- {
- // TODO: 在此添加控件通知处理程序代码
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_STOP_GG, NULL, 0, 0);
- }
-
-
- void CGameServerDlg::OnBnHotItemChangeCheck2(NMHDR *pNMHDR, LRESULT *pResult)
- {
- // 此功能要求 Internet Explorer 6 或更高版本。
- // 符号 _WIN32_IE 必须是 >= 0x0600。
- LPNMBCHOTITEM pHotItem = reinterpret_cast<LPNMBCHOTITEM>(pNMHDR);
- // TODO: 在此添加控件通知处理程序代码
- *pResult = 0;
- }
-
-
- void CGameServerDlg::OnBnClickedCheck2()
- {
- // TODO: 在此添加控件通知处理程序代码
- DWORD dwState = ((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
- if (BST_UNCHECKED == dwState)
- {
- int iRet = 0;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_CJ, 0, &iRet, sizeof(int));
- }
- else
- {
- int iRet = 1;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_CJ, 0, &iRet, sizeof(int));
- }
- }
-
-
- void CGameServerDlg::OnBnClickedCheck3()
- {
- // TODO: 在此添加控件通知处理程序代码
- DWORD dwState = ((CButton*)GetDlgItem(IDC_CHECK3))->GetCheck();
- if (BST_UNCHECKED == dwState)
- {
- int iRet = 0;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_JR, 0, &iRet, sizeof(int));
- }
- else
- {
- int iRet = 1;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_JR, 0, &iRet, sizeof(int));
- }
- }
-
- //强制解散空闲房间
- void CGameServerDlg::OnBnClickedButton7()
- {
- // TODO: 在此添加控件通知处理程序代码
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_JSFREEALL, 0, NULL, 0);
- }
-
-
- void CGameServerDlg::OnBnClickedButton4()
- {
- // TODO: 在此添加控件通知处理程序代码
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_JSGAMEALL, 0, NULL, 0);
- }
-
-
- void CGameServerDlg::OnBnClickedCheck4()
- {
- // TODO: 在此添加控件通知处理程序代码
- DWORD dwState = ((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck();
- if (BST_UNCHECKED == dwState)
- {
- int iRet = 0;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_WORK, 0, &iRet, sizeof(int));
- }
- else
- {
- int iRet = 1;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_WORK, 0, &iRet, sizeof(int));
- }
- }
- void CGameServerDlg::OnBnClickedCheck7()
- {
- // TODO: 在此添加控件通知处理程序代码
- DWORD dwState = ((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck();
- if (BST_UNCHECKED == dwState)
- {
- int iRet = 0;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_HUA_CREATE, 0, &iRet, sizeof(int));
- }
- else
- {
- int iRet = 1;
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_HUA_CREATE, 0, &iRet, sizeof(int));
- }
- }
-
-
- void CGameServerDlg::OnBnClickedButton5()
- {
- // TODO: 在此添加控件通知处理程序代码
- CString csRoomID;
- j5.GetWindowText(csRoomID);
-
- int iRet = _wtol(csRoomID/*.GetBuffer()*/);
- if (iRet> 999999 || iRet < 100000)
- {
- MessageBox(L"输入房间号不正确");
- return;
- }
-
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_JSROOM,0, &iRet, sizeof(int));
-
- }
-
-
- void CGameServerDlg::OnBnClickedButton6()
- {
- // TODO: 在此添加控件通知处理程序代码
- CString csUserID;
- j6.GetWindowText(csUserID);
-
- int iRet = _wtol(csUserID/*.GetBuffer()*/);
- if (iRet> 999999 || iRet < 100000)
- {
- MessageBox(L"输入UID不正确");
- return;
- }
- //csUserID.ReleaseBuffer();
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_SHUTDOWN_USER,0, &iRet, sizeof(int));
-
- }
-
-
- void CGameServerDlg::OnBnClickedButton3()
- {
- // TODO: 在此添加控件通知处理程序代码
- CString csTest;
- j7.GetWindowText(csTest);
-
- int iRet = _wtol(csTest/*.GetBuffer()*/);
- if (iRet<0)
- {
- MessageBox(L"输入UID不正确");
- return;
- }
- //csTest.ReleaseBuffer();
- int iNum = bbb.GetCount();
-
- if (iNum >20)
- {
- MessageBox(L"最多只能监测20个用户");
- return;
- }
-
- bbb.InsertString(iNum, csTest);
- }
-
-
- void CGameServerDlg::OnBnClickedButton8()
- {
- // TODO: 在此添加控件通知处理程序代码
- bbb.ResetContent();
- }
-
-
- void CGameServerDlg::OnBnClickedCheck5()
- {
- // TODO: 在此添加控件通知处理程序代码
- DWORD dwState = ((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck();
-
- DWORD dUserID[20];
- ZeroMemory(dUserID, sizeof(DWORD) * 20);
-
- if (BST_UNCHECKED == dwState)
- {
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_JC, 0, NULL, 0);
- }
- else
- {
- if (bbb.GetCount() == 0)
- {
- ((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(false);
- MessageBox(L"请添加监测ID");
- return;
- }
-
- for (int i = 0; i < bbb.GetCount(); i++)
- {
- CString csTest;
- bbb.GetText(i, csTest);
- int iRet = _wtol(csTest);
- dUserID[i] = iRet;
- }
-
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_JC, 0, dUserID, sizeof(DWORD) * 20);
- }
- }
-
-
- void CGameServerDlg::OnLbnSelchangeList2()
- {
- // TODO: 在此添加控件通知处理程序代码
- int nIndex = ccc.GetCurSel();
-
- if (nIndex != LB_ERR)
- {
- CString csTest = L"0";
-
- ccc.GetText(nIndex, csTest);
- int d = _wtol(csTest);
- (m_ServiceUnits.m_AttemperEngineSink.GetTCPNetworkEngine())->OnTBDataEvent(DBO_GR_GAME_FIND, 0, &d, sizeof(int));
-
- }
- }
-
-
- void CGameServerDlg::OnBnClickedCheck6()
- {
- // TODO: 在此添加控件通知处理程序代码
- DWORD dwState = ((CButton*)GetDlgItem(IDC_CHECK6))->GetCheck();
-
- if (BST_UNCHECKED == dwState)
- {
- g_StartP.iAuto = 0;
-
- TCHAR szWorkDir[MAX_PATH] = TEXT("");
- CWHService::GetWorkDirectory(szWorkDir, CountArray(szWorkDir));
-
- //构造路径
- TCHAR szIniFile[MAX_PATH] = TEXT("");
- _sntprintf(szIniFile, CountArray(szIniFile), TEXT("%s\\Parameter.ini"), szWorkDir);
-
- //保存
- BOOL bRet = WritePrivateProfileString(TEXT("Server"), TEXT("Auto"), L"0", szIniFile);
- }
- else
- {
- g_StartP.iAuto = 1;
-
- TCHAR szWorkDir[MAX_PATH] = TEXT("");
- CWHService::GetWorkDirectory(szWorkDir, CountArray(szWorkDir));
-
- //构造路径
- TCHAR szIniFile[MAX_PATH] = TEXT("");
- _sntprintf(szIniFile, CountArray(szIniFile), TEXT("%s\\Parameter.ini"), szWorkDir);
-
- //保存
- BOOL bRet = WritePrivateProfileString(TEXT("Server"), TEXT("Auto"), L"1", szIniFile);
- }
- }
-
-
- int CGameServerDlg::StopService()
- {
- KillTimer(1);
- m_ServiceUnits.ConcludeService();
-
- //启用共享内存
- HANDLE m_hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, _T("GAMESERVERINFOG__"));
- if (m_hMapFile)
- {
- //显示共享的文件数据。
- LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
-
- HINSTANCE hInst = NULL;
- hInst = AfxGetApp()->m_hInstance;
- TCHAR path_buffer[_MAX_PATH] = { 0 };
- GetModuleFileName(hInst, path_buffer, sizeof(path_buffer));//得到exe文件的全路径
-
- GAMESERVERINFOALL *pBuffer = (GAMESERVERINFOALL *)lpMapAddr;
-
- //检测当前节点是否存在
- if (pBuffer->iNum > 20)
- {
- return -1;
- }
-
- //查找节点是否已经存在
- for (int i = 0; i < pBuffer->iNum; i++)
- {
- if (pBuffer->Data[i].dServerID == g_StartP.wServerID)
- {
- StringCchCopy(pBuffer->Data[i].szPath, 256, path_buffer);
- pBuffer->Data[i].iStat = -1;
- pBuffer->Data[i].Pid = 0;
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- }
- }
- }
-
- return 0;
- }
-
-
- void CGameServerDlg::OnBnClickedButton9()
- {
- // TODO: 在此添加控件通知处理程序代码
- HANDLE m_hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, _T("GAMESERVERINFOG__"));
- if (m_hMapFile)
- {
- //显示共享的文件数据。
- LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
-
- HINSTANCE hInst = NULL;
- hInst = AfxGetApp()->m_hInstance;
- TCHAR path_buffer[_MAX_PATH] = { 0 };
- GetModuleFileName(hInst, path_buffer, sizeof(path_buffer));//得到exe文件的全路径
-
- GAMESERVERINFOALL *pBuffer = (GAMESERVERINFOALL *)lpMapAddr;
-
- ZeroMemory(pBuffer, sizeof(GAMESERVERINFOALL));
-
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- }
- }
|