/* ========================================================================== * ÆÄ ÀÏ : MonsterScript.h * ¸ñ Àû : ¸ó½ºÅÍ ¸®¼Ò½º¸¦ Àоî¿Í ¸ó½ºÅÍ¿¡ ¼ÂÆÃÇØÁØ´Ù * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2007-11-12 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once struct sMonsterScript; struct sRegenScript; struct sRegenGroupScript; struct sMonsterTalk; struct sMonsterPattern; class cModeAgent; const long RAND_DIRECTION = 1000; /// ½ºÅ©¸³Æ®¿¡¼­ ¹æÇâ ·£´ý °ª class cMonsterScript { public: static cMonsterScript* mpMonsterScript; public: /// »ý¼º ¼Ò¸ê cMonsterScript(void); ~cMonsterScript(void) {} bool Init(); bool StageInit( unsigned short mapNumber, unsigned char levelMode ); void Release(); /// ¸ó½ºÅÍ ¸®½ºÆ® sMonsterScript* GetMonsterListInfo( unsigned long monsterIdx ); const tPointerHashMap* GetMonsterMap() { return (tPointerHashMap*)mpMonsterMap; } /// ¸ó½ºÅÍ ¸®Á¨ ¸®½ºÆ® sRegenScript* GetRegenMonsterInfo( unsigned char modeNum, unsigned long monsterIdx ); sRegenGroupScript* GetRegenGroupInfo( unsigned char modeNum, unsigned long groupIdx ); tPointerHashMap* GetRegenMonsterMap( unsigned char modeNum ) { return (tPointerHashMap*)mpRegenMonsterMap->GetAt( modeNum ); } tPointerHashMap* GetRegenGroupMap( unsigned char modeNum ) { return (tPointerHashMap*)mpRegenGroupMap->GetAt( modeNum ); } /// ¸ðµ¨ Á¤º¸ tHashSet* GetMonsterModelNumber( unsigned long map ) { return (tHashSet*)mpModelNumberMap->GetAt( map ); } /// ¸ó½ºÅÍ ´ë»ç sMonsterTalk* GetMonsterTalkInfo( unsigned long monsterClassIdx, unsigned char state ); /// ¸ó½ºÅÍ ¸®Á¨ ½ºÀ§Ä¡ ±×·ì tPointerHashMap* GetSwitchGroup( unsigned char mapNum ); /// ¸ó½ºÅÍ Mode void LoadMonsterMode( unsigned long monsterIdx ); void ReleaseMonsterMode(); cModeAgent* GetMonsterModeAgent( unsigned long monsterIdx ); /// À̵¿ ÆÐÅÏ sMonsterPattern* GetMonsterPattern( unsigned char levelMode, unsigned long patternIdx ); /// ¼Òȯ ÆÐÅÏ tArray* GetSummonPattern( unsigned long summonPatternIdx ) { return (tArray*)mpSummonPatternMap->GetAt( summonPatternIdx ); } // ¿ÀÅä ´õ¹Ì ·£´ý »Ì±â unsigned long GetRandomDummy(); private: /// ¸ó½ºÅÍ ¸®½ºÆ® bool LoadMonsterList(); void ReleaseMonsterList(); /// ¸ó½ºÅÍ ¸®Á¨ ¸®½ºÆ® bool LoadRegenMonsterlist( unsigned short mapnum, unsigned char levelMode, tPointerHashMap* pRegenMonsterMap, tPointerHashMap* pRegenGroupMap, tPointerHashMap* pRegenSwitchGroup ); void ReleaseRegenMonster(); void ReleaseRegenGroup(); /// ¸ðµ¨ Á¤º¸ void ReleaseModelNumber(); /// ¸ó½ºÅÍ ´ë»ç bool LoadMonsterTalkList(); void ReleaseMonsterTalk(); /// ¸ó½ºÅÍ ¸®Á¨ ½ºÀ§Ä¡ ±×·ì void ReleaseRegenSwitchGroup(); /// ¸ó½ºÅÍ ÆÐÅÏ bool LoadMonsterPattern( unsigned short mapnum, unsigned char levelMode, tPointerHashMap* pMonsterPattern ); void ReleaseMonsterPattern(); /// ¼Òȯ ÆÐÅÏ bool LoadSummonPattern(); void ReleaseSummonPattern(); private: typedef tArray cArray; typedef tArray cAryVoid; typedef tPointerHashSet cHashSet; typedef tPointerHashMap cPointHashMap; /// ¸ó½ºÅÍ ¸®½ºÆ® ÇØ½¬¸Ê // typedef tPointerHashMap cMonsterMap; cPointHashMap* mpMonsterMap; /// ¸®Á¨ ¸ó½ºÅÍ ÇØ½¬¸Ê // typedef tPointerHashMap cRegenMonsterMap; cPointHashMap* mpRegenMonsterMap; /// ¸®Á¨ ±×·ì ÇØ½¬¸Ê // typedef tPointerHashMap cRegenGroupMap; cPointHashMap* mpRegenGroupMap; /// ¸Êº° ¸ðµ¨ ³Ñ¹ö ÇØ½¬¸Ê // typedef tPointerHashMap cModelNumberMap; cPointHashMap* mpModelNumberMap; /// ¸ó½ºÅÍ ´ë»ç // typedef tPointerHashmap cMonsterTalkMap; cPointHashMap* mpMonsterTalkMap; /// ¸ó½ºÅÍ Mode // typedef tPointerHashmap mpMonsterModeAgentMap; cPointHashMap* mpMonsterModeAgentMap; /// ¸ó½ºÅ͸®Á¨ ¼±Åà ±×·ì // typedef tArray cRegenGroupAry; // typedef tPointerHashmap cMonsterTalkMap; cPointHashMap* mpRegenSwitchGroup; /// ¸ó½ºÅÍ À̵¿ ÆÐÅÏ /// cPointHashMap* mpMonsterPattern; /// ¼Òȯ ÆÐÅÏ /// /// cPointHashMap* mpSummonPatternMap; // ´õ¹Ì¸ó½ºÅÍ ¼Òȯ°¡´É ¸ñ·Ï cArray mDummyArray; }; #define MONSTERSCRIPT cMonsterScript::mpMonsterScript