📄 fieldserver.cpp
字号:
#include "stdafx.h"
#include "Player.h"
#include <PacketStruct.h>
#include <Protocol.h>
#include <conio.h>
#include <iostream>
// Namespace util Header
#include <FunctionMap.h>
#include <IOCPserver.h>
#include "FieldServer.h"
// Handler Header
#include "BattleServerSession.h"
#include "GameDBProxySession.h"
#include "ServerSessionFactory.h"
#include "ServerSessionManager.h"
#include "GameZoneManager.h"
#include <ISolarConsole_Define.h>
#include <ISolarConsole.h>
#include "ServerOptionParser.h"
using namespace std;
using namespace util;
extern ISolarConsole * g_pIConsole;
FieldServer::FieldServer(void)
{
m_ServerKey.Set( 0, 0, FIELD_SERVER, 0 );
SetServerGUID( FIELD_SERVER );
}
FieldServer::~FieldServer(void)
{
}
VOID FieldServer::Release()
{
GameServer::Release();
// 肺弊
SAFE_DELETE(g_pLOG);
SAFE_DELETE(g_pSunLog);
// 霸烙肺弊
//_GAMELOGRELEASE
}
BOOL FieldServer::Init()
{
// INI 颇老 颇教
DISPMSG( "Parsing \"SUNServer.ini\"..." );
m_pFileParser = new CFileParser;
if( !m_pFileParser->ParseInitFile("SUNServer.ini") )
{
DISP_FAIL;
return FALSE;
}
DISP_OK;
SERVER_ENV* pServerEnv = m_pFileParser->GetServerEnv();
// 鞘靛辑滚 可记阑 肺靛茄促.
ServerOptionParser::Instance()->Load( "ServerOption.ini", pServerEnv->byFieldServerType );
if( !GameServer::Init() ) return FALSE;
//-------------------------------------------------------------------------------------------------
// 肺弊 颇老 沥焊 檬扁拳
//-------------------------------------------------------------------------------------------------
DISPMSG( "Creating GameLog File...\n" );
g_pLOG = new GameLog;
CreateDirectory(pServerEnv->pszLogPath, NULL);
TCHAR szPath[100], szTextPath[100];
strncpy( szPath, pServerEnv->pszLogPath, 100 );
strcat(szPath, "\\\\FIELD");
strncpy( szTextPath, pServerEnv->pszLogPath, 100 );
strcat(szTextPath, "\\\\FIELD_TEXT");
if( !g_pLOG->Init( _T(szPath), _T("SUN_FIELD"), _T(szTextPath) ) )
{
//GameLog甫 父甸瘤 臼嚼聪促.
}
DISP_OK;
g_pSunLog = new CSunLog;
if(g_pSunLog->Init(pServerEnv->bySunLogOption, pServerEnv->bySunLogfileLevel, pServerEnv->pszSunLogfilePath, "Field") == false)
{
//SunLog甫 父甸瘤 臼嚼聪促.
}
// Battle 辑滚 矫累 肺弊
SUNLOG( eFULL_LOG, "Field Server Start " );
return TRUE;
}
VOID FieldServer::Run()
{
SERVER_ENV * pServerEnv = m_pFileParser->GetServerEnv();
if(pServerEnv->bGetServerInfoFromFile)
{
ConnectTo( GAME_DBPROXY );
ConnectTo( GUILD_SERVER );
}
else
ConnectTo( MASTER_SERVER );
// 辑滚 矫累
while( 1 )
{
Sleep( 1 );
static DWORD lastUpdateTick = GetTickCount();
DWORD curTick = GetTickCount();
DWORD deltaTick = curTick - lastUpdateTick;
//if( deltaTick >= SERVER_UPDATE_TICK )
{
lastUpdateTick = curTick;
if( !g_pGameServer->Update( deltaTick ) ) break;
//printf( "Update Tick(%d)", GetTickCount() - curTick );
}
}
}
BOOL FieldServer::Update( DWORD dwDeltaTick )
{
if( IsOnShutdown() )
{
return FALSE;
}
// 能贾 贸府
if( ProcessConsole() == FALSE )
{
return FALSE; // 辑滚 辆丰
}
return GameServer::Update( dwDeltaTick );
}
// for debug
#include "Map.h"
#include "DropManager.h"
#include "Global.h"
BOOL FieldServer::ProcessConsole()
{
#ifndef _USING_SIMPLE_CONSOLE
return g_SUNConsole.Update();
#endif
if( kbhit() )
{
char ch = getch();
ch = (char)toupper(ch);
switch(ch)
{
case 0x1b:
return FALSE;
case 'P': DisplayPoolInfo(); break;
case ' ':
DisplayServerInfo();
break;
}
}
return TRUE;
}
eSERVER_TYPE FieldServer::GetServerType()
{
return FIELD_SERVER;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -