/* ========================================================================== * ÆÄ ÀÏ : TarotManager.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ±è°¡¶÷ * ÀÛ ¼º ÀÏ : 2007-07-30 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Tarot_Common.h" enum eTarotType { eTAROT_NONE = 0, eTAROT_USER, // ÀϹÝÀ¯Àú eTAROT_TUTORIAL, // Æ©Å丮¾ó¿ë }; enum eTarotPage { ePAGE_NONE = 0, ePAGE_OPEN, ePAGE_MANAGED, ePAGE_VIEW, ePAGE_SELECT, ePAGE_RESULT, ePAGE_NPCVIEW, /// NPC Á¡Áý ¿­±â ePAGE_NPCSELECT, /// NPC Á¡Áý Ä«µå ¼±ÅÃÆäÀÌÁö ePAGE_NPCRESULT, /// NPC Á¡Áý °á°ú }; enum { ERROR_NONE = 0, ERROR_CARD, /// Ä«µå ºÎÁ· ERROR_SPREAD, /// ½ºÇÁ·¹µå ºÎÁ· ERROR_PRICE, /// °¡°Ý ¾øÀ½ ERROR_TITLE, /// »óÁ¡¸í¾øÀ½ ERROR_STUFF, }; enum { eSPREAD_ALL = 0, eSPREAD_STR, eSPREAD_INV, }; /// struct sResultInfo { BYTE Dir; // Ÿ·ÎÄ«µå ¹æÇâ unsigned long TarotCardIndex; // ¾ÆÀÌÅÛ Á¤ÀÇ À妽º unsigned long Value; // Ÿ·ÎÄ«µå °ª(½ºÇÁ·¹µå Àû¿ëÈÄ) bool Apply; // }; /// ÆäÀÌÁö Á¤º¸ enum eNpcTarotPage { eNPCPAGE_NONE = 0, eNPCPAGE_CHECK, eNPCPAGE_SELECT, eNPCPAGE_RESULT, }; // ¿î¼¼¼Ó¼º enum eFortuneProp { eFORTUNE_LOVE, // ¾ÖÁ¤ eFORTUNE_HEALTH,// °Ç°­ eFORTUNE_WORK, // Á÷Àå eFORTUNE_MONEY, // Àç¹° eFORTUNE_LUCK, // Çà¿î eFORTUNE_NONE, }; // À§Ä¡ ¼Ó¼º enum ePositionProp { ePOS_FIRST, // ù¹øÂ° ePOS_SECOND, // µÎ¹øÂ° ePOS_THIRD, // ¼¼¹øÂ° ePOS_NONE, }; struct sNpcSpreadParam { int mX, mY; /// ÁÂÇ¥ short mPositionProp; /// À§Ä¡ ¼Ó¼º long mQuestionIdx; /// Áú¹® À妽º }; // npc ½ºÇÁ·¹µå ¼Ó¼º struct sNpcSpread { sNpcSpreadParam mParam[MAX_NPCSPREAD_COUNT]; unsigned int mCount; /// µé¾îÀÖ´Â ½ºÇÁ·¹µå Á¤º¸ °¹¼ö short mFortuneProp; /// ¿î¼¼ ¼Ó¼º sNpcSpread() { memset( mParam, 0, sizeof(mParam) ); mCount = 0; } }; /// npc Ÿ·ÎÄ«µå struct sNpcTarotCard { unsigned int mImageIndex; short mNumber; /// °íÀ¯¹øÈ£( 0 ~ 21 ) unsigned long mStraightIdx; /// Á¤¹æÇâ ¼³¸í À妽º unsigned long mInverseIdx; /// ¿ª¹æÇâ ¼³¸í À妽º unsigned long mCommnetIndex; /// ÇØ¼® À妽º }; // Ÿ·ÎÄ«µå ÇØ¼® struct sNpcTarotComment { unsigned long mComment[5][3][2][3]; /// [¿î¼¼¼Ó¼º][À§Ä¡¼Ó¼º][¹æÇâ][ÇØ¼®] = ÇØ¼®¹øÈ£ sNpcTarotComment() { memset( mComment, 0, sizeof(mComment) ); } }; /// Ÿ·ÎÄ«µå·Î ¹ÞÀ»¼ö ÀÖ´Â ÃÖ´ë ¿î¼¼+Ä«µå ¼öÄ¡ const int MAX_TAROTVALUE = 200; class cUIImage; class cCardParam; class cTarotManager { public: static cTarotManager* mSingleton; public: cTarotManager(); ~cTarotManager(); /// ÃʱâÈ­ bool Init(); void Clear(); /// Ÿ·ÔÀ̹ÌÁöÆÄ¶÷ (ÇØ´ç ¾ÆÀÌÅÛÀÌ °¡Áø À̹ÌÁö ȹµæ) cCardParam* GetTarotParam( unsigned int itemIdx ); /// ½ºÅ©¸³Æ® À妽º·Î Ÿ·Ô À̹ÌÁö ÆÄ¶÷ ȹµæ cCardParam* GetImageParam( unsigned int imgIndex ); sNpcSpread* GetNpcSpread( unsigned long spreadIdx ); sNpcTarotCard* GetNpcTarot( unsigned long cardIdx ); sNpcTarotComment* GetNpcTarotComment( unsigned long commentIdx ); protected: /// ½ºÅ©¸³Æ® ·Îµå bool LoadTarotParams( const cString& pathName ); bool LoadNpcSpread( const cString& path ); bool LoadComment( const cString& path ); bool LoadTarotDeck( const cString& path ); void ClearCardinfo(); public: static cTarotManager* GetSingleton(); protected: /// ½ºÇÁ·¹µå Á¤º¸ (sNpcSpread) typedef tPointerHashMap cNpcSpreadMap; cNpcSpreadMap mNpcSpreadMap; /// Ÿ·Î Ä«µå Á¤º¸ (sNpcTarotCard) typedef tPointerHashMap cNpcTarotMap; cNpcTarotMap mNpcTarotMap; /// ÇØ¼® Á¤º¸ (sNpcTarotComment) typedef tPointerHashMap cNpcCommentMap; cNpcCommentMap mNpcCommentMap; protected: /// Ÿ·ÎÄ«µå ÅØ½ºÃÄ typedef tHashMap cTextureMap; cTextureMap mTarotTextureMap; /// Ÿ·ÎÄ«µå À̹ÌÁö ÆÄ¶÷ typedef tHashMap cTarotParamMap; cTarotParamMap mTarotParamMap; /// ¼±ÅÃµÈ Å¸·ÎÄ«µå À妽º (ÀÌ¿ëÀÚ) (sTarotResult) typedef tArray cSelectInfoArr; cSelectInfoArr mSelectInfoArr; /// eTarotPage mCurrentPage; // Á¡Áý ŸÀÔ - ÀÌ¿ëÁßÀΠŸ·ÔÁ¡Áý ŸÀÔ eTarotType mTarotType; }; inline cTarotManager* cTarotManager::GetSingleton() { return mSingleton; } #define TAROTMAN cTarotManager::GetSingleton()