/* ========================================================================== * ÆÄ ÀÏ : ThemeObject.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2009-05-25 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "RangeCheck.h" struct sStageChangePos; class cThemeObject { public: cThemeObject(); virtual ~cThemeObject(); /// Duelmanager ¸Þ¸ð¸®Ç®Ã³¸® void* operator new( size_t n ); void operator delete( void* ptr, size_t n ); virtual bool InitTheme( unsigned short themeIdx, unsigned char mode ); void RelaseObject(); virtual void ProcessTheme( unsigned long elapsedTime, unsigned long accumTime ); bool ThemeAddPlayer( unsigned long playerIdx ); void ThemeOutPlayer( unsigned long playerIdx ); void ThemeAllOut(); bool IsMovePossible( NiPoint2 startPos, NiPoint2 goalPos ); virtual void DeleteObstruction( unsigned long obstructionIdx ); void SendObstruction( cPlayer* pPlayer ); void AddTeleportPortal( unsigned long mapChangeIdx ); void SendTeleportPortal( cPlayer* pPlayer ); int UseTeleportPortal( cPlayer* pPlayer, unsigned long mapChangeIdx ); void Dependency() { mDependency = true; } bool IsMemberMax() { return mMemberSet.GetSize() >= mMaxCount; } sStageChangePos* GetThemeOutPos(); unsigned short GetThemeIndex() { return mThemeRoomIndex; } unsigned char GetMode() { return mMode; } void DeleteGathering( unsigned long objectIdx ) { mGatheringSet.Erase( objectIdx ); } tPointerHashMap* GetRegenGroupMap() { return &mRegenGroupMap; } tHashMap* GetRegenSearchMap() { return &mRegenSearch; } tPointerHashMap* GetFamilyMap() { return &mFamilyMap; } tPointerHashMap* GetGatheringGroupMap() { return &mGatherRegenGroupMap; } bool MonsterCntTestObject( unsigned short mapNum, unsigned long monsterIdx, unsigned long classIdx, unsigned long regenIdx ); protected: typedef tPointerHashMap cPHashMap; typedef tHashSet cHashSet; typedef tHashMap cHashMap; typedef tPointerArray cPArray; typedef tArray cAry; /// ÃʱâÈ­ unsigned short mThemeRoomIndex; /// ¹æ¹øÈ£ unsigned char mMode; // À¯Àú À妽º °ü¸® unsigned long mMaxCount; // À¯Àú °ü¸® Á¤º¸ ÃÖ´ë °ª cHashSet mMemberSet; bool mServerOnRegen; cRangeCheck mRangeCheck; bool mDependency; ////////////////////////////////////////////////////////////////////////// /// Àå¾Ö¹° /// cPHashMap mObstructionMap; ////////////////////////////////////////////////////////////////////////// /// ÅÚ·¹Æ÷Æ® À§Ä¡À̵¿ Æ÷Å» cHashSet mTeleportSet; ////////////////////////////////////////////////////////////////////////// /// ¸ó½ºÅÍ ¸®Á¨ °ü¸® /// ; cPHashMap mRegenGroupMap; /// ¸®Á¨±×·ìÀ» ±âÁØÀ¸·Î °ü¸®ÇØ¾ß ÇÏ´Â ¸ó½ºÅÍ ¸ñ·Ï Àüü º¸À¯ /// cPHashMap mFamilyMap; /// µ¿Á·±×·ì cPHashMap mRegenSwitchMap; cHashMap mRegenSearch; /// ¸®Á¨ À妽º·Î ¸ó½ºÅÍ °íÀ¯¹øÈ£ ã±â ///////////////////////////////////////////////////////////////////////// /// äÁý¹° °ü¸® cPHashMap mGatherRegenGroupMap; cHashSet mGatheringSet; ////////////////////////////////////////////////////////////////////////// // npc ¸®Á¨ Á¤º¸ (npcindex) typedef tArray cNpcArr; cNpcArr mNpcArr; unsigned long mMonsterCntTest; };