#pragma once //#include "SUIWnd.h" //#include "SUIUtil.h" //#include class SUIDisplayInfo; class KUIControlQuestInfoManager; class KUIControlCheck; class SUIQuestListWnd : public SUIWnd { public: SUIQuestListWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo ) : SUIWnd( pGameManager ) , m_pDisplayInfo( pDisplayInfo ) , m_nFocus( -1 ) , m_nScrollPos( 0 ) { m_nSysMenuPosX = -99; m_nSysMenuPosY = -99; m_mouseX = 0; m_mouseY = 0; m_questInfoMgr = NULL; m_closeButton = NULL; m_updateRefreshTime = 0; SUIQuestListWnd::setFirst(true); } virtual ~SUIQuestListWnd(); // 2011.05.17 - servantes virtual void Process(DWORD dwTime); virtual void PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ); virtual void* Perform( KID id, KArg& msg ); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); virtual bool InitControls( KPoint kPos ); virtual DWORD OnMouseMessage(DWORD dwMessage, int x, int y); static bool isFirst() { return m_isFirst; } static void setFirst(bool first) { m_isFirst = first; } private: std::string CoordinateQuestName( int nDifficulty, int nLimitLevel, const std::string & strQuestName ); void Refresh(bool sortCheck = false); /// -1 이면 없앤다 void UpdateQuestInfo(); void addOpacityList(); void SetItemSlot( ItemBase::ItemCode code, int nCount, const char *szIconControl, const char *szNumberControl ); void IconFocus( int nIndex ); bool IsRewardQuest( QuestBase::QuestCode code ); void DelRewardQuest( QuestBase::QuestCode code ); /// 2011.10.31 아무것도 선택이 안되어 있을 때, 맨처음 퀘스트를 선택한다. - prodongi void selectFirstQuest(); void selectQuest(int index); protected: /// 2011.09.15 - prodongi void updateOpacity(DWORD elapsedtime); void setChoiceCheck(char const* sectionStr, char const* controlID); /// 2011.09.28 퀘스트 창의 투명모드 토글 void toggleOpacity(); void setOpacity(bool opacity); void toggleChoice(); void setChoice(bool check); /// 2011.11.03 정렬을 하면 인덱스가 바뀌기 때문에 선택된 인덱스를 재선택 해준다 - prodongi void reselectIndexBySort(); /// 2011.11.03 controlID에서 str을 제외한 offset값을 구한다 - prodongi int extractScrollOffset(char const* controlID, char const* str); /// 2011.12.01 확장 - prodongi void toggleExpansion(); void setExpansion(bool expansion); void setAllFold(bool fold, bool refresh = true); void toggleAllFold(bool refresh = true); /// 2011.12.07 리스트들의 접힌 상태에 따라서 전체 접기 버튼 상태를 갱신해 준다 - prodongi void updateAllFoldStatus(); /// 접히고 전체 퀘스트 보기 상태 void setDefaultStatus(); /// 2011.12.12 스크롤을 시작 위치로 초기화 void setScrollStartPosition(); protected: std::vector< QuestBase::QuestCode > m_vRewardList; ///< 보상 받을 수 있는 퀘스트 리스트 size_t m_nScrollPos; ///< 스크롤바 처리 int m_nFocus; QuestBase::QuestCode m_nQuestCode; SUIDisplayInfo* m_pDisplayInfo; int m_nSummaryIndex; int m_nSysMenuPosX, m_nSysMenuPosY; bool m_bTransparent; int m_nDataIndex; int m_oldDataIndex; /// 2011.09.19 - prodongi //KRect m_BackRect; /// 2011.09.09 - prodongi int m_mouseX; int m_mouseY; sui::sOpacityMouseChecker m_opacityList; KUIControlQuestInfoManager* m_questInfoMgr; DWORD m_time; KUIControlSimpleButton* m_closeButton; bool m_isChangeInfoCheck; AR_TIME m_updateRefreshTime; /// 2011.12.01 타이틀 컨트롤 - prodongi KUIControlStatic* m_titleBar; /// 확장 상태 bool m_isExpansion; /// nui의 원본 사이즈 KSize m_oriSize; /// 2011.12.07 전체 접기 상태 - prodongi bool m_isAllFoldStatus; /// 2011.09.26 - prodongi struct sCheckChoice { void init(KUIControl* wnd); void toggle(); void setCheck(bool check); bool m_isCheck; KUIControl* m_wnd; }; sCheckChoice m_checkChoice; /// 2011.09.28 투명 모드 버튼 - prodongi struct sOpacityButton { void init(KUIControlSimpleButton* wnd); void setOpacity(bool opacity); void toggle(); bool m_isOpacity; KUIControlSimpleButton* m_wnd; }; sOpacityButton m_opacityButton; /// 2011.09.30 상세보기/월드맵 보기 버튼 설정 - prodongi struct sDetailViewCheckButton { enum CHECK_TYPE { WORLDMAP, INFO, NONE }; void init(SUIWnd* parent); void setCheck(CHECK_TYPE type, bool bCheck); void update(DWORD elapsedtime, SGameInterface* gameInterface); /// 퀘스트 창이 open 했을 때, 호출 되는 함수 void open(SGameInterface* gameInterface); /// 월드맵과 인포창 중에서 어떤 창이 위에 있는지 체크 void checkTopWnd(SGameInterface* gameInterface); KUIControlCheck* m_wndWorldMap; KUIControlCheck* m_wndInfo; float m_updateTime; }; sDetailViewCheckButton m_detailViewCheckButton; /// 2011.11.07 맨 처음 로드 ‰榮募?것을 나타냄, 새로 받은 퀘스트는 new 설정을 해줘야 되는데, /// 새로 받은 퀘스트인지, 처음 접속해서 받은 퀘스트인지 구분하기 위해 쓰임 - prodongi static bool m_isFirst; };