Files
Sun1602/Server/GameServer/GuildWareHouseSlotContainer.h
2022-10-26 12:25:11 +08:00

117 lines
3.2 KiB
C++

// WarehouseSlotContainer.h: interface for the CWarehouseSlotContainer class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GUILDWAREHOUSESLOTCONTAINER_H_)
#define AFX_GUILDWAREHOUSESLOTCONTAINER_H_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <SCItemSlotContainer.h>
#include <ResultCode.h>
#include <boost/pool/object_pool.hpp>
class Player;
class GameGuild;
struct _GUILDWAREHOUSE_TOTAL_INFO;
enum UPDATE_RESULT
{
UPDATE_BY_CHNAGE_SUCCESS,
UPDATE_NO_CHANGE,
UPADTE_PLAYER_NONE,
UPDATE_LONG_OPEN_STATE,
UPDATE_ON_CLOSE_PALYER_DIFF,
UPDATE_CANNOT_CONNECT_DBP,
};
enum WAREHOUSE_STATE
{
WAREHOUSE_OPEN,
WAREHOUSE_CLOSE,
};
class CGuildWarehouseSlotContainer : public SCItemSlotContainer
{
static const int INVALID_AUTO_CLOSETIME = 0;
#ifdef _DEBUG
enum { MAX_AUTO_CLOSE_TIMELIMIT = 3*60*1000 }; /* 1ºÐ */
#else
enum { MAX_AUTO_CLOSE_TIMELIMIT = 10*60*1000 }; /* 10ºÐ */
#endif
public:
CGuildWarehouseSlotContainer ();
virtual ~CGuildWarehouseSlotContainer ();
virtual RC::eSLOT_INSERT_RESULT InsertSlot( POSTYPE AtPos, SCSlot & IN rSlot );
virtual void ClearAll();
virtual BOOL ValidState();
virtual BOOL DeleteSlot( POSTYPE, SCSlot * );
// CHANGES: f101120.1L, fixed guild warehouse update problem
// which is not applied on quantity changes by the item division move
virtual void UpdateSlot(POSTYPE at_pos, int changed_num);
virtual void OnInsert(SCSlot & IN);
virtual void OnDelete(SCSlot & IN );
void SerializeMoney(MONEY money) { m_Money = money; }
void SetOwnerGuild(GameGuild* pGuild) { m_pOwnerGuild = pGuild; }
BYTE GetSlotTabNum() { return m_SlotTabNum; }
void Release();
void CloseWarehouse();
void SetSlotTabNum(BYTE);
void OpenWarehouse();
void OpenInit(Player*, BYTE, BOOL);
void MoneyLogDBSave(MONEY, BYTE);
void ItemLogDBSave(SCItemSlot*, BYTE);
void SerializeItemInfo( BYTE* , WORD, eSERIALIZE); // ·Î±× ±â·Ï¿ë
BOOL DepositMoney(MONEY);
BOOL WithDrawMoney(MONEY);
UPDATE_RESULT SaveWarehouseToDBP(Player*, eGUILDWAREHOUSE_UPDATE_FACTOR);
BOOL IsOpened() { return m_bOpened; }
BOOL IsChanged() { return m_bChanged; }
// CHANGES: f110627.2L, prevent unauthorized invader's request.
RC::eITEM_RESULT IsUseRight(Player* actor, bool withdrawal);
RC::eITEM_RESULT IsValidPos(POSTYPE);
RC::eITEM_RESULT ExtendWarehouseTabCount(Player*);
RC::eGUILD_RESULT IsEnableService(GameGuild*);
Player* GetUsedPlayer() { return m_pPlayer; }
const MONEY& GetCurMoney() { return m_Money; }
// (f100527.4L)
//template< class WAREHOUSE_TOTAL_INFO_TYPE >
//void SerializeItemInfo(WAREHOUSE_TOTAL_INFO_TYPE & ItemInfo, eSERIALIZE eType);
void SerializeItemInfo(_GUILDWAREHOUSE_TOTAL_INFO& ItemInfo, eSERIALIZE eType);
private:
Player* m_pPlayer;
GameGuild* m_pOwnerGuild;
MONEY m_Money;
BOOL m_bOpened;
BOOL m_bChanged;
BYTE m_SlotTabNum;
DWORD m_AutoCloseTime;
};
//==================================================================================================
// (f100527.4L) WAREHOUSE_TOTAL_INFO_TYPE = { _GUILDWAREHOUSE_TOTAL_INFO }
//template< class WAREHOUSE_TOTAL_INFO_TYPE >
//void CGuildWarehouseSlotContainer::SerializeItemInfo(WAREHOUSE_TOTAL_INFO_TYPE & ItemInfo, eSERIALIZE eType)
#endif // !defined(AFX_GUILDWAREHOUSESLOTCONTAINER_H_)