53 lines
1.8 KiB
C#
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];
|
|||
|
|
|||
|
var num = unit.GetComponent<NumericComponent>();
|
|||
|
int energy = num.GetAsInt(NumericType.Energy);
|
|||
|
if (energy + ConstDefine.AddEnergyPerCount >= ConstDefine.MaxEnergy)
|
|||
|
{
|
|||
|
response.Message = "行动值达到上限!";
|
|||
|
reply();
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
var 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;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|