218 lines
5.4 KiB
Objective-C
218 lines
5.4 KiB
Objective-C
#ifndef __uiQuestReward_H__
|
|
#define __uiQuestReward_H__
|
|
//------------------------------------------------------------------------------
|
|
/**
|
|
@class uiQuestReward
|
|
|
|
interface for Item Composite
|
|
|
|
(C) 2005 y2jinc
|
|
*/
|
|
#include "uiBase.h"
|
|
#include "uiQuestReward_def.h"
|
|
#include "ItemComposeListParser.h"
|
|
#include "SCItemSlotContainer.h"
|
|
#include "FTextParser.h"
|
|
#include "FTextSentence.h"
|
|
#include "FTextRender.h"
|
|
#include "uiQuestMan/uiQuestMan.h"
|
|
#include "interfacemanager.h"
|
|
#include "globalfunc.h"
|
|
|
|
class RewardInfo;
|
|
class uiQuestMan;
|
|
class Quest;
|
|
class QuestInfo;
|
|
|
|
class uiQuestReward :
|
|
public uiBase, public SCItemSlotContainer
|
|
{
|
|
enum eDIALOG_POS
|
|
{
|
|
eDLGPOS_SLOT_SELECT_ITEM_1 = 0,
|
|
eDLGPOS_SLOT_SELECT_ITEM_2,
|
|
eDLGPOS_SLOT_SELECT_ITEM_3,
|
|
eDLGPOS_SLOT_SELECT_ITEM_4,
|
|
eDLGPOS_SLOT_SELECT_ITEM_5,
|
|
eDLGPOS_SLOT_FIX_ITEM,
|
|
eDLGPOS_VSCR_QUEST_INFO,
|
|
eDLGPOS_BTN_EXIT,
|
|
eDLGPOS_BTN_OK,
|
|
eDLGPOS_BTN_CANCEL,
|
|
eDLGPOS_BTN_REWARD_POINT,
|
|
DIALOG_MAX,
|
|
};
|
|
|
|
enum
|
|
{
|
|
SLOT_BEGIN = eDLGPOS_SLOT_SELECT_ITEM_1,
|
|
SLOT_SIZE = eDLGPOS_SLOT_FIX_ITEM-eDLGPOS_SLOT_SELECT_ITEM_1+1,
|
|
|
|
SLOT_FIX_ITEM = eDLGPOS_SLOT_FIX_ITEM,
|
|
|
|
SLOT_SELECT_BEGIN = eDLGPOS_SLOT_SELECT_ITEM_1,
|
|
SLOT_SELECT_SIZE = eDLGPOS_SLOT_SELECT_ITEM_5-eDLGPOS_SLOT_SELECT_ITEM_1+1,
|
|
|
|
|
|
};
|
|
|
|
struct sSelectRewardSlotIdx
|
|
{
|
|
POSTYPE pos;
|
|
};
|
|
|
|
public:
|
|
uiQuestReward(InterfaceManager *pUIMan);
|
|
virtual ~uiQuestReward();
|
|
|
|
//--------------------------------------------------------------------------
|
|
// init/release
|
|
//
|
|
public:
|
|
virtual void Init(CDrawBase* pDrawBase);
|
|
virtual void Release();
|
|
void InitControls();
|
|
bool CheckControls();
|
|
|
|
//--------------------------------------------------------------------------
|
|
// helper/comms.
|
|
//
|
|
public:
|
|
uiQuestMan* GetManager();
|
|
|
|
//--------------------------------------------------------------------------
|
|
// functions
|
|
//
|
|
public:
|
|
void ClearInfo();
|
|
|
|
// Item °ü·Ã
|
|
ItemUnitRenderer * GetItemUnitRender() const;
|
|
|
|
virtual RC::eSLOT_INSERT_RESULT InsertSlot( POSTYPE AtPos, SCSlot & rSlot ); // ½½·Ô¿¡ °´Ã¼ Ãß°¡
|
|
BOOL DeleteSlot( POSTYPE AtPos, SCSlot * pSlotOut );
|
|
|
|
void SetCurQuestCode(QuestInfo * pQuestInfo, eQUEST_GAIN_STATE QuestState);
|
|
|
|
protected:
|
|
void initInfo();
|
|
void initBtnInfo();
|
|
void initQuestInfo();
|
|
void updateInfo();
|
|
|
|
void clickBtn(POSTYPE pos);
|
|
BOOL clickSelectItemSlot(POSTYPE pos);
|
|
|
|
private:
|
|
void initQuestInfoConversation();
|
|
void initQuestInfoReward();
|
|
|
|
int RewardItemActiveForClass(RewardInfo * pRewardInfo);
|
|
|
|
//--------------------------------------------------------------------------
|
|
// dialog functions
|
|
//
|
|
public:
|
|
|
|
protected:
|
|
virtual void OnShowWindow( BOOL val );
|
|
virtual void OnRenderSolarDialog();
|
|
virtual void OnUpdateSolarDialog();
|
|
|
|
protected:
|
|
CControlWZ * getControl( POSTYPE AtPos );
|
|
POSTYPE getCtrlIDToPos( WzID wzId );
|
|
static WzID m_wzId[DIALOG_MAX];
|
|
|
|
//--------------------------------------------------------------------------
|
|
// procedure
|
|
//
|
|
public:
|
|
virtual void MessageProc( SI_MESSAGE * pMessage ); // Pure
|
|
//virtual void UpdatePosition();
|
|
virtual VOID MouseOver_MsgProc( SI_MESSAGE * pMessage );
|
|
|
|
|
|
//--------------------------------------------------------------------------
|
|
// member vars
|
|
//
|
|
private:
|
|
BOOL m_bInitControls;
|
|
ItemUnitRenderer * m_pItemUnitRenderer;
|
|
TCHAR m_szText[INTERFACE_STRING_LENGTH];
|
|
TCHAR m_szResult[INTERFACE_STRING_LENGTH];
|
|
|
|
FTextParser m_FTextParser;
|
|
FTextSentence m_FTextSentence;
|
|
FTextRender m_FTextRender;
|
|
|
|
// controls
|
|
UI_CONTROL_STATIC_PROPERTY(Title, StrToWzID("T001"));
|
|
UI_CONTROL_STATIC_PROPERTY(QuestInfo, StrToWzID("T003"));
|
|
UI_CONTROL_BUTTON_PROPERTY(RewardHeim, StrToWzID("T101"));
|
|
UI_CONTROL_BUTTON_PROPERTY(RewardOK, StrToWzID("B001"));
|
|
UI_CONTROL_BUTTON_PROPERTY(RewardCancel,StrToWzID("B002"));
|
|
UI_CONTROL_VSCROLL_PROPERTY(QuestInfoVscr,StrToWzID("V001"));
|
|
UI_CONTROL_BUTTON_PROPERTY(RewardExp, StrToWzID("T102"));
|
|
UI_CONTROL_STATIC_PROPERTY(RewardChao, StrToWzID("T201"));
|
|
CCtrlButtonWZ* reward_point_button_;
|
|
|
|
sScrollInfo m_VScrollInfo;
|
|
|
|
QuestInfo * m_pCurQuestInfo;
|
|
eQUEST_GAIN_STATE m_eQuestGainState;
|
|
|
|
std::list<sSelectRewardSlotIdx>
|
|
m_SelectRewardItemList;
|
|
BYTE m_bSelectItem;
|
|
};
|
|
|
|
//------------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
inline
|
|
POSTYPE
|
|
uiQuestReward::getCtrlIDToPos( WzID wzId )
|
|
{
|
|
for( POSTYPE i = 0 ; i < DIALOG_MAX ; ++i )
|
|
{
|
|
if( m_wzId[i] == wzId )
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return DIALOG_MAX;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
inline
|
|
CControlWZ *
|
|
uiQuestReward::getControl( POSTYPE AtPos )
|
|
{
|
|
assert( AtPos < DIALOG_MAX );
|
|
|
|
return GetControlWZ( m_wzId[AtPos] );
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
/**
|
|
*/
|
|
inline
|
|
bool
|
|
uiQuestReward::CheckControls()
|
|
{
|
|
if (!this->m_bInitControls)
|
|
{
|
|
assert ("Unknown controls!!");
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
#endif // __uiQuestReward_H__
|
|
|