124 lines
3.7 KiB
C++
124 lines
3.7 KiB
C++
|
|
/// 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 |