Files
Sun1602/Client/GameClient/ItemEtcCompositeDlg.h
T
2022-10-26 12:25:11 +08:00

144 lines
3.3 KiB
C++

//=======================================================================================================================
/** 아이템 조합 관련 창(악세서리 생성, 옵션제거,...)
@author
유재영
@desc
악세서리 생성, 옵션제거, 소켓 추가등을 할 다이얼로그
@since
2005. 8. 26.
@remarks
*/
#ifndef _ITEMETCCOMPOSITEDLG_H_
#define _ITEMETCCOMPOSITEDLG_H_
#include "solardialog.h"
#include "SCItemSlotContainer.h"
class SCItemSlotContainer;
class ItemETCCompositeDlg : public SolarDialog, public SCItemSlotContainer
{
public:
enum eITEMENCHANT_POS
{
eITEMENCHANT_BT_SLOT_1 = 0,
eITEMENCHANT_BT_SLOT_2,
eITEMENCHANT_BT_SLOT_3,
eITEMENCHANT_BT_SLOT_4,
eITEMENCHANT_BT_SLOT_5,
eITEMENCHANT_BT_SLOT_6,
eITEMENCHANT_TI_ENCHANT,
eITEMENCHANT_TI_RETRY,
eITEMENCHANT_TI_EXIT,
eITEMENCHANT_VALUE_MONEY,
eITEMENCHANT_VALUE_KINDOFENCHANT,
eITEMENCHANT_VALUE_SUB_1_MATERIAL,
eITEMENCHANT_VALUE_SUB_2_MATERIAL,
eITEMENCHANT_VALUE_SUB_3_MATERIAL,
eITEMENCHANT_VALUE_SUB_4_MATERIAL,
eITEMENCHANT_VALUE_SUB_5_MATERIAL,
eITEMENCHANT_BT_EXIT,
Dialog_Max
};
enum
{
eITEMENCHANT_MAIN_MATERIAL = eITEMENCHANT_BT_SLOT_1,
eITEMENCHANT_MAX_SUB_SLOT = 5,
eITEMENCHANT_MAX_SLOT = eITEMENCHANT_BT_SLOT_5+1,
};
enum ePACKET_STATUS
{
PACKET_STATUS_NONE = 0,
PACKET_STATUS_EXTRACT = 1,
};
ItemETCCompositeDlg(void);
virtual ~ItemETCCompositeDlg(void);
// 기본 virtual methods
VOID Init( CDrawBase * pDrawBase );
virtual VOID Release();
virtual VOID MessageProc( SI_MESSAGE * pMessage );
virtual VOID OnUpdateSolarDialog();
virtual VOID OnRenderSolarDialog();
virtual VOID OnShowWindow(BOOL val);
// 아이템 관련
VOID InitContainer();
VOID InitRenderer();
VOID ReleaseContainer();
VOID FlushUnitDraw();
ItemUnitRenderer * GetItemUnitRender() const;
virtual RC::eSLOT_INSERT_RESULT InsertSlot( POSTYPE AtPos, SCSlot & rSlot ); // 슬롯에 객체 추가
BOOL DeleteSlot( POSTYPE AtPos, SCSlot * pSlotOut );
// 처리
VOID SetCurrentCompositeType(eITEMCOMPOSITECODE eCompositeType);
eITEMCOMPOSITECODE GetCurrentCompositeType(void);
VOID Enchant();
VOID ReTry();
VOID Exit();
VOID SetRequiredMoney(MONEY Money);
VOID SetTargetInfo(SLOTIDX fromSlotIdx, POSTYPE fromPos);
TYPEDEF_MAP(LOCKING_INFO, POSTYPE, POSTYPE);
DWORD GetDialogKey() { return m_DialogKey; }
void SetDialogKey( DWORD DialogKey ) { m_DialogKey = DialogKey; }
// 기본 proected methods
protected:
CControlWZ * getControl( POSTYPE AtPos );
POSTYPE getCtrlIDToPos( WzID wzId );
void initEnchantInfo();
void initEnchantInfoText();
void showEnchantTitleText();
void fillEnchantExtraInfo();
void updateMaterial();
void activateMaterials(BOOL bActivate);
// 기본 attributes
private:
DWORD m_DialogKey;
static WzID m_wzId[Dialog_Max];
eITEMCOMPOSITECODE m_eCurCompositeType; // const.h 참조
ItemUnitRenderer * m_pItemUnitRenderer;
BOOL m_bValidEnchant; // 인첸트 가능한 상태인지를 나타낸다.
SLOTIDX m_FromTargetSlotIdx;
POSTYPE m_FromTargetPos;
CCtrlStaticWZ * m_CtrlKindOfCompositeStatic;
CCtrlStaticWZ * m_CtrlSubMaterialStatic[4];
CCtrlStaticWZ * m_CtrlMoneyStatic;
MONEY m_RequireMoney;
TCHAR m_szBuf[512];
TCHAR m_szBuf2[512];
TCHAR m_szResult[512];
LOCKING_INFO_MAP m_LockingInfoMap;
};
#endif // _ITEMETCCOMPOSITEDLG_H_