28 lines
970 B
C#
28 lines
970 B
C#
namespace ET.Server
|
|
{
|
|
[MessageSessionHandler(SceneType.Gate)]
|
|
public class C2G_UseItemHandler : RpcMessageHandler<C2G_UseItem, R2C_UseItem>
|
|
{
|
|
protected override async ETTask OnRun(Session session, C2G_UseItem request, R2C_UseItem response)
|
|
{
|
|
Player player = session.GetComponent<SessionPlayerComponent>()?.Player;
|
|
if (player == null)
|
|
{
|
|
response.Error = ErrorCode.ERR_RpcFail;
|
|
response.Message = "player_not_found";
|
|
return;
|
|
}
|
|
|
|
if (!BagService.TryUseItem(player, request.itemIndex, request.count <= 0 ? 1 : request.count, out string reason, out ItemUnit item))
|
|
{
|
|
response.Error = ErrorCode.ERR_BAG_ITEM_NOT_ENOUGH;
|
|
response.Message = reason;
|
|
return;
|
|
}
|
|
|
|
response.item = BagMapper.ToProto(item);
|
|
await ETTask.CompletedTask;
|
|
}
|
|
}
|
|
}
|