#pragma once //======================================================================================================================= /// CollectionManager class /** @author Lee Su Tek @Memo */ //======================================================================================================================= #include #include "StructInPacket.h" class GameField; class CollectionStateInfo; struct CollectionInfo; typedef util::SolarHashTable ACTIVE_COLLECTION_HASH; typedef util::SolarHashTable::iterator ACTIVE_COLLECTION_HASH_IT; class CollectionManager { public: CollectionManager(GameField* pField); ~CollectionManager() {} void Release(); // äÁý °¡´É ÇѰ¡? // true ; äÁý°¡´É »óÅÂ. ( äÁý¹°ÀÎÁö ¿©ºÎ´Â ¾Ë¼ö¾øÀ½ ) // false; ´©±º°¡ äÁýÁßÀ̰ųª, ÀÌ¹Ì Ã¤ÁýµÇ¾úÀ» °æ¿ì. bool IsCollectable(DWORD Objkey) { return NULL == _FindStateInfo(Objkey) ? true : false; } // void Update(); //--------------------------------------------------------------------------------------------- RC::eCOLLECT_RESULT Collect( DWORD ObjKeyCollection, Player* pPlayer,WzVector& wvClientCurPos ); RC::eCOLLECT_RESULT Success( Player* pPlayer ); RC::eCOLLECT_RESULT GmCancel( WzID CollectionID ); RC::eCOLLECT_RESULT Cancel( Player* pPlayer ); RC::eCOLLECT_RESULT Cancel( CollectionStateInfo* pStateInfo ); RC::eCOLLECT_RESULT ChkCondision( Player* pPlayer, WzID CollectionID ); private: typedef std::pair PairIsStampReturnValue; // CHANGES: f110527.3L, memory usage optimization struct CollectionStateInfoManager; // RC::eITEM_RESULT _RewardItem( Player* pPlayer, CollectionInfo* pInfo, INVENTORY_TOTAL_INFO& OUT TotalInfo ); bool _Collect( Collection* pCollection, Player* pPlayer ); RC::eCOLLECT_RESULT _ChkDistance( Player* pPlayer, WzVector& wvClientCurPos, WzVector& wvCollectionPos ); void _Collected( CollectionStateInfo* pStateInfo ); void _Respawn( CollectionStateInfo* pStateInfo ); void _Cancel( CollectionStateInfo* pStateInfo ); inline CollectionStateInfo* const _FindStateInfo( DWORD ObjKey ) { return m_Hash.GetData(ObjKey); } // _NA001385_20090924_DOMINATION_STAMP // °¢Àι°ÀÏ °æ¿ì °¢Àι°ÀÇ Á¾·ùµµ ¸®ÅÏ Çϵµ·Ï º¯°æ. [5/13/2010 lst1024] PairIsStampReturnValue _IsStamp(WzID CollectionID); VOID _StartStamp(Player* pPlayer, WzID CollectionID); VOID _CancelStamp(Player* pPlayer, WzID CollectionID); template VOID _SendStampPacket(PacketType& BrdMsg, Player* pPlayer, WzID CollectionID); //_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND bool _IsSealingStrongPoint(WzID collection_id); void _StartSealing(Player* player, WzID collection_id); void _CancelSealing(Player* player, WzID collection_id); #ifdef _NA_008334_20150608_SONNENSCHEIN // ¼Ò³Ù»þÀÎ¿ë °¢ÀÎÀÎÁö È®ÀÎÇÑ´Ù BOOL _IsSonnenScheinStamp(WzID collection_id); VOID _StartSonnenScheinStamp(Player* player, WzID collection_id); VOID _CancelSonnenScheinStamp(Player* player, WzID collection_id); #endif //_NA_008334_20150608_SONNENSCHEIN #ifdef _NA_008543_20151027_ONE_DAYS_GUILD_MISSION // ÀÏÀϱæµå¹Ì¼Ç¿ë °¢ÀÎÀÎÁö È®ÀÎÇÑ´Ù. BOOL _IsOneDaysGuildmissionStamp(WzID collection_id); VOID _StartOneDaysGuildmissionStamp(Player* player, WzID collection_id); VOID _CancelOneDaysGuildmissionStamp(Player* player, WzID collection_id); #endif //_NA_008543_20151027_ONE_DAYS_GUILD_MISSION private: GameField* m_pField; ACTIVE_COLLECTION_HASH m_Hash; // Ȱ¼ºÈ­µÈ äÁý¹°. };