/* ========================================================================== * ÆÄ ÀÏ : 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; sTutorialBaseImage() { mpTexture = 0; mPosX = 0; mPosY = 0; mWidth = 0; mHeight = 0; mTexPosX = 0; mTexPosY = 0; mFrameCount = 1; mRepeat = true; mOneFrameTime = 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(); 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 NiTexture* cTutorialManager::GetTexture( unsigned int index ) { return (NiTexture*)mTextureMap.GetAt( index ); } inline cTutorialManager* cTutorialManager::GetSingleton() { return mpSingleton; } #define TUTORIALMAN cTutorialManager::GetSingleton()