/* ========================================================================== * ÆÄ ÀÏ : TutorialManager.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ±è°¡¶÷ * ÀÛ ¼º ÀÏ : 2009-10-12 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Lexer.h" //-------- // ½ºÅ©¸³Æ® °ü·Ã ±¸Á¶Ã¼ // ±âº» À̹ÌÁö struct sTutorialBaseImage { // ÅØ½ºÃÄ NiTexture* mpTexture; // Ãâ·Â À§Ä¡ short mPosX; short mPosY; // »çÀÌÁî short mWidth; short mHeight; // ÅØ½ºÃÄ À§Ä¡ short mTexPosX; short mTexPosY; // ÇÁ·¹ÀÓ¼ö short mFrameCount; // ¹Ýº¹ ¼³Á¤ bool mRepeat; // ÇÑ ÇÁ·¹ÀÓ ½Ã°£( ms ) unsigned long mOneFrameTime; // À̹ÌÁö Á¤·Ä( 0: ¾øÀ½, 1 : width, 2 : hegith, 3 : width & height ) unsigned char mAlign; sTutorialBaseImage() { mpTexture = 0; mPosX = 0; mPosY = 0; mWidth = 0; mHeight = 0; mTexPosX = 0; mTexPosY = 0; mFrameCount = 1; mRepeat = true; mOneFrameTime = 0; mAlign = 0; } }; // ¿¬Ãâ Á¤º¸ enum eTutorialDrama { eDRAMA_NONE, eDRAMA_DOWN, // ´­¸²È¿°ú eDRAMA_SHOW, // º¸±â eDRAMA_HIDE, // ¾È º¸±â }; // È­¸é À̹ÌÁö struct sTutorialImage : sTutorialBaseImage { // ÅØ½ºÃÄ À§Ä¡ short mDownTexX; short mDownTexY; // Ű ÀÔ·Â unsigned long mKey; // ±âº» º¸±â bool mDefaultShow; // ÁÂÇ¥ ±âÁØ bool mLeftTop; // ¿¬Ãâ eTutorialDrama mDramaInfo; // ´­¸² Ç÷¡±× ó¸® bool mIsDowned; sTutorialImage() { mDownTexX = 0; mDownTexY = 0; mKey = 0; mDefaultShow = true; mDramaInfo = eDRAMA_NONE; mIsDowned = false; mLeftTop = true; } }; // Àû¿ë ¿ÀºêÁ§Æ® enum eOBJECTTYPE; struct sTutorialObject { // ŸÀÔ eOBJECTTYPE mObjectType; // Àû¿ë¹üÀ§ ( 0 : ÇѰ³, 1 : Àüü, 2 : Ÿ°Ù ) char mSetAll; // °´Ã¼ ¿¬°á À̹ÌÁö À妽º (sTutorialBaseImage) unsigned long mImageIndex; // °´Ã¼ °íÀ¯ À妽º ( ÇѰ³ Àû¿ë½Ã¸¸ ó¸® ) unsigned long mClassIndex; sTutorialObject() { mObjectType = (eOBJECTTYPE)0; mSetAll = 1; mImageIndex = 0; mClassIndex = 0; } }; // ¸ðµå ±¸Á¶Ã¼ class cParser; class cTutorialMode { public: cTutorialMode(); ~cTutorialMode(); public: // ¸ðµå À妽º unsigned long mModeIndex; // ½ÃÀÛÁÂÇ¥ unsigned long mStartPosIndex; // ºÎȰ°ü·Ã ¾È³»¹® À妽º unsigned long mDieTextIndex; public: // ¿¬Ãâ Àû¿ë ¿ÀºêÁ§Æ® Á¤º¸ (sTutorialObject*) typedef tPointerArray cTutorialObjectArr; cTutorialObjectArr mObjectArr; // È­¸é Ãâ·Â À̹ÌÁö °ü¸® (sTutorialImage*) typedef tPointerArray cTutorialImageArr; cTutorialImageArr mImageArr; // °´Ã¼ Ãâ·Â À̹ÌÁö °ü¸® (sTutorialBaseImage*) typedef tPointerHashMap cTutorialObjectImageMap; cTutorialObjectImageMap mObjectImageMap; }; class cTutorialManager { public: static cTutorialManager* mpSingleton; public: cTutorialManager(); ~cTutorialManager(); void Clear(); bool Init(); void Open(); void Close(); void Process( unsigned long deltatime, unsigned long accumtime ); // Ÿ°ÙÆÃ °»½Å void UpdateTarget( char oldtype, unsigned long oldobjectIdx, char type, unsigned long objectIdx ); // void NetworkMsgParser( char* msg ); // sTutorialBaseImage* GetObjectImage( char type, unsigned long classIndex, unsigned long objectIndex ); // cTutorialMode* GetTutorialMode( unsigned long modeIdx ); cTutorialMode* GetCurrentMode(); bool IsTutorialMode(); protected: bool LoadScript( const cString& pathName ); bool LoadImages( const cString& path, cParser& parser ); bool LoadMode( cParser& parser, cTutorialMode* mode ); bool LoadObject( cParser& parser, cTutorialMode* mode ); bool LoadImage( cParser& parser, cTutorialMode* mode ); bool LoadObjectImage( cParser& parser, cTutorialMode* mode, unsigned long index ); NiTexture* GetTexture( unsigned int index ); // void ClearOldMode(); // ¸ðµå º¯°æ void ChangeMode( int modeIndex ); public: static cTutorialManager* GetSingleton(); private: /// ÅØ½ºÃÄ ¸Ê typedef tPointerHashMap cTextureMap; cTextureMap mTextureMap; // Æ©Å丮¾ó ¸ðµå °ü¸® (cTutorialMode*) typedef tPointerHashMap cModeMap; cModeMap mModeMap; // ¿¬Ãâ À̹ÌÁö ID °ü¸® ¸Ê typedef tPair cImageDataPair; typedef tArray cImageIDArr; cImageIDArr mImageIDArr; // ¸ðµåÀ妽º (-1 : Æ÷±âor¿Ï·á) int mModeIndex; }; inline cTutorialMode* cTutorialManager::GetTutorialMode( unsigned long modeIdx ) { return (cTutorialMode*)mModeMap.GetAt( modeIdx ); } inline cTutorialMode* cTutorialManager::GetCurrentMode() { if( mModeIndex == -1 ) return 0; return GetTutorialMode( mModeIndex ); } inline NiTexture* cTutorialManager::GetTexture( unsigned int index ) { return (NiTexture*)mTextureMap.GetAt( index ); } inline cTutorialManager* cTutorialManager::GetSingleton() { return mpSingleton; } #define TUTORIALMAN cTutorialManager::GetSingleton()