CTT/Server/Hotfix/Game/Handler/Other/C2M_AddEnergyHandler.cs

53 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
namespace ET
{
[ActorMessageHandler]
public class C2M_AddEnergyHandler : AMActorLocationRpcHandler<Unit, C2M_AddEnergy, M2C_AddEnergy>
{
protected override async ETTask Run(Unit unit, C2M_AddEnergy request, M2C_AddEnergy response, Action reply)
{
PlayerData data = unit.GetComponent<PlayerData>();
int count = data.buyEnergyCount;
if (count >= ConstDefine.AddEnergyPriceArr.Length)
{
Log.Error($"【{UserComponent.Instance.Get(unit.Id)?.NickName}({unit.Id})】购买次数上限!!!");
response.Message = "系统错误";
reply();
return;
}
int price = ConstDefine.AddEnergyPriceArr[count];
NumericComponent num = unit.GetComponent<NumericComponent>();
int energy = num.GetAsInt(NumericType.Energy);
if (energy + ConstDefine.AddEnergyPerCount >= ConstDefine.MaxEnergy)
{
response.Message = "行动值达到上限!";
reply();
return;
}
string ret = CharacterHelper.ReduceMoney(unit, CharacterHelper.MoneyType.Coin, price);
if (ret != null)
{
response.Message = ret;
reply();
return;
}
if(energy + ConstDefine.AddEnergyPerCount > 0)
{
data.ForbidExp = false;
}
data.buyEnergyCount++;
await UnitHelper.SaveComponenet(data);
num.AddSet(NumericType.Energy, ConstDefine.AddEnergyPerCount);
await UnitHelper.SaveComponenet(num);
reply();
await ETTask.CompletedTask;
}
}
}