Files
2022-10-26 12:25:11 +08:00

157 lines
4.5 KiB
C++

#ifndef _uiVendorList_h_
#define _uiVendorList_h_
#include "uiBase.h"
#include "uiVendorList/uiVendorList_def.h"
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
#include "ItemInfoParser.h"
#define SEARCH_FRAME_UPDATE_TIME 100
#define NUMBER_OF_SEARCHING_PER_A_FRAME 200
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
class uiVendorMan;
class uiVendorList : public uiBase
{
enum eDIALOG_POS
{
DLGPOS_BTN_REFRESH,
DLGPOS_BTN_FIND,
DLGPOS_BTN_VIEW,
DLGPOS_BTN_EXIT,
DLGPOS_CHECK_ID,
DLGPOS_CHECK_ROOM_NAME,
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
DLGPOS_CHECK_ITEM,
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
DLGPOS_LIST,
DLGPOS_EDIT_ID,
DLGPOS_BTN_LEFT,
DLGPOS_BTN_RIGHT,
DLGPOS_BTN_ALL,
DLGPOS_TXT_PAGE,
DLGPOS_REPORT_BUTTON_NUMBER,
DLGPOS_REPORT_BUTTON_VENDOR_NAME,
DLGPOS_REPORT_BUTTON_SELLER_NAME,
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
DLGPOS_FIND_BACKIMG,
DLGPOS_FIND_SCROLLIMG,
DLGPOS_FIND_LIST,
DLGPOS_FIND_SCROLL,
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
DLGPOS_MAX,
};
enum
{
__DLGPOS_CHECK_ID ,
__DLGPOS_CHECK_ROOM_NAME,
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
__DLGPOS_CHECK_ITEM,
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
__DLGPOS_CHECK_MAX,
};
public:
uiVendorList(InterfaceManager * pUIMan);
virtual ~uiVendorList();
virtual void Init(CDrawBase* pDrawBase);
virtual void Release();
virtual void Process(DWORD dwTick);
virtual void OnRenderSolarDialog();
virtual void OnShowWindow(BOOL val );
virtual void MessageProc(SI_MESSAGE * pMessage );
virtual void NetworkProc(MSG_BASE * pMsg );
public:
void NET_SEND_CG_VENDOR_LIST_START_SYN();
void NET_SEND_CG_VENDOR_LIST_END_SYN();
void NET_SEND_CG_VENDOR_REQUIRE_PAGE_SYN(int page, int searchKind);
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
void NET_SEND_CG_VENDOR_SEARCH_SYN(TCHAR * pFindName, DWORD dwItemCode);
#else
void NET_SEND_CG_VENDOR_SEARCH_SYN(TCHAR *pFindName);
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
void NET_SEND_CG_VENDOR_VIEW_START_SYN(int index);
void InsertList( TCHAR * pTitle , TCHAR *pMasterName);
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
void InsertFindList(const char* item_name);
bool search_end(){ return search_end_; }
void set_search_end(bool search_end){ search_end_ = search_end; }
TCHAR* search_string(){ return search_string_; }
void set_search_string(TCHAR* search_string);
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
protected:
CControlWZ * getcontrol(POSTYPE atPos);
POSTYPE getControlIDToPos(WzID wzID);
uiVendorMan * GetManager() {return pVendorMan; }
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
void HideFindWord();
void ShowFindWord();
void FillFindListData(char * pItemName);
void UpdateDialogSize();
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
#ifdef _DH_SHOW_VENDOR_LIST_POPUP
void ShowCharacterPopupMenu(BOOL is_show, DWORD index);
#endif//_DH_SHOW_VENDOR_LIST_POPUP
private:
void InitControl();
void FillVendorListData(VENDOR_LIST_TOTAL_INFO * pListInfo);
BOOL IsValidPage(int page);
void ErrorCode(DWORD dwError);
private:
static WzID m_wzID[DLGPOS_MAX];
uiVendorMan* pVendorMan;
CCtrlListWZ* m_pList;
CCtrlDxIMEEditBox* m_pEdit;
CCtrlButtonCheckWZ* m_pCheck[__DLGPOS_CHECK_MAX];
CCtrlStaticWZ* m_pTextPage;
#ifdef _NA_0_20091208_VENDOR_ITEM_SEARCH
int find_scroll_current_value_;
int find_scroll_value_max_;
CCtrlListWZ* find_list_ptr_;
CCtrlVScrollWZ* find_scroll_;
CCtrlPictureWZ* find_background_image_;
CCtrlPictureWZ* find_scroll_image_;
DWORD item_code_;
TCHAR search_string_[MAX_VENDOR_SEARCH_LENGTH+1];
bool search_new_;
bool search_end_;
int search_index_;
unsigned int search_frame_per_update_time_;
unsigned int number_of_searching_per_a_frame_;
ITEM_NAME_INFO::iterator item_name_info_iterator_;
ITEM_NAME_INFO::iterator item_name_info_iterator_end_;
nArray<_ITEM_NAME_INFO> searched_results_;
#endif//_NA_0_20091208_VENDOR_ITEM_SEARCH
int m_iPage; // List Page Index
int m_iMaxPage; // Max List Page Index
int m_iSearchType;
int m_iLastSearchType;
DWORD m_dwObjectKeyAtList[COUNT_VENDOR_IN_PAGE];
BOOL m_bIsSend[SYN_MAX];
BOOL m_bOpenVendorList;
};
inline CControlWZ * uiVendorList::getcontrol(POSTYPE atPos)
{
assert(atPos < DLGPOS_MAX );
return GetControlWZ(m_wzID[atPos]);
}
inline POSTYPE uiVendorList::getControlIDToPos(WzID wzID)
{
for ( int i = 0; i < DLGPOS_MAX ; ++i )
{
if( m_wzID[i] == wzID)
{
return i;
}
}
return DLGPOS_MAX;
}
#endif // _uiVendorList_h_