#pragma once //======================================================================================================================= /// FunctionalRestrictManager /** @author Kim Min Wook < taiyo@webzen.co.kr > @since 2006. 5. 7~ @purpose - °ÔÀÓ¼­¹öÀÇ ±â´ÉÀû Á¦ÇÑÀ» ÇÏ¿© ¹ö±×, ȤÀº ÇØÅ·À¸·Î ºÎÅÍ Á¶±â ´ëóÇϱâ À§ÇØ Á¦ÀÛ @history - ±âÁ¸ÀÇ eFUNCTIONALTYPE_ITEMÀ» eFUNCTIONALRESTRICT_TYPE·Î º¯°æ */ //======================================================================================================================= class FunctionalRestrictManager { public: FunctionalRestrictManager(void); ~FunctionalRestrictManager(void); // eFUNCTIONALRESTRICT_TYPE ±â´É Ãß°¡ VOID AddFunctionalRestrict( DWORD FunctionalBit ) { m_FunctionalType |= FunctionalBit; } // eFUNCTIONALRESTRICT_TYPE ±â´É Á¦°Å VOID RemoveFunctionalRestrict( DWORD FunctionalBit ) { m_FunctionalType &= ~FunctionalBit; } VOID SetRestrictFunction( DWORD bits ) { m_FunctionalType = bits; } bool IsPossibleFunction(eFUNCTIONALRESTRICT_TYPE type) const; bool IsRestrictFunction(eFUNCTIONALRESTRICT_TYPE type) const; DWORD GetRestrictFunction() const; private: DWORD m_FunctionalType; //< eFUNCTIONALTYPE_ITEMÀÇ ºñÆ®¿¬»êó¸® }; //================================================================================================== inline bool FunctionalRestrictManager::IsPossibleFunction(eFUNCTIONALRESTRICT_TYPE type) const { return (m_FunctionalType & type) == 0; } inline bool FunctionalRestrictManager::IsRestrictFunction(eFUNCTIONALRESTRICT_TYPE type) const { return (m_FunctionalType & type) != 0; } inline DWORD FunctionalRestrictManager::GetRestrictFunction() const { return m_FunctionalType; } //================================================================================================== extern FunctionalRestrictManager g_FunctionalRestrictMgr; //==================================================================================================