/// 2011.09.30 안 쓰임 - prodongi #ifndef _E7_P4_QUEST_RENEW_ #pragma once #include "SUIWnd.h" class SUIDisplayInfo; class SUIQuestDialogWnd : public SUIWnd { public: SUIQuestDialogWnd ( SGameManager* pGameManager , SUIDisplayInfo* pDisplayInfo , int nContentLine = 15 , int nFontSize = 10 , float fMod = 1.0f ) : SUIWnd ( pGameManager ) , m_displayInfo ( pDisplayInfo ) , m_isOpen ( false ) , m_fontSize ( nFontSize ) , m_questCode ( 0 ) , m_questTextId ( 0 ) , m_questContentIndex ( 0 ) , m_questContentPage ( 0 ) , m_questContentLine ( nContentLine ) , m_mod ( fMod ) , m_nCurrentPage( 0 ) { } ~SUIQuestDialogWnd(); virtual void ProcMsgAtStatic( SGameMessage* pMsg ); virtual void PumpUpMessage( LPCSTR lpszControlID , DWORD nMessage , DWORD lparam , DWORD wparam ); virtual bool InitControls( KPoint point ); virtual void OnNotifyUIWindowOpen( bool bOpen, bool bLimitWnd = true ); protected: struct ITriggerAction { virtual void onRelease() = 0; }; struct TriggerInfo { TriggerInfo() : action( 0 ) {} ~TriggerInfo() { SAFE_DELETE( action ); } std::string name; std::string sound; ITriggerAction* action; }; // internal void _PlaySound(); void _Refresh(); void _RefreshQuestDialog(); void _RearrangeScroll( int line ); bool _IsOverContentLine( int line ) { return line > m_questContentLine ? true : false; } std::string _MakeContentFittable( const std::vector< std::string >& content_list ); void _MakeContentUsing( const QuestBase& quest_data ); void _RefreshHeader( const QuestBase& quest_data ); void _RefreshReward( const QuestBase& quest_data ); std::string _GetExpString( const QuestBase& quest_data ); std::string _GetJPString( const QuestBase& quest_data ); std::string _GetHolicPointString( const QuestBase& quest_data ); std::string _GetRPString( const QuestBase& quest_data ); std::string _GetDefaultRewardString( const QuestBase& quest_data ); std::string _GetOptionalRewardString( const QuestBase& quest_data ); std::string _GetQuestName( const QuestBase& quest_data ); std::string _DecorateNpcName( const char* npc_name ); std::string _DecorateQuestName( int nDificullty , int nLimitLevel , const std::string& strQuestName ); std::string _DecorateQuestProgressString( const std::string& strQuestProgress ); void _SetItemSlot( ItemBase::ItemCode code , int nCount , const char *szIconControl , const char *szNumberControl ); 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 ); void _SetMod( const QuestBase& quest_data ); 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 ); private: typedef std::map< std::string, TriggerInfo* > t_trigger_controls; typedef std::vector< SMSG_NPC_DIALOG::DLGMENU > t_trigger_menus; SUIDisplayInfo* m_displayInfo; bool m_isOpen; const int m_fontSize; int m_questCode; int m_questTextId; int m_questContentIndex; int m_questContentPage; const int m_questContentLine; std::string m_questNpc; float m_mod; t_trigger_controls m_triggerControls; t_trigger_menus m_triggerMenus; std::vector< std::string > m_vQuestContent; int m_nCurrentPage; }; #endif