#pragma once #define __DECL_GAMEZONEPOOL(_ClassType) #define __IMPL_GAMEZONEPOOL(_ClassType) #define WzVector_FiniteCheck( _wzVectorPtr ) \ ( _finite((_wzVectorPtr)->x) && _finite((_wzVectorPtr)->y) && _finite((_wzVectorPtr)->z) ) class sPOLICY_ZONE { public: typedef DWORD POLICY_T; enum eFLAG { DISABLE_ALL = 0, ////////////////////////////////////////////////////////////////////////// //ENABLE_SECTOR_VAR_RESOLUTION = 1<< 0, // f110531.4L, set to default, Sector Variable Resolution Àû¿ë ¿©ºÎ //ENABLE_FIELD_HIGH_LOAD_BALANCING = 1<< 1, // f110531.4L, set to default, µ¿±âÈ­ ÆÐŶÀÌ ¸¹ÀÌ ¹ß»ýÇÏ´Â Çʵ忡 ´ëÇÑ ÆÐŶ ·Îµåº§·±½Ì ó¸® ¿©ºÎ ////////////////////////////////////////////////////////////////////////// ENABLE_TRIGGER = 1<< 3, // Æ®¸®°Å ó¸® Àû¿ë ¿©ºÎ ENABLE_SAVE_LOCATION = 1<< 4, // ÇØ´ç Çʵ忡¼­ÀÇ Ç÷¹À̾î À§Ä¡ ÀúÀå Àû¿ë ¿©ºÎ ENABLE_CHANGE_MOB_ABILITY = 1<< 5, // ÀÔÀå Ç÷¹ÀÌ¾î ¼ö¿¡ µû¸¥ ¸ó½ºÅÍ ´É·ÂÄ¡ Àç°è»ê Àû¿ë ¿©ºÎ ENABLE_SUPERROOM = 1<< 6, // SuperRoomÀ¸·Î ¼³Á¤µÈ... PC¹æÀÏ °æ¿ì ó¸® Àû¿ë ¿©ºÎ ENABLE_PARTY = 1<< 7, // ÆÄƼ °ü·Ã ó¸® Àû¿ë ¿©ºÎ #ifdef _NA_008012_20150130_RANKING_SYSTEM ENABLE_RANKING = 1<< 8, // RankingSystemCtl Àû¿ë ¿©ºÎ #endif // _NA_008012_20150130_RANKING_SYSTEM //ENABLE_NvN_SYNC = 1<< 9, // synchronization control flag based on room related to PvP, GvG, and NvN|added by (WAVERIX) (f100329.2L) ENABLE_ITEM_OBTAIN_ALL_PARTY_MEMBER = 1 << 10, // ÆÄƼ¿ø Àü¿øÀÌ ¾ÆÀÌÅÛÀ» ȹµæÇÏ´Â Áö¿ª - arycoat.2012.02.03 ////////////////////////////////////////////////////////////////////////// ENABLE_DOMINATION_CONTROL = 1<<19, // Áö¿ªÁ¡·ÉÀü ·ê ¼³Á¤ added by waverix ENABLE_NPC_UPDATE_REF_SKIP = 1<<20, // SectorÀÇ ReferenceCount¿¡ ÀÇÇÑ UpdateSkip ¹«½Ã ¿©ºÎ (ºÎÇÏ ¹«½Ã ¸øÇÑ´Ù. Ư¼öÇÑ °æ¿ì¿¡¸¸ »ç¿ë) ENABLE_SSQ_CONTROL = 1<<21, // Ÿ¶ôÇÑ »ç¿ø¸¸ÀÇ Æ¯¼ö ÄÁÆ®·Ñ ////////////////////////////////////////////////////////////////////////// ENABLE_GROUP_VILLAGE = ENABLE_TRIGGER | ENABLE_SAVE_LOCATION | ENABLE_PARTY , ENABLE_GROUP_HUNTING_FIELD = ENABLE_TRIGGER | ENABLE_PARTY , ENABLE_GROUP_ROOM_BASE // ÀÏ¹Ý Room »óÅ¿¡¼­ °øÅëÀûÀ¸·Î °¡Áö´Â ±â´É (°æ¿ì¿¡ µû¶ó ºüÁú ¼öµµ ÀÖ´Ù.), ·Îºñ´Â º°µµ ó¸® = ENABLE_TRIGGER | ENABLE_CHANGE_MOB_ABILITY | ENABLE_SUPERROOM #ifdef _NA_008012_20150130_RANKING_SYSTEM | ENABLE_RANKING #endif // _NA_008012_20150130_RANKING_SYSTEM | ENABLE_PARTY , #ifdef _NA_008069_20150210_ADD_SPA_SYSTEM ENABLE_GROUP_SPAFIELD = ENABLE_TRIGGER | ENABLE_SAVE_LOCATION | ENABLE_PARTY #endif //_NA_008069_20150210_ADD_SPA_SYSTEM ////////////////////////////////////////////////////////////////////////// }; public: const POLICY_T& FIELD; private: POLICY_T m_Field; // FIELD public: sPOLICY_ZONE() : FIELD(m_Field), m_Field( DISABLE_ALL ) {} inline VOID Clear() { m_Field = DISABLE_ALL; } inline VOID SetField( const POLICY_T flags ) { m_Field = (POLICY_T)flags; } inline POLICY_T GetField() const { return m_Field; } inline BOOLEAN IsChecked( const eFLAG flag ) const { return !!(m_Field & flag); } __DISABLE_COPY(sPOLICY_ZONE); }; //================================================================================================== struct IObjectFinder { virtual bool operator()(Object* object) const = 0; }; #if SUN_CODE_SAMPLE // Sample to use IObjectFinder /* void Sample_for_IObjectFinder_usage() { struct ObjectFinder : public IObjectFinder { ObjectFinder(DWORD item_key) : item_key_(item_key) {} virtual bool operator()(Object* object) const { if (object->GetObjectKey() == item_key_) { if (object->IsDeleteReserved()) { return false; } return true; } return false; } DWORD item_key_; } object_finder(dwFieldItemObjectKey); Item* pItem = pField->SearchNeighborItem(pPlayer->GetSectorIndex(), &object_finder); }; */ #endif //==================================================================================================