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;
}
}
}