#pragma once //#include "SUIWnd.h" //#include //#include #include "KDeviceManager.h" #include "KRenderDevice.h" #include "KUITextureManager.h" #include "KUIControlQJTV.h" class SUIDisplayInfo; class SUIQuestInfoWnd : public SUIWnd { public: SUIQuestInfoWnd( SGameManager* pGameManager, SUIDisplayInfo* pDisplayInfo ) : SUIWnd( pGameManager ) , m_questCode( 0 ) //, m_nStoryIndex( 0 ) , m_pDisplayInfo( pDisplayInfo ) , m_nCurrentPage( 0 ) , m_nCurrentPage2( 0 ) {} ~SUIQuestInfoWnd(); virtual void Process(DWORD dwTime); //bool CreateControls( class KUIWndManager* pWndManager ); virtual void Create(KUIWND_CREATE_ARG& CREATE_ARG); 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 ); void SetItemSlot( ItemBase::ItemCode code, int nCount, const char *szIconControl, const char *szNumberControl, const char *szTooltipControl ); void SetControlEnableWithColor( const char* lpControl, bool bEnable, const char* lpColor ); void SetControlEnable( const char * pControlName, bool bEnable ); void SetControlEnableColor( const char * pControlName, const char* lpColor ); void SetControlDisableColor( const char * pControlName, const char* lpColor ); protected: /// 2011.08.19 str을 태그가 있는 텍스트로 만들어 준다 - prodongi std::string makeQuestTargetTagText(std::string const& str); /// 2011.08.19 퀘스트 목표 텍스트 리스트를 뽑는다 - prodongi void extractQuestTarget(); /// 2011.08.19 m_questTargetList의 목표들을 입력 스트링에서 찾아 태그가 있는 스트링으로 교체해준다 - prodongi void replaceQuestTargetToText(std::string& text, bool addMobNameDiff = false); /// 2011.09.29 Refresh()함수는 계속 갱신해 주고 있는데, 퀘스트 데이타를 받을 때만 갱신해주는 함수 - prodongi void refreshWhenRecv(bool initPage = true); /// 2011.09.29 난이도 설정 - prodongi void setDifficultyIcon(QuestBase* base); /// 2011.09.29 진행 상황 설정 - prodongi void setProgressStatus(int questCode); /// 2011.09.29 현재 페이지 설정 - prodongi void setCurPage(int page); /// 2011.09.29 보상 포인트 설정 - prodongi void setCompensationPoint(QuestBase* base); /// 2011.09.29 보상 아이템 설정 - prodongi void setCompensationItem(QuestBase* base); /// 2011.09.29 난이도 툴팁 설정 - prodongi void setDifficultyToolTip(); /// 2011.09.29 텍스트를 최대 라인수 만큼 짜른다 - prodongi void splitMaxLineString(std::string const& totalStr, std::vector& splitedStr); /// 2011.09.29 m_vQuestContent를 추출한다 - prodongi void setQuestContent(QuestBase* base); /// 2011.10.27 dialog type에 따라서 confirm 버튼을 완료/포기로 나누어 준다 - prodongi void refreshConfirmButtonStatus(int dialogType); /// 2011.10.27 실시간으로 업데이트 되는 데이타들, 전체가 업데이트 되면 부하가 크므로 실시간이 필요한 것만 추려냄 - prodongi void refreshRealTime(); /// 2011.12.06 퀘스트 리스트창의 위치에 따라서 인포창의 오픈 위치를 조정해 준다 - prodongi void movePosAboutQuestList(); /// 2012.02.15 보상 아이템 개수에 따라서 자동 선택해 준다 - prodongi void autoSelectOptionalReward(int questCode); /// 2012. 06. 15 호칭보상 관련 컨트롤 등록 - marine void addhideCtrl(LPCSTR ctrlName); /// 2012. 06. 15 호칭보상 컨트롤 show/hide - marine void setTitleShow(bool bShow); /// 2012. 06. 15 호칭이름 설정 - marine void setTitleName(); private: std::string CoordinateQuestName( int nDifficulty, int nLimitLevel, const std::string & strQuestName ); void Refresh(bool bInit = true, bool initPage = true); void RefreshStoryText(); void SetQuestRewardItem( bool bNeed ) { m_bNeedRewardItem = bNeed; } bool IsQuestNeedRewardItem() { return m_bNeedRewardItem; } void IconFocus( int nIndex ); std::string m_strQuestStory; //int m_nStoryIndex; int m_questCode; int m_questTextId; std::string m_questNpc; SUIDisplayInfo* m_pDisplayInfo; std::vector< std::string > m_vQuestContent; int m_nCurrentPage; int m_nCurrentPage2; bool m_bNeedRewardItem; int m_rewardFocus; std::vector< std::string > m_vQuestInfoImgName; std::vector< K3DTextureSPtr > m_vQuestInfospTexture; // 2010.06.04 epic6에서 갖고옴 - prodongi K3DVector m_vecQuestStart; int m_nDialogType; struct ITriggerAction { virtual void onRelease() = 0; /// 2011.09.29 유효 체크 - prodongi virtual bool isValid() const { return true; } }; struct TriggerInfo { TriggerInfo() : action( 0 ) {} ~TriggerInfo() { SAFE_DELETE( action ); } std::string name; std::string sound; ITriggerAction* action; }; typedef std::map< std::string, TriggerInfo* > t_trigger_controls; typedef std::vector< SMSG_NPC_DIALOG::DLGMENU > t_trigger_menus; t_trigger_controls m_triggerControls; t_trigger_menus m_triggerMenus; void _AddTriggerControl( const char* control_name , const char* trigger_name , const char* trigger_sound , ITriggerAction* trigger_action = 0 ); void _ClearTriggerControls(); void _AssignTriggers( const std::vector< SMSG_NPC_DIALOG::DLGMENU >& menus ); bool _ReleaseTrigger( const char* control_id ); /// 2011.08.19 추출된 퀘스트 목표 리스트 - prodongi std::vector m_extractQuestTarget; KUIControlButton* m_ctrlComplete; KUIControlButton* m_ctrlAccept; KUIControlButton* m_ctrlReject; KUIControlButton* m_ctrlGiveUp; KUIControlStatic* m_ctrlQuestName; std::vector m_vHideCtrl; };