32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
namespace ET.Server
|
|
{
|
|
[MessageSessionHandler(SceneType.Gate)]
|
|
public class C2G_SummonHeroHandler : RpcMessageHandler<C2G_SummonHero, R2C_SummonHero>
|
|
{
|
|
protected override async ETTask OnRun(Session session, C2G_SummonHero request, R2C_SummonHero response)
|
|
{
|
|
Player player = session.GetComponent<SessionPlayerComponent>()?.Player;
|
|
if (player == null)
|
|
{
|
|
response.Error = ErrorCode.ERR_RpcFail;
|
|
response.Message = "Player not found";
|
|
return;
|
|
}
|
|
|
|
BagComponent bag = player.GetComponent<BagComponent>() ?? player.AddComponent<BagComponent>();
|
|
var costs = new System.Collections.Generic.List<CostEntry> { new() { ItemId = request.configId + 1000, Count = 30 } };
|
|
if (!bag.RemoveItems(costs))
|
|
{
|
|
response.Error = ErrorCode.ERR_HERO_FRAGMENT_NOT_ENOUGH;
|
|
response.Message = "Fragment not enough";
|
|
return;
|
|
}
|
|
|
|
Hero hero = HeroService.SummonHero(player, request.configId);
|
|
response.hero = HeroMapper.ToProto(hero);
|
|
HeroNoticeHelper.NotifyHeroUpdate(session, hero);
|
|
await ETTask.CompletedTask;
|
|
}
|
|
}
|
|
}
|