#ifndef __USER_INTERFACE_VENDORSELL_H__ #define __USER_INTERFACE_VENDORSELL_H__ //------------------------------------------------------------------------------ /** @class uiVendorSell personal vendor sell interface (C) 2005 ckbang */ #include "uiBase.h" #include "uiVendorSell_def.h" #include "SCItemSlotContainer.h" class uiVendorMan; class uiVendorSell : public uiBase, public SCItemSlotContainer // server client shared container { enum eDIALOG_POS { #ifdef _NA_0_20101124_VENDOR_SLOT_COUNT_INCREASE DIALOG_SLOT00=0, DIALOG_SLOT01, DIALOG_SLOT02, DIALOG_SLOT03, DIALOG_SLOT04, DIALOG_SLOT05, DIALOG_SLOT06, DIALOG_SLOT07, DIALOG_SLOT10, DIALOG_SLOT11, DIALOG_SLOT12, DIALOG_SLOT13, DIALOG_SLOT14, DIALOG_SLOT15, DIALOG_SLOT16, DIALOG_SLOT17, DIALOG_SLOT20, DIALOG_SLOT21, DIALOG_SLOT22, DIALOG_SLOT23, DIALOG_SLOT24, DIALOG_SLOT25, DIALOG_SLOT26, DIALOG_SLOT27, DIALOG_SLOT30, DIALOG_SLOT31, DIALOG_SLOT32, DIALOG_SLOT33, DIALOG_SLOT34, DIALOG_SLOT35, DIALOG_SLOT36, DIALOG_SLOT37, DIALOG_SLOT40, DIALOG_SLOT41, DIALOG_SLOT42, DIALOG_SLOT43, DIALOG_SLOT44, DIALOG_SLOT45, DIALOG_SLOT46, DIALOG_SLOT47, #else DIALOG_SLOT00=0, DIALOG_SLOT01, DIALOG_SLOT02, DIALOG_SLOT03, DIALOG_SLOT04, DIALOG_SLOT05, DIALOG_SLOT10, DIALOG_SLOT11, DIALOG_SLOT12, DIALOG_SLOT13, DIALOG_SLOT14, DIALOG_SLOT15, DIALOG_SLOT20, DIALOG_SLOT21, DIALOG_SLOT22, DIALOG_SLOT23, DIALOG_SLOT24, DIALOG_SLOT25, DIALOG_SLOT30, DIALOG_SLOT31, DIALOG_SLOT32, DIALOG_SLOT33, DIALOG_SLOT34, DIALOG_SLOT35, #endif //_NA_0_20101124_VENDOR_SLOT_COUNT_INCREASE DIALOG_TXT_SELLITEM, DIALOG_TXT_SELLMSG, DIALOG_EDIT_SELLMSG, DIALOG_TXT_ITEMCOUNTS, DIALOG_TXT_ITEMVALUE, DIALOG_TXTVALUE_ITEMCOUNTS, DIALOG_TXTVALUE_ITEMVALUTE, #ifdef _JBH_ADD_VENDOR_COMMISION DIALOG_TXT_COMMISION_OWNER, DIALOG_TXT_COMMISION_VALUE, #endif DIALOG_BTN_STARTEND, DIALOG_BTN_MODIFY, DIALOG_BTN_SUBITEM, DIALOG_BTN_INPUTMODIFY, DIALOG_BTN_PAUSE, DIALOG_EXIT, DIALOG_TXT_ITEM_UNIT_VALUE, DIALOG_TXTVALUE_ITEM_UNIT_VALUE, DIALOG_MAX, }; enum { #ifdef _NA_0_20101124_VENDOR_SLOT_COUNT_INCREASE POS_MAX_SLOT = DIALOG_SLOT47+1, #else POS_MAX_SLOT = DIALOG_SLOT35+1, #endif //_NA_0_20101124_VENDOR_SLOT_COUNT_INCREASE POS_SLOT_BEGIN = DIALOG_SLOT00, POS_SLOT_END = POS_MAX_SLOT, }; public: uiVendorSell(InterfaceManager *pUIMan); virtual ~uiVendorSell(); //-------------------------------------------------------------------------- // init/release // public: virtual SCSlot * CreateSlot(); virtual VOID Init(POSTYPE MaxSlotSize); // SCItemSlotContainer ÇÔ¼ö ÀçÁ¤ÀÇ virtual void Init(CDrawBase* pDrawBase); virtual void Release(); //-------------------------------------------------------------------------- // helper/comms. // public: ItemUnitRenderer * GetItemUnitRender() const; virtual SCSlotContainer * GetSlotContainer(); void SetVendorMessage(TCHAR* pmsg); uiVendorMan * GetManager() {return m_pVendorMan; } //-------------------------------------------------------------------------- // functions // public: bool IsVending(); bool IsVendedItem(POSTYPE FromPos); void SetCurrentItemSlotInfo(DURATYPE curAmounts, MONEY curMoney, POSTYPE curPos); void VendingStartEnd(); void ItemUp(SLOTIDX fromSlotIdx, SLOTIDX toSlotIdx, POSTYPE fromPos, POSTYPE toPos, MONEY m); void ItemUpCencel(SLOTIDX fromSlotIdx, SLOTIDX toSlotIdx, POSTYPE fromPos, POSTYPE toPos); void OpenItemModifyPopup(POSTYPE pos); void OpenItemModifyPopupAfterVendingStarted(POSTYPE pos); void ItemModify(POSTYPE pos, MONEY money, bool isNetSend=false); void ItemModifyCancel(); void NetSendModifySyncByInsertItem(); // ¾ÆÀÌÅÛ ¼öÁ¤¿äû void QueryItemModifyRequest(POSTYPE pos); // ¾ÆÀÌÅÛ »©±â void QueryItemSub(POSTYPE pos); void RecvItemSub(POSTYPE pos); void ItemSub(POSTYPE pos); // item unit renderer void InitItemRender(); void ResetItemRenderer(); void FlushUnitDraw(); void ReFreshRenderSlot(); //-------------------------------------------------------------------------- // dialog functions // public: virtual RC::eSLOT_INSERT_RESULT InsertSlot( POSTYPE AtPos, SCSlot & IN rSlot ); // ½½·Ô¿¡ °´Ã¼ Ãß°¡ virtual BOOL DeleteSlot( POSTYPE AtPos, SCSlot * pSlotOut ); void Exit(); protected: virtual void OnShowWindow( BOOL val ); virtual void OnRenderSolarDialog(); virtual void OnUpdateSolarDialog(); void updateVendingMsgs(); void updateVendingBtns(); void updateVendingCurrentItemInfos(); #ifdef _JBH_MOD_MONEY_OUTPUT void updateTooltip(POSTYPE atPos , MONEY money); DWORD m_dwPendingTick; BOOL m_bClickMoney; POSTYPE m_MouseOverPostype; #endif BOOL EnableOpenVendorState(); void CloseSubWindow(); void InitDataWhenShowWindow(); void OpenVendorSyn(); void EndVendorSyn(); void PauseVendorSyn(); void PauseButtonShowNHide(); void setFormatMoney(CCtrlStaticWZ* pControl , MONEY money); protected: CControlWZ * getControl( POSTYPE AtPos ); POSTYPE getCtrlIDToPos( WzID wzId ); static WzID m_wzId[DIALOG_MAX]; //-------------------------------------------------------------------------- // procedure // public: virtual void NetworkProc( MSG_BASE * pMsg ); // Pure virtual void MessageProc( SI_MESSAGE * pMessage ); // Pure virtual void MouseOver_MsgProc( SI_MESSAGE * pMessage ); bool IsStart() { return m_bStarted;} //-------------------------------------------------------------------------- // member vars // private: ItemUnitRenderer * m_pItemUnitRenderer; bool m_bStarted; bool m_bFocus; TCHAR m_szVendorMsg[MAX_VENDOR_TITLE_LENGTH]; DURATYPE m_curAmouts; // ÇöÀç ¼ö·® MONEY m_curMoney; // ÇöÀç °ª POSTYPE m_curPos; // ÇöÀç ½½·Ô Æ÷Áö¼Ç POSTYPE m_PendingModifyPos; VENDOR_ITEMSLOT m_PendingModifyItemSlot; // uiVendorMan * m_pVendorMan; #ifdef _JBH_ADD_VENDOR_COMMISION MONEY m_curCommision; // ÇöÀç ¼ö¼ö·á #endif CCtrlButtonWZ * m_pButtonPause; BOOL m_bShow; }; //------------------------------------------------------------------------------ /** */ inline POSTYPE uiVendorSell::getCtrlIDToPos( WzID wzId ) { for( POSTYPE i = 0 ; i < DIALOG_MAX ; ++i ) { if( m_wzId[i] == wzId ) { return i; } } return DIALOG_MAX; } //------------------------------------------------------------------------------ /** */ inline CControlWZ * uiVendorSell::getControl( POSTYPE AtPos ) { assert( AtPos < DIALOG_MAX ); return GetControlWZ( m_wzId[AtPos] ); } //------------------------------------------------------------------------------ /** */ inline bool uiVendorSell::IsVending() { return this->m_bStarted; } //------------------------------------------------------------------------------ #endif // __USER_INTERFACE_VENDORSELL_H__