📄 vendorslotcontainer.h
字号:
#pragma once
//=============================================================================================================================
/// VendorSlot class
/**
@author Kim Min Wook < taiyo@webzen.com >
@since 2004. 12. 29
@remark
- VendorSlot阑 炼累窍绰 牧抛捞呈 努贰胶
@note
-
@history
-
*/
//=============================================================================================================================
#include <scslotcontainer.h>
#include <SolarHashTable.h>
struct ESTABLISHER_VENDOR_TOTAL_INFO;
class VendorSlotContainer : public SCSlotContainer
{
public:
VendorSlotContainer(void);
virtual ~VendorSlotContainer(void);
BOOL CreateVendor( Player * pEstablisher, TCHAR * pszTitle, ESTABLISHER_VENDOR_TOTAL_INFO & IN TotalInfo );
VOID DestroyVendor();
BOOL ModifySlot( POSTYPE AtPos, VENDOR_ITEMSLOT & IN SlotInfo );
virtual BOOL IsLocked( POSTYPE AtPos );
virtual VOID SetLock( POSTYPE AtPos, BOOL val );
Player * GetEstablisher() { return m_pEstablishedPlayer; }
VOID AddObserver( Player * pPlayer );
VOID RemoveObserver( Player * pPlayer );
VOID GetTotalInfo( VENDOR_TOTAL_INFO & OUT VendorTotalInfo );
TCHAR * GetTitle() { return m_pszVendorTitle; }
virtual BOOL IsEmpty( POSTYPE AtPos );
template< class ObserverOperator >
VOID ForeachObserver( ObserverOperator & Opr );
private:
virtual VOID Init( POSTYPE MaxSlotSize, SLOTIDX SlotIdx );
private:
TCHAR m_pszVendorTitle[MAX_VENDOR_TITLE_LENGTH];
Player * m_pEstablishedPlayer;
util::SolarHashTable<Player *> m_ObserverPlayerHash;
};
template< class ObserverOperator >
VOID VendorSlotContainer::ForeachObserver( ObserverOperator & Opr )
{
Player * pObserver = NULL;
m_ObserverPlayerHash.SetFirst();
while( (pObserver=m_ObserverPlayerHash.GetNext()) != NULL )
{
Opr( pObserver );
}
}
template <class PACKET_TYPE>
class Send_POS_BRD
{
POSTYPE m_VendorPos;
public:
Send_POS_BRD(POSTYPE VendorPos):m_VendorPos(VendorPos){}
~Send_POS_BRD(){}
VOID operator()( Player * pObserver )
{
PACKET_TYPE bmsg;
bmsg.m_VendorPos = m_VendorPos;
pObserver->SendPacket( &bmsg, sizeof(bmsg) );
}
};
template <class PACKET_TYPE>
class Send_PACKET_BRD
{
PACKET_TYPE m_bmsg;
public:
Send_PACKET_BRD(PACKET_TYPE & bmsg):m_bmsg(bmsg){}
~Send_PACKET_BRD(){}
VOID operator()( Player * pObserver )
{
pObserver->SendPacket( &m_bmsg, sizeof(m_bmsg) );
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -