157 lines
5.8 KiB
C++
157 lines
5.8 KiB
C++
|
|
#pragma once
|
|
|
|
//#include "SUIWnd.h"
|
|
//#include <vector>
|
|
//#include <string>
|
|
|
|
#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<std::string>& 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<std::string> m_extractQuestTarget;
|
|
KUIControlButton* m_ctrlComplete;
|
|
KUIControlButton* m_ctrlAccept;
|
|
KUIControlButton* m_ctrlReject;
|
|
KUIControlButton* m_ctrlGiveUp;
|
|
KUIControlStatic* m_ctrlQuestName;
|
|
std::vector<KUIControlStatic*> m_vHideCtrl;
|
|
}; |