XtGameKit/Packages/cn.xt.hero/Scripts/Hotfix/Server/C2G_TakeOffEquipHandler.cs

37 lines
1.3 KiB
C#

namespace ET.Server
{
[MessageSessionHandler(SceneType.Gate)]
public class C2G_TakeOffEquipHandler : RpcMessageHandler<C2G_TakeOffEquip, R2C_TakeOffEquip>
{
protected override async ETTask OnRun(Session session, C2G_TakeOffEquip request, R2C_TakeOffEquip response)
{
Player player = session.GetComponent<SessionPlayerComponent>()?.Player;
if (player == null)
{
response.Error = ErrorCode.ERR_RpcFail;
response.Message = "player_not_found";
return;
}
if (!HeroEquipService.TryTakeOffEquip(player, request.heroId, request.slotIndex, out long itemIndex, out string reason))
{
response.Error = ErrorCode.ERR_EQUIP_SLOT_EMPTY;
response.Message = reason;
return;
}
response.heroId = request.heroId;
response.itemIndex = itemIndex;
response.slotIndex = request.slotIndex;
Hero hero = player.GetComponent<HeroComponent>()?.GetHero(request.heroId);
if (hero != null)
{
HeroNoticeHelper.NotifyHeroUpdate(session, hero);
}
await ETTask.CompletedTask;
}
}
}