systemavailabilitiesmanager.h

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C头文件 代码 · 共 102 行

H
102
字号
#ifndef __SYSTEM_AVAILABILITIES_MANAGER_H__#define __SYSTEM_AVAILABILITIES_MANAGER_H__#include <bitset>#include "Types.h"#include "Exception.h"#include "Gpackets/GCSystemAvailabilities.h"#ifdef __CHINA_SERVER__#define SYSTEM_ASSERT(KIND) SystemAvailabilitiesManager::AssertAvailable(SystemAvailabilitiesManager::KIND,\		string() + __PRETTY_FUNCTION__ + " : 肋给等 努扼捞攫飘甫 荤侩沁芭唱 努扼捞攫飘客 辑滚狼 沥焊啊 嘎瘤 臼嚼聪促.")#define SYSTEM_RETURN_IF_NOT(KIND) \		if ( !SystemAvailabilitiesManager::getInstance()->isAvailable(SystemAvailabilitiesManager::KIND) ) \		{ filelog( "SystemAvailabilities.log", \		(string() + __PRETTY_FUNCTION__ + " : 肋给等 努扼捞攫飘甫 荤侩沁芭唱 努扼捞攫飘客 辑滚狼 沥焊啊 嘎瘤 臼嚼聪促.").c_str() ); \		return; }#define SEND_SYSTEM_AVAILABILITIES(PLAYER) PLAYER->sendPacket( SystemAvailabilitiesManager::getInstance()->getAvailabilitiesPacket() )#else#define SYSTEM_ASSERT(X) (void)(0)#define SYSTEM_RETURN_IF_NOT(X) (void)(0)#define SEND_SYSTEM_AVAILABILITIES(X) (void)(0)#endifconst int OpenDegreeID = 999;const int SkillLimitID = 888;class SystemAvailabilitiesManager{public:	enum SystemKind	{		SYSTEM_PARTY,		SYSTEM_GAMBLE,		SYSTEM_RANK_BONUS,		SYSTEM_ENCHANT,		SYSTEM_GUILD,		SYSTEM_MASTER_LAIR,		SYSTEM_PK_ZONE,		SYSTEM_MARKET,		SYSTEM_GRAND_MASTER_EFFECT,		SYSTEM_COUPLE,		SYSTEM_HOLY_LAND_WAR,		SYSTEM_GUILD_WAR,		SYSTEM_RACE_WAR,		SYSTEM_FLAG_WAR,		SYSTEM_MAX	};	void load() throw(Error);	bool isAvailable( SystemKind kind ) const { return m_SystemFlags.test(kind); }	void setAvailable( SystemKind kind, bool avail = true ) {		m_SystemFlags.set(kind,avail);		m_bEdited = true;	}	Packet* getAvailabilitiesPacket() const	{		if ( m_bEdited ) 		{			if ( m_pAvailabilitiesPacket == NULL ) m_pAvailabilitiesPacket = new GCSystemAvailabilities();			m_pAvailabilitiesPacket->setFlag( (DWORD)m_SystemFlags.to_ulong() );			m_pAvailabilitiesPacket->setOpenDegree( m_ZoneOpenDegree );			m_pAvailabilitiesPacket->setSkillLimit( m_SkillLevelLimit );			m_bEdited = false;		}		return m_pAvailabilitiesPacket;	}	// 教臂沛捞寸	static SystemAvailabilitiesManager* getInstance()	{		static SystemAvailabilitiesManager theInstance;		return &theInstance;	}	static void AssertAvailable( SystemKind kind, const string& msg ) throw (DisconnectException)	{		if ( getInstance()->isAvailable( kind ) ) return;		filelog( "SystemAvailabilities.log", msg.c_str() );		throw DisconnectException( msg );	}	int getZoneOpenDegree() const { return m_ZoneOpenDegree; }	int getSkillLevelLimit() const { return m_SkillLevelLimit; }private:	bitset<SYSTEM_MAX>	m_SystemFlags;	mutable GCSystemAvailabilities* m_pAvailabilitiesPacket;	mutable bool m_bEdited;	int m_ZoneOpenDegree;	int m_SkillLevelLimit;	SystemAvailabilitiesManager() { m_SystemFlags.reset(); m_pAvailabilitiesPacket = NULL; m_bEdited = true; }};#endif// __SYSTEM_AVAILABILITIES_MANAGER_H__

⌨️ 快捷键说明

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