Files

582 lines
14 KiB
C++
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#include "Stdafx.h"
#include "Resource.h"
#include "GameServerDlg.h"
#include "ServerCtrlDlg.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
#define WM_PROCESS_CMD_LINE (WM_USER+100) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CGameServerDlg, CDialog)
//ϵͳ<CFB5><CDB3>Ϣ
ON_WM_QUERYENDSESSION()
ON_BN_CLICKED(IDC_OPEN_SERVER, OnBnClickedOpenServer)
ON_BN_CLICKED(IDC_STOP_SERVICE, OnBnClickedStopService)
ON_BN_CLICKED(IDC_START_SERVICE, OnBnClickedStartService)
ON_BN_CLICKED(IDC_CREATE_SERVER, OnBnClickedCreateServer)
ON_BN_CLICKED(IDC_OPTION_SERVER, OnBnClickedOptionServer)
ON_BN_CLICKED(IDC_OPTION_MATCH, OnBnClickedOptionMatch)
ON_BN_CLICKED(IDC_SERVICE_CONTROL, OnBnClickedServiceControl)
ON_BN_CLICKED(IDC_RUN_PARAMETER, OnBnClickedRunParameter)
//<2F>Զ<EFBFBD><D4B6><EFBFBD>Ϣ
ON_MESSAGE(WM_PROCESS_CMD_LINE,OnMessageProcessCmdLine)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGameServerDlg::CGameServerDlg() : CDialog(IDD_DLG_GAME_SERVER)
{
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
m_bAutoControl=false;
m_bOptionSuccess=false;
ZeroMemory(&m_ModuleInitParameter,sizeof(m_ModuleInitParameter));
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGameServerDlg::~CGameServerDlg()
{
}
//<2F>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>
VOID CGameServerDlg::DoDataExchange(CDataExchange * pDX)
{
__super::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TRACE_MESSAGE, m_TraceServiceControl);
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL CGameServerDlg::OnInitDialog()
{
__super::OnInitDialog();
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
SetWindowText(TEXT("<EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- [ ֹͣ ]"));
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
HICON hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
SetIcon(hIcon,TRUE);
SetIcon(hIcon,FALSE);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_ServiceUnits.SetServiceUnitsSink(this);
//<2F><><EFBFBD><EFBFBD><EEB4A6>
LPCTSTR pszCmdLine=AfxGetApp()->m_lpCmdLine;
if (pszCmdLine[0]!=0) PostMessage(WM_PROCESS_CMD_LINE,0,(LPARAM)pszCmdLine);
return TRUE;
}
//ȷ<><C8B7><EFBFBD><EFBFBD>Ϣ
VOID CGameServerDlg::OnOK()
{
return;
}
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CGameServerDlg::OnCancel()
{
//<2F>ر<EFBFBD>ѯ<EFBFBD><D1AF>
if (m_ServiceUnits.GetServiceStatus()!=ServiceStatus_Stop)
{
LPCTSTR pszQuestion=TEXT("<EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>ȷʵҪ<EFBFBD>رշ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
if (AfxMessageBox(pszQuestion,MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION)!=IDYES) return;
}
//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
m_ServiceUnits.ConcludeService();
__super::OnCancel();
}
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
BOOL CGameServerDlg::PreTranslateMessage(MSG * pMsg)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((pMsg->message==WM_KEYDOWN)&&(pMsg->wParam==VK_ESCAPE))
{
return TRUE;
}
return __super::PreTranslateMessage(pMsg);
}
//<2F><><EFBFBD><EFBFBD>״̬
VOID CGameServerDlg::OnServiceUnitsStatus(enServiceStatus ServiceStatus)
{
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
switch (ServiceStatus)
{
case ServiceStatus_Stop: //ֹͣ״̬
{
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
UpdateServerTitle(ServiceStatus);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť
GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(FALSE);
GetDlgItem(IDC_START_SERVICE)->EnableWindow(TRUE);
//<2F><><EFBFBD>ð<EFBFBD>ť
//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);
//<2F><><EFBFBD>а<EFBFBD>ť
//GetDlgItem(IDC_RUN_PARAMETER)->EnableWindow(FALSE);
//GetDlgItem(IDC_SERVICE_CONTROL)->EnableWindow(FALSE);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
LPCTSTR pszDescribe=TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD>ɹ<EFBFBD>");
CTraceService::TraceString(pszDescribe,TraceLevel_Normal);
break;
}
case ServiceStatus_Config: //<2F><><EFBFBD><EFBFBD>״̬
{
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
UpdateServerTitle(ServiceStatus);
//<2F><><EFBFBD>ð<EFBFBD>ť
GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
//<2F><><EFBFBD>ð<EFBFBD>ť
//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);
//<2F><><EFBFBD>а<EFBFBD>ť
//GetDlgItem(IDC_RUN_PARAMETER)->EnableWindow(FALSE);
//GetDlgItem(IDC_SERVICE_CONTROL)->EnableWindow(FALSE);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
LPCTSTR pszDescribe=TEXT("<EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
CTraceService::TraceString(pszDescribe,TraceLevel_Normal);
break;
}
case ServiceStatus_Service: //<2F><><EFBFBD><EFBFBD>״̬
{
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
UpdateServerTitle(ServiceStatus);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť
GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
//<2F><><EFBFBD>ð<EFBFBD>ť
//GetDlgItem(IDC_OPEN_MATCH)->EnableWindow(FALSE);
GetDlgItem(IDC_OPEN_SERVER)->EnableWindow(FALSE);
GetDlgItem(IDC_CREATE_SERVER)->EnableWindow(FALSE);
GetDlgItem(IDC_OPTION_SERVER)->EnableWindow(FALSE);
//<2F><><EFBFBD>а<EFBFBD>ť
//GetDlgItem(IDC_RUN_PARAMETER)->EnableWindow(TRUE);
//GetDlgItem(IDC_SERVICE_CONTROL)->EnableWindow(TRUE);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
LPCTSTR pszDescribe=TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>");
CTraceService::TraceString(pszDescribe,TraceLevel_Normal);
break;
}
}
return;
}
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
VOID CGameServerDlg::UpdateServerLogo(LPCTSTR pszServerDLL)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
HINSTANCE hInstance=AfxLoadLibrary(pszServerDLL);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
if (hInstance!=NULL)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
AfxSetResourceHandle(hInstance);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
CStatic * pServerLogo=(CStatic *)GetDlgItem(IDC_SERVER_LOGO);
pServerLogo->SetIcon(::LoadIcon(hInstance,TEXT("SERVER_ICON")));
//<2F>ͷ<EFBFBD><CDB7><EFBFBD>Դ
AfxFreeLibrary(hInstance);
AfxSetResourceHandle(GetModuleHandle(NULL));
}
return;
}
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
VOID CGameServerDlg::UpdateServerTitle(enServiceStatus ServiceStatus)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LPCTSTR pszStatusName=NULL;
LPCTSTR pszServerName=NULL;
//״̬<D7B4>ַ<EFBFBD>
switch (ServiceStatus)
{
case ServiceStatus_Stop: //ֹͣ״̬
{
pszStatusName=TEXT("ֹͣ");
break;
}
case ServiceStatus_Config: //<2F><><EFBFBD><EFBFBD>״̬
{
pszStatusName=TEXT("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>");
break;
}
case ServiceStatus_Service: //<2F><><EFBFBD><EFBFBD>״̬
{
pszStatusName=TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bOptionSuccess==false) pszServerName=TEXT("<EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
else pszServerName=m_ModuleInitParameter.GameServiceOption.szServerName;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCHAR szTitle[128]=TEXT("");
_sntprintf_s(szTitle,CountArray(szTitle),TEXT("[ %s ] -- [ %s ]"),pszServerName,pszStatusName);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
SetWindowText(szTitle);
return;
}
//<2F><><EFBFBD><EFBFBD>״̬
VOID CGameServerDlg::UpdateParameterStatus(tagModuleInitParameter & ModuleInitParameter)
{
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
m_bOptionSuccess=true;
m_ModuleInitParameter=ModuleInitParameter;
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
UpdateServerTitle(ServiceStatus_Stop);
UpdateServerLogo(ModuleInitParameter.GameServiceAttrib.szServerDLLName);
//<2F><><EFBFBD>ð<EFBFBD>ť
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);
}
//<2F><><EFBFBD>ÿؼ<C3BF>
SetDlgItemText(IDC_GAME_NAME,m_ModuleInitParameter.GameServiceAttrib.szGameName);
SetDlgItemText(IDC_SERVER_NAME,m_ModuleInitParameter.GameServiceOption.szServerName);
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
if (m_ModuleInitParameter.GameServiceOption.wServerPort==0)
{
SetDlgItemText(IDC_SERVER_PORT,TEXT("<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
}
else
{
SetDlgItemInt(IDC_SERVER_PORT,m_ModuleInitParameter.GameServiceOption.wServerPort);
}
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
LPCTSTR pszServerDLLName=m_ModuleInitParameter.GameServiceAttrib.szServerDLLName;
m_ServiceUnits.CollocateService(pszServerDLLName,m_ModuleInitParameter.GameServiceOption);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
TCHAR szString[256]=TEXT("");
LPCTSTR pszServerName=m_ModuleInitParameter.GameServiceOption.szServerName;
_sntprintf_s(szString,CountArray(szString),TEXT("[ %s ] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>سɹ<D8B3>"),pszServerName);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CTraceService::TraceString(szString,TraceLevel_Normal);
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CGameServerDlg::StartServerService(WORD wServerID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagDataBaseParameter DataBaseParameter;
ZeroMemory(&DataBaseParameter,sizeof(DataBaseParameter));
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
InitDataBaseParameter(DataBaseParameter);
m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
CDlgServerItem DlgServerItem;
if (DlgServerItem.OpenGameServer(wServerID)==false)
{
CTraceService::TraceString(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>"),TraceLevel_Exception);
return false;
}
//<2F><><EFBFBD><EFBFBD>״̬
UpdateParameterStatus(DlgServerItem.m_ModuleInitParameter);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
try
{
m_ServiceUnits.StartService();
}
catch (...)
{
ASSERT(FALSE);
}
return true;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
bool CGameServerDlg::InitDataBaseParameter(tagDataBaseParameter & DataBaseParameter)
{
//<2F><>ȡ·<C8A1><C2B7>
TCHAR szWorkDir[MAX_PATH]=TEXT("");
CWHService::GetWorkDirectory(szWorkDir,CountArray(szWorkDir));
//<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
TCHAR szIniFile[MAX_PATH]=TEXT("");
_sntprintf_s(szIniFile,CountArray(szIniFile),TEXT("%s\\ServerParameter.ini"),szWorkDir);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
CWHIniData IniData;
IniData.SetIniFilePath(szIniFile);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
DataBaseParameter.wDataBasePort=(WORD)IniData.ReadInt(TEXT("PlatformDB"),TEXT("DBPort"),1433);
IniData.ReadString(TEXT("PlatformDB"),TEXT("DBAddr"),NULL,DataBaseParameter.szDataBaseAddr,CountArray(DataBaseParameter.szDataBaseAddr));
IniData.ReadString(TEXT("PlatformDB"),TEXT("DBUser"),NULL,DataBaseParameter.szDataBaseUser,CountArray(DataBaseParameter.szDataBaseUser));
IniData.ReadString(TEXT("PlatformDB"),TEXT("DBPass"),NULL,DataBaseParameter.szDataBasePass,CountArray(DataBaseParameter.szDataBasePass));
IniData.ReadString(TEXT("PlatformDB"),TEXT("DBName"),szPlatformDB,DataBaseParameter.szDataBaseName,CountArray(DataBaseParameter.szDataBaseName));
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CGameServerDlg::OnBnClickedStartService()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
try
{
m_ServiceUnits.StartService();
}
catch (...)
{
ASSERT(FALSE);
}
return;
}
//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
VOID CGameServerDlg::OnBnClickedStopService()
{
//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
try
{
m_ServiceUnits.ConcludeService();
}
catch (...)
{
ASSERT(FALSE);
}
return;
}
//<2F>򿪷<EFBFBD><F2BFAAB7><EFBFBD>
VOID CGameServerDlg::OnBnClickedOpenServer()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagDataBaseParameter DataBaseParameter;
ZeroMemory(&DataBaseParameter,sizeof(DataBaseParameter));
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
InitDataBaseParameter(DataBaseParameter);
m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
CDlgServerItem DlgServerItem;
if (DlgServerItem.OpenGameServer()==false) return;
//<2F><><EFBFBD><EFBFBD>״̬
UpdateParameterStatus(DlgServerItem.m_ModuleInitParameter);
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CGameServerDlg::OnBnClickedCreateServer()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagDataBaseParameter DataBaseParameter;
ZeroMemory(&DataBaseParameter,sizeof(DataBaseParameter));
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
InitDataBaseParameter(DataBaseParameter);
m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDlgServerWizard DlgServerWizard;
if (DlgServerWizard.CreateGameServer()==false) return;
//<2F><><EFBFBD><EFBFBD>״̬
UpdateParameterStatus(DlgServerWizard.m_ModuleInitParameter);
return;
}
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
VOID CGameServerDlg::OnBnClickedOptionServer()
{
//<2F><>Ϸģ<CFB7><C4A3>
CGameServiceManagerHelper GameServiceManager;
GameServiceManager.SetModuleCreateInfo(m_ModuleInitParameter.GameServiceAttrib.szServerDLLName,GAME_SERVICE_CREATE_NAME);
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
if (GameServiceManager.CreateInstance()==false)
{
AfxMessageBox(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>"),MB_ICONERROR);
return;
}
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
CDlgServerWizard DlgServerWizard;
DlgServerWizard.SetWizardParameter(GameServiceManager.GetInterface(),&m_ModuleInitParameter.GameServiceOption);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (DlgServerWizard.CreateGameServer()==false) return;
//<2F><><EFBFBD><EFBFBD>״̬
UpdateParameterStatus(DlgServerWizard.m_ModuleInitParameter);
return;
}
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
VOID CGameServerDlg::OnBnClickedOptionMatch()
{
//<2F><><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD>
if((m_ModuleInitParameter.GameServiceOption.wServerType&GAME_GENRE_MATCH)==0) return;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagDataBaseParameter DataBaseParameter;
ZeroMemory(&DataBaseParameter,sizeof(DataBaseParameter));
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
InitDataBaseParameter(DataBaseParameter);
m_ModuleDBParameter.SetPlatformDBParameter(DataBaseParameter);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//CServerInfoManager ServerInfoManager;
//CMatchOptionBuffer m_MatchOptionBuffer; //ģ<><C4A3><EFBFBD><EFBFBD>Ϣ
//if (ServerInfoManager.LoadGameMatchOption(m_ModuleInitParameter.GameServiceAttrib.wKindID,m_MatchOptionBuffer)==true)
//{
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// tagGameMatchOption * pGameMatchOption=NULL;
// for(INT_PTR nIndex=0;nIndex<m_MatchOptionBuffer.m_GameMatchOptionArray.GetCount();nIndex++)
// {
// //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
// pGameMatchOption=m_MatchOptionBuffer.m_GameMatchOptionArray[nIndex];
// CopyMemory(&m_ModuleInitParameter.GameMatchOption,pGameMatchOption,sizeof(m_ModuleInitParameter.GameMatchOption));
// }
//}
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
CDlgServerMatch DlgServerMatch;
if (DlgServerMatch.OpenGameMatch(m_ModuleInitParameter.GameServiceAttrib.wKindID)==false) return;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CopyMemory(&m_ModuleInitParameter.GameMatchOption,&DlgServerMatch.m_GameMatchOption,sizeof(m_ModuleInitParameter.GameMatchOption));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
m_ServiceUnits.CollocateService(m_ModuleInitParameter.GameMatchOption);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CTraceService::TraceString(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD>سɹ<EFBFBD>"),TraceLevel_Normal);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
VOID CGameServerDlg::OnBnClickedServiceControl()
{
//m_ServiceUnits.MaintainService();
//CTraceService::TraceString(TEXT("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC>"), TraceLevel_Warning);
CServerCtrlDlg mDlg(this);
mDlg.DoModal();
}
//<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
VOID CGameServerDlg::OnBnClickedRunParameter()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
TCHAR szMachineID[LEN_MACHINE_ID];
CWHService::GetMachineID(szMachineID);
CTraceService::TraceString(szMachineID, TraceLevel_Exception);
}
//<2F>ر<EFBFBD>ѯ<EFBFBD><D1AF>
BOOL CGameServerDlg::OnQueryEndSession()
{
//<2F><>ʾ<EFBFBD><CABE>Ϣ
if (m_ServiceUnits.GetServiceStatus()!=ServiceStatus_Stop)
{
CTraceService::TraceString(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ϵͳҪ<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>"),TraceLevel_Warning);
return FALSE;
}
return TRUE;
}
//<2F><><EFBFBD><EFBFBD><EEB4A6>
LRESULT CGameServerDlg::OnMessageProcessCmdLine(WPARAM wParam, LPARAM lParam)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CWHCommandLine CommandLine;
LPCTSTR pszCommandLine=(LPCTSTR)(lParam);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
TCHAR szSrverID[32]=TEXT("");
if (CommandLine.SearchCommandItem(pszCommandLine,TEXT("/ServerID:"),szSrverID,CountArray(szSrverID))==true)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
WORD wServerID=(WORD)(_tstol(szSrverID));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (wServerID!=0)
{
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
m_bAutoControl=true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
StartServerService(wServerID);
}
}
return 0L;
}