35 lines
1.3 KiB
C#
35 lines
1.3 KiB
C#
namespace ET.Server
|
|
{
|
|
[MessageSessionHandler(SceneType.Gate)]
|
|
public class C2G_HeroSkillUpHandler : RpcMessageHandler<C2G_HeroSkillUp, R2C_HeroSkillUp>
|
|
{
|
|
protected override async ETTask OnRun(Session session, C2G_HeroSkillUp request, R2C_HeroSkillUp 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;
|
|
}
|
|
|
|
int idx = request.skillIndex;
|
|
if (!HeroService.TrySkillUp(player, hero, idx, 1, 100, out string reason))
|
|
{
|
|
response.Error = reason switch
|
|
{
|
|
"item_not_enough" => ErrorCode.ERR_BAG_ITEM_NOT_ENOUGH,
|
|
_ => ErrorCode.ERR_HERO_SKILL_MAX
|
|
};
|
|
response.Message = reason;
|
|
return;
|
|
}
|
|
response.hero = HeroMapper.ToProto(hero);
|
|
HeroNoticeHelper.NotifyHeroUpdate(session, hero);
|
|
await ETTask.CompletedTask;
|
|
}
|
|
}
|
|
}
|