31 lines
1.1 KiB
C#

namespace ET.Server
{
[MessageSessionHandler(SceneType.Gate)]
public class C2G_HeroAddExpHandler : RpcMessageHandler<C2G_HeroAddExp, R2C_HeroAddExp>
{
protected override async ETTask OnRun(Session session, C2G_HeroAddExp request, R2C_HeroAddExp response)
{
Player player = session.GetComponent<SessionPlayerComponent>()?.Player;
HeroComponent heroComp = player?.GetComponent<HeroComponent>();
Hero hero = heroComp?.GetHero(request.heroId);
if (hero == null)
{
response.Error = ErrorCode.ERR_HERO_NOT_FOUND;
response.Message = "Hero not found";
return;
}
if (!HeroService.TryAddExp(player, hero, request.itemId, request.count, out string reason))
{
response.Error = ErrorCode.ERR_BAG_ITEM_NOT_ENOUGH;
response.Message = reason;
return;
}
response.hero = HeroMapper.ToProto(hero);
HeroNoticeHelper.NotifyHeroUpdate(session, hero);
await ETTask.CompletedTask;
}
}
}