582 lines
14 KiB
C++
582 lines
14 KiB
C++
|
|
#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;
|
|||
|
|
}
|
|||
|
|
|