112 lines
2.9 KiB
C
112 lines
2.9 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
//禁止编译器对此结构进行字节对齐
|
|||
|
|
#pragma pack (push, 1)
|
|||
|
|
typedef struct tagConsignmentData
|
|||
|
|
{
|
|||
|
|
CUserItem item; //标准的物品结构
|
|||
|
|
uint64_t nSellIndex; //交易标识
|
|||
|
|
// unsigned int nItemId; ///道具id
|
|||
|
|
// unsigned int nCount; //道具数量
|
|||
|
|
unsigned int nSellTime; //寄卖的时间
|
|||
|
|
unsigned int nPrice; //价钱
|
|||
|
|
unsigned int nActorId; //所有者的id
|
|||
|
|
BYTE nState; //状态: 0正常寄卖 1过期
|
|||
|
|
int nAutoId;//自动id
|
|||
|
|
// WORD wStar; //升星
|
|||
|
|
// char nBestAttr[200]; //极品属性
|
|||
|
|
//ACTORNAME szName; //所有者名字
|
|||
|
|
|
|||
|
|
//BYTE moneyType; //元宝或者银两
|
|||
|
|
//BYTE bJob; //适用的职业,0是通用,见职业定义
|
|||
|
|
//BYTE bType; //类型,
|
|||
|
|
//BYTE bLevel; //物品使用所需的等级
|
|||
|
|
//BYTE bTimeOut; //是否过期,0表示没过期,否则表示过期
|
|||
|
|
tagConsignmentData()
|
|||
|
|
{
|
|||
|
|
ZeroMemory(this,sizeof(*this));
|
|||
|
|
}
|
|||
|
|
}ConsignmentData;
|
|||
|
|
|
|||
|
|
//收益
|
|||
|
|
typedef struct tagConsignmentIncome
|
|||
|
|
{
|
|||
|
|
unsigned int nActorId; //玩家id
|
|||
|
|
unsigned int nIncome; //收入
|
|||
|
|
tagConsignmentIncome()
|
|||
|
|
{
|
|||
|
|
ZeroMemory(this,sizeof(*this));
|
|||
|
|
}
|
|||
|
|
}ConsignmentIncome;
|
|||
|
|
|
|||
|
|
|
|||
|
|
#pragma pack(pop)
|
|||
|
|
|
|||
|
|
enum ConsignmentDataState
|
|||
|
|
{
|
|||
|
|
eConsignmentOnShelf = 0, //正常寄卖
|
|||
|
|
eConsignmentOffShelf = 1, //下架
|
|||
|
|
eConsigmentActorBuy = 2, //已经被购买了
|
|||
|
|
eConsigmentIsSell = 3, //已经出售
|
|||
|
|
};
|
|||
|
|
enum ConsignBuyResult
|
|||
|
|
{
|
|||
|
|
eConsignBuyCountPriceErr = 0,//不关购买窗口刷新价格数量
|
|||
|
|
eConsignBuyOk = 1,//成功
|
|||
|
|
eConsignBuyCloseWnd = 2,//关闭窗口(物品不存在)
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class ConsignmentSystem:
|
|||
|
|
public CEntitySubSystem<enConsignmentSystemID,ConsignmentSystem,CActor>
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
ConsignmentSystem();
|
|||
|
|
~ConsignmentSystem();
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
virtual bool Initialize(void *data,SIZE_T size);
|
|||
|
|
|
|||
|
|
//数据返回
|
|||
|
|
VOID OnDbRetData(INT_PTR nCmd,INT_PTR nErrorCode,CDataPacketReader &reader );
|
|||
|
|
/*
|
|||
|
|
* Comments:处理客户端的数据包
|
|||
|
|
* Param INT_PTR nCmd:消息id
|
|||
|
|
* Param CDataPacketReader & packet:
|
|||
|
|
* @Return void:
|
|||
|
|
*/
|
|||
|
|
void ProcessNetData(INT_PTR nCmd,CDataPacketReader &packet );
|
|||
|
|
void OnEnterGame();
|
|||
|
|
public:
|
|||
|
|
//领取寄卖收益
|
|||
|
|
void GetConsignIncome(CDataPacketReader &packet);
|
|||
|
|
//搜索物品
|
|||
|
|
void SendSearchConsignItem(CDataPacketReader &packet);
|
|||
|
|
//寄卖物品
|
|||
|
|
void AddSellItem(CDataPacketReader &packet);
|
|||
|
|
//购买物品
|
|||
|
|
void BuyItem(uint64_t nIndex, int nCount, unsigned int nBuyPrice);
|
|||
|
|
//下发购买物品结果
|
|||
|
|
void SendBuyItemResult();
|
|||
|
|
//取消寄卖/取回过期物品
|
|||
|
|
void CancelSellItem(CDataPacketReader &packet);
|
|||
|
|
//获取自己的寄卖物品
|
|||
|
|
//itemGuid:寄卖物品的Guid
|
|||
|
|
ConsignmentData* GetSellItem(uint64_t nIndex);
|
|||
|
|
//下发自己的寄卖物品
|
|||
|
|
void SendMyConsignItem();
|
|||
|
|
|
|||
|
|
void SendAllConsignItem();
|
|||
|
|
//吆喝寄卖物品
|
|||
|
|
void ShoutingItem(CUserItem::ItemSeries itemGuid);
|
|||
|
|
//
|
|||
|
|
void SendConsignIncome();
|
|||
|
|
|
|||
|
|
//红点提示
|
|||
|
|
void SenDClientRedPoint(bool bRedPoint);
|
|||
|
|
|
|||
|
|
bool returnConsignProto(CDataPacket & dataPacket, ConsignmentData* pData, uint32_t nActorId);
|
|||
|
|
public:
|
|||
|
|
};
|