⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fieldserver.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -