50 lines
1.5 KiB
C
50 lines
1.5 KiB
C
|
|
#pragma once
|
|||
|
|
/***************************************************************/
|
|||
|
|
/*
|
|||
|
|
/* 拾取子系统
|
|||
|
|
/* 玩家的是拾取的管理
|
|||
|
|
/* 管理玩家身上的掉落包裹,处理客户端的各种数据包
|
|||
|
|
/***************************************************************/
|
|||
|
|
//class DROPBAG;
|
|||
|
|
|
|||
|
|
enum enLootSelectStyle
|
|||
|
|
{
|
|||
|
|
lsLootStyleCancel =1, //放弃拾取
|
|||
|
|
lsLootStyleDemand =2, //需求
|
|||
|
|
lsLootStyleGreed =3, //贪婪
|
|||
|
|
};
|
|||
|
|
class CLootSystem:
|
|||
|
|
public CEntitySubSystem<enLootSystemID,CLootSystem,CActor>
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
typedef CEntitySubSystem<enLootSystemID,CLootSystem,CActor> Inherid;
|
|||
|
|
|
|||
|
|
//自由拾取的时间(毫秒数),一个队伍物品,如果所属人没有拾取,那么剩下的时间将变为自由拾取状态
|
|||
|
|
static const unsigned int FreeLootTime =60000; //暂定为1分钟
|
|||
|
|
/*
|
|||
|
|
*处理网络数据包
|
|||
|
|
*nCmd ,分派到该系统里命令,从0开始
|
|||
|
|
*packet,网络数据
|
|||
|
|
*/
|
|||
|
|
virtual void ProcessNetData(INT_PTR nCmd,CDataPacketReader &packet );
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 玩家能否拾取背包里的金钱或者物品
|
|||
|
|
* Param CTeam * pTeam: 队伍的指针
|
|||
|
|
* Param CActor * pUser: 玩家的指针
|
|||
|
|
* Param CDropBag * pBag:背包的指针
|
|||
|
|
* Param unsigned int nBagID:背包的ID
|
|||
|
|
* @Return bool: 能够返回true,否则返回false
|
|||
|
|
*/
|
|||
|
|
static bool CanLootMoneyOrItem(CTeam * pTeam,CActor * pUser,CDropBag * pBag,unsigned int nBagID);
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
//拾取一个新的道具,新版本的
|
|||
|
|
bool LootDropItem(unsigned int nItemHandle);
|
|||
|
|
|
|||
|
|
bool PetLootDropItem(unsigned int nItemHandle);
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|