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

📄 gameserver.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#ifndef __GAME_SERVER_H__
#define __GAME_SERVER_H__

#pragma once

#define DISP_OK		DISPMSG( " [OK]\n" );
#define DISP_FAIL	DISPMSG( " Failed!\n" );



#include <Const.h>

#include <3DEngine/3DTerrain/3DTerrain.h>
#include <Library/CalcEngine/Numeric.h>
#include "FileParser.h"
#include <ObjKeyGenerator.h>
#include <Timer.h>

using namespace util;

class Player;
class IOCPServer;
class NetworkObject;
class PacketHandler;
class CFileParser;
class ServerSession;
class CSimpleModulus;

class GameServer
{
	enum { SERVER_IOHANDLER = 1, };
public:
	GameServer();
	virtual ~GameServer();

	VOID					UpdateServerTitle();
	virtual BOOL			Init();
	virtual VOID			Release();
	virtual VOID			Run() = 0;
	virtual BOOL			Update( DWORD dwDeltaTick );
	DWORD					ConnectToServer( NetworkObject * pNetworkObject, char * pszIP, WORD wPort );
	inline BOOL				IsOnShutdown() { return m_bShutdown; }
	inline VOID				Shutdown() { m_bShutdown = TRUE; }

	virtual eSERVER_TYPE	GetServerType() = 0;

	VOID					UpdateFPS();
	VOID					DisplayServerInfo();
	VOID					DisplayPoolInfo();
	VOID					MaintainConnection();

	FUNC_ContactTerrain		m_fnContactTerrain;
	FUNC_ContactNumerical   m_fnContactNumerical;

	CFileParser *			GetFileParser() { return m_pFileParser;	}
	VOID					StartListen();


	VOID					ConnectTo( eSERVER_TYPE eServerType );
	BOOL					IsConnectedTo( eSERVER_TYPE eServerType );

	BOOL					SendToGameDBPServer( MSG_BASE_FORWARD * pMsg, WORD wSize );
	BOOL					SendToGuildServer( MSG_BASE_FORWARD * pMsg, WORD wSize );
	VOID					SetServerAddr( eSERVER_TYPE eServerType, char *pszIP, WORD wPort );

	VOID					ReloadData();

	DWORD					GetServerGUID() { return m_dwServerGUID; }
	VOID					SetServerGUID( DWORD guid ) { m_dwServerGUID=guid; }

	inline SERVER_KEY		GetServerKey() { return m_ServerKey; }
	VOID					SetServerKey(SERVER_KEY serverKey) { m_ServerKey = serverKey; }

	inline VOID				ClearUserMoney() { m_ui64TotalUserMoney = 0; }
	inline VOID				ClearTotalPlus() { m_ui64TotalPlusMoney = 0; }
	inline VOID				ClearTotalMinus() { m_ui64TotalMinusMoney = 0; }
	inline VOID				PlusUserMoney( DWORD plusMoney )
	{
		if( m_ui64TotalUserMoney < 0xffffffffffffffff - plusMoney )
			m_ui64TotalUserMoney += (ULONGLONG)plusMoney;
	}
	inline VOID				MinusUserMoney( DWORD minusMoney )
	{
		if( m_ui64TotalUserMoney < minusMoney )
		{
			m_ui64TotalUserMoney = 0;
		}
		else
		{
			m_ui64TotalUserMoney -= (ULONGLONG)minusMoney;
		}
	}
	inline VOID				PlusTotalPlus( DWORD plusMoney )
	{
		if( m_ui64TotalPlusMoney < 0xffffffffffffffff - plusMoney )
			m_ui64TotalPlusMoney += (ULONGLONG)plusMoney;
	}
	inline VOID				MinusTotalMinus( DWORD minusMoney )
	{
		if( m_ui64TotalMinusMoney < 0xffffffffffffffff - minusMoney )
			m_ui64TotalMinusMoney += (ULONGLONG)minusMoney;
	}

	inline ULONGLONG		GetTotalUserMoney() { return m_ui64TotalUserMoney; }
	inline ULONGLONG		GetTotalPlusMoney() { return m_ui64TotalPlusMoney; }
	inline ULONGLONG		GetTotalMinusMoney() { return m_ui64TotalMinusMoney; }

protected:
	BOOL					m_bShutdown;
	IOCPServer	*			m_pIOCPServer;
	PacketHandler *			m_pNetworkPacket;

	HINSTANCE				m_hDll3DTerrain;			// 3D浚柳评狼 瘤屈浚柳
	HINSTANCE				m_hDllNumerical;			// 3D浚柳评狼 荐摹浚柳
	CFileParser *			m_pFileParser;
	DWORD					m_dwFPS;
	SERVER_KEY				m_ServerKey;

private:
	ServerSession			*m_pMasterServerSession;
	ServerSession			*m_pGameDBProxySession;
	ServerSession			*m_pAgentServerSession;
	ServerSession			*m_pGuildServerSession;
	util::Timer				m_ReconnectTimer;
	DWORD					m_dwServerGUID;
	ULONGLONG				m_ui64TotalUserMoney;	// 荤侩磊 焊蜡 陛咀 烹拌
	ULONGLONG				m_ui64TotalPlusMoney;	// 积己 陛咀 烹拌
	ULONGLONG				m_ui64TotalMinusMoney;	// 家戈 陛咀 烹拌
};

extern GameServer * g_pGameServer;
extern CSimpleModulus *g_pEncryptor;
extern CSimpleModulus *g_pDecryptor;

#endif	// __GAME_SERVER_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -