#pragma once #include "UIWindow.h" #include "Tarot_Common.h" struct sNpcTarotDeck; /// child window class cTarotOpenWindow; class cTarotCheckWindow; class cTarotSelectWindow; class cTarotResultWindow; class cNpcTarotCheckWindow; class cNpcTarotSelectWindow; class cNpcTarotResultWindow; class cLabel; class cButton; class cItemIcon; class cCardImage; class cItemSpread; class cPlaneObject; class cUIImage; const int SPREAD_GAPY = 9; const int TAROT_GAPX = 7; const int TAROT_GAPY = 4; const int TAROTNUMBER_TEXTSTART = 1000001; struct sStringData { cStringT spreadName; unsigned long color; sStringData() { color = 0; } }; class cTarotWindow : public cUIWindow { public: cTarotWindow(); virtual ~cTarotWindow(); enum { eCardDrama_Appear1 = 0, eCardDrama_Appear2, eCardDrama_Max, }; virtual void Open(); virtual void Close(); void ChangeTarotPage( unsigned char page ); bool OpenSelectCard( cCardImage* image = 0 ); bool OpenResultCard(); bool OpenNpcResultCard(); /// °á°ú Ä«µå & ÇØ¼® ¿ÀÇ bool OpenNpcResultReview( unsigned int selectIndex ); /// °á°ú ÇØ¼® ¸®ºä ¿ÀÇ void SetFortuneData( unsigned long data ); /// ¼­¹ö·ÎºÎÅÍ Á¡º¸±â °¡´ÉÇÑ npc ¿î¼¼¸¦ ¹Þ´Â´Ù inline unsigned long GetFortuneData() { return mFortuneData; } // ¿¬ÃâÁßÀÎÁö ¿©ºÎ bool IsEnalbeOpenDrama() { return mEnableOpenDrama; } void SetPrice( unsigned long price ); void SetTitle( LPCTSTR str ); void SetCardInfo( unsigned int index, unsigned int itemIndx, bool InitPoint = false ); void SetSpreadInfo( unsigned int index, unsigned int itemIndex ); void SetSelectedSpread( unsigned int index ); inline cItemSpread* GetCurrentSpreadInfo() { return mpSpreadInfo;} inline unsigned int GetSelectedSpreadIndex() { return mSelectSpreadIndex; } inline unsigned int GetSelectedCount() { return mSelectCardCount; } inline unsigned int GetShowReviewIndex() { return mShowReviewIndex; } inline unsigned int GetMaxCount() { return mMaxSelect; } inline unsigned long GetPrice() { return mPrice; } inline unsigned long GetCardTotalPoint() { return mCardTotalPoint; } inline unsigned long GetCurrentResult() { return mCurrentResult; } inline unsigned int GetCardHalfWidth() { return mCardHalfWidth; } inline unsigned int GetCardHalfHeight() { return mCardHalfHeight; } inline LPCTSTR GetTitle() { return mTitle.Cstr(); } public: /// NPC Á¡Áý Á¤º¸ ¼¼ÆÃ void SetNpcTarotDeck( unsigned long* tarotArr ); void SetNpcSpread( unsigned long* spreadArr, short size ); bool OpenSelectNpcCard( cCardImage* image = 0 ); void SetSelectedNpcSpread( unsigned int index ); /// NPC Á¡Áý °á°ú »ý¼º void MakeNpcTarotResult(); unsigned int GetNpcHaveSpreadCount() { return mNpcSpreadCount; } protected: bool OnCreate( cUINodeProperty* pproperty ); void OnCommand( cUINode* pnode, unsigned int id ); void OnImageHovered( cUINode* caller, unsigned int id, const cUIPos& pos ); void OnIconHovered( cUINode* caller, unsigned int id, const cUIPos& pos ); void OnLButtonDown( const cUIPos& pos, bool ctrl, bool alt, bool ); void OnLButtonDoubleClick( const cUIPos& pos ); void OnProcess( unsigned long deltaTime, unsigned long accumTime ); void OnRender( cUIFontItemKeeper* pKeeper ); void OnIconClicked( cUINode* pcaller, unsigned int id ); void OnImageClicked( cUINode* pcaller, unsigned int id ); void OnHide(); void OnShow(); void UpdateSkin(); void UpdateRect(); void ShowHeroTarotCard(); void OnNetLock( int lockTry ); void OnNetUnLock( int lockTry ); protected: cTarotOpenWindow* mpOpenWindow; cTarotCheckWindow* mpCheckWindow; cTarotSelectWindow* mpSelectWindow; cTarotResultWindow* mpResultWindow; cNpcTarotCheckWindow* mpNpcCheckWindow; cNpcTarotSelectWindow* mpNpcSelectWindow; cNpcTarotResultWindow* mpNpcResultWindow; /// cUINodeSkin* mpTarotSkin; unsigned int mCardHalfWidth; unsigned int mCardHalfHeight; /// ½ºÇÁ·¹µå ¹è°æÀ̹ÌÁö¿Í ½ºÅ² cUIImage* mpSpreadBackImg; cUINodeSkin* mpSpreadBackSkin; bool mShowSpreadBack; /// ¼±Åà À̹ÌÁö cPlaneObject* mpSelectImage; int mSelectArrIndex; /// ¼±ÅÃµÈ ½ºÇÁ·¹µå À妽º cUIRect mSelectRect[MAX_SPREAD]; /// ¼±Åà ¿µ¿ª /// Ÿ·Î °ü¸® Á¤º¸ unsigned long mPrice; /// ÀÌ¿ë ±Ý¾× unsigned int mMaxSelect; /// ÃÖ´ë·Î ¼±ÅÃÇÒ ¼ö ÀÖ´Â °¹¼ö cStringT mTitle; unsigned long mCardTotalPoint; unsigned long mCurrentResult; unsigned int mSelectCardCount; unsigned int mSelectSpreadIndex; cItemSpread* mpSpreadInfo; /// Ä«µå typedef tPointerArray cTarotCardArr; cTarotCardArr mCardArr; cUIRect mDefaultCardRect; /// ½ºÇÁ·¹µå ¾ÆÀÌÄÜ sStringData mStringData[MAX_SPREAD]; cItemIcon* mpIcon[MAX_SPREAD]; struct sDramaInfo { unsigned int mIndex; unsigned long mStartTime; }; bool mEnableOpenDrama; unsigned long mStartTime; unsigned long* mCurrentPattern; bool mTarotFront; unsigned char mTarotFadeState; protected: /// NPC Ÿ·Î °ü¸® Á¤º¸ unsigned int mNpcSpreadCount; unsigned long mNpcSpreadIndex[MAX_SPREAD]; unsigned long mNpcTarotIndex[MAX_TAROT_CARDS]; /// NPC Ÿ·Î °á°ú Á¤º¸ sTarotResult mNpcTarotResult[13]; /// º¸°íÀÖ´Â review À妽º unsigned int mShowReviewIndex; /// À̿밡´ÉÇÑ ¿î¼¼ Á¤º¸ unsigned long mFortuneData; }; inline void cTarotWindow::SetPrice( unsigned long price ) { mPrice = price; } inline void cTarotWindow::SetTitle( LPCTSTR str ) { mTitle = str; } inline void cTarotWindow::SetNpcTarotDeck( unsigned long* tarotArr ) { for( int i = 0; i < MAX_TAROT_CARDS; ++i, ++tarotArr ) mNpcTarotIndex[i] = *tarotArr; } inline void cTarotWindow::SetNpcSpread( unsigned long* spreadArr, short size ) { mNpcSpreadCount = size; for( int i = 0; i < size; ++i, ++spreadArr ) mNpcSpreadIndex[i] = *spreadArr; } inline void cTarotWindow::SetFortuneData( unsigned long data ) { mFortuneData = data; }